Sprawko lab1 rewizja1

BEZPIECZEŃSTWO SYSTEMÓW INFORMACYJNYCH

Laboratorium

Uwagi

Data: 30.03.2011

EAIiE, EiT, Rok 4.

Temat: Łamanie słabych haseł
Wykonali: Ja, Byku, Patryk, Mati, Paulina ta czerwona na forum, Paulina ta pomarańczowa na forum, według Byka bardziej żółta
  1. Wstęp.

Tematyka ćwiczeń obejmowała zagadnienie łamania haseł w systemach Linux i Windows. Podczas laboratorium wykorzystywaliśmy aplikację John the Ripper. Program ten jest zaawansowanym, konfigurowalnym narzędziem służącym do szukania oryginalnych haseł na podstawie ich skrótów hasłowych (MD5, DES, itp.). Posługuje się przy tym metodami słownikowymi bądź metodą brutalnego ataku. W dalszej części sprawozdania opisane zostanie kilka trybów pracy programu.

  1. Łamanie haseł w trybie SINGLE CRACK.

Na logu 1. pokazany został przykład użycia trybu SINGLE CRACK.

Log 1. Przykład użycia trybu SINGLE CRACK

student@labkt:~/john-1.7.0.2/run$ ./john --single hasla.txt

Loaded 6 password hashes with 6 different salts (FreeBSD MD5 [32/32 X2])

Kamil (kamil)

michal (michal)

99999 (wojtek)

LUKASZ (lukasz)

marcin1 (marcin)

1mariusz (mariusz)

guesses: 6 time: 0:00:00:00 100% c/s: 4333 trying: 1mariusz - 1mariusz99999

Tryb SINGLE CRACK jest trybem, od którego powinniśmy rozpocząć łamanie haseł. Hasła testowane w tym trybie to między innymi: loginy, nazwy folderu głównego użytkownika. Informacje przechowywane w pliku /etc/passwd zapisywane są w formacie:

username:password:uid:gid:gcos-field:home-dir:login-shell

W trybie SIGNLE CRACK wykorzystywane są także pola gcos-field zawierające między innymi: imię i nazwisko użytkownika, numer telefonu, pokoju itp.. Program wykonuje na potencjalnych hasłach szereg zmian, które najczęściej stosowane są przez użytkowników w celu utrudnienia jego złamania. Tryb ten jest bardzo szybki i często (jak zostało pokazane w ćwiczeniu) daje dobre wyniki w wyszukiwaniu haseł. W pliku hasla.txt znajduje się wpis:

wojtek:$1$Bjdz5jac$ZOaWGdRl0KZKiEVHxphJs/:13584:0:99999:7:::

Porównując go z ogólnym formatem zapisu haseł widać, że wartość 99999 znajduje się w polu gcos-field, a zatem możemy wnioskować, że jest to liczba bezpośrednio powiązana z życiem użytkownika. Inne złamane hasła, widoczne na logu 1. również są hasłami słabymi, ponieważ są one jedynie modyfikacjami loginu użytkownika. Hasło tego typu może być łatwo złamane nawet bez użycia dedykowanych aplikacji.

  1. Łamanie haseł w trybie WORDLIST.

Jedną z metod przynoszącą dobre rezultaty w łamaniu haseł jest metoda słownikowa. Polega ona na wypróbowywaniu zestawu słów, które potencjalnie mogą być szukanym hasłem. Działanie takie wydaje się rozsądne z uwagi na fakt, że przeważnie hasła użytkowników nie są losowymi ciągami znaków, a słowami z używanego przez nich języka. Na logu 2. przedstawiony został przykład użycia programu z trybie WORDLIST.

Log 2. Przykład użycia program w trybie WORDLIST.

student@labkt:~/john-1.7.0.2/run$./john --wordlist=asteroid.txt t_hasla.txt

Loaded 6 password hashes with 6 different salts (FreeBSD MD5 [32/32 X2])

