O John the Ripper wspominaliśmy już raz opisując to narzędzie jako warte uwagi dla każdego pentestera. To szybki program do łamania haseł, obecnie dostępny dla wielu odmian systemów Unix, macOS, Windows, DOS, BeOS i OpenVMS.

Jego głównym celem jest wykrywanie słabych haseł unix’owych. Oprócz kilku typów haszowania haseł crypt(3), program obsługuje także hasze Kerberos/AFS i Windows LM, a także DES oraz setki dodatkowych haszów i szyfrów w wersjach “Jumbo”.

A na wersji Jumbo właśnie będziemy przedstawiać to narzędzie. Jest to rozszerzona wersja programu i zawiera wiele stron dokumentacji i danych dostarczonych przez użytkowników. Nie jest to więc “oficjalny” kod programu.


Pobieranie i konfiguracja wstępna

Na naszej maszynie pobieramy program i przechodzimy do katalogu:

git clone https://github.com/magnumripper/JohnTheRipper.git

cd ./JohnTheRipper/src

Przed dalszymi krokami zalecana jest aktualizacja listy pakietów i instalacja libssl o ile nie robiliśmy tego wcześniej.

sudo apt-get update

sudo apt-get install libssl-dev


Będąc w katalogu wykonujemy „./configure && make” I czekamy aż wykona się build wersji programu:

Po zakończeniu procesu kompilacji należy przejść do katalogu run znajdującego się wewnątrz katalogu JohnTheRipper:

W tym katalogu widzimy wszystkie narzędzia programu JohnTheRipper. Teraz, gdy mamy już program, przechodzimy do przygotowania pliku PDF który będzie naszym celem.


Generowanie PDF

JohnTheRipper, jak wspomniano na początku artykułu, nie jest związany z plikami PDF, a z hasłami i hashami. Dlatego trzeba też będzie utworzyć plik hash PDF za pomocą narzędzia pdf2john.pl (dostępnego w katalogu). Narzędzie to pozwala uzyskać hash pliku za pomocą skryptu perlowego, który można wyodrębnić do nowego pliku za pomocą następującego polecenia:

./pdf2john.pl kapitan_pdf.pdf > pdf.hash

Nasz plik pdf.hash zawiera taki tekst:


Brute Force z Johnem

Teraz, gdy mamy już plik .hash pliku PDF, który chcemy odblokować, wystarczy przekazać ten plik jako argument do narzędzia CLI programu JohnTheRipper (w katalogu run):

./john pdf.hash

Polecenie to użyje UTF-8 jako domyślnego kodowania wejściowego i rozpocznie próbę odgadnięcia hasła pliku przy użyciu domyślnej listy słów. Jeśli hasło zostanie znalezione, zostanie wyświetlone i ścieżka do chronionego pliku PDF:

W naszym przypadku hasło z uwagi na swoją prostotę zostało znalezione w niecałą sekundę.

Jeśli spróbujemy uruchomić to polecenie na tym samym pliku po odgadnięciu hasła, zobaczymy następujące komunikaty:

  • “Nie załadowano haseł”,
  • “Nie pozostały żadne hasła do złamania (patrz FAQ)”

Złamane hasła zostaną zapisane w pliku $JOHN/john.pot (w dokumentacji “$JOHN” odnosi się do “katalogu domowego”. Plik $JOHN/john.pot jest używany do tego, aby przy następnym uruchomieniu programu John nie wczytywał haseł, które już złamaliśmy.

W takim przypadku będziemy mogli użyć flagi –show aby ponownie podejrzeć hasło.

john –show pdf.hash

W naszym przypadku hasło to 12345


Używanie niestandardowej listy haseł

Jeśli nie chcemy używać domyślnej listy haseł password.lst programu JohnTheRipper, możemy podać ścieżkę do nowego pliku, używając argumentu –wordlist:

john –wordlist=password.lst pdf.hash

Na koniec warto dodać, że narzędzie oferuje możliwość złamania wielu plików, więc warto zapoznać się z dokumentacją biblioteki. Tak jak wspominaliśmy na początku wersja „Jumbo” tworzona jest przez społeczność, cały czas rozwijana, a więc co chwile pojawiają się dodatkowe funkcje.

Podziel się z innymi tym artykułem!