Zostań kryminalistą – (anty)poradnik z użyciem Windowsa XP

Za chwilę złamiemy sobie parę artykułów z kodeksu karnego. Nic wielkiego, jakby zsumować ewentualne kary jak w USA to zbliżymy się pewnie do dożywocia. Będzie o nieautoryzowanym dostępie, o ujawnianiu tajemnic państwowych. Kradzież rozbójnicza i poniekąd tortury dla dociekliwych i bogatych w wyobraźnię też się znajdą. Naszym celem będzie dziś nic innego jak hasło użytkownika tytułowego Windowsa XP. A tak na poważnie to chciałbym pokazać dlaczego nie warto upierać się przy pozostaniu ze starym systemem i dlaczego jest to dzisiaj kiepskie rozwiązanie. Tak więc proszę bode nie manuj :-) 

Doktor dziwny

Dlaczego akurat hasło skoro jest tyle innych możliwości uzyskania danych z maszyny? Otóż znajomość hasła pozwoli dostać się do innych danych niż np. zdjęcia, które mogą zawierać coś ciekawego, a normalnie są niedostępne. Pliki zaszyfrowane domyślnym windowsowym mechanizmem oraz stare lokalne kontenery z hasłami np. przeglądarki również mają używanie z takich tajnych informacji. Najlepiej oczywiście gdy ofiara sama się do nas zgłosi ze swoim piecem lub lapkiem. Mamy dzięki temu fizyczny dostęp do maszyny i właśnie na tej podstawie będziemy organizować naszą akcję rozbójniczą. A więc zakładamy kominiarkę, bierzemy łom w ręce i zaczynamy zabawę!

Fantastyczne hasła i jak je znaleźć…

Jakimś cudem Microsoftowi udało się kiedyś wdrożyć poprawkę, dzięki której hasła nie są już trzymane jako czysty tekst. No dobra, przesadziłem, nie ma przecież czegoś takiego jak czysty tekst :-) A więc jak to się dzieje, że wasze zabezpieczenia jeszcze nie fruwają publicznie po Internecie? To bardzo proste. Hasła w Windowsie przechowywane są jako przedwieczne hasze w najwyższej komnacie wieży pod adresem C:\WINDOWS\system32\config\SAM. Owa komnata zapieczętowana jest dodatkowo magicznym zaklęciem SysKey, którego pradawne zapiski znaleźć można po sąsiedzku w szałasie z drabinkami zwanym SYSTEM. Na domiar złego przed wieżą stoi straszliwy, trójgłowy smok Smss.exe wraz z kompanami Winlogon.exe, Lsass.exe oraz charakterystyczny kamienny troll SAM (Security Accounts Manager). Wygląda więc na to, że nie da rady nawet podejść do wieży, a co dopiero mówić o jakichś fetyszach typu polizanie klamki do komnaty hasłowej księżniczki. Czyżbyśmy byli skazani już na początku na złe zakończenie całej tej pięknej bajki?

Avengers: Koniec gry na Linuksie

Musicie mi uwierzyć na słowo, ale jeśli chcemy się dalej bawić to niezbędne nam są dane z folderu config. Ogólnie pod działającym Windowsem nie dostaniemy się do miodku schowanego w tamtejszych plikach SAM i SYSTEM. Tak jak wspomniałem, szczelnie pilnują tych plików różne procesy i usługi tak, że nawet Administrator nie pomoże. Sama ich zawartość jest również efektem jednokierunkowego algorytmu haszującego co utrudnia sprawę. Nie zostaje nam nic innego jak użyć najprostszego i najskuteczniejszego narzędzia do hakowania Windowsa. Linux miażdżyć! A nie, to nie teraz ta kwestia… Prześladowany Ubuntu w najnowszej wersji to aż nad to czego potrzebujemy, a z braku laku nie mam nic innego pod ręką. Wbrew obiegowej opinii Ubuciak zadziałał wyśmienicie i po chwili miałem już na pamięci USB cały katalog config (a co się będę ograniczał). Oczywiście można użyć dowolnej dystrybucji która potrafi uruchomić się z płyty/USB bez instalacji. Ciężko też znaleźć taką która jest w miarę popularna i nie potrafiłaby zamontować sobie partycji NTFS. 