Kallisto (t4)

guesses: 1 time: 0:00:00:03 100% c/s: 4971 trying: Zyskin

student@labkt:~/john-1.7.0.2/run$./john --wordlist=shakespe.txt t_hasla.txt

Loaded 5 password hashes with 5 different salts (FreeBSD MD5 [32/32 X2])

demetrius (t1)

guesses: 1 time: 0:00:00:00 100% c/s: 3778 trying: york

student@labkt:~/john-1.7.0.2/run$./john --wordlist=tolkien.txt t_hasla.txt

Loaded 4 password hashes with 4 different salts (FreeBSD MD5 [32/32 X2])

hobbiton (t3)

mithrandir (t6)

pippin (t2)

uruk-hai (t5)

guesses: 4 time: 0:00:00:00 100% c/s: 2403 trying: uruk - uruk-hai

Na podstawie logu 2. możemy przypuszczać, że użytkownik t1 interesuje się angielską literaturą piękną, użytkownicy t2, t3, t5 i t6 – uniwersum Tolkienowskim, natomiast użytkownik t4 – astronomią. Hasła związane z zainteresowaniami nie są bezpieczne, ponieważ hakerzy mogą łatwo zdobyć wiedzę na temat zainteresowań użytkowników (np. z for internetowych czy portali społecznościowych). Złamane hasła zapisywane są w pliku john.pot. Z tego względu ponowna próba łamania nie zwraca żadnych wyników. Dopiero po usunięciu odszukanych haseł z pliku john.pot możliwa jest ich ponowna analiza. Dzieję się tak, ponieważ program nie próbuje łamać raz odgadniętych haseł w celu przyspieszenia działania całego procesu łamania hasła.

Program umożliwia również stosowanie reguł modyfikujących zawarte w słowniku wyrazy. Log 3. przedstawia przykład użycia programu z parametrem rules. Tryb ten bazuje na regułach określonych w pliku konfiguracyjnym programu (john.conf). Spis wszystkich możliwych reguł oraz zasady ich używania znajduje się w dokumentacji programu (plik RULES). Dla domyślnych reguł program odgadł hasła siedmiu użytkowników dzięki zastosowaniu bazowego hasła (romeo) oraz różnych modyfikacji na nim.

Log 3. Przykład użycia program z wykorzystaniem reguł.

student@labkt:~/john-1.7.0.2/run$./john --wordlist=shakespe.txt --rules r_hasla.txt

Loaded 7 password hashes with 7 different salts (FreeBSD MD5 [32/32 X2])

ROMEO (r5)

RomeoRomeo (r2)

oemoR (r4)

romeO (r7)

Romeo! (r1)

7romeo (r3)

romeing (r6)

guesses: 7 time: 0:00:00:25 100% c/s: 4774 trying: roderiging – romeing

Dla poszczególnych użytkowników możemy wyróżnić reguły które zostały zaaplikowane:

Ponieważ reguły zapisane są za pomocą wyrażeń regularnych użytkownik programu ma możliwość modyfikacji istniejących wzorców bądź tworzenia nowych, zdefiniowanych przez siebie. Log 4. przedstawia listę reguł stworzonych podczas laboratorium. Log 5. zawiera rezultat działania programu dla opisanej listy.

Log 4. Zdefiniowane reguły dla trybu WODRLIST.

# Zamień ‘a’ na ‘@’

sa@

# Zamień ‘o’ na ‘0’

so0

# Zamień ‘c’ na ‘(‘

