Kilka miesięcy temu dostałem obraz dysku giętarki Dynobend z prośbą o uruchomienie go i/lub odzyskanie haseł. Wiedziałem tylko tyle, że zainstalowany na maszynie system to Windows XP.
Odtwarzanie obrazu
Początkowym wyzwaniem było samo odtworzenie obrazu dysku. Nie wiedziałem jakim narzędziem była robiona kopia, ale po krótkim researchu doszedłem do wniosku, że było to oprogramowanie Paragonu.

Zanim zacząłem odtwarzać kopię, dodałem kolejny dysk wirtualny do maszyny

Po uzyskaniu dostępu do programu, odtworzyłem kopię jako kopię całego dysku (można też jako kopie poszczególnych woluminów, ale to utrudniłoby uruchomienie systemu).


Po zakończeniu odtwarzania pojawiły się woluminy w przystawce „Zarządzanie dyskami”

Zostało mi tylko stworzyć nową maszynę wirtualną, spróbować uruchomić odtworzony system i trzymać kciuki.
Walka z bluescreenem
Windows XP jest zdecydowanie mniej przenośny, niż nowsze wersje systemu od Microsoftu. Oto jak zakończyła się moja pierwsza próba odpalenia systemu:

Trzymanie kciuków mało co mi dało, jak widać. Na powyższym zrzucie ekranu tego nie widać, ale kod błędu to był sławny
☠️ 0x0000007B(INACCESSIBLE BOOT DEVICE) ☠️Co oznacza problem z zamontowaniem woluminu systemowego. Streszczę tutaj mój długi proces walki z tym błędem – próbowałem wyłączać różne sterowniki, modyfikować różne wartości w rejestrze, ale nic nie działało.
Sukces
W końcu wpadłem na pomysł spróbowania trybu naprawy z angielskiego instalatora Windowsa XP (w polskiej wersji tego nie ma z jakiegoś powodu).

Na tym etapie można wybrać albo czystą instalację (klawisz ESC), albo naprawę. Wskazałem mój odtworzony system i nacisnąłem klawisz R.

Naprawa wygląda praktycznie tak samo jak instalacja świeżego systemu, przy czym wiele rzeczy jest zachowane. Pliki, użytkownicy i inne rzeczy zostają nietknięte.
Po uruchomieniu ponownym system się uruchomił i rozpoczął się kolejny etap naprawy:

Jakoś tak wyszło, że nie miałem klucza Windowsa XP SP3. Na szczęście w sieci dostępne są klucze, które można tutaj wpisać, żeby popchnąć instalację (naprawę) dalej: link do listy na GH.

Po wpisaniu klucza system uruchomił się ponownie, tym razem bez BSODa! Jednak nie jest to koniec:

Odzyskiwanie haseł
Najprościej byłoby usunąć hasła z użytkowników, ale to wiązałoby się z modyfikacją oryginalnego systemu – do którego nie miałem dostępu.
Uruchomiłem BlackArcha na maszynie i zamontowałem partycję systemową:

Po zamontowaniu partycji zdumpowałem hashe haseł z rejestru przy użyciu narzędzia samdump2.

Oto lista z powyższego screenshota, w formie tekstowej :):
Administrator:500:42008b7e0dfe8456aad3b435b51404ee:8666cdaf3d0337cbbae422f9da6f0f52:::
Admin:1004:42008b7e0dfe8456aad3b435b51404ee:8666cdaf3d0337cbbae422f9da6f0f52:::
Operator:1005:7c3abc11eef22af54a3b108f3fa6cb6d:e001d7577b432fe8e745deb408cc8a62:::
Engineer:1006:5de00f0076f9b0d64a3b108f3fa6cb6d:e907f2dd1d5d1a7f6ed20a5a44a0dd11:::
Remote:1007:b1293b46ba30174aaad3b435b51404ee:a2fb7f991c8960bdae62b6cb12b87d56:::
DynoBend:1008:7c3abc11eef22af54a3b108f3fa6cb6d:e001d7577b432fe8e745deb408cc8a62:::Wyciąłem wyłączone konta Guest, Support oraz HelpAssistant. Widać, że Guest i Support mają puste hasła (ich hashe odpowiadają pustym ciągom) a hasła HelpAssistant nigdy nie odzyskałem.
Widać również, że niektóre konta używają tych samych haseł:
- Administrator i Admin
- Operator i DynoBend
Po czym to widać? Te konta mają te same hashe!
Łamanie hashy przy użyciu CrackStation
Pierwsze co spróbowałem to wklejenie hashy LM (prostszych do złamania) do online-owych crackerów. Mają one duże bazy danych, które posiadają obliczone hashe różnego typu dla różnych ciągów znaków. Jeżeli hasła były krótkie, to taka baza prawdopodobnie zawiera nasz hash.
Wpisałem hashe do CrackStation:

