it-swarm-id.com

Keamanan Hash Sandi Windows 7

Saya baru-baru ini menemukan sebuah angkadarisumber yang menunjukkan bahwa cracking kata sandi akun pengguna Windows mudah dengan memeriksa hash kata sandi mereka.

Saya mengerti bahwa hash ini disimpan dalam file SAM dalam dua format: LM dan NTLM . LM tidak aman (dan karena Vista, yang berarti tidak disimpan, kan?). Namun, NTLM juga lemah secara kriptografis, dan juga dapat rusak dengan cepat.

Bagaimanapun, bahkan dengan apa yang saya anggap sebagai kata sandi "kuat", saya telah melihatnya retak dalam beberapa menit - cukup dengan me-reboot komputer ke Linux dari flash drive, dan kemudian menjalankan program yang mengekstrak kata sandi dari hash. Menurut saya ini merupakan kerentanan yang sangat besar.

Satu-satunya hal yang saya dapat temukan secara online tentang mencegah hal ini adalah dengan menggunakan kata sandi yang lebih panjang, untuk menjamin bahwa hash LM yang lebih lemah tidak berarti - tetapi NTLM masih lemah.

Adakah yang tahu bagaimana melindungi dari serangan semacam ini?

17
imallett

Ada beberapa hal yang perlu dipertimbangkan di sini. Dua algoritma telah digunakan oleh Microsoft untuk database akun pada sistem windows:

LM (Manajer LAN)

NTLM (Manajer LAN NT)

