Bitcracker adalah alat perekam kata sandi open source pertama untuk perangkat penyimpanan (hard disk, usb pendrive, kartu sd, dll ...) dienkripsi dengan bitlocker, fitur enkripsi yang tersedia di Windows Vista, 7, 8.1 dan 10 (Ultimate, Pro dan Enterprise edisi). BitLocker menawarkan sejumlah metode otentikasi yang berbeda untuk mengenkripsi perangkat penyimpanan seperti Modul Platform Tepercaya (TPM), kartu pintar, kata sandi pemulihan, kata sandi yang disediakan pengguna.
Dengan menggunakan serangan kamus, Bitcracker mencoba menemukan kata sandi pengguna atau kata sandi pemulihan yang benar untuk mendekripsi perangkat penyimpanan terenkripsi. Ini telah diimplementasikan di CUDA dan Opencl.
Beberapa jurnal menunda publikasi makalah Bitcracker kami (hampir 3 tahun, dengan penolakan akhir setelah beberapa revisi) yang menjelaskan rincian serangan kami, format volume enkripsi drive bitlocker (BDE) dan kemungkinan kelemahan dalam prosedur enkripsi/dekripsi. Akhirnya, kami menerbitkan makalah di sini: https://arxiv.org/abs/1901.01337. Silakan berkomentar dan bagikan.
Untuk menjalankan Bitcracker-Cuda, persyaratan minimal adalah:
Untuk menjalankan Bitcracker-Opencl, persyaratan minimal adalah OpenCL pendukung GPU atau CPU (Anda dapat menemukan bantuan di sini.
Bitcracker membutuhkan setidaknya 260 MB memori perangkat.
Kami sangat menyarankan untuk menjalankan serangan Anda pada GPU daripada CPU untuk alasan kinerja (lihat Kinerja Bagian).
Menjalankan skrip build.sh
menghasilkan 4 executable di dalam direktori build
: bitcracker_hash
, bitcracker_rpgen
, bitcracker_cuda
, bitcracker_opencl
.
Untuk membangun bitcracker_cuda
secara koheren dengan versi NVIDIA GPU dan CUDA Anda, Anda perlu memodifikasi src_CUDA/Makefile
yang memilih versi SM yang benar. Sebagai referensi, Anda dapat menggunakan tabel berikut:
Arsitektur GPU | Menyarankan cuda | Makefile |
---|---|---|
Kepler | CUDA 7.5 | Arch = compute_35, kode = SM_35 |
Maxwell | CUDA 8.0 | Arch = compute_52, kode = SM_52 |
Pascal | CUDA 9.0 | Arch = compute_60, kode = SM_60 |
Volta | CUDA 9.0 | Arch = compute_70, kode = SM_70 |
Anda perlu membuat gambar perangkat penyimpanan Anda dienkripsi dengan BitLocker menggunakan, sebagai contoh, perintah DD :
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 records in
4030464+0 records out
2063597568 bytes transferred in 292.749849 secs (7049013 bytes/sec)
Maka Anda perlu menjalankan bitcracker_hash
yang dapat dieksekusi di imageEncrypted.img
Anda untuk:
Jika eksekusi selesai dengan benar, bitcracker_hash
menghasilkan 1 atau 2 file output:
Volume terenkripsi BDE dapat memiliki format yang berbeda untuk metode otentikasi yang berbeda. Jika bitcracker_hash
tidak dapat menemukan kata sandi pemulihan pada gambar terenkripsi Anda, buka masalah atau hubungi saya
Contoh:
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7
---------> BitCracker Hash Extractor <---------
Opening file ./Images/imgWin7
....
Signature found at 0x02208000
Version: 2 (Windows 7 or later)
VMK entry found at 0x022080bc
VMK encrypted with user password found!
VMK encrypted with AES-CCM
VMK entry found at 0x0220819c
VMK encrypted with Recovery key found!
VMK encrypted with AES-CCM
User Password hash:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2
Recovery Key hash:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688
Output file for user password attack: "hash_user_pass.txt"
Output file for recovery password attack: "hash_recv_pass.txt"
Anda dapat menggunakan jenis serangan ini jika perangkat penyimpanan telah dienkripsi dengan kata sandi yang disediakan pengguna seperti yang ditunjukkan pada gambar berikut. Bitcracker melakukan serangan kamus, sehingga Anda perlu memberikan daftar kata sandi pengguna yang kemungkinan.
Untuk memulai serangan yang Anda butuhkan:
hash_user_pass.txt
Contoh baris perintah:
./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u
Di mana:
-f
: Path to hash_user_pass.txt
file-d
: Jalur ke daftar kata Anda-t
: Jumlah kata sandi yang diproses oleh setiap utas CUDA-b
: Jumlah blok CUDA-g
: ID perangkat GPU NVIDIA-u
: Tentukan serangan kata sandi pengguna yang Anda inginkan Untuk semua opsi yang tersedia, ketik ./build/bitcracker_cuda -h
. Untuk memiliki kinerja terbaik, silakan merujuk ke tabel di bagian Kinerja untuk mengatur opsi t
dan b
dengan benar sesuai dengan GPU NVIDIA Anda.
Pertimbangan yang sama dapat diterapkan untuk Executable bitcracker_opencl
.
Contoh output:
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================
....
Reading hash file "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663
====================================
Attack
====================================
Type of attack: User Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 1
Max Psw per kernel: 1024
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No
CUDA Kernel execution:
Stream 0
Effective number psw: 12
Passwords Range:
abcdefshhf
.....
blablalbalbalbla12
Time: 28.651947 sec
Passwords x second: 0.42 pw/sec
================================================
....
Password found: paperino
================================================
Saat ini Bitcracker dapat memproses kata sandi input dengan panjang antara 8 dan 55 karakter.
Selama enkripsi perangkat penyimpanan, (terlepas dari metode otentikasi) Bitlocker meminta pengguna untuk menyimpan di suatu tempat kata sandi pemulihan yang dapat digunakan untuk mengembalikan akses ke perangkat penyimpanan terenkripsi jika ia tidak dapat membuka kunci drive tersebut biasanya. Dengan demikian kata sandi pemulihan adalah sejenis part-partout untuk semua metode otentikasi dan terdiri dari kunci 48 digit seperti ini:
236808-089419-192665-495704-618299-073414-538373-542366
Lihat Microsoft Docs untuk perincian lebih lanjut.
Sedangkan untuk kata sandi pengguna, Bitcracker dapat melakukan serangan kamus untuk menemukan kata sandi pemulihan yang benar yang dihasilkan oleh Bitlocker untuk mengenkripsi perangkat penyimpanan. Harap dicatat bahwa saat ini kami dapat menyerang kata sandi pemulihan hanya jika perangkat penyimpanan belum dienkripsi dengan TPM.
Untuk memulai serangan yang Anda butuhkan:
hash_recv_pass.txt
Hasilkan dan simpan semua Kata Sandi yang Kemungkinan Ini adalah masalah yang sulit. Untuk alasan ini, kami membuat generator kata sandi pemulihan bernama bitcracker_rpgen
. Dengan alat ini Anda dapat membuat banyak kata sandi pemulihan kata yang dapat Anda gunakan untuk serangan Anda. Sebagai contoh:
./build/bitcracker_rpgen -n 300 -p 10000000 -s 000000-000011-000022-000033-000044-000055-008459-015180
Ini menghasilkan:
-n
: jumlah wordlists-p
: Jumlah kata sandi pemulihan per wordlist-s
: menghasilkan kata sandi pemulihan mulai dari yang satu iniAnda dapat menggunakan konfigurasi default yang berjalan tanpa opsi:
./build/bitcracker_rpgen
************* BitCracker Recovery Password wordlists generator *************
Running with this configuration:
### Create 100 wordlists
### Recovery Passwords per wordlist=5000000
### Allow duplicates=No
### Generate starting from=000000-000011-000022-000033-000044-000055-000066-000077
Creating wordlist "bitcracker_wlrp_0.txt" with 5000000 passwords
First password=000000-000011-000022-000033-000044-000055-000066-000077
Last password= 000000-000011-000022-000033-000044-000055-000902-217822
...
Perhatikan bahwa opsi -s
dapat digunakan untuk memulai kembali generasi dari kata sandi pemulihan terakhir yang Anda hasilkan (bukannya restart setiap kali dari yang awal). Opsi -d
memungkinkan kemungkinan memiliki duplikat dalam kata sandi pemulihan yang sama. Misalnya: 000000-000011-000055-000055-000044-000055-000902-217822
Untuk semua opsi yang tersedia, ketik ./build/bitcracker_rpgen -h
.
Catatan: Harap dicatat bahwa jumlah kata sandi pemulihan yang mungkin sangat besar:
recovery password = 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536
Menurut penelitian kami, distribusi kata sandi seragam dan tidak ada cara untuk menemukan angka "lebih mungkin". Sejauh ini, kami tidak menemukan aturan untuk mengurangi jumlah kandidat yang mungkin. Ini berarti bahwa serangan kata sandi pemulihan dapat memakan waktu selamanya (serangan passwod pengguna selalu lebih disukai). Segera kami akan memodifikasi alat bitcracker_rpgen
untuk menghasilkan kata sandi pemulihan dengan cara yang santai daripada dalam urutan yang dipesan.
Contoh baris perintah:
./build/bitcracker_cuda -f hash_recv_pass.txt -d bitcracker_wlrp_0.txt -t 1 -b 1 -g 0 -r
Di mana opsi sama dengan dalam kasus kata sandi pengguna tetapi bukan -u
Anda perlu menentukan -r
. Contoh output:
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================
...
Reading hash file "hash_recv_pass.txt"
$bitlocker$2$16$432dd19f37dd413a88552225628c8ae5$1048576$12$a0da3fc75f6cd30106000000$60$3e57c68216ef3d2b8139fdb0ec74254bdf453e688401e89b41cae7c250739a8b36edd4fe86a597b5823cf3e0f41c98f623b528960a4bee00c42131ef
====================================
Attack
====================================
Type of attack: Recovery Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 8
Max Psw per kernel: 8192
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No
CUDA Kernel execution:
Effective passwords: 6014
Passwords Range:
390775-218680-136708-700645-433191-416240-153241-612216
.....
090134-625383-540826-613283-563497-710369-160182-661364
Time: 193.358937 sec
Passwords x second: 31.10 pw/sec
================================================
CUDA attack completed
Passwords evaluated: 6014
Password found: 111683-110022-683298-209352-468105-648483-571252-334455
================================================
Secara default, Bitcracker melakukan serangan cepat (untuk mode pengguna dan pemulihan kata sandi) yang dapat mengembalikan beberapa false positive. Dalam hal ini Anda dapat menjalankan kembali serangan Anda dengan opsi -m
yang memungkinkan verifikasi Mac (solusi lebih lambat).
Untuk menguji Bitcracker pada sistem Anda sebelum memulai serangan nyata, kami menyediakan beberapa gambar perangkat penyimpanan terenkripsi.
Anda dapat menyerang gambar -gambar itu dengan mode kata sandi pengguna dan pemulihan, menggunakan daftar kata yang disimpan di folder Dictionary
.
Di sini kami melaporkan kinerja Bitcracker terbaik jika terjadi serangan cepat (default) ke kata sandi pengguna (-U opsi).
GPU Acronim | GPU | Lengkungan | CC | # Sm | Jam | Cuda |
---|---|---|---|---|---|---|
Gft | GeForce Titan | Kepler | 3.5 | 14 | 835 | 7.0 |
GTK80 | Tesla K80 | Kepler | 3.5 | 13 | 875 | 7.5 |
Gftx | GeForce Titan x | Maxwell | 5.2 | 24 | 1001 | 7.5 |
GTP100 | Tesla P100 | Pascal | 6.1 | 56 | 1328 | 8.0 |
GTV100 | Tesla V100 | Volta | 7.0 | 80 | 1290 | 9.0 |
AMDM | Radeon Malta | - | - | - | - | - |
Pertunjukan:
Versi | GPU | -T | -B | Kata sandi x kernel | Kata sandi/detik | Hash/detik |
---|---|---|---|---|---|---|
Cuda | Gft | 8 | 13 | 106.496 | 303 | 635 mh/s |
Cuda | GTK80 | 8 | 14 | 114.688 | 370 | 775 mh/s |
Cuda | Gftx | 8 | 24 | 106.608 | 933 | 1.957 mh/s |
Cuda | GTP100 | 1 | 56 | 57.344 | 1.418 | 2.973 mh/s |
Cuda | GTV100 | 1 | 80 | 81.920 | 3.252 | 6.820 mh/s |
OpenCl | AMDM | 32 | 64 | 524.288 | 241 | 505 mh/s |
OpenCl | Gftx | 8 | 24 | 196.608 | 884 | 1.853 mh/s |
NB Setiap kata sandi membutuhkan sekitar 2.097.152 SHA-256
Kami merilis Bitcracker sebagai format Opencl-Bitlocker di John the Ripper ( --format=bitlocker-opencl
). File hash yang dihasilkan oleh bitcracker_hash
(lihat bagaimana bagian) sepenuhnya kompatibel dengan format John.
Pada tingkat kata sandi GTV100 adalah sekitar 3150p/s. Tim JTR mengembangkan versi CPU dari serangan ini ( --format=bitlocker
); Pada CPU Intel (R) Xeon (R) v4 2.20GHz, laju kata sandi sekitar 78p/s.
Ini adalah pekerjaan yang sedang berlangsung ...
Nov 2021: Kode diperbarui untuk dijalankan di NVIDIA GPU Ampere menggunakan CUDA 11.x
PLASE Bagikan dan uji proyek kami: Kami membutuhkan umpan balik Anda!
Terima kasih khusus kepada proyek John the Ripper, proyek Dislocker dan Libbde.
Ini adalah proyek penelitian bekerja sama dengan Dewan Penelitian Nasional Italia yang dirilis di bawah lisensi GPLV2.
Hak Cipta (C) 2013-2021 Elena yang lalu (Elena Dot yang lalu di Gmail Dot Com) dan Massimo Bernaschi (Massimo Dot Bernaschi di Gmail Dot Com)
Kami akan memberikan beberapa info tambahan tentang serangan Bitcracker di koran mendatang.
Meskipun kami menggunakan lisensi GPLV2, kami terbuka untuk kolaborasi. Untuk info tambahan, kolaborasi atau laporan bug silakan hubungi kami atau buka masalah