Okazało się, że dwa hasła udało się odzyskać już na tym etapie:

Pierwszym hasłem było dla kont Admin i Administrator :P. Hasło składało się wyłącznie z cyfr: „8507730„.
Drugim hasłem było dla konta „Remote”, które miało unikalne hasło:

Kolor zielony oznacza dokładnie odwzorowanie. Ale czemu jest ich kilka? Hashe LM są takie same dla różnych kombinacji wielkości liter. Przykładowo, hash dla „abc” jest taki sam jak dla „ABC”.
Za to, hashe NTLM (które również są w dumpie) już takie nie są. Okazało się, że dla konta Remote nawet odwzorowanie NTLM znajduje się w CrackStation:

Okazało się, że hasło dla „Remote” to… „Remote”.
Łamanie hashcatem
W bazie CrackStation nie było hashy dla kont „DynoBend” i „Operator”. Użyłem hashcata do szybkiego sprawdzenia hashy LM dla pozostałych kont:

hashcat --potfile-disable -m 3000 -a 3 hashe.txt -1 ?l?u ?1?1?1?1?1?1?1Gdzie:
--potfile-disable– wyłącznie pliku przechowywania rezultatów (w ramach testów i zrobienia SS)-m 3000– tryb łamania hashy LM-a 3– tryb bruteforce (kombinacje znaków)-1 ?l?u– zdefiniowanie customowego zestawu znaków (małe i duże litery)?1?1?1… – maska do bruteforce-a, 7 liter
Po jakichś dwóch sekundach hashcat znalazł dwa kolejne (niepełne) hasła:

Więc dwa kolejne hasła zaczynają się od wariancji ciągu „DYNOBEN” i „DNEBONY”.
Szukanie dokładnych haseł
Hashe LM z dumpa to tak naprawdę dwa oddzielne hashe. Przykładowo dla konta DynoBend, ciąg LM skopiowany prosto z dumpa:
7c3abc11eef22af54a3b108f3fa6cb6dPowyższy ciąg znaków to dwa hashe LM:
7c3abc11eef22af5 4a3b108f3fa6cb6dPierwszy podciąg to hash pierwszych 7 liter hasła, a drugi to hash kolejnych 7 liter hasła, więc maksymalna długość hasła dla hashy LM to 14 znaków.
DynoBend i Operator mają ten sam hash (powyższy), a co z Engineer?:
7c3abc11eef22af5 4a3b108f3fa6cb6d # DynoBend i Operator
5de00f0076f9b0d6 4a3b108f3fa6cb6d # EngineerPierwsze podciągi są różne (ale ich odwzorowanie znalazł hashcat). Widać jednak, że drugie podciagi są takie same!
Oznacza to, że hasła dla tych kont to przykładowo (drugie 7 liter są takie same dla kont):
DYNOBENxxxx # DynoBend i Operator
AAAAAAAxxxx # EngineerPo wklejeniu drugiego podciągu do CrackStation okazało się, że hash „4a3b108f3fa6cb6d” to najprawdopodobniej hash litery „d”:

Czyli nasze „xxxx” to „d”, a hasła to wariancje „DNEBONYD” oraz „DYNOBEND”.
Teraz wystarczyło zrobić słownik takich wariancji: DNEBONYD, dnebonyd, Dnebonyd itd. itd.
Albo po prostu zgadnąć ręcznie w CyberChefie:

Po dodaniu „NT Hash” do receptury i wpisaniu „dnebonyd” (małymi literami), CyberChef wypluł dokładnie taki sam hash NTLM, jaki był w dumpie. Oznacza to, że znalazłem hasło dla użytkownika „Engineer”.
Podobnie postąpiłem dla DynoBend i Operator: ich hasła to „Dynobend”.
Próba logowania jako operator

Okazało się, że… działa!

Podsumowanie
No i nawet się udało!!
Po naprawie systemu za pomocą instalatora Windowsa XP, zdumpowałem hashe za pomocą BlackArcha (samdump2) i zcrackowałem je przy użyciu CrackStation oraz hashcata.