Penyerang dengan akses fisik ke sistem Anda dapat dengan mudah membuang isi database SAM (Security Accounts Manager) untuk semua akun lokal dan kemudian menggunakan sesuatu seperti Ophcrack ( http://ophcrack.sourceforge.net ) untuk menjalankan serangan tabel Rainbow terhadap nilai hash.

Namun, Anda perlu menentukan apa risiko yang sebenarnya: penyerang dapat memecahkan kata sandi dan/atau penyerang dapat mengakses sistem. Ini penting karena tidak perlu memecahkan kata sandi (tebak nilainya) untuk membahayakan sistem. Banyak alat lain hanya mengganti hash dalam database SAM dengan sesuatu yang dipilih oleh penyerang. Ini mengkompromikan sistem, tetapi tidak perlu kata sandi itu sendiri. Enkripsi seluruh disk menyelesaikan kedua masalah sebagai garis pertahanan pertama: penyerang Anda tidak dapat memasang volume di alat apa pun yang mereka gunakan untuk bercampur aduk dalam database SAM. Jika Anda menggunakan rute ini, banyak vendor komersial menawarkan solusi. Truecrypt ( http://www.truecrypt.org/ ) menawarkan program gratis yang luar biasa. Bitlocker atau solusi enkripsi terintegrasi OS apa pun tidak ada artinya karena mereka rentan terhadap serangan boot dingin.

Salah satu solusi yang lebih baru adalah drive enkripsi diri yang memerlukan boot ke firmware mereka sendiri untuk akses.

4
Paul Horbal

Dalam semua jawaban ini, saya sedang mempertimbangkan masalah memulihkan kata sandi (atau kata sandi yang setara) dari hash purloined, seperti yang disimpan dalam server di mana penyerang bisa mendapatkan akses baca.

Hash NTLM lemah, tetapi tidak selemah hash LM yang lebih tua.

Hash LM lama mencakup beberapa kelemahan modal:

  • Tidak peka huruf besar-kecil.
  • Terbatas hingga 14 karakter.
  • Pisahkan kata sandi menjadi dua bagian 7-karakter yang di hash secara terpisah.

Kelemahan terakhir ini memungkinkan pemecahan yang sangat efisien (terlepas dari kehati-hatian dalam memilih kata sandi); lihat jawaban ini untuk detailnya.

NTLM yang kurang lama hanya MD4 dihitung menggunakan kata sandi. Kali ini, kata sandi peka huruf besar-kecil, dan bisa sangat panjang. Ada beberapa perselisihan mengenai panjang kata sandi maksimum sebenarnya yang tampaknya bisa mencapai 127 karakter atau lebih. Karena MD4 dikomputasi melalui pengkodean kata sandi UTF-16, seluruh jajaran Unicode secara teoritis dapat digunakan, tetapi karena pengguna perlu mengetikkan kata sandi secara teratur (dan tanpa umpan balik visual ), menggunakan karakter di luar set cetak ASCII sedang mencari masalah.

Apa yang lemah dalam hash NTLM adalah bahwa itu tidak tawar, dan bahwa MD4 adalah cepat (MD4 juga secara kriptografis rusak dalam beberapa cara, tetapi tidak untuk resistensi preimage mentah seperti yang digunakan untuk hashing kata sandi; untuk itu, MD4 sama kuatnya seperti sebelumnya). MD4 sebenarnya lebih cepat dari MD5. GPU terbaru akan menghitung beberapa miliaran dari instance MD4 per detik. Ini membuatnya mudah bagi penyerang untuk mengeksplorasi set besar password potensial (yang dikenal sebagai dictionary attack ). Satu-satunya pertahanan adalah memilih kata sandi Anda dari set genap genap.

Mari kita berhitung: karena NTLM tidak tawar, kelompok penyerang yang berdedikasi mungkin merasa berharga untuk membangun Rainbow yang besar tabel . Ada berbagai kemungkinan optimasi, tetapi, sebagai suatu peraturan, segala sesuatunya akan berjalan seperti ini:

  • Ada parameter keamanan, yang disebut t; itulah panjang rata-rata rantai di tabel Rainbow.
  • Jika kumpulan kata sandi yang dicakup oleh tabel memiliki ukuran [~ # ~] n [~ # ~], maka persyaratan penyimpanan sekitar 10 * N/t byte (10 byte per akhir rantai yang diurutkan adalah perkiraan yang masuk akal).
  • Membangun tabel memerlukan biaya sekitar 1.7 * N doa fungsi hash.
  • Menyerang satu kata sandi dengan tabel memerlukan komputasi sekitar t2 kali fungsi hash, dan membuat t pencarian di tabel.

Jika tabel dibagi lebih dari seratus hard disk mekanis, maka sekitar 10.000 pencarian dapat dilakukan per detik. Jika penyerang benar-benar termotivasi, ia mungkin ingin menghabiskan satu jam atau lebih per kata sandi, yang berarti maksimum t dari 3600000 untuk pencarian (misalkan 222); biaya CPU yang sesuai turun menjadi sekitar 232 hash per detik, yang layak dengan beberapa GPU terbaru. Seratus disk memungkinkan untuk 300 TB penyimpanan (saya berbicara tentang 3 TB disk, yang tidak tersedia hari ini)), yang membawa kemungkinan = [~ # ~] n [~ # ~] menjadi sekitar 267. Itu agak besar, tetapi layak secara teknologi. Kelompok penyerang kami dapat membeli seratus GPU (dan a besar unit pendingin udara) dan dilakukan dengan menghitung tabel itu dalam beberapa bulan.

Jadi, untuk mengalahkan musuh termotivasi kita, kita perlu memilih kata sandi secara acak dari set yang lebih besar dari [~ # ~] n [~ # ~]. Jika kumpulan kata sandi kami yang mungkin memiliki ukuran lebih dari 277 dan kata sandi kami dipilih secara acak dan seragam di set itu (yaitu entropi kata sandi adalah 77 bit atau lebih), maka penyerang hanya memiliki peluang 1/1000 dari crack password yang diberikan dengan mejanya. Ini seharusnya cukup untuk mencegahnya.

Bagaimana kita mendapatkan 77 bit entropi? Jika kita membatasi diri pada huruf (huruf besar dan kecil) dan angka, sehingga kata sandi dapat diketik di papan ketik acak, maka kita dapat memiliki sedikit kurang dari 6 bit entropi per karakter. Karenanya, 13 karakter sudah cukup . Bukankah itu membengkak? Hanya 13! Tidak perlu pergi ke frasa sandi besar. Tetapi perhatikan jenis kecilnya: itu 13 huruf atau angka yang benar-benar acak. Tidak ada pertanyaan membiarkan manusia pilih karakter ini, atau bahkan menghasilkan selusin kata sandi dari 13 karakter dan membiarkannya memilih yang paling disukainya. Anda mengambil generator, Anda menghasilkan satu kata sandi, dan Anda mempelajarinya. Upaya mental adalah harga menggunakan mekanisme hashing password cepat yang tidak tawar seperti NTLM.

(Tentu saja, kelompok penyerang yang dijelaskan di atas adalah realistis. Anda mungkin ingin sedikit menambah kerumitan, sehingga kata sandi Anda juga akan kuat sehubungan dengan penyerang besok; jadi buat 14 atau 15 karakter agar lebih aman.)

18
Thomas Pornin

Secara umum, pada kebanyakan sistem, kata sandi yang lebih panjang selalu lebih baik.

Tentu saja ada tabel Rainbow untuk NTLM (mis., http://www.freerainbowtables.com/en/tables2/ )

Dari perspektif memaksa kasar, Anda harus membatasi jumlah upaya login gagal sebelum Anda dikunci. Ini dapat diatur menggunakan kebijakan lokal. 3 upaya gagal, maka Anda memblokirnya.

Keamanan fisik mengalahkan semua. Blokir BIOS dari mem-boot cd atau usb dan kunci di kotak. Tentu saja, saya tegaskan kembali komentar di atas, gunakan enkripsi cakram penuh, bahkan mungkin multifaktor. Anda tidak dapat memasang drive terenkripsi di Linux secara ajaib, Anda perlu mengetahui kata sandi dan/atau kunci.

Boot dingin dan pelayan jahat mengharuskan seseorang untuk benar-benar menginvestasikan waktu untuk merusak mesin Anda. Pada PC rumah lokal Anda, kemungkinan besar Anda akan tertipu untuk mengunduh malware atau Anda memiliki perangkat lunak yang belum ditambal dan mereka hanya akan mendapatkan root (ahem, administrator) dan tidak peduli dengan melanggar kata sandi Anda.

Jika Anda memiliki hal-hal rahasia nyata, lakukan enkripsi disk penuh dan taruh hal-hal penting itu sebagai wadah enkripsi tingkat kedua.

Saya pernah mendengar seorang pria komputer hanya mengatakan bahwa satu-satunya komputer yang aman adalah yang telah sedikit dipotong dengan kapak dan kemudian dibakar. :-)

5
Eric G