Dzięki Bogu Windows XP nie dorobił się mechanizmu hybrydowego rozruchu więc nie musimy się też zbytnio martwić o utratę danych. Historia możliwości zgubienia w najnowszym Windows 10 plików zasługuje na oddzielny wpis, bo to co się tam dzieje to jest niepoważne czasami. Wracając jednak do myśli przewodniej… Tak, wiem, można zawartość potrzebnych zasobów uzyskać na tysiące różnych innych sposobów, jednak ja jestem leniwy do szpiku kości i nie chce mi się kombinować. Mamy oto pliki, ale co teraz?

Strażnicy galaktyki vol. hasz-bis

Co powiecie na małą kompromitację? Choć może to zbyt mocne słowa, jednak nie przychodzi mi do głowy nic lepszego jak patrzę na to co się tu zaraz będzie działo. Najpierw jednak wyciągnijmy potrzebne nam hasze. Ja użyłem do tego celu programu Cain&Abel (piszą że to program do odzyskiwania haseł więc nie bijcie), jednak nic nie stoi na przeszkodzie żebyście użyli czegokolwiek innego co potrafi rozczytać pliki SAM i SYSTEM. Celowo nie podaję nazw aby nie zwiększyć ewentualnie zasądzonego wyroku ;-) Koniec końców otrzymujemy dzięki temu coś na wzór:

Są to, jak widać, loginy i hasze haseł użytkowników. Nas najbardziej interesują kolejno LM-hash i NT-hash. Różnica w obu haszach głównie polega na algorytmie jakim otrzymuje się te dwie dane, ale nie ma co się na tym zbytnio skupiać, rodzynki wydłubiemy później. Co z nimi zrobimy? Będziemy małpować mechanizm logowania Windows tylko że próbkując wszystkie możliwe kombinacje znaków i robiąc to bardzo szybko. W skrócie, metoda brute force. Zapytacie zapewne: „dlaczemu używasz czegoś tak nieefektywnego?” albo „trojana dawaj” lub bardziej wyrafinowane zwroty typu „tęczowe tablice?”. I macie może rację, ale pewnie nie wiecie tego co ja wiem. I już śpieszę z wyjaśnieniami… 

Tajni i fajni ale zdemaskowani

Pamiętacie że hasła są zapisane na dwa sposoby: LM i NT hasz? Wersja NT-hash jest nowoczesna i dosyć skomplikowana dzięki czemu nie ma potencjalnych luk w działaniu (a przynajmniej ja takich nie znam, oprócz mitycznych kolizji). Za to wersja LM-hash jest delikatnie mówiąc kulawa i to ona będzie naszym celem. Po pierwsze sam algorytm ma już swoje lata i dosyć efektywnie daje się go generować. Po drugie hasło zapisane pod tym haszem jest pisane z wielkiej litery! To znaczy że „Hasło”, „HaSłO” oraz „hAsŁo” będzie miało ten sam LM-hash! Odgadnięcie wielkości liter to wtedy formalność. Ogólnie wygląda to na tani dramat… Myślicie ze to koniec szydery? Skądże znowu. Przetnijcie LM-Hash na pół… Dostaniecie dzięki temu dwa fragmenty, które osobno przechowują 7-znakowe połówki maksymalnie 14-znakowego hasła. Tak. Dobrze myślicie. Wystarczy sprawdzić maksymalnie 7 znakowe „hasło”. Raz dla pierwszej połówki hasza, a raz dla drugiej. Jakie są tego konsekwencje? Ano takie, że dziś przeciętny procesor, używając jednego wątku połamie takie „14-znakowe” hasło w tydzień lub dwa. Mowa o wielkich i (hehe) małych literach, cyfrach i znakach specjalnych które można dostać na klawiaturze. Więcej wątków procesora lub zmniejszenie zakresu możliwych znaków to oczywiście szybsze odgadnięcie sekretu. Szczęśliwcy z Threadripperami mogą liczyć wręcz na dziesiątki i setki wątków jednocześnie próbujących sprostać zadaniu. A co jak powiem wam że hasło można otrzymać w kilka minut o ile nie sekund? Pewnie niektórzy się już domyślają… Możemy przecież użyć karty graficznej! Skromne 256 wątków nie robi większego wrażenia na średniej klasy GPU w dzisiejszych czasach. Oprócz ilości samych wątków dochodzi też optymalizacja opóźnień i kwestia lepszego dostępu do pamięci. Wszystko zależy oczywiście od ogólnej wydajności karty graficznej ale sami widzicie że może być lepiej niż w przykładzie z procesorem. Tak więc jak dobrze radzi sobie GPU w takim przypadku? Fraza dla ciekawskich do zapytania wujka Google: „hashcat”. Tymczasem jak myślicie ile to zajmie? Dni? Godziny? Nie będę was trzymał dłużej w niepewności:

