Sposób odzyskiwanie hasła
W systemach Windows95/98/Me hasła przechowywane są w plikach .pwl, ale ponieważ nie są one w żaden sposób chronione a programów do ich łamania jest cale mnóstwo (choćby słynny cain) to w tym tekście skupie się tylko na systemach z serii NT czyli Windows NT/2k/XP/Server 2003. Otóż w tych systemach hasła przechowywane są w pliku SAM znajdującym się (pod warunkiem, że windows został zainstalowany w C:\WINNT) w katalogu C:\WINNT\system32\config. Plik ten jest swego rodzaju plikiem rejestru (cos jak plik system.dat w Win95/98/Me), można go zresztą przeglądać za pomocą edytora rejestru, ale wymaga to użycia kilku sztuczek i jest całkowicie bezcelowe. Podczas bootowania windowsa zanim użytkownik może w ogóle się zalogować do systemu główny watek programu Smss.exe (Session Manager - Menedżer Sesji) uruchamia proces Winlogon.exe, gdyż jest on potrzebny by załadować Lsass.exe (Local Security Subsystem - Lokalny Podsystem Bezpieczeństwa), który następnie ładuje usługę SAM (Security Accounts Manager - Menedżer Kont Bezpieczeństwa), który jest po prosu interfejsem dającym nam dostęp do bazy danych SAM. Plik SAM nie przechowuje jednak samych haseł a jedynie ich hashe, czyli wyniki działania jednostronnego (czyli nieodwracalnego) algorytmu szyfrującego na hasłach. Kiedy ktoś loguje się na komputer hasło, które wpisał zostaje zaszyfrowane w ten sam sposób, a wynik (czyli hash) jest porównywany z hashem z pliku SAM i jeśli są takie same użytkownik uzyskuje dostęp do systemu. Każde hasło jest przechowywane na dwa sposoby jako LM hash i jako NT hash, podczas gdy, NT hash jest hashem naszego hasła to LM hash jest hashem naszego hasła pisanego dużymi literami. Oznacza to, ze dla haseł: "Haselko","hAsElko", HaSeLkO",itp NT hash będzie inny, ale LM hash będzie taki sam!!! Nie musze chyba tłumaczyć, jak użyteczne jest to dla nas. Możliwe jest jednak wyłączenie przez admina LM hashy i konieczne w takim wypadku jest łamanie NT hashy, co znacznie utrudnia sprawę. Na szczęście zdarza się to rzadko, a poza tym jeśli już się zdarzy, to łamanie hashy nie jest wtedy najlepszym pomysłem, wiec w tym tutorialu takiej sytuacji nie zamierzam rozważać. Oczywiście nie zalogujemy się do systemu używając hasła zdobytego łamaniem LM hash (chyba, że hasło oryginalne tez nie składało się z małych liter). Jeśli jednak dowiedzielibyśmy się, że nasz LM hash odpowiada np. hasłu "HASELKO", to sprawdzenie kombinacji małych i dużych liter będzie już tylko formalnością (i tak właśnie robią programy łamiące LM hashe). Hasła w systemach WinNT nie mogą być dłuższe niżeli 14 znaków, już Win2k dopuszcza dłuższe hasła (do 128 znaków), ale spójrzmy prawdzie w oczy, chyba nikt nie używa takich haseł
Dlatego w tym tekście omówię jedynie sytuacje gdy, hasło ma długość mniejszą lub równą 14 znaków. Nie testowałem jeszcze Windowsa Server 2003, ale o ile mi wiadomo jeśli chodzi o hasła to działa on na tej samej zasadzie co XP. Zarówno LM hash jak NT hash zajmują 16 bajtów ja jednak skupie się tylko na LM hashu, (dlaczego? Patrz wyżej
) Otóż jego pierwsze osiem bajtów odpowiada pierwszym siedmiu znakom hasła, a drugie osiem bajtów drugim siedmiu znakom hasła. Jeśli hasło jest krótsze niż 14 znaków, np. 10, to znowu pierwsze osiem bajtów hashu odpowiada pierwszym siedmiu literom naszego hasła, a pozostałe osiem bajtów odpowiada pozostałym literom naszego hasła. Jeśli jednak hasło ma długość krótszą lub równą 7 znaków, to po raz trzeci pierwsze osiem bajtów hashu odpowiada literom hasła, a drugie osiem bajtów będzie w tym przypadku zawsze równe 0xAAD3B435B51404EE. Jeśli dane konto w ogóle nie posiada hasła, czy raczej posiada hasło zerowej długości, to obie części hashu przyjmują tą wartość. Czyli hash wygląda tak:0xAAD3B435B51404EEAAD3B435B51404EE.