Jak Windows tworzy i przechowuje hasze haseł i w jaki sposób złamałem te hasze.
Wstęp
Hasła wydają się być naszą główną, a niekiedy jedyną linią obrony przed intruzami. Nawet jeśli atakujący nie mają fizycznego dostępu do komputera, często mogą uzyskać dostęp do serwera poprzez protokół zdalnego pulpitu lub dokonać uwierzytelnienia do usługi za pomocą zewnętrznej aplikacji internetowej.
Celem niniejszego artykułu jest pokazanie, w jaki sposób system Windows tworzy i przechowuje hasze hasła oraz jak te hasze są łamane. Po pokazaniu jak złamać hasła systemu Windows, podam kilka wskazówek jak sprawić, aby nie być podatnym na tego rodzaju ataki.
Jak Windows przechowuje hasła
Komputery z systemem Windows wykorzystują dwie metody haszowania haseł użytkowników i mają one krańcowo różny wpływ na bezpieczeństwo. Metody te to LAN Manager (LM) oraz NT LAN Manager w wersji 2 (NTLMv2). Hasz jest wynikiem funkcji kryptograficznej, która przyjmuje łańcuch danych o losowym rozmiarze, wykonuje na nim funkcję matematycznego szyfrowania i w efekcie podaje łańcuch o stałej wielkości.
Hasze haseł LM
Hasz systemu LAN Manager był jednym z pierwszych algorytmów haszowania haseł stosowanym przez systemy operacyjne Windows i jedyną obsługiwaną wersją, aż do pojawienia się NTLMv2 używanego w systemie Windows 2000, XP, Vista oraz 7. Te nowsze systemy operacyjne nadal obsługują hasze LM dla wstecznej zgodności. Jednak domyślnie funkcja ta jest wyłączona w systemie Windows Vista i Windows 7.
Hasz LM hasła obliczany jest za pomocą 6-etapowego procesu:
- Hasło użytkownika jest przekształcane na wielkie litery.
- Do hasła dodaje się znaki zero, aż jego długość będzie wynosiła 14 znaków.
- Nowe hasło zostaje podzielone na dwie 7-znakowe połówki.
- Wartości te są używane do stworzenia dwóch kluczy szyfrowania DES, po jednym z każdej połówki poprzez dodanie do każdego z nich bita parzystości, aby utworzyć 64-bitowe klucze.
- Każdy klucz DES jest używany do szyfrowania ustalonego łańcucha znaków ASCII (KGS!@#$%), co daje dwie 8-bajtowe wartości szyfrogramu.
- Te dwie 8-bajtowe wartości szyfrogramu zostają połączone tak, aby stworzyły 16-bajtową wartość, co stanowi pełny hasz LM.
W praktyce hasło „PassWord123” zostałoby przekształcone w następujący sposób:
- PASSWORD123
- PASSWORD123000
- PASSWOR oraz D123000
- PASSWOR1 oraz D1230001
- E52CAC67419A9A22 oraz 664345140A852F61
- E52CAC67419A9A22664345140A852F61

Rysunek 1: Hasło przekształcane na hasz LM
Hasła przechowywane przez LM mają kilka wyraźnych wad. Pierwszą z nich jest to, że szyfrowanie jest oparte na symetrycznym algorytmie szyfrowania Data Encryption Standard (DES). DES to projekt IBM z lat 70-tych ubiegłego wieku, zmieniony przez NIST (National Institute of Standards and Technology - Narodowy Instytut Standaryzacji i Technologii) i sponsorowany przez NSA, a wydany jako standard ANSI w 1981 roku. Przez wiele lat DES był uważany za bezpieczny, ale w latach 90-tych poddany został wnikliwej analizie z powodu małego rozmiaru klucza (jedynie 56 bity). Sprawa ta osiągnęła punkt kulminacyjny w 1998 roku, kiedy to organizacja Electronic Frontier Foundation zdołała złamać DES w ciągu około 23 godzin. To był moment, gdy DES został uznany za niebezpieczny i od tego czasu został zastąpiony przez Triple-DES i AES. Krótko mówiąc, jest to inny standard szyfrowania, który padł ofiarą nowoczesnej mocy obliczeniowej i może być złamany w krótkim czasie.
Być może największą słabością hasza LM jest tworzenie kluczy DES. W ramach tego procesu hasło podane przez użytkownika jest automatycznie zamieniane na duże litery, wydłużane do 14-tu znaków (jest to maksymalna długość dla haszowanego hasła LM) i dzielone na dwie, 7-znakowe połówki. Biorąc pod uwagę, że istnieje 9514 możliwych haseł składających się z 14-tu znaków z tablicy ASCII, ilość ta zmniejsza się do 957 możliwych haseł przy podzieleniu na 7-znakowe połówki, a następnie zmniejsza się do 697 możliwych haseł w momencie, gdy dozwolone są tylko duże litery. Zasadniczo sprawia to, że korzystanie z zarówno dużych, jak i małych liter oraz zwiększenie długości hasła staje się niemal bezużyteczne, gdy hasło jest przechowywane jako hasz LM, a to z kolei powoduje, że hasła LM są niezwykle narażone na próby ataku łamania zabezpieczeń typu „brute force”.
Hasze haseł NTLMv2
NT LAN Manager (NTLM) jest protokołem uwierzytelniania firmy Microsoft, stworzonym jako następca LM. Po ostatecznym ulepszeniu, NTLMv2 został zaaprobowany jako nowa metoda uwierzytelniania z wyboru i wdrożony do systemu Windows NT 4.
Stworzenie hasza NTLMv2 (zwanego dalej haszem NT) jest rzeczywiście znacznie prostszym procesem, jeśli weźmie się pod uwagę to, co faktycznie robi system operacyjny i opiera się na algorytmie haszowania MD4 do tworzenia hasza opartego na serii obliczeń matematycznych. Algorytm MD4 jest stosowany trzy razy w celu stworzenia hasza NT. W praktyce hasło „PassWord123” zostałoby zaprezentowane jako hasz MD4: „94354877D5B87105D7FEC0F3BF500B33”.

Rysunek 2: Hasło przekształcane w hasz NTLMv2
MD4 uważany jest za znacznie silniejszy niż DES, gdyż pozwala na dłuższe hasła, pozwala na rozróżnienie wielkich i małych liter oraz nie dzieli hasła na mniejsze, łatwiejsze do złamania części.
Być może największym zarzutem pod kątem haszów NTLMv2 jest to, że Windows nie wykorzystuje techniki zwaną „salting”. „Salting” jest techniką, w której do obliczenia hasza dla hasła generowana jest losowa liczba. Oznacza to, że to samo hasło mogłoby mieć dwie zupełnie różne wartości haszowania, co byłoby idealne.
W takiej sytuacji możliwe jest, aby użytkownik wygenerował tak zwane tęczowe tablice (rainbow tables). Tęczowe tablice to nie tylko tablice malowane kolorami tęczy, w rzeczywistości są to tablice, zawierające każdą możliwą wartość hasza dla każdego możliwego hasła do określonej liczby znaków. Przy użyciu tęczowej tablicy można po prostu wziąć wartość hasza, który pochodzi z komputera docelowego i poszukać go. Gdy go znajdziesz w tablicy, dostajesz hasło. Jak można sobie wyobrazić, tęczowa tablica nawet dla małej ilości znaków może okazać się bardzo obszerna, co oznacza, że ich wytworzenie, przechowywanie i indeksowanie może być dość poważnym zadaniem.
Podsumowanie
W pierwszej części tego artykułu analizowaliśmy hasze haseł i mechanizmy, jakie Windows wykorzystuje do tworzenia i przechowywania tych wartości. Poruszyliśmy także temat słabych stron każdej metody i możliwe sposoby, które mogą być wykorzystane do złamania tych haseł. W następnej części tego artykułu przyglądniemy się procesowi zdobywania i łamania tych haszów, a to wszystko w celu pokazania ich słabości. Gdy już to wykażemy, podam wskazówki, które dostarczą dodatkowej warstwy zabezpieczenia oraz pozwolą tworzyć właściwie wzmocnione hasła.
Źródło: www.windowsecurity.com |