5 minut! Tyle warte jest dość skomplikowane, 13-znakowe hasło w Windowsie XP… Mogło by zawierać znaki specjalne ale niewiele by to zmieniło. Jednym słowem koń zw… Znaczy się hasło złamane :-)

Jak wytresować Windowsa

Na koniec muszę was uspokoić. LM-hash odszedł jakiś czas temu w zapomnienie. Ostatni system który go używał to Windows XP z dodatkiem Service Pack 2. Nowsze okienka mają już domyślnie wyłączony hasz LM i używana jest jedynie skuteczniejsza odmiana NT która umie rozróżnić wielkie/małe litery, nie dzieli sekretu na grupy oraz nie ogranicza się co do długości danych wejściowych. Opcję NT można też wymusić na podatnych wersjach wpisami rejestru lub zwyczajnie uruchamiając stację w domenie AD (wtedy Windows używa NT-hash niejako z przymusu). Ostatni sposób jest trywialny – ustawić hasło dłuższe niż 14 znaków (wtedy LM-hash jest wyłączany), ale kto by takie coś pamiętał.

Wyrok – winny i dożywocie!

To wszystko nie zmienia faktu że lepiej nie używajcie przestarzałych rozwiązań. Narażacie siebie, narażacie innych użytkowników komputera, narażacie swoje ważne dane. Nie daj boże jeszcze wydaje się wam że jesteście bezpieczni. Nie polecam starych systemów, nie polecam też zabaw na granicy prawa jak w tym przykładzie. I to nawet nie dla tego że jest to jakoś mega trudne do wykonania… Bo jak widzicie filozofii wielkiej w samym mechanizmie nie ma i z lepszą instrukcją większość by sobie poradziła. Gorzej z algorytmami – nie są już tak kiepskiej jakości jak w przytoczonym rozwiązaniu. Niekiedy nawet 4 znakowe hasło może stanowić nie lada wyczyn przy łamaniu czegoś nowego. Po prostu szkoda czasu.

Przy okazji tez widzicie jak liche były kiedyś zabezpieczenia z dzisiejszej perspektywy i jakie cuda może wykonać rdzeń karty graficznej. GPU jest wysoce wyspecjalizowany w konkretnym typie zadań, a przez to śmiertelnie niebezpieczny. Granie w gry to szczyt góry lodowej tego co można zrobić na dzisiejszej jednostce rzekomo dedykowanej grafice. Łamanie haseł, kopanie kryptowalut, wydajne enkodowanie wideo w locie, usuwanie dźwięków tła w audio na żywo, pakowanie plików, symulacje białek i innych zjawisk fizycznych, radionadajnik… Oj, coś z tego można wybrać i opisać, jak myślicie? :-) 

PS: Obrazki jak zwykle są kradzione, ale starałem się wybierać te które mają licencję CC0. Jeśli ktoś czuje się ograbiony to szczerze niechcący i przepraszam, dopiero się uczę w internety.

PS2: podane we wpisie wartości są wymyślone i użyte tylko na potrzeby przykładu, nie odpowiadam za wycieki danych ze znanego portalu :D