sc(

# Dodaj ‘2007’ na koniec słowa

$2$0$0$7

# Dodaj ‘07’ na koniec słowa

$0$7

# Dodaj kropkę na początku słowa

^.

Log 5. Przykład użycia własnych reguł w trybie WORDLIST.

student@labkt:~/john-1.7.0.2/run$./john --wordlist=shakespe.txt --rules s_hasla.txt

Loaded 5 password hashes with 5 different salts (FreeBSD MD5 [32/32 X2])

l@dym@cbeth (s2)

capulet2007 (s1)

.montague (s3)

guesses: 3 time: 0:00:00:02 100% c/s: 6091 trying: .york

Zdefiniowane przez użytkownika reguły mogą być bardziej rozbudowane. Log 6. przedstawia regułę będącą powiązaniem reguł w logu 4. Log 7. zawiera rezultat działania programu dla nowozdefiniowanej reguły.

Log 6. Reguła łącząca reguły z logu 4.

# Zamień ‘a’ na ‘@’, ‘o’ na ‘0’, ‘c’ na ‘(‘ i dodaj na koniec ‘07’

sa@so0sc($0$7

Log 7. Rezultat działania programu dla reguły z logu 6.

student@labkt:~/john-1.7.0.2/run$./john --wordlist=shakespe.txt --rules s_hasla.txt

Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32 X2])

r0sen(r@ntz07 (s4)

guesses: 1 time: 0:00:00:00 100% c/s: 3766 trying: y0rik07 - y0rk07

Wprowadzając dodatkową regułę ss$ zamieniającą literę s na znak dolara, złamano hasło użytkownika s5. Wynik działania programu dla tej reguły przedstawiono na logu 8.

Log 8. Wynik działania programu dla reguły ss$.

student@labkt:~/john-1.7.0.2/run$./john --wordlist=shakespe.txt --rules s_hasla.txt

Loaded 1 password hash (FreeBSD MD5 [32/32 X2])

guilden$tern (s5)

guesses: 1 time: 0:00:00:00 100% c/s: 2305 trying: guideriu$ - guilden$tern

  1. Łamanie haseł trybie INCREMENTAL.

Program umożliwia łamanie haseł metodą brutalnego ataku. Metoda ta w ogólności jest czasochłonna. Jednak w przypadku, gdy szukane hasło jest losowym ciągiem znaków jedyną metodą jest przeszukanie całego zbioru rozwiązań. Dla n-elementowego alfabetu oraz k-elementowego hasła liczba wszystkich możliwych wariacji wynosi:

Znając parametr c/s będący liczbą hashów wyliczanych w ciągu jednej sekundy oraz czas łamania hasła można oszacować po ilu próbach odgadnięto hasło. Statystycznie, hasło łamane powinno być po sprawdzeniu około 50% wariacji. Tabela 1. zawiera zestawienie danych dla łamanych haseł literowych (użytkownicy px) oraz cyfrowych (użytkownicy nx).

Tabela 1. Zestawienie danych dla łamania haseł w trybie INCREMENTAL.

Użytkownik n k Hasło Czas łamania Vnk c/s Lp. prawidłowej wariancji
n1 10 1 5 0,008 s 10 11.76 1
n2 10 2 28 0,024 s 100 241 6
n3 10 3 735 0,020 s 1000 60,86 2
n4 10 4 2914 0,668 s 10000 4168 2785
n5 10 5 27148 4,628 s 100000 5023 23247
n6 10 6 154297 95,042 s 1000000 5298 503533
n7 10 7 8452825 783,185 s 10000000 5211 4081178
p1 23 1 g 0,012s 23 85,71 2
p2 23 2 le 0,080s 529 905 73
p3 23 3 raw 0,868s 12167 4052 3518
p4 23 4 ftba 16,425s 279841 5482 90042
p5 23 5 acdge 215,281 s 6436343 5487 1181247

Na rysunku 1. i 2. znajdują się wykresy teoretycznych i empirycznych zależności czasu łamania hasła w zależności od liczby cyfr i liter w nim zawartych. Obydwa wykresy zostały przedstawione w skali logarytmicznej z uwagi na wykładniczy charakter zmienności liczby koniecznych do przetestowania wariancji. Na rysunku 1. możemy dostrzec zafalowania małych wartości liczby liter w haśle. Efekt ten spowodowany jest prawdopodobnie niedokładnością pomiaru krótkich odcinków czasu przez funkcję time oraz pomiaru parametru c/s przez sam program John the Ripper. Dla większej liczby cyfr w haśle zależność stabilizuje się przybierając charaktery wykładniczy zgodnie z przewidywaniami teoretycznymi – każda dodatkowa cyfra w haśle wydłuża czas jego odgadnięcia 10-krotnie. Dla badanych haseł składających się wyłącznie z cyfr tylko hasło 6-cyfrowe zostało odgadnięte powyżej wyliczonego dla zależności teoretycznej progu.

Rys. 1. Zależność czasu łamania hasła składającego się z cyfr od jego długości.

Rysunek 2. przedstawia analogiczne wyliczenia dla haseł składających się jedynie z małych liter alfabetu angielskiego. W tym przypadku każde z badanych haseł zostało odgadnięte przed osiągnięciem teoretycznego, statystycznego punktu połowy liczności zbioru możliwych rozwiązań. W porównaniu do wykresu z rysunku 1. widzimy, że krzywa zależności teoretycznej posiada większe nachylenie – w tym przypadku każda dodatkowa litera w haśle powoduje wydłużenie czasu łamania 23-krotnie.

Rys. 2. Zależność czasu łamania haseł literowych od ich długości.

  1. Tworzenie własnych użytkowników i haseł.

Z powodu napotkanych problemów z tworzeniem kont w systemie Linux zastosowano plik /etc/shadow został wygenerowany sztucznie. Za pomocą skryptu md5pass wyliczono hashe haseł dla dwóch użytkowników testUser1 i testUser2 z hasłami odpowiednio Dostojevsky (z asteroids.txt) oraz D0$+0jev$ky1. Strukturę wygenerowanego pliku przedstawia log 9.

Log 9. Stuktura wygenerowanego pliku /etc/shadow

testUser1:$1$2We4gq.U$mmh2U2S2H9BSO6UlZnru9/:15067:0:99999:7:::

testUser2:$1$JcadXaid$N53iG.Cu/ixrHIHKwYlY1.:15067:0:99999:7:::

Następnie przystąpiono do próby złamania haseł użytkowników. Tryb SINGLE CRACK nie przyniósł rezultatów, ponieważ hasło nie jest w żaden sposób powiązane z danymi użytkownika. Tryb WORDLIST bez zdefiniowanych zasad przyniósł zgodnie z oczekiwaniami jedno rozwiązanie. Przedstawione zostało ono na logu 10. Stosując regułę ss$st+so0$[0-9] otrzymano drugie rozwiązanie przedstawione na logu 11.

Log 10. Rezultat działania trybu WORDLIST bez zdefiniowanych reguł.

student@labkt:~/john-1.7.0.2/run$ ./john --wordlist=asteroid.txt shadow.txt

Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32 X2])

