Melewati BitLocker di Windows 11 dengan Dump Memori
(noinitrd.github.io)- Ini adalah demonstrasi di lingkungan Windows 11 24H2 yang menggunakan Memory-Dump-UEFI untuk men-dump RAM, menemukan FVEK—kunci enkripsi volume penuh—dan mengakses volume yang dilindungi BitLocker
- Jika penyerang memiliki akses fisik ke perangkat, mereka dapat mengincar kunci yang tersisa di RAM segera setelah restart, tetapi makin lama waktu pemutusan daya, makin besar risiko kerusakan isi RAM
- Demonstrasi ini menggunakan metode men-short pin reset (reset pins) pada motherboard untuk melakukan restart tanpa kehilangan daya, sementara kasus bypass Secure Boot berada di luar cakupan demo
- Pada dump Windows 11, FVEK ditemukan di bawah tag
dFVEdanNone, bukanFVEcpada Windows 7 atauCngbpada Windows 8.1/10 - Meski Microsoft mencoba menghancurkan kunci dengan fungsi seperti
SymCryptSessionDestroy, kunci dapat tetap tertinggal di heap, sehingga debugging tingkat kernel adalah pendekatan paling langsung untuk menganalisis implementasi BitLocker
Cakupan Demonstrasi Bypass BitLocker Windows 11
- Targetnya adalah Windows 11 version 24H2, dengan metode mengekstrak FVEK, kunci enkripsi volume penuh BitLocker, dari memori
- Aplikasi UEFI Memory-Dump-UEFI digunakan untuk men-dump isi RAM
- Prasyarat utamanya adalah penyerang memiliki akses fisik ke perangkat
Kondisi agar Dump RAM Dapat Dilakukan
- RAM dari instans Windows yang baru saja berjalan dapat masih menyimpan informasi sensitif seperti FVEK
- Jika daya terputus, isi RAM akan cepat rusak, sehingga waktu komputer benar-benar mati selama proses restart harus diminimalkan
- Cara untuk mengurangi kerusakan RAM mencakup pendinginan fisik atau mempertahankan pasokan daya eksternal; dalam demonstrasi ini, pin reset pada motherboard di-short agar restart terjadi tanpa kehilangan daya
- Secure Boot adalah standar keamanan yang membatasi item yang dapat dijalankan saat perangkat mulai, tetapi ada kasus bypass dengan shim dan sejenisnya; demo ini tidak membahasnya secara rinci
Menyiapkan USB Boot dan Membuat Dump
- USB boot memerlukan media penyimpanan yang lebih besar daripada kapasitas RAM sistem target
- Skrip
flashimage.shmenyederhanakan persiapan aplikasi yang dapat di-boot - Prosedur pembuatan dan penggunaan aplikasi boot dirangkum di MemoryDumpUEFI
- Peluang menemukan FVEK paling tinggi saat restart dilakukan ketika Windows sedang loading tetapi sebelum layar login muncul
- Setelah langsung boot dari perangkat USB ke Memory-Dump-UEFI, jalankan
app.efidari UEFI shell- Cara menjalankannya memiliki prosedur tambahan di README aplikasi
- Waktu dump bergantung pada kapasitas RAM dan kecepatan perangkat USB
- Untuk menghindari penulisan ke drive yang salah, sebaiknya lepaskan media penyimpanan USB lain
Memproses File Dump dan Alat Pencarian
- Memory-Dump-UEFI dapat membuat beberapa file dump
- Untuk memenuhi spesifikasi UEFI, filesystem FAT32 harus digunakan, dan FAT32 memiliki batas ukuran file 4GB
concatDumpsdi direktoritoolsmenggabungkan beberapa dump menjadi satu berdasarkan urutan waktu- Karena dump berisi data mentah yang berada di memori saat itu, isinya dapat diperiksa agar lebih mudah dibaca dengan alat seperti
xxd searchMemmencari pola hex di dalam dump dan memungkinkan berpindah ke offset lokasi yang ditemukan
Pool Tag dan Lokasi FVEK
- Pool tag adalah identifier 4 karakter yang menunjukkan lokasi pool memori kernel Windows
- Pool memori yang dialokasikan kernel Windows dapat menjadi lokasi yang bagus untuk mencari informasi sensitif
pooltag.txtberisi daftar pool tag dan informasi mengenai tujuan masing-masing- Pada versi Windows lama, lokasi kunci BitLocker berbeda
- Di Windows 7, kunci dapat dipulihkan dari pool tag
FVEcyang sesuai dengan alokasi enkripsifvevol.sys - Di Windows 8.1 dan Windows 10, kunci dapat ditemukan di pool memori bertag
Cngbyang sesuai dengan modulksecdd.sys
- Di Windows 7, kunci dapat dipulihkan dari pool tag
- Pada dump Windows 11, kunci tidak ditemukan di
FVEcmaupunCngb; sebagai gantinya, FVEK ditemukan di dua lokasi- Yang pertama berada di bawah pool tag
dFVE, yang menunjukkan memori yang dialokasikan olehdumpfve.sys dumpfve.systerkait dengan full volume encryption crash dump filter milik BitLocker drive encryption- Lokasi
dFVEadalah titik tempat kunci paling mudah dan konsisten ditemukan - Di lokasi ini, kunci diawali
0x0480yang menunjukkan jenis enkripsi; pada lingkungan demonstrasi, ini berarti XTS-AES-128 - Yang kedua berada di bawah tag
Noneyang terkait dengan panggilanExAllocatePool - Di lokasi ini, separuh depan kunci terlihat dua kali, dan separuh belakang terlihat satu kali
- Yang pertama berada di bawah pool tag
Mengakses Volume BitLocker dengan FVEK
- Kunci yang diperoleh harus diawali dengan nilai algoritme enkripsi yang digunakan
- Dalam contoh, nilai algoritme
0x8004ditambahkan di depan kunci dalam format little endian, yaitu0480 - Nilai yang dibuat dengan cara ini dapat disimpan sebagai file dan digunakan dalam bentuk
output.fvek - Kumpulan alat dislocker direkomendasikan untuk memeriksa algoritme dan nilai yang diperlukan serta membuka kunci partisi yang dilindungi BitLocker
- Jika prosedurnya benar, data pada volume yang dilindungi BitLocker dapat diakses dengan
output.fvek
Analisis Implementasi BitLocker dan Kunci yang Tertinggal di Heap
- Cara paling langsung untuk memahami implementasi BitLocker adalah debugging tingkat kernel menggunakan
windbg - Debugging kernel dapat dilakukan relatif mudah dengan virtual machine atau kabel crossed over USB 3.0 A/A
- Mengikuti proses boot Windows langkah demi langkah sambil mengamati cara kerja BitLocker membantu menemukan kunci
- Microsoft mencoba menghancurkan kunci dengan fungsi seperti
SymCryptSessionDestroy, tetapi kunci tetap dapat tertinggal di heap sehingga tidak semua kunci terhapus
Tautan Referensi
- recovering-bitlocker-keys-on-windows-8-1-and-10: materi terkait pemulihan kunci BitLocker di Windows 8.1 dan Windows 10
- dislocker: kumpulan alat yang digunakan untuk mengakses volume BitLocker
- SymCrypt: library kriptografi Microsoft
- libbde: library terkait BitLocker Drive Encryption
- pooltag.txt: daftar pool tag Windows
- An Introduction to Pool Tags: materi pengantar pool tag dari Microsoft
1 komentar
Komentar Hacker News
Menurut saya BitLocker paling bermanfaat saat menggunakan TPM(PCR 7+11)+PIN
Tanpa PIN, FVEK semestinya tidak bisa dibaca, sehingga serangan ini bisa dimitigasi; dan jika BitLocker diimplementasikan dengan benar, TPM akan masuk ke mode penguncian anti-serangan kamus ketika PIN salah terlalu banyak kali
Selama beberapa bulan saya juga mencoba membuat konfigurasi yang sama di Linux, tetapi systemd-cryptsetup/cryptenroll ditujukan untuk LUKS, sementara situasi saya adalah ingin mengenkripsi beberapa direktori sensitif (kunci secure boot dan /home) dengan fscrypt pada eMMC internal yang lambat
Begitu melewati hal-hal dasar, saya merasa pemrograman TPM sangat sulit: mengikatnya ke PCR 7, mengikatnya ke PCR 11 yang berubah setiap kali kernel/init/cmdline diperbarui, memakai PIN alih-alih AuthValue, memakai kebijakan otorisasi yang sama juga untuk mereset penghitung penguncian DA saat login, sambil tetap menyediakan kata sandi panjang/AuthValue untuk reset manual, serta harus mencocokkan tanda tangan PCR 11 dan kunci publik yang disediakan systemd-stub
Selain panduan TPM dasar, hampir tidak ada materi, jadi kalau ada pakar, saya ingin mendapatkan bantuan. Ini proyek pribadi, tetapi jika suatu hari selesai, saya berniat menuliskannya
Cara itu layak dipertimbangkan sebagai mekanisme pemulihan
Salah satu alasan sedikit orang mengutak-atik TPM open source sebagai hobi adalah karena ada banyak alternatif yang jauh lebih mudah untuk memenuhi kebutuhan serupa
Jika ingin mengikat kunci enkripsi penting ke perangkat keras, beli saja Yubikey; jika kata sandi enkripsi disk laptop merepotkan, gunakan mode standby saat menutup lid alih-alih mematikan total
Jika kata sandi login terasa merepotkan, ada pemindai sidik jari atau Yubikey dengan autentikasi biometrik; dan jika harus boot tanpa kata sandi seperti kios tanpa awak atau lab komputer sekolah, masukkan saja ke kotak logam yang kokoh dan rantai ke dinding
Jika server data center harus boot tanpa awak, pindahkan ke data center dengan keamanan fisik yang tepercaya; dan jika masih khawatir, gunakan Dropbear atau Tang agar hanya bisa boot saat berada di jaringan yang benar
Jika Anda mengutak-atik TPM sebagai hobi homelab, sebaiknya cek apakah bekerja dengan TPM benar-benar menyenangkan, dan besar kemungkinan Anda akan menyadari bahwa jawabannya tidak
Kalau tidak begitu, bukankah setiap kali mendekripsi blok disk harus memasukkan PIN? Dampak performa dari memanggil TPM untuk setiap operasi disk juga besar
Karena serangan ini membaca kunci dari RAM, saya tidak paham bagaimana PIN TPM bisa menjadi mitigasi
Jika sebelum boot harus memasukkan kata sandi, lalu kata sandi itu harus digabungkan dengan kunci TPM untuk membuka drive, itu akan membantu dalam situasi ketika kunci TPM ditemukan belakangan
Namun sulit memastikan tindakan mitigasi mana yang seberapa membantu terhadap serangan ini. Agar OS tetap memiliki akses baca/tulis ke drive, ia harus memegang kunci di suatu tempat, jadi jika hanya lokasi pencarian kunci yang berubah, dalam sebagian besar skenario pemulihan data RAM semacam ini tetap mungkin dilakukan
Seingat saya pada perangkat Apple, kunci tidak keluar dari secure enclave, jadi sepertinya tidak rentan terhadap serangan seperti ini. TPM 3.0 tampaknya perlu bergerak jauh lebih dekat ke arah itu
Di ThinkPad, sidik jari bisa digunakan sebagai pengganti kata sandi power-on, dan karena itu bisa membuat perangkat hampir tidak berguna bagi pencuri, saya lebih menyukai konfigurasi ini daripada PIN BitLocker
Tentu saja kata sandi power-on dan autentikasi sidik jari juga hanya sekuat TPM, tetapi bukankah BitLocker TPM+PIN juga sama
Setelah perangkat lunak enkripsi open source yang sukses, pergeseran ke TPM terasa aneh. Kesannya seperti, karena ada penyimpanan super-aman yang disediakan perusahaan besar, jangan khawatir dan jangan bertanya
Saya curiga pasti ada backdoor yang memungkinkan badan intelijen mengunduh semua PIN dan kata sandi serta mengakses data
Saya pada dasarnya tidak begitu memahami model keamanan BitLocker
Pada sebagian besar instalasi, kelihatannya cukup menekan tombol daya lalu mesin akan boot ke Windows
Jadi kalau seseorang mencuri perangkat dengan hard drive terenkripsi, apakah ia tinggal menyalakannya saja? Rasanya tidak mungkin begitu, tetapi di saat yang sama saya juga tidak tahu bagaimana serangan khusus ini dicegah
Sepertinya kita harus berasumsi bahwa lalu lintas bus SPI dienkripsi sehingga kunci tidak bisa di-dump seperti ini, tetapi bagaimanapun mesin tampak cukup mudah menyerahkan kuncinya
LUKS setidaknya punya prompt kata sandi untuk membuka kunci drive
Anehnya, Microsoft tidak memakai enkripsi parameter TPM, jadi setiap 1–2 tahun ada peneliti keamanan yang membuat dan mendemonstrasikan perangkat sniffing TPM
LUKS juga tergantung konfigurasi. Linux juga bisa dikonfigurasi dengan cara yang sama seperti Windows di sini, dan server keamanan video rumah saya juga harus reboot diam-diam, jadi saya mengaturnya begitu. Saya tahu ini rentan terhadap serangan warm/cold boot dan permukaan serangan perangkat lunak, tetapi aman kalau seseorang hanya mencabut drive-nya
Windows juga bisa diatur agar meminta kata sandi atau memakai kunci tersegel TPM dengan autentikasi PIN
Jika mengesampingkan enkripsi parameter dan masalah sniffing bus, BitLocker menggeser batas dari “siapa pun bisa membaca drive” menjadi “harus melakukan serangan tingkat platform untuk mendapatkan isi memori atau meretas layanan yang berjalan di layar login”
Karena sangat baik mencegah skenario seperti mencuri data keuangan dari hard drive bekas yang didaur ulang sembarangan, ini sebenarnya peningkatan keamanan yang cukup bagus
Diperlukan bypass seperti kerentanan remote code execution atau boot memakai Windows bootloader lama yang rentan. Karena drive terkunci, bypass umum seperti “mengganti keyboard perangkat lunak dengan cmd.exe” tidak bisa dipakai
Tanpa BitLocker, drive Windows bisa dipasang ke PC lain dan semua file bisa dilihat. Dengan BitLocker, Anda harus berkutat dengan perangkat lunak Microsoft yang rentan, eksploit, memori yang di-dump, dan semacamnya, dan itu pun tidak selalu berhasil
Jika BitLocker disetel ke mode TPM+PIN, hal itu pun tidak bisa dilakukan karena tidak ada kata sandi untuk membuka TPM. BitLocker juga bisa dibiarkan dalam mode hanya kata sandi, tetapi itu jauh lebih rentan terhadap brute force
LUKS juga sama; kebanyakan distro Linux saat ini mendukung TPM dan TPM+PIN
Jika mencoba reboot ke safe mode, OS lain, utilitas pembaruan firmware, dan sebagainya, Anda harus memasukkan kunci pemulihan BitLocker
Saya tidak begitu tahu bagaimana “peretasan” sensor sidik jari atau webcam pengenal wajah bekerja secara internal
Ini memerlukan asumsi bahwa TPM tidak punya kerentanan ekstraksi kunci
Intinya adalah saat daya mati
Untuk enkripsi drive umum, TPM terlalu lambat untuk benar-benar mendekripsi data massal, sehingga pada akhirnya OS memiliki kunci yang bisa diekstraksi
Pada edisi Pro, Anda juga bisa mewajibkan tahap interaksi saat boot melalui Group Policy. Ini berfungsi bahkan tanpa TPM, dan dalam kasus ini akan menanyakan kata sandi setiap kali mulai
Ini bisa sepenuhnya dicegah dengan https://trustedcomputinggroup.org/resource/pc-client-work-gr...
Jika diaktifkan, ketika OS tidak sempat dimatikan secara normal sehingga tidak punya kesempatan menghapus kunci enkripsi, firmware akan berhenti sebelum boot berikutnya dan menghapus RAM
Saya penasaran apakah Windows tidak menggunakan ini, atau sistem yang diuji tidak mengimplementasikannya
Di situ tertulis bahwa “BitLocker menggunakan TCG Reset Attack Mitigation, juga dikenal sebagai MOR bit (Memory Overwrite Request), sebelum mengekstrak kunci ke memori”
Namun saya sama sekali tidak memercayai sebagian besar implementasi platform. Saya belum pernah melihat platform UEFI yang dalam bentuk apa pun mendekati implementasi yang benar
Akan menarik mengetahui platform apa yang dipakai peneliti ini, dan apakah platform itu mengklaim mendukung MOR bit
Lihat saja bagaimana Team Tweezers menyerang Wii orisinal
Mitigasi yang sebenarnya adalah fitur enkripsi memori pada CPU modern. Karena berada di dalam die, pinset tidak bisa menjangkaunya, dan karena cukup menghapus kuncinya, penghapusan terjadi seketika; sekalipun bertahan melewati siklus daya, sangat sulit untuk mengganggunya
Idealnya, kunci hanya tersisa di dalam cache SRAM CPU dan tidak pernah keluar dari die CPU
Saya penulis artikel tersebut. Jika ada pertanyaan, silakan kirim pesan ke akun ini
Pekerjaan ini benar-benar menyenangkan, dan terima kasih atas banyaknya perhatian
Presentasi 38C3 terkait bypass Windows 11 BitLocker: https://media.ccc.de/v/38c3-windows-bitlocker-screwed-withou...
Sudah cukup dikenal bahwa BitLocker hanya benar-benar melindungi komputer yang dimatikan, dan itu pun hanya jika BitLocker dikonfigurasi untuk meminta kata sandi saat boot
[0] https://en.wikipedia.org/wiki/BitLocker#TPM_alone_is_not_eno...
Windows memiliki opsi enkripsi memori yang diusulkan bersama kompresi memori
Baik Intel maupun AMD sedang mengerjakan penyematan fitur ini ke CPU
Namun sasarannya tampaknya bukan laptop, melainkan server yang menjalankan banyak mesin virtual
Tidak akan mengejutkan jika dalam waktu dekat “mesin virtual” terenkripsi dimanfaatkan sebagai sarana penyimpanan nilai rahasia seperti ini. Yang dibutuhkan adalah dukungan perangkat keras yang luas dan umum di platform konsumen
Namun serangan side-channel CPU sebelumnya menunjukkan bahwa memori terenkripsi pun bisa diserang (https://www.usenix.org/conference/usenixsecurity21/presentat...). Serangan itu menargetkan cache saat CPU mendekripsi memori untuk operasi normal
Ini akan membantu menetralkan memory dump, tetapi RAM terenkripsi tidak akan mengakhiri praktik dumping kunci dari memori. Terutama bagi penyerang yang sabar atau sangat terampil
https://techcommunity.microsoft.com/blog/windowsosplatform/m...
Kompresi memori sudah ada sejak lama, setidaknya sejak Windows 10 RTM. Semua sistem operasi utama telah mengimplementasikan fitur ini, tetapi tidak terkait dengan keamanan
Artikel terkait: Melewati BitLocker pada laptop Lenovo dengan logic analyzer murah
https://news.ycombinator.com/item?id=37249623
Untuk serangan yang bergantung pada pembacaan memory dump dari mesin target, saya penasaran seberapa realistis perangkat interposer yang menyalin atau memodifikasi data yang masuk dan keluar dari RAM jika ada akses fisik
Yang terbayang adalah perangkat seperti “Action Replay” untuk Gameboy dulu, yang memungkinkan cheat dengan memodifikasi memori yang dimuat atau dieksekusi dari cartridge game ke sistem. Cartridgenya dicolokkan ke Action Replay, lalu Action Replay dicolokkan ke Gameboy
Bisakah hal serupa dilakukan di antara RAM dan motherboard? Misalnya RAM dicolokkan ke perangkat, perangkat itu dicolokkan ke motherboard, lalu pembacaan/penulisan memori diamati untuk menangkap keadaan memori pada titik waktu arbitrer
Dengan begitu kita bisa menghindari kerepotan mematikan daya secara manual dan berharap data yang dibutuhkan masih tersisa
Saya bukan insinyur elektro, jadi ini mungkin usulan yang sama sekali mustahil. Batasan ruang fisik dan bandwidth jelas terlihat besar, tetapi apakah mungkin?
Sulit berharap akan ada solusi siap pakai untuk ini
Tidak banyak orang tahu bahwa CPU Intel/AMD yang dirilis dalam beberapa tahun terakhir mendukung enkripsi memori penuh yang transparan
Isi RAM dienkripsi dengan kunci acak yang disimpan di dalam memory controller CPU dan dibuat saat reset
Biasanya ini dimatikan di BIOS karena ada sedikit penurunan kinerja memori (0,1%~1%)
Namun serangan ini bisa dicegah sepenuhnya