„Łamałem hasła, nie ludzi…”

Delikatna parodia tytułu ksiązki KM ma zwiastować tym razem wpis poświęcony łamaniu/zgadywaniu haseł.

Podczas testów penetracyjnych nierzadko stajemy przed koniecznością zbadania siły wykorzystywanych w firmie haseł dostępu do rożnego typu usług, paneli aplikacji webowych, etc.

Jak można podejść do problemu, aby nie wykorzystywać terabajtowych słowników ze słowami, na które prawdopodobnie nikt w firmie by nie wpadł?

Wyobraźmy sobie taki scenariusz:

Pewna Firma Ubezpieczeniowa (nazwijmy ją dla ułatwienia PFU) zleciła nam testy swojej sieci. Robiąc wstępny rekonesans i skanowanie sieci możemy wstępnie odtworzyć jej topologie i urządzenia w niej dostępne. Następnie skanując poszczególne maszyny odkrywamy serwer WWW.

Jako, że strona główna w/w serwera nic nam nie mówi (powiedzmy tajemnicze „It works!”), spróbujemy odkryć kilka ciekawych plików lub katalogów. Wykorzystamy w tym celu jakieś narzędzie do enumeracji katalogów (np. http-dir-enum [1] lub DirBuster [2]).

i voilà… Okazuje się, że dla katalogu „/admin” serwer zwrócił kod 403 co oznacza, że możemy do niego uzyskać dostęp dopiero po uwierzytelnieniu.

STOP

Po tym ekscytującym wstępie dotarliśmy do sedna niniejszego wpisu. What’s next? Zakładamy, że będziemy atakować w pierwszej kolejności użytkownika „admin”, a jeśli to nie wypali kolejny do ostrzału bedzie „administrator”.

To co: małe i duże literki, cyferki, znaki specjalne od 5-12 znaków i jazda brute-force? Czy może wziąć jakiś słownik(i) z [3], [4], [5] lub [6]?

a może zbudować swój słownik? w jaki sposób…?

Co prawda sytuacja jako tako została uproszczona na potrzeby wpisu, ale myślę, że sedno sprawy jest jasne. Do dzieła więc…

Okazuje się, że strona domowa firmy, mająca cel stricte informacyjny (zawiera ofertę, itp.) jest postawiona na całkiem innym, zewnętrznym serwerze. Używany na stronie język i terminologia są dobrze znane wszystkim pracownikom firmy. Zeskanujmy w takim razie wszystkie podstrony w poszukwaniu wyrazów powiedzmy dłuższych niż 5 znaków i zbudujmy z tak zebranego zbioru słownik, którym posłużymy się przy łamaniu haseł dostępu.

Przyjmijmy, że początkowo słownik zawiera 265 słów. Po zastosowaniu różnych permutacji, przestawień, złączeń etc otrzymujemy dość spory słownik zawierający 10238976 potencjalnych haseł.

Do zbudowania słownika możemy posłuzyć się jakimś prostym crawlerem. Np. takim napisanym na szybko w pythonie:

// kod przeniesiony na gista

link: https://gist.github.com/n0-clues/7227902

Crawler zbierze nam słowa określonej długości w słownik. Następnie wykorzystując odpowiednie reguły tworzymy różne premutacje na podstawie tych haseł, np.:

  • dodanie cyfr (0-3131) na końcu każdego słowa
  • dodanie podstawowych znaków specjalnych (np.: ‚_’, ‚!’, ‚.’)
  • łączenie słów
  • pierwsze duże litery

Możliwości jest wiele, wszystsko zależy od naszej finezji i przede wszystkim od potencjalnej grupy docelowej naszych testów.

Do budowy swojego słownika mogą być przydatne narzędzia od hashcata [7]. Jeśli chodzi o reguły i ich tworzenie odsyłam do [8], [9] i [10].

Ten wpis miał początkowo zawierać dokładne wytłumaczenie tworzenia reguł itp. ale aktualnie z braku czasu postanowiłem opublikować to co jest. Myślę, że w najbliższym czasie dodam coś o regułach i wykorzystaniu naszego słownika w ataku HTTP np. z użyciem hydry.

P.S.: Mikołajki tuż tuż, więc pamiętajcie o Waszych Śnieżynkach bo lepiej się nie narażać ;>

Linki:

  1. http://labs.portcullis.co.uk/tools/http-dir-enum/
  2. https://www.owasp.org/index.php/Category:OWASP_DirBuster_Project
  3. http://www.insidepro.com/dictionaries.php
  4. https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm
  5. http://www.skullsecurity.org/wiki/index.php/Passwords
  6. http://contest-2010.korelogic.com/wordlists.html
  7. http://hashcat.net/wiki/doku.php?id=hashcat_utils
  8. http://www.openwall.com/john/doc/RULES.shtml
  9. http://hashcat.net/wiki/doku.php?id=rule_based_attack
  10. http://hashcat.net/wiki/doku.php?id=rules_with_maskprocessor
Reklamy
Otagowane , , , , , ,

One thought on “„Łamałem hasła, nie ludzi…”

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: