NTDS.DIT offline hashdump, avagy a meztelen igazság a domaines jelszótárolásról
Bemutatkozás Barta Csaba Deloitte Zrt. Manager CHFI cbarta@deloittece.com csaba.barta@gmail.com
NTDS.DIT? Active Directory elsődleges adattároló állománya Helye: %WINDOWS%\NTDS\ntds.dit Mit tartalmaz Az összes AD-ben tárolt objektumot Felhasználók Csoportok Jogosultságok
Hogyan juthatunk hozzá? Volume Shadow Copy Online forensic pillanatkép DC kikapcsolas + masolas
NTDS.DIT felépítés Táblák datatable (AD objektumok és attribútumaik) linktable (hivatkozások pl.: memberof) sdtable (security descriptors /Server 2003 óta/)
NTDS.DIT felépítés 2 A schema-ban leírt összes tulajdonság megtalálható minden objektum-rekordban (csak nincs kitöltve) emiatt akár több ezer mezőből is állhat egy rekord Attr 1 Attr 2 Attr 3 Obj 1 1 2 null Obj 2 3
Hol tárolódnak a jelszavak? A jelszó hash-eket a datatable tárolja Érdekesebb user attribútumok ATTm3 – SAMAccountName ATTm13 – Description ATTk589970 – SID ATTk589879 – Titkosított LM hash ATTk589914 – Titkosított NT hash ATTk589918 – Titkosított NT PWD history ATTk589984 – Titkosított LM PWD history ATTk590689 – Titkosított PEK
Hash titkosítás A jelszó hash-ek titkosítva tárolódnak Standard algoritmusok (RC4, MD5, DES) A titkosító kulcs (PEK) tartományonként különbözik, megtalálható az NTDS.DIT állományban (szintén titkosítva a bootkey segítségével)
Dekriptálás menete Bootkey kinyerése a registryből PEK dekriptálás Jelszó hash dekriptálás PEK-el Jelszó hash dekriptálás DES-el
PEK dekriptálás md5=MD5.new() md5.update(bootkey) for i in range(1000): md5.update(enc_pek[0:16]) rc4_key=md5.digest(); rc4 = ARC4.new(rc4_key) pek=rc4.encrypt(enc_pek[16:]) return pek[36:]
Jelszó hash dekriptálás md5 = MD5.new() md5.update(pek) md5.update(enc_hash[0:16]) rc4_key = md5.digest(); rc4 = ARC4.new(rc4_key) denc_hash = rc4.encrypt(enc_hash[16:]) (des_k1,des_k2) = sid_to_key(rid) d1 = DES.new(des_k1, DES.MODE_ECB) d2 = DES.new(des_k2, DES.MODE_ECB) hash = d1.decrypt(denc_hash[:8]) + d2.decrypt(denc_hash[8:]) return hash
Jelszó history Miért fontos a vizsgálata Hol tárolódik Jelszóválasztási minta keresése LM hashek Hol tárolódik Az ATTk589984 és ATTk589918 attribútumokban tárolódik Egymás után másolva (titkosítva) Külön-külön kell dekriptálni őket
Jelszó history dekriptálás Bootkey kinyerése a registryből PEK dekriptálás History dekriptálás PEK-el Jelszó hash-ek dekriptálás egyenként DES-el
DEMO
Köszönöm a figyelmet!