Kategorie:

Hashe haseł Active Directory – skąd i jak je wziąć?

W tym wpisie pokaże Wam jedną z metod na wyciągnięcie Hashy haseł użytkowników z bazy Active Directory.

Ale może zanim przejdę do metody, krótko o tym jak są przechowywane hasła w bazie. Dla jeszcze nie wtajemniczonych wszystkie dane o użytkownikach i nie tylko są przechowywane w pliku NTDS.DIT na kontrolerach domeny – każdy DC przechowuje swoja wersję tego pliku.

W momencie gdy użytkownik wpisze hasło jest ono zamieniane za pomocą funkcji jednostronnej na ciag znaków – hash. Jednostronnej, aby nie było możliwości w łatwy sposób powrócić do pierwotnej postaci wcześniej zaszyfrowanego hasła. Niezależnie od długości wpisanego hasła, jego hash ma zawsze 32 znaki, nawet gdy ustawicie sobie najdłuższe hasło w systemie Windows (127 znaków), po hashowaniu będzie miało zaledwie… 32 znaki.

Algorytm tworzenia hasha NT jest bardzo prosty – jest to hasło kodowane w UTF-16-LE a następnie zahashowane funkcją MD4

MD4(UTF-16-LE(„P@ssw0rd”))

Efektem takiej funkcji dla podanego hasła będzie odpowiadający mu hash E19CCF75EE54E06B06A5907AF13CEF42

Znacie już sposób generowania hashy, to teraz jak je wydobyć z pliku ntds.dit

Pierwszym ze sposób jest moduł do Powershella od DSInternals. Moduł ten pozwala na m.in odczyt LM, NT hashy dla pojedynczego konta, oraz dla wszystkich kont w domenie zarówno online jak i offline, analizę haseł oraz wiele innych ciekawych funkcji. W tym poście jednak skupię się tylko na tym w jaki sposób pobrać hashe. Po instalacji modułu, należy go zaimportować i wykonać jedno z poleceń w zależności od sposobu pobierania danych. Dla online – łatwiejsza droga, wystarczy jedno polecenie. Do pobierania danych używany jest protokół MS-DRSR:

Get-ADReplAccount -SamAccountName john.smith -Server DC1

Dla offline sytuacja się bardziej komplikuje, ponieważ aby odczytać te same dane potrzebujemy: pliku ntds.dit, czyli pliku bazy Active Directory oraz klucza szyfrującego (boot key). Wyciągnięcie klucza dla działającego systemu nie jest przesadnie skomplikowane.

Teraz czas na plik ntds.dit, chyba najłatwiej (bez zatrzymywania usługi ADDS) będzie użyć do tego vssadmina poprzez polecenie:

vssadmin create shadow /for=C:

Jako wynik polecenia otrzymamy ścieżkę do wolumenu, teraz wystarczy skopiować plik ntds.dit do innej lokalizacji.

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit C:\temp\ntds.dit

Nie zapomnijcie po skopiowaniu pliku usunąć kopię 😉

Teraz mając już klucz i plik bazy, możemy przejść do odczytywania hashy

Get-ADDBAccount -BootKey d462c30d0c6edcca5529fdf642df2a11 -SamAccountName john.smith -DatabasePath C:\Users\Administrator\Desktop\ntds.dit

Zachodzi pytanie, do czego zatem można wykorzystać już posiadane hashe? Po co tyle zachodu? Np. porównać ją z bazą hashy NTLM ze strony haveibeenpwned.com, przez co dowiemy się, którzy użytkownicy mają już skompromitowane hasło i muszą je zmienić. Jeśli chcecie się dowiedzieć jak to zrobić, to dajcie znać.

2 komentarze do “Hashe haseł Active Directory – skąd i jak je wziąć?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *