- Jika BitLocker tanpa kata sandi bergantung pada TPM terpisah (discrete TPM), kunci plaintext dapat ditangkap di bus SPI saat VMK dipindahkan dari TPM ke CPU selama proses boot
- Eksperimen pada Lenovo L13 dilakukan dengan DSLogic Plus seharga kurang dari 100 dolar, tetapi batas sampling menjadi kendala besar untuk membaca bus SPI 33MHz secara stabil
- Data hasil tangkapan harus diurai dalam urutan SPI → TIS → TPM 2.0, lalu kunci 32-byte yang diawali
5761ditemukan di buffer responsTPM2_Unseal - Dengan kunci yang diekstrak, partisi BitLocker dipasang menggunakan
dislocker-fuse, lalusethc.exediganti dengancmd.exeuntuk mendapatkan shell SYSTEM lewat penekanan Shift 5 kali - TPM terpisah saja sulit memberi perlindungan yang memadai; pertahanan yang efektif bergantung pada penggunaan fTPM atau pengaturan PIN/passphrase BitLocker
Kelemahan BitLocker tanpa kata sandi dan TPM terpisah
- Partisi BitLocker dienkripsi dengan FVEK (Full Volume Encryption Key)
- FVEK kemudian dienkripsi lagi dengan VMK (Volume Master Key) dan disimpan di disk bersama data terenkripsi
- Struktur ini memungkinkan rotasi kunci tanpa harus mengenkripsi ulang seluruh disk
- VMK disimpan di TPM
- Karena itu, disk hanya bisa didekripsi saat boot di komputer tersebut
- Ada mekanisme pemulihan di Active Directory
- Titik lemahnya adalah saat CPU meminta TPM mengirimkan VMK untuk dekripsi disk
- VMK melewati bus SPI antara TPM dan CPU dalam bentuk plaintext
- Jika nilai ini ditangkap, nilainya dapat dipakai untuk mendekripsi disk BitLocker
Perangkat yang dipakai untuk menangkap komunikasi TPM
- Perangkat eksperimen adalah logic analyzer DSLogic Plus
- Dibeli pada 2021 dengan harga kurang dari 100 dolar termasuk pajak dan ongkos kirim
- Untuk mendapatkan sinyal yang stabil, frekuensi sampling perlu sekitar 3–4 kali frekuensi bus
- Bus SPI target berjalan di 33MHz sehingga butuh sampling minimal 100MHz
- Spesifikasi DSLogic Plus menyebut hingga 400MHz pada 16 kanal, tetapi ada batasan dalam kondisi penggunaan nyata
- DSLogic Plus memiliki keterbatasan yang jelas tergantung metode capture dan jumlah kanal
- Semakin banyak kanal yang ditangkap bersamaan, semakin rendah frekuensi sampling
- Mode stream bisa menangkap data besar selama sekitar 1 menit, tetapi dibatasi 100MHz pada 3 kanal
- Mode buffer bisa sampling 400MHz, tetapi hanya berjalan beberapa milidetik sehingga tidak praktis untuk tugas ini
- Opsi yang lebih profesional adalah Saleae yang harganya sekitar 10 kali lebih mahal, dan perangkat lain dapat dilihat di daftar hardware yang didukung sigrok
Koneksi ke board dan timing capture
- SPI adalah bus bersama, jadi tidak perlu menyambung langsung ke pin TPM yang kecil
- Jika ada komponen yang lebih besar pada bus SPI yang sama, sambungan bisa diambil dari sana
- Dalam eksperimen ini, flash SPI di dekatnya diidentifikasi dan digunakan
- Karena ada penandaan komponen, datasheet mudah dicari untuk memastikan fungsinya
- Dengan DSLogic, hanya 3 jalur SPI yang ditangkap karena frekuensi sampling turun
- Jalur pentingnya adalah CLK, MOSI, dan MISO
- Tegangan ambang harus diatur sekitar setengah dari tegangan sinyal
- Tegangan sinyal yang terukur adalah 3.3V, dan ambang yang sesuai sekitar 1.6V
- VMK yang dicari digunakan pada tahap akhir POST
- Pada Lenovo L13, momen ini terjadi tepat setelah splash screen, sekitar detik ke-14 dari total boot sekitar 25 detik
- Sebelum itu memang ada aktivitas SPI, tetapi terutama pembacaan dan verifikasi tahap boot awal, bukan komunikasi TPM
- Capture bisa dimulai segera setelah boot, atau sekitar 7 detik kemudian untuk mengurangi data yang tidak perlu
Mengurai SPI, TIS, dan TPM 2.0
- Sinyal hasil tangkapan harus diurai dalam tiga lapisan: SPI, TIS, dan TPM 2.0
- SPI adalah protokol sederhana sehingga bisa diurai dengan logic analyzer biasa
- Saat clock naik dari 0 ke 1, status jalur data pada saat itu menjadi nilai bit
- Dalam contoh, MOSI tetap 0 selama 8 clock sehingga diartikan sebagai
0x00, sedangkan MISO hanya memiliki bit pertama aktif sehingga diartikan sebagai0x80
- Bagian tersulit adalah TIS (TPM Interface Specification)
- Tidak ditemukan decoder yang benar-benar berfungsi sehingga harus diproses manual
- libsigrok decoders gagal mengurai data dengan tepat, tetapi membantu menemukan perkiraan rentang tempat pertukaran TPM terjadi
- Kegagalannya bisa disebabkan karena capture tidak memiliki Chip Select, clock tidak akurat, beberapa byte hilang, atau alasan lain
- Permintaan dari master ke slave menunjukkan pola yang berulang
- Slave mengirim
80untuk menandakan siap - Master mengirim header
D4 00 24dan byte TPM - Slave mengonfirmasi pembacaan dengan
01 FF
- Slave mengirim
- Respons dari slave ke master bergantung pada pengaturan dan pembacaan register
- Frame contoh adalah hasil pembacaan 1 byte dari alamat
D4 00 24 - Slave memulai transaksi dengan
80, lalu nilai yang dicari yaitu0x80muncul setelahnya
- Frame contoh adalah hasil pembacaan 1 byte dari alamat
Menemukan kunci dalam respons TPM2_Unseal
- Perintah TPM yang meminta pengembalian kunci adalah TPM2_Unseal
- Perintah ini didefinisikan dalam spesifikasi TPM 2.0 bagian 3
- Transaksi TPM dipisahkan dengan berfokus pada respons jalur MISO, bukan frame permintaan
- Data SPI mentah difilter dengan mask
80 00 00 00 01 ..dan hanya byte wildcard terakhir yang dipertahankan - Awal transaksi TPM diidentifikasi dengan header
80 01atau80 02 - Respons yang berisi kunci adalah respons otentikasi yang lebih panjang dan diawali
80 02
- Data SPI mentah difilter dengan mask
- Ada jeda sekitar 10ms antara perintah Unseal dan responsnya
- Header
80 02menunjukkan sesi password, berbeda dari header plaintext80 01yang dipakai sebagian besar permintaan - Jeda itu kemungkinan muncul karena pemrosesan autentikasi permintaan dan HMAC pada respons
- Header
- Perintah dan respons TPM diperoleh dengan merakit ulang byte satu per satu
- Untuk decoding digunakan alat tpmstream-web
- Kunci di dalam buffer respons diawali
5761dan panjangnya 32 byte
Memasang disk dan membuat backdoor
- Kunci yang diekstrak disimpan ke file lalu diberikan ke
dislocker-fuseuntuk memasang partisi BitLocker - Contoh perintah membuat file kunci, menghubungkan
/dev/sdd3ke./mnt/, lalu memasangdislocker-filelagi ke./mnt2/ - Backdoor paling sederhana adalah menimpa program sticky keys di Windows dengan
cmd.exeWindows/System32/cmd.exedisalin keWindows/System32/sethc.exe- Setelah disk dipasang kembali ke laptop dan boot, menekan tombol Shift 5 kali akan memberikan shell SYSTEM
Batasan perangkat dan langkah pertahanan
- DSLogic tidak direkomendasikan untuk pekerjaan ini
- Banyak capture gagal dan harus dibuang
- Sampling 3 kali kecepatan bus hanya nyaris cukup untuk mendapatkan clock yang konsisten, dan beberapa byte tetap hilang
- Karena keterbatasan perangkat, banyak waktu habis untuk memahami protokol secara mendalam dan mengurai capture secara manual
- Jika pembelian perangkat ditanggung perusahaan, logic analyzer profesional dianggap pilihan yang lebih baik
- Penggunaan TPM terpisah, bertentangan dengan harapan, tidak meningkatkan keamanan sistem dan justru bisa menciptakan ilusi keamanan
- Ada dua langkah pertahanan
- Gunakan fTPM
- Jika harus memakai TPM terpisah, atur PIN atau passphrase pada BitLocker
- Microsoft juga merekomendasikan penggunaan PIN atau passphrase BitLocker untuk area organisasi yang memerlukan perlindungan data tingkat lebih tinggi
1 komentar
Pendapat di Hacker News
Semua TPM mendukung sesi terenkripsi untuk mencegah serangan man-in-the-middle seperti ini. Cukup gunakan
TPM2_StartAuthSessiondan tentukan enkripsi pada tiap perintah sesi, tetapi BitLocker tidak menggunakannya, jadi ini kegagalan serius. Microsoft harus memperbaikinyaSebagai perbandingan, systemd menggunakan sesi terenkripsi saat memakai enkripsi disk LUKS bersama TPM: https://github.com/systemd/systemd/commit/acbb504eaf1be51572...
Saya kurang paham TPM, jadi saya penasaran bagaimana sesi terautentikasi bekerja. Bagaimana sistem operasi membuktikan identitasnya kepada TPM dengan cara yang tidak bisa dipalsukan penyerang dalam serangan man-in-the-middle sungguhan? Rahasia atau kunci yang disimpan di sisi sistem operasi sepertinya harus berada dalam teks polos di disk karena belum ada kunci enkripsi
Bahkan jika sistem operasi entah bagaimana memverifikasi identitas TPM dan membuatnya tidak bisa dilewati dengan memodifikasi beberapa file di disk, saya tidak mengerti apa yang mencegah penyerang menjalankan rutinitas yang sama di emulator. Tanpa integrasi dengan lingkungan eksekusi aman di sisi CPU seperti Intel ME atau SGX, pendekatan ini tampaknya sulit memberi keamanan nyata, dan kalau begitu TPM mungkin tidak diperlukan sejak awal
Ada juga artikel lain dari tahun 2021
https://arstechnica.com/gadgets/2021/08/how-to-go-from-stole...
Sebagian produsen laptop menyediakan pengaturan yang menghapus TPM ketika laptop dibuka. Jika Anda membuka laptop untuk melihat apakah RAM bisa ditambah, semoga Anda punya akses ke kunci pemulihan BitLocker atau memiliki cadangannya
Saya rasa bisa juga diakses dengan cara memotong plastik. Semacam adegan pengambilan parasit di Matrix
Tidak ada yang baru. Pengaturan default tidak meminta PIN, tetapi dokumentasi Microsoft menjelaskan berbagai serangan dan merekomendasikan pengaturan PIN BitLocker untuk sepenuhnya mencegahnya. Karena TPM mencegah brute force, PIN boleh cukup lemah
Contoh: https://learn.microsoft.com/en-us/windows/security/operating...
Behavior:Win32/AccessibilityEscalationPada BitLocker dan enkripsi semacam ini, saya selalu tidak memahami rancangan di mana kunci dekripsi diberikan otomatis oleh sistem. Jika seluruh laptop dicuri, keamanan apa yang diberikan BitLocker? Dari sisi penyerang, sistem akan boot dan hanya meminta kata sandi akun pengguna
Sejauh yang saya pahami, ini melindungi data saya ketika hard disk dicabut dari laptop dan dicoba dijalankan di sistem lain. Karena kesalahpahaman yang mungkin bodoh ini, saya selalu mengatur kata sandi yang harus dimasukkan secara manual pada BitLocker, dan selalu melakukan hal yang sama pada LUKS. Apakah pemikiran saya sepenuhnya salah?
Biasanya mereka kemungkinan besar akan menghapus drive lalu menjualnya, dan sepertinya tidak benar-benar mencoba serangan cold boot. Namun semuanya bergantung pada model ancaman. Secara pribadi, alasan utama saya menggunakan enkripsi disk penuh pada perangkat pribadi adalah untuk mengurangi kebutuhan menghancurkan media penyimpanan secara fisik saat membuangnya
Bahkan jika hard disk rusak, saya tidak perlu benar-benar membongkarnya untuk memastikan data saya hilang. Perangkat saya biasanya berada dalam mode sleep saat di luar, jadi jika seseorang ingin melakukan serangan cold boot, mereka tetap bisa melakukannya
Seperti yang Anda katakan, jika kunci dekripsi diberikan otomatis ke sistem, maka kunci itu ada di RAM dan siap diekspor oleh penyerang lalu digunakan kembali pada disk terenkripsi. Serangan cold boot[1] adalah vektor serangan yang layak dibaca lebih lanjut untuk menentukan apakah sesuai dengan model ancaman Anda
[1] https://en.wikipedia.org/wiki/Cold_boot_attack
Jika kunci melewati bus bersama, apakah itu berarti semua komponen di sistem bisa mencegat kunci semudah logic analyzer ini? Kedengarannya seperti mimpi buruk keamanan rantai pasok
Kalau siapa pun bisa mem-boot laptop dan mengakses hard drive yang sudah didekripsi, apa bedanya mengendus kuncinya terlebih dahulu? Jika bisa mem-boot laptop, pada akhirnya mereka memang sudah bisa mengakses hasil akhirnya
Jika ingin BitLocker melindungi dalam skenario seseorang mencuri laptop, bagaimanapun juga Anda harus memakai kata sandi dan mematikan mode sleep, bukan hibernasi
Kalau begitu, apa sebenarnya yang sedang dilakukan hardware TPM yang “tepercaya” itu sekarang? Apakah pengukuran boot juga bisa dipalsukan? Selain itu, ini bodoh secara keterlaluan. Mengapa materi kunci lalu-lalang di bus dalam plaintext? Tidak ada semacam protokol pertukaran kunci sama sekali
[1] Di sini juga ada pembahasan soal penghapusan aman, dan itu memang kasus yang lebih lemah. Namun jika enkripsi seluruh disk memiliki EEPROM yang bisa dicabut dari soket dan dihancurkan secara fisik, bagian itu juga terselesaikan sama efektifnya
Saya penasaran perangkat lunak apa yang dipakai untuk mengubah sinyal mentah menjadi 0 dan 1. Sejak dulu saya punya proyek serupa, yaitu membaca data digital dari kaset tape era 80-an. File
.wavdari tape sudah saya dapatkan dengan cukup baik, tetapi saya belum menemukan tool atau library yang tepat untuk mengubahnya menjadi 0 dan 1Tentu saja bagian yang benar-benar menarik baru dimulai setelah mulai mendekode 0 dan 1. Saya tahu bagaimana bit-bitnya dienkode, yaitu frequency-shift keying[0]. Yang belum saya tahu adalah apa yang sebaiknya dipakai untuk mendekode ini menjadi bit stream yang bisa saya proses lebih lanjut
[0] https://en.wikipedia.org/wiki/Frequency-shift_keying
Anda bisa membandingkan keluaran sepasang filter seperti ini untuk membuat keluaran digital. Transformasi Fourier diskret geser yang sparse juga bisa dipakai, tetapi interpolasi antarbin frekuensi lebih merepotkan, sementara filter Goertzel menangani itu untuk Anda
Saya tidak tahu ada satu algoritma atau perangkat lunak tunggal yang bisa mengubah sinyal mentah apa pun menjadi byte. Anda harus memahami skema modulasi apa yang dipakai sinyal tersebut, lalu mencari dekoder yang sesuai atau menulisnya sendiri. Umumnya melibatkan filtering dan berbagai algoritma matematika, tetapi program untuk decoding dasar biasanya cukup pendek dan sederhana
Ini keterampilan yang cukup keren untuk dipelajari, karena teknik yang sama bisa dipakai di berbagai tempat. Misalnya, setelah belajar sedikit DSP, banyak hal yang bisa dilakukan dalam komunikasi nirkabel, musik dan desain suara, gambar, serta pemrosesan video jadi terbuka
Atau karena penulis menyebut DSlogic, mungkin ada fork dari program-program itu yang dibuat oleh produsen logic analyzer tersebut
Sinyal mentah biasanya masuk ke Schmitt trigger untuk menerapkan histeresis demi edge yang stabil. Dengan begitu, polaritas sinyal tape dan deviasi motor terkoreksi
Bagian bahwa “memakai TPM fisik terpisah justru benar-benar mengurangi keamanan” terasa ironis
Laptop saya pada 2015 tidak punya TPM fisik, dan ketika mencoba mengaktifkannya muncul “Izinkan BitLocker tanpa TPM yang kompatibel (memerlukan kata sandi atau kunci startup di USB flash drive)”, jadi saya mengira itu kurang aman. Untung saja saya toh tidak memakai BitLocker
Lucu sekali bahwa trik anak SD seperti era Windows Vista, yaitu mengganti nama command prompt menjadi handler aksesibilitas, ternyata masih tetap berfungsi
Kalau sesuatu berjalan dengan hak admin tanpa login, kita akan membayangkan Windows akan melakukan autentikasi, tetapi Windows tampak seperti 75% teater keamanan dan 25% sisanya juga teater jenis lain
Teknik yang sama dijelaskan pada 2021:
https://dolosgroup.io/blog/2021/7/9/from-stolen-laptop-to-in...