2 poin oleh GN⁺ 2025-01-01 | 1 komentar | Bagikan ke WhatsApp
  • 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 dFVE dan None, bukan FVEc pada Windows 7 atau Cngb pada 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.sh menyederhanakan 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.efi dari 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
  • concatDumps di direktori tools menggabungkan 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
  • searchMem mencari 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.txt berisi 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 FVEc yang sesuai dengan alokasi enkripsi fvevol.sys
    • Di Windows 8.1 dan Windows 10, kunci dapat ditemukan di pool memori bertag Cngb yang sesuai dengan modul ksecdd.sys
  • Pada dump Windows 11, kunci tidak ditemukan di FVEc maupun Cngb; sebagai gantinya, FVEK ditemukan di dua lokasi
    • Yang pertama berada di bawah pool tag dFVE, yang menunjukkan memori yang dialokasikan oleh dumpfve.sys
    • dumpfve.sys terkait dengan full volume encryption crash dump filter milik BitLocker drive encryption
    • Lokasi dFVE adalah titik tempat kunci paling mudah dan konsisten ditemukan
    • Di lokasi ini, kunci diawali 0x0480 yang menunjukkan jenis enkripsi; pada lingkungan demonstrasi, ini berarti XTS-AES-128
    • Yang kedua berada di bawah tag None yang terkait dengan panggilan ExAllocatePool
    • Di lokasi ini, separuh depan kunci terlihat dua kali, dan separuh belakang terlihat satu kali

Mengakses Volume BitLocker dengan FVEK

  • Kunci yang diperoleh harus diawali dengan nilai algoritme enkripsi yang digunakan
  • Dalam contoh, nilai algoritme 0x8004 ditambahkan di depan kunci dalam format little endian, yaitu 0480
  • 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

1 komentar

 
GN⁺ 2025-01-01
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

    • LUKS punya beberapa slot kunci, jadi seingat saya satu slot bisa dipakai untuk pembukaan kunci lewat TPM dan slot lain untuk pemulihan dengan kata sandi panjang
      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
    • Meski Windows meminta PIN agar TPM mendapatkan FVEK untuk pertama kalinya, pada akhirnya Windows akan menyimpan FVEK di RAM
      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
    • Saya rasa mungkin lebih baik memakai enkripsi kunci terbagi atau kunci rahasia terenkripsi
      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
    • Saya rasa kata sandi power-on di BIOS juga semestinya berfungsi. Tanpa itu, sistem tidak akan sampai ke titik ketika TPM melepaskan FVEK
      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
    • Saya rasa TPM itu semacam honeypot
      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

    • Lalu lintas bus SPI tidak dienkripsi
      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
    • Jika perangkat curian dinyalakan, ia hanya sampai ke layar login, dan tidak bisa lewat dari situ tanpa kata sandi atau autentikasi biometrik
      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
    • Benar, tetapi maksudnya adalah di layar login (winlogon), hampir tidak ada yang benar-benar bisa dilakukan kecuali Anda punya kredensial akun di komputer itu atau biometrik yang terdaftar
      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
    • Tujuan utama memakai BitLocker dengan PIN+TPM adalah membuat komputer yang dimatikan atau drive itu sendiri menjadi seperti batu bata
      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
    • Volume BitLocker bisa memiliki beberapa pelindung, dan dapat memakai file kunci, passphrase, PIN, serta penyimpanan TPM: https://learn.microsoft.com/en-us/windows-server/administrat...
      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

    • Windows diketahui menggunakan fitur ini: https://learn.microsoft.com/en-us/windows/security/operating...
      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
    • Mitigasi itu sangat seadanya karena masih bisa diganggu saat RAM sedang ditimpa
      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
    • Meski begitu, itu tetap tidak mencegah pencabutan seluruh modul RAM dan melakukan dump secara offline
      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

    • Microsoft makin bergerak ke arah keamanan berbasis virtualisasi, termasuk kemampuan menjalankan “enclaves” untuk melindungi bagian perangkat lunak tertentu: https://learn.microsoft.com/en-us/windows/win32/trusted-exec...
      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
    • Intel saat ini menyediakan ini lewat fitur Total Memory Encryption. Di ekosistem Windows, memang sasarannya adalah mesin virtual
      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?

    • Secara teori mungkin. Dalam praktiknya, saat menyiapkan tautan DDR, ada banyak negosiasi yang diperlukan antara memory controller dan RAM, dan tidak mudah menciptakan situasi untuk men-dump data sambil mempertahankan timing yang sama
      Sulit berharap akan ada solusi siap pakai untuk ini
    • CPU AMD/Intel modern mendukung enkripsi memori penuh yang transparan, sehingga interposer semacam itu hanya akan melihat data RAM yang terenkripsi
  • 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

    • Sejauh yang saya pahami, fitur ini disebut SME(Secure Memory Encryption) di AMD, dan TME-MK(Total Memory Encryption-Multi Key) di Intel