Bagaimana cache Windows di-cache disimpan di mesin lokal?

26

Bagaimana cara kredensial domain Direktori yang di-cache disimpan di klien Windows? Apakah mereka disimpan dalam database SAM lokal, sehingga membuatnya rentan terhadap serangan tabel pelangi yang sama dengan yang rentan terhadap akun pengguna lokal, atau apakah mereka disimpan secara berbeda? Perhatikan, bahwa saya benar-benar menyadari bahwa mereka asin dan hash, agar tidak disimpan dalam teks biasa, tetapi apakah mereka hash dengan cara yang sama seperti akun lokal dan apakah mereka disimpan di lokasi yang sama?

Saya menyadari bahwa setidaknya mereka rentan terhadap serangan brute force, tapi itu situasi yang jauh lebih baik daripada menjadi rentan terhadap tabel pelangi jika mesin dicuri.

MDMarra
sumber

Jawaban:

17

"Kredensial dalam cache"

Kredensial yang di-cache untuk domain AD sebenarnya adalah hash ganda dari kata sandi dan disimpan dalam sarang HKLM \ Security. Lokasi file sarang adalah: %systemroot%\System32\config\SECURITY

Hanya pengguna "sistem" yang memiliki akses ke kunci registri: di
HKLM\Security\Cache\NL$nmana nindeks 1 ke jumlah maksimum kredensial yang di-cache.

Kerentanan terhadap Serangan

WinNT ke WinXP menggunakan hash "Lan Manager" untuk akun lokal , yang mudah rusak pada perangkat keras modern. Cracking biasanya memakan waktu beberapa menit (saya baru-baru ini membuat 3 kata sandi di 00:08:06) hanya dengan komputer desktop "normal". Hash Lan Manager tidak diasinkan, jadi ada juga tabel pelangi yang tersedia untuk umum.

Vista dan kemudian menggunakan hash NT untuk akun lokal . Windows 2000 dan kemudian menggunakan hash NT untuk akun domain juga. Hash NT diasinkan hash ganda MD4. Garam per entri mencegah penggunaan tabel pelangi, tetapi MD4 dapat dijalankan dengan sangat cepat pada perangkat keras modern: sekitar 6 tahun komputasi untuk kata sandi 60-bit. Dengan keberuntungan dan 6 GPU cluster cracker dapat memecahkan kata sandi semacam ini dalam ~ 6 bulan. Membawa itu ke cloud, sekitar $ 35k di Amazon EC2 GPU - tergantung ketersediaan, bisa berjam-jam.

Chris S
sumber
Saya kira sebagian besar pertanyaan saya adalah apakah kredensial yang disimpan ini rentan terhadap serangan berbasis tabel pelangi yang sama dengan akun lokal jika mereka di hash dengan metode yang berbeda
MDMarra
Diperbarui ... Vista + semuanya sama saja. Versi yang lebih lama berbeda.
Chris S
"Hash kata sandi NT dihitung dengan menggunakan algoritma hash MD4 tawar." - Langsung dari TechNet: technet.microsoft.com/en-us/library/hh994565(v=ws.10).aspx
thepip3r
Halaman itu salah, hash NT diasinkan. Lihat jawaban Joe di bawah ini untuk tautan ke KB.
Chris S
4

Kredensial sebenarnya tidak di-cache di mesin lokal. Lihat kutipan ini dari MS:

Keamanan kredensial domain yang di-cache

Istilah kredensial yang di-cache tidak menjelaskan secara akurat bagaimana Windows menyimpan informasi masuk untuk domain masuk. Di Windows 2000 dan di versi Windows yang lebih baru, nama pengguna dan kata sandi tidak di-cache. Sebagai gantinya, sistem menyimpan verifikasi kata sandi terenkripsi. Verifier ini adalah hash MD4 asin yang dihitung dua kali. Komputasi ganda secara efektif membuat verifikasi hash dari hash kata sandi pengguna. Perilaku ini tidak seperti perilaku Microsoft Windows NT 4.0 dan versi Windows NT sebelumnya.

http://support.microsoft.com/kb/913485

joeqwerty
sumber
Benar, saya mengerti bahwa kredensial itu sendiri sebenarnya tidak di-cache, tetapi pertanyaan saya lebih pada garis "apakah hash yang dihasilkan disimpan dalam database SAM lokal dengan cara yang sama seperti akun lokal, sehingga membuat mereka dapat diandalkan untuk serangan yang sama. " Saya akan mengedit ini sebentar lagi agar lebih jelas.
MDMarra
1
meh .. bagi saya ini adalah cincang kata-kata. sifat "hashing" adalah proses satu arah yang pada dasarnya menciptakan nilai kata sandi yang membingungkan dengan menggunakan algoritma yang aman secara kriptografis. Masalahnya adalah bahwa MD4 mungkin telah aman secara kriptografi 10-15 tahun yang lalu tetapi bahkan tidak dekat lagi (MD5 atau SHA1 juga tidak dari sudut pandang seorang cryptographer). Jadi, jika Anda memiliki perangkat keras masa kini yang dapat dengan cepat memaksa ruang utama algoritme atau mengungkap tabrakan, maka Anda dapat dengan mudah memperoleh kata sandi dari hash ...
thepip3r
Jika kredensial disimpan dengan cara atau bentuk apa pun sehingga mereka dapat diverifikasi dalam mode offline - maka mereka untuk semua maksud dan tujuan di-cache, tidak peduli bagaimana data dalam cache itu terlihat
NiKiZe
4

Mereka ditangani oleh Manajer Kredensial, di mana ada API Manajer Kredensial. Hash asin disimpan dalam cara yang agak aman pada disk dan diakses melalui HKLM \ Security. (Yang hanya dapat diakses oleh LocalSystem secara default, tetapi mudah untuk memotong, misalnya, dengan psexec -i -s regedit.exe.)

Pada sistem Windows yang sedang berjalan, situasinya lebih mengerikan, karena kredensial yang digunakan baru-baru ini dapat diperoleh dan dengan mudah dibalik menjadi teks biasa dengan mengaitkan DLL ke Lsass. (Lihat Mimikatz.)

Jadi ya, Anda akan menemukan semacam hash (atau hash hash, atau 'verifier' atau apa pun yang Anda ingin menyebutnya) di HKLM \ Security \ Cache pada klien. Tapi saya tidak berpikir ada cara yang layak untuk menyerang hash pada disk. Ini bukan jenis hash NTLM yang sama yang dapat diserang.

Ryan Ries
sumber
Peretasan kata sandi offline di SAM sama sekali berbeda dari mengaitkan LSASS dalam memori seperti yang dilakukan Mimikatz dan WCE. Dan tergantung pada kerumitan kata sandi, peretasaan kata sandi offline dari SAM bisa SANGAT mudah (lihat samdump2)
thepip3r