Dostojevsky (testUser1)

guesses: 1 time: 0:00:00:01 100% c/s: 3910 trying: Zwicky – Zyskin

Log 11. Rezulta działania trybu WORDLIST z zdefiniowaną regułą ss$st+so0$[0-9].

damian@damian-laptop:~/Pulpit/john-1.7.0.2/run$ ./john --wordlist=asteroid.txt --rules shadow.txt

Loaded 1 password hash (FreeBSD MD5 [32/32 X2])

D0$+0jev$ky1 (testUser2)

guesses: 1 time: 0:00:00:01 100% c/s: 4312 trying: D0$+0jev$ky1 - D0ugla$1

Można zauważyć, że chociaż hasło użytkownika testUser2 wydaje się być trudnym do złamania z uwagi na swoją skomplikowaną składnię to jednak zawiera ono zestaw typowych przekształceń, które łatwo mogą zostać wykryte przy pomocy użytego programu.

  1. Łamanie haseł w systemie WINDOWS.

W systemie Windows stworzono trzech nowych użytkowników: testUser1, testUser2 i testUser3 z hasłami odpowiednio Dostojevsky, D0$+0jev$ky1 oraz testUser3. Za pomocą programu SAMInside odzyskano hashe użytkowników a następnie wyeksportowano je do pliku tekstowego kompatybilnego z programem John the Ripper. Warto zauważyć, że hasło użytkownika testUser3 było na tyle słabe, że zostało złamane od razu przez program SAMInside. Wynik działania programu SAMInside przedstawiono na rysunku 3. Dla otrzymanego pliku tekstowego przeprowadzono analizę identyczną jak w punkcie poprzednim z użyciem trybów SINGLE CRACK oraz WORDLIST. Plik wynikowy zawierający odgadnięte hasła przedstawiony jest na logu 12. Jak widać jego struktura różni się od plików otrzymanych dla systemu LINUX.

Rys. 3. Wynik działania programu SAMInside.

Log 12. Plik john.pot dla po złamaniu haseł użytkowników.

$LM$0676ea9fe2a6e53f:DOSTOJE

$LM$df8d2724a2615ddc:VSKY

$LM$b4ffa7ac5f9704e4:D0$+0JE

$LM$468aa0df9e2394c4:R3

$LM$0f20048efc645d0a:TESTUSE

  1. Podsumowanie.

W trakcie tworzenia hasła warto kierować się wskazówkami zwiększającymi jego odporność na złamanie. Po pierwsze hasło powinno być odpowiednio długie. Jak wykazaliśmy w ćwiczeniu brutalne ataki dla więcej niż 7 znaków trwają bardzo długo. Trudne hasła powinny zawierać wielkie i małe litery, cyfry oraz znaki specjalne. Należy unikać stosowania intuicyjnych reguł (np. zamiany litery o na cyfrę 0), ponieważ doświadczony haker szybko może odgadnąć tego rodzaju modyfikacje. Hasła nie powinny być wyrazami, które można znaleźć w słownikach. Nie powinny być to także słowa powiązane z danymi personalnymi użytkownika lub jego zainteresowaniami. Ciekawym rozwiązaniem wydają się wyrazy generowane przez generatory haseł oraz hasła utworzone np. z pierwszych liter łatwej do zapamiętania sekwencji uzupełnione o znaki specjalne i litery. W razie zapomnienia takiego hasła dzięki mnemotechnice szybko można przypomnieć sobie właściwą sekwencję. Ważnym aspektem jest także bezpieczne użytkowanie hasła np. nie zapamiętywanie go na komputerach używanych przez wiele osób.


Wyszukiwarka

Podobne podstrony:
Sprawko1 lab PA Romaszko, AGH WIMIR AiR, Semestr 3, PA, laborki, sprawko lab1 PA
PA 01 Sprawozdanie Wec Zajac 22 A, AGH WIMIR AiR, Semestr 3, PA, laborki, sprawko lab1 PA
tabelkaRomaszko, AGH WIMIR AiR, Semestr 3, PA, laborki, sprawko lab1 PA
sprawka, lab1, Nr ćwiczenia
karol sprawkografika lab1
lab1 sprawko
sprawko moo1, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce, labki
sprawkoTUDY, Elektronika WAT, sem4, Techniki i urządzenia dostępowe - Tud, laborki, lab1
moje, Mechatronika AGH IMIR, rok 2, Teoria sterowania, lab1 grzybek, sprawko ts rafał
Wnioski do tbwcz lab1, Elektronika i telekomunikacja-studia, rok II, semIII, Tbwcz, TBWCZ+SPRAWKA+-+
Wda lab1 sprawko, WAT, SEMESTR II, WDA
lab1 sprawko FINAL VERSION
PA Lab1 Sprawko
Sprawko Aip Lab1
Do sprawka z UT lab1 Wersja 1
sprawko tbez lab1 T1
Do sprawka z UT lab1 Wersja 1
El sprawko 5 id 157337 Nieznany
LabMN1 sprawko

więcej podobnych podstron