NFsec Logo

John The Ripper – testowanie haseł

30/04/2004 w Bezpieczeństwo 1 komentarz.  (artykuł nr 4, ilość słów: 3070)

H

asła są pierwszą linią obrony przeciwko interaktywnym atakom na nasz system. Bez bezpiecznych haseł nie ma mowy o bezpiecznym systemie. Nawet posiadając kilkanaście systemów zabezpieczeń, lecz których hasła można łatwo złamać – będziemy bardziej podatni na atak niż system posiadający tych zabezpieczeń znacznie mniej, lecz zabezpieczonych mocnymi hasłami autoryzacji. Aby hasła używane w naszym systemie były bezpieczne, powinniśmy wdrożyć podwójny system ich ochrony. Na początku powinniśmy przeszkolić użytkowników i wymusić na nich przestrzeganie podstawowych reguł dotyczących bezpieczeństwa systemu haseł (patrz artykuł “Wstęp do bezpieczeństwa lokalnego” punkt o hasłach).

Następnie okresowo powinniśmy korzystać z zaawansowanych programów narzędziowych wyszukujących luki w naszym systemie haseł podstawowej autoryzacji, który jest najbardziej narażony na ataki (więcej o atakach na hasło można dowiedzieć się z artykułu “rodzaje ataków internetowych”). Struktura hasła jest osłabiana głównie dwoma czynnikami: czynnikiem ludzkim – użytkownicy bardzo często wybierają charakterystyczne, łatwe do zapamiętania, słabe hasła; i czynnikiem nazywanym ograniczeniem długości klucza – większość haseł jest krótka, a ilość transformacji niezbędnych do zdekodowania hasła jest stosunkowo niewielka. Dlatego pod pojęciem podwójnej ochrony hasła kryje się jego dobra konstrukcja oraz przetestowanie tej konstrukcji.

Jednym z programów do testowania mocy konstrukcji haseł użytkowników jest John the Ripper autorstwa Solar Designer’a. Jego podstawowym celem jest wykrycie słabych haseł będących najsłabszym ogniwem większości dzisiejszych serwerów. Dzięki temu narzędziu możemy zapobiec złamaniu słabego hasła przez intruza, nakazując danemu użytkownikowi, który posługuje się złamanym hasłem, jego zmianę z uwzględnieniem cech charakterystycznych mocnego hasła. Jeśli chodzi o stronę techniczną programu to jest on alternatywą programu Crack autorstwa Alec’a Muffett’a, jednak w przeciwieństwie do programu Crack posługuję się on własnymi algorytmami, zamiast wywołań systemowej funkcji crypt(3), ze względu na to, że niektóre z algorytmów łamiących by nie mogły być zaimplementowane w programie przy użyciu tej funkcji i dlatego dzięki własnym rozwiązaniom jego wydajność jest wyraźnie większa. Działa on na różnych platformach systemowych (Linux, Unix, DOS, Windows) i obsługuję różne architektury sprzętowe (x86 ze wsparciem dla MMX, Alpha czy SPARC). John obsługuję oraz automatycznie wykrywa szyfrowanie algorytmami: DES (Data Encryption Standard) z jego odmianami, MD5 (Message-Digest 5) oraz Blowfish – stosowane do szyfrowania haseł w systemach Uniksowych (np. FreeBSD, Solaris, OpenBSD) i Linuksowych (np. Slackware, RedHat, PLD) oraz LAN Manager stosowany w systemie Windows NT oraz 2000.

  Instalacja samego programu jest bardzo prosta. Wystarczy pobrać jego źródła z witryny www.openwall.com/john/ – rozpakować je, a następnie poddać procesowi instalacji. W tym przypadku ściągnięte zostały źródła będące poddawane dalszemu rozwojowi (1.6.36), gdzie wprowadzono kilka nowych funkcji, usprawniono stare oraz poprawiono parę błędów (więcej informacji możemy uzyskać w pliku Changes). Lecz do w pełni sprawnego działania programu potrzebna jest także stabilna wersja programu (1.6) – więc ją także należy nabyć. Po ściągnięciu źródeł w formacie *.tar.gz do głównego katalogu administratora (/root), w celu przeprowadzenia instalacji wydajemy ciąg komend:

gunzip john-1.6.36.tar.gz
tar -xvf john-1.6.36.tar
rm john-1.6.36.tar
gunzip john-1.6.tar.gz
tar -xvf john-1.6.tar
rm john-1.6.tar
cp /root/john-1.6/doc/* /root/john-1.6.36/doc/
cp /root/john-1.6/run/*.chr /root/john-1.6.36/run/
cd
rm -r john-1.6/
rm john-1.6.36.tar

Po wydaniu powyższego ciągu komend stworzyliśmy warunki do poprawnej instalacji oraz funkcjonowania programu. Ze względu na to, że będziemy używać nieoficjalnej wersji John’a, która jest niepełna pod względem niektórych plików – musieliśmy także przekopiować wybrane pliki (dokumentacje oraz pliki tablic znakowych). W kolejnym kroku przechodzimy do czystej instalacji:

cd john-1.6.36/src
make |less

W tym momencie – przy tworzeniu plików wykonywalnych – jesteśmy zobowiązani do wybrania z wyświetlonej listy platformy systemowej oraz architektury naszej maszyny. Jeśli korzystamy z procesorów Pentium lub Celeron posiadających obsługę technologii MMX (MultiMedia eXtension), a naszym systemem jest Linux to wybieramy “linux-x86-mmx-elf“, w przeciwnym wypadku szukamy dalej na liście odpowiedniej konfiguracji. Po wybraniu trafnej pozycji przeprowadzamy kompilację programu:

make linux-x86-mmx-elf

Jeśli nasz system nie jest wylistowany w dostępnych opcjach to powinniśmy spróbować wywołać polecenie make z opcją “generic“. Jeśli proces tworzenia plików binarnych zostanie przeprowadzony bez żadnych problemów powinniśmy otrzymać plik “john” w katalogu run/. Po poprawnej kompilacji możemy przejść do samej konfiguracji programu. Wszystkie parametry konfiguracyjne są zapisane w pliku john-1.6.36/run/john.conf. Na początku tego pliku możemy zdefiniować cztery podstawowe zmienne środowiskowe:

  • Wordlist = $JOHN/password.lst – zmienna ta określa miejsce lokalizacji pliku z listą słów (słownika), które są używane do łamania haseł w trybie wsadowym.
  • Idle = N – jeżeli zmienna ta posiada wartość Y(es) to zmusza ona program do korzystania jedynie z jałowych cykli procesora. Takie ustawienie tej opcji jest przydatne na serwerze produkcyjnym, w celu ograniczenia poboru pełnej mocy procesora przez program, która ma zostać wykorzystana do obsługi klientów serwera. Dlatego w celu pełnego wykorzystania programu zalecane jest łamanie haseł po godzinach standardowej pracy maszyny lub wykorzystać do tego zupełnie inną jednostkę obliczeniową w celu wykorzystania jej pełnej mocy i oczywiście programu.
  • Save = 600 – zmienna ta określa opóźnienie (w sekundach) przy tworzeniu awaryjnego pliku odzyskiwania, zawierającego informacje o już wykonanych czynnościach na wypadek przerwania pracy programu. Jego wznowienie będzie kontynuowane od ostatniej zapisanej czynności wykonywanej na pliku z hasłami do złamania.
  • Beep = Y – zmienna ta określa, czy program ma powiadomić użytkownika sygnałem dźwiękowym za każdym razem, kiedy hasło zostanie złamane. Mały system powiadamiający o postępach robionych przez program.

Reszta bardzo elastycznej konfiguracji związana jest z trybami łamania hasła, jakie oferuje nam John The Ripper. Są to tryby takie jak: Single Crack, Wordlist oraz Incremental Mode. Pierwszy z nich:

Single Crack” – od tego trybu powinniśmy głównie zaczynać łamanie haseł – polega na pobraniu informacji z takich pól jak login oraz GECOS (General Electric Comprehensive Operating System – zawiera ono m.in. informacje o prawdziwym imieniu i nazwisku użytkownika, numer telefonu, miejscu pracy itp.) i wykorzystaniu ich w procesie łamania hasła (czyli badany jest typowy przypadek łączenia informacji powiązanych z osobą w procesie tworzenia haseł). Ponieważ informacje te wykorzystywane są tylko do złamania konta, z którego zostały pobrane – tryb ten jest znacznie szybszy od trybu Wordlist, czyli słownikowego. W dodatku tryb Single pozwala na używanie wielu reguł, którym John poddaje każde wyciągnięte słowo, które następnie jest podstawiane za hasło. Przykładowymi regułami są: zamiana słowa na słowo składające się naprzemiennie z dużych i małych liter; dopisanie do wyrazu tego samego wyrazu w odwrotnej kolejności np. roottoor; zamienienie wyrazu na wyraz, w którym jego treść powtórzona jest dwa lub więcej razy, czy rozpoczęcie lub zakończenie wyrazu cyfrą 1. W przeciwieństwie do trybu słownikowego reguły używane w trybie Singel są zawsze aktywowane podczas używania tego trybu. W trybie słownikowym trzeba te reguły uaktywnić poprzez dodanie odpowiedniego parametru wywoławczego. Dodatkowo odgadnięte hasła używane są do odgadnięcia kolejnych haseł użytkowników, w celu upewnienia się że reszta użytkowników nie posiada takich samych haseł. Użycie tego trybu na wielu plikach z hasłami w jednakowym czasie, czasami może przynieść bardziej wymierne rezultaty niż w przypadku łamania poszczególnych plików osobno.

Wordlist” – metoda słownikowa – jest najprostszą metodą obsługiwaną przez John’a. Jedyną rzeczą jaką musimy wykonać to sprecyzowanie lokalizacji słownika (czyli pliku tekstowego posiadającego jedno słowo na linię), oraz plik z hasłami do rozkodowania. W dodatku możemy uaktywnić reguły (które jak już wspominałem są używane do modyfikacji słów), które będą wypróbowane na każdym słowie z listy słownika. Jeśli chodzi o sam słownik – to jego konstrukcja powinna spełniać pewne warunki: nie powinna zawierać duplikatów – słowa powinny różnić się od siebie co najmniej jednym znakiem; hasła znajdujące się w słowniku powinny być uporządkowane według schematu alfabetycznego – wtedy program może pracować trochę szybciej, ponieważ każde słowo jakie jest poddawane próbie różni się od poprzedniego kilkoma znakami (większość słowników jakie można znaleźć w sieci jest już posortowana alfabetycznie). Oczywiście im słownik większy i posiada bardziej wyszukane hasła tym lepiej.

Incremental Mode” – najbardziej potężny tryb łamania haseł. Posiada możliwość wykorzystania wszystkich kombinacji znaków jako hasło, lecz w niektórych przypadkach bywa bardzo skuteczny, a w niektórych wymaga poświęcenia dużej ilości czasu do złamania hasła, a jeszcze w innych może nigdy nie dobiec końca, ponieważ liczba możliwych kombinacji jest tak duża (dla 9 znakowego hasła ilość ta wynosi 572 994 802 228 617 000 możliwych kombinacji), że czas potrzebny do ich przeprowadzenia oblicza się w setkach lat. Wykorzystanie wszystkich możliwych znaków przez ten tryb jest możliwe z faktu, iż korzysta on z tablic najczęściej występujących znaków (pliki o rozszerzeniu .chr znajdujące się w katalogu run/). Dzięki temu jest on w stanie wypróbować bardzo dużą ilość haseł w umiarkowanym czasie. W celu użycia tego trybu musimy wywołać jego rodzaj w linii poleceń przy określeniu sposobu łamania haseł. Standardowo posiada on cztery szablony, które mogą być wykorzystane – są to: 1) Alpha – posiada wszystkie znaki alfabetyczne, które zostaną wykorzystane do złamania hasła; 2) Digits – posiada wszystkie znaki numeryczne, które zostaną wykorzystane do złamania hasła; 3) All – posiada wszystkie znaki (w sekwencji duże i małe oraz znaki specjalne), które zostaną wykorzystane do złamania hasła; 4) Lanman – posiada wszystkie znaki lecz tylko w sekwencji duże oraz znaki specjalne, które zostaną wykorzystane do złamania hasła.

Czwartym dość niestandardowym trybem jest tryb zewnętrzny (External Mode) – w którym sami tworzymy “program”, napisany dzięki wybranej liście instrukcji w języku programowania C określając w nim własne reguły dotyczące sposobu wspomagania łamania haseł np. użycie funkcji filter() powoduje przefiltrowanie słów, które są poddawane próbom – w wyniku czego otrzymujemy określone zmiany po ich przefiltrowaniu (np. wyciąganie z nich określonych znaków takich jak liczby), czy użycie funkcji generate(), która powoduje generowanie nowych słów, gdy inne tryby łamania nie są używane. Trybu zewnętrznego możemy używać jako osobny proces łamania haseł lub używać go wraz z innymi trybami np. w trybie łamania słownikowego możemy użyć dodatkowo trybu zewnętrznego z opcją filtrowania wyrażeń występujących w słowniku tak by tylko słowa posiadające w sobie liczby były używane do łamania, a reszta pomijana, lub możemy także znaleźć zastosowanie tego trybu w tworzeniu nowych tablic znakowych.

Po wstępnym omówieniu poszczególnych trybów przejdźmy do ich trochę bardziej dokładnego opisu. Na początek przystąpimy do inicjacji samego procesu łamania hasła, które się składa na przetestowanie szybkości pracy programu, przeprowadzenie konwersji formatu zapisu pliku haseł do formy zrozumiałej dla Johna oraz wybraniu odpowiedniej metody łamania hasła. W celu przeprowadzenia testu szybkości (benchmarku) łamania poszczególnych algorytmów przechodzimy do katalogu run/ i wydajemy następujące polecenie:

./john -test

Następnie możemy obserwować stopniowo ukazujące się na ekranie wyniki. Kolejnym krokiem jest przekonwertowanie pliku z hasłami. Zakładając, że posiadamy system maskowania haseł (shadowing) do tego procesu używamy polecenia:

./unshadow /etc/passwd /etc/shadow > passwd.1

W przeciwnym wypadku po prostu kopiujemy plik z zawartością haseł do głównego katalogu programu:

cp /etc/passwd /root/john-1.6.36/run/passwd.1

Po tak przeprowadzonej inicjalizacji jesteśmy gotowi przeprowadzić kolejne tryby łamania haseł z naszego pliku. Pierwszym trybem jaki powinien być zawsze na początku uruchamiany to: Single Crack. By poddać plik (lub więcej plików – co jest zalecane w przypadku, gdy chcemy łamać więcej niż jeden plik zawierający hasła) tej metodzie wydajemy następującą komendę:

./john -single passwd.1 (opcjonalnie passwd.* - jeśli posiadamy więcej plików)

W trakcie przeprowadzania każdego procesu łamania na bieżąco otrzymujemy postępy w łamaniu kolejnych kont. Jeśli odnieśliśmy jakieś skutki – zostaną one zapisane do pliku “john.pot“. W celu otrzymania raportu na temat złamanych haseł należy wydać komendę:

./john -show passwd.1

Jeśli lista kont jest tak długa, że nie mieści się na ekranie monitora możemy oczywiście skorzystać z przekierowania strumienia w celu zapisania jej w jakimś pliku tekstowym, który będziemy mogli spokojnie podświetlić i przeglądać, przewijając jego zawartość:

./john -show passwd.1 > cracked.txt

Jeśli interesuje nas tylko, czy konto administratora zostało złamane lub innego użytkownika o określonym numerze id lub loginie wystarczy, że wydamy komendę:

./john -show -users:0 passwd.1 (opcjonalnie passwd.*)

lub

./john -show -users:root passwd.1

Ta sama reguła obowiązuje w stosunku do określonych grup:

./john -show -groups:0,100 passwd.1

W celu uskutecznienia reguł jakim poddawane są informacje z pól GECOS – edytujemy plik john.conf oraz pod koniec sekcji [List.Rules:Single] usuwamy komentarze (;) poniżej ciągu “# Uncomment the following lines if you’re really crazy”.

Kolejną metodą jest metoda słownikowa. Metodzie tej podlega słownik posiadający w sobie przypuszczalnie użyte hasła, które mają być wypróbowane w trakcie łamania danego pliku z zaszyfrowanymi hasłami. Hasła znajdujące się w danym słowniku mogą być poddane dodatkowym regułom – mutującym ich znaczenie. Dlatego warto od razu uaktywnić opcję poddawania ich regułom, co zwiększy możliwość odgadnięcia hasła oraz zaoszczędzi nam czasu eliminując kolejny niepotrzebny przebieg. W celu zwiększenia pola działania reguł możemy zdefiniować własne reguły oraz dodać je do sekcji [List.Rules:Wordlist], która jest odpowiedzialna za reguły stosowane przy łamaniu słownikowym (znaczenie już stworzonych, poszczególnych reguł możemy znaleźć w pliku doc/RULES wyjaśniającym każdą użytą w nim składnie). Np. chcemy dodać regułę, która będzie zamieniała w zwykłym słowie litery a, b, c, e, g na format 31337, czyli według pliku RULES powinna ona wyglądać następująco:

l/asa4/bsb8/csc</ese3/gsg6/

Rozpisując te reguły otrzymujemy: l – zamień format liter na mały (lowercase); /a – odrzuć wyraz chyba, że zawiera literę “a”; sa4 – zamień wszystkie litery “a” na cyfrę “4” oraz analogicznie w pozostałych przypadkach: “b” na “8” itd. Tak więc wyraz: AbDacegus zostanie zamieniony na: 48d4<36us. Możemy takich reguł stworzyć znacznie więcej uwzględniając więcej konwersji poszczególnych liter na liczby (a=4, b=8, c=< , d=>, e=3, g=6, i=|, j=;, l=1, o=0, s=5 lub $, t=7, y=/, z=2). Jeśli posiadamy rozwiniętą wyobraźnie – to tworząc nowe reguły czasami możemy znacznie przyśpieszyć samą pracę programu, który przypadkowo znajdzie szukane hasło. Przechodząc do samego wywołania trybu słownikowego to jego składnia wygląda następująco:

./john -w:password.lst -rules passwd.1

Gdzie password.lst jest słownikiem. Oczywiście można tu umieścić dowolną nazwę pliku, który jest naszym zbiorem haseł. Jeśli upieramy się by przetestować same czyste hasła wystarczy opuścić w powyższym wpisie ciąg “-rules”. Zakładając, że mamy bardzo duży słownik i po dłuższym czasie z jakiś powodów będziemy musieli wyłączyć program łamiący, wystarczy, że wywołamy program z parametrem tworzenia sesji:

./john -session=300404 -w:password.lst passwd.1

Spowoduje to zapisywanie logów z postępu pracy łamania programu do pliku 300404.log (nazwa sugerująca datę uruchomienia programu) oraz po upływie danego czasu – po którym jest zapisywana informacja ratująca sesję – postęp procesu łamania do pliku 300404.rec. W celu odzyskania przerwanej sesji wydajemy polecenie:

./john -restore=300404

Polecenie to spowoduje rozpoczęcie pracy w trybie w jakim ostatnio używaliśmy program, a dokładniej od momentu, kiedy ostatnio program zachował informację o postępie łamania (czas, co jaki ma być zapisywana następująca informacja jest określony w pliku john.conf – małe przypomnienie).

Zanim przejdziemy do trybu Incremental musimy wprowadzić pewne zmiany w ustawieniach programu John – tyczą się one oczywiście tego trybu. Poprzez edycję pliku john.conf przechodzimy do sekcji “# Incremental Modes“. W niej oczywiście znajdują się sekcje korzystające z danych tablic znakowych. Każda z tych sesji należy skonfigurować w stosunku do charakteru wprowadzania haseł w naszym systemie. Np. sekcja posiada następujące zmienne: File – $JOHN/all.chr – zmienna ta określa ścieżkę dostępu do pliku zawierającego znaki, które zostaną użyte do łamania haseł; MinLen = 0 – określa minimalną ilość znaków w haśle, od której John ma zacząć łamać hasła. Należy pamiętać, że jeśli hasła są krótsze niż podane w tej zmiennej to zostaną one pominięte w tym trybie łamania. Dlatego w tym polu należy wpisać wartość równą wartości jaka obowiązuje przy wprowadzaniu haseł do naszego systemu lub ich zmianie. Jeśli hasło w naszym systemie musi posiadać, co najmniej 9 znaków wartość pola MinLen powinna równać się tej wartości; MaxLen – określa maksymalną ilość znaków w haśle do której John ma łamać hasła. Analogicznie jak w poprzedniej zmiennej ustawiamy tutaj specyfikację zależną od systemu tylko z tą różnicą, że tyczy się ona maksymalnej długości hasła jaką może posiadać użytkownik naszego systemu; CharCount = 95 – zmienna ta pozwala na ograniczenie używania różnych znaków w celu przyśpieszenia łamania przez program John dłuższych haseł. Jeśli tabela znaków zawiera 100 znaków, a my chcemy używać z niej tylko 95, to w tym właśnie celu określamy wartość tej zmiennej. Możemy także wykorzystać ją do policzenia ilości znaków. Jeśli liczba ta będzie większa od rzeczywistej ilości posiadanych znaków przez tablice zostanie nam zwrócony błąd; Extra = ąćóśłćźż – sekcja ta może być użyta w przypadku, gdy dane znaki nie występują w aktualnie używanej tablicy znakowej. Powoduje ona, że znaki określone w tej sekcji są także uwzględnianie w łamaniu hasła. Mogą to być znaki ojczyste, znaki specjalne występujące na klawiaturze lub różnego rodzaju znaki ASCII. Zakładając, że chcemy użyć trybu Incremental generującego wszystkie standardowe znaki klawiaturowe w celu złamania hasła wydajemy po prostu polecenie:

./john -i:all passwd.1

Możemy także skorzystać z dość nietypowego trybu omówionego we wcześniejszej części artykułu – External Mode. Wykorzystując wcześniej stworzone filtry przez samego autora programu możemy podczas korzystania, z któregoś z trybów łamania – poddać go dodatkowej filtracji w celu usunięcia np. wszystkich cyfr (filtr: filter_alpha) lub liter (filtr: filter_digits). Innymi filtrami są: filter_lanman, lanman, strip (od programu tworzącego hasła używany w celu szybszego łamania ich), double i parallel. Przykładem wykorzystania tego trybu może być odfiltrowanie słownika w celu użycia z niego tylko numerów:

./john -external:filter_digits -rules -w:password.lst passwd.1

Na koniec warto wspomnieć, że John pozwala na łamanie nie tylko haseł pochodzących z plików autoryzacji systemu, ale także z innych, pojedynczych programów korzystających z szyfrowania, które obsługuje nasz Ripper. Wystarczy przekształcić wpis z danej aplikacji tak by przypominał on wpis pochodzący z pliku autoryzacji. Za przykład może posłużyć wpis z pliku serwera Apache .htaccess zaszyfrowany algorytmem DES – posiadający postać:

redakcja:sdE345Fghhht.27gde

Do tego wpisu wystarczy dodać podstawowe parametry struktury rzeczywistego wpisu pochodzącego z pliku /etc/passwd. Tak więc po odpowiedniej modyfikacji wpis gotowy do przyjęcia przez program John powinien wyglądać następująco (dopisane wartości nie są rzeczywiste – służą jedynie do symulacji poprawnego wpisu):

redakcja:sdE345Fghhht.27gde:0:0:redakcja:/home/redakcja:/bin/bash

Program John the Ripper jest świetnym programem do testowania słabych haseł tworzonych przez użytkowników w naszym systemie. Pozwala on wyeliminować słabe ogniwa systemu poprzez ich bezpośrednie wskazanie. Oczywiście znalezienie takiego słabego ogniwa także w dużej mierze zależy od nas, ponieważ to my poddajemy konfiguracji program, który jest tylko narzędziem w naszych rękach. Po znalezieniu użytkowników ze słabymi hasłami możemy skorzystać ze skryptu “mailer” – w celu ich powiadomienia o słabym haśle. Jeśli nie znajdziemy żadnych kont o słabych hasłach nie należy się załamywać. Jest to znak, że użytkownicy przestrzegają reguł dotyczących tworzenia oraz używania haseł, które powinniśmy im wcześniej przedstawić.

Bonus:Jeśli nie posiadamy żadnego słownika, a nie chce nam się go szukać w sieci, ale za to posiadamy wspaniałą dokumentację naszego Linuksa – możemy ją wykorzystać do szybkiego stworzenia prostego słownika:

mkdir slownik
cp /usr/doc/Linux-HOWTOs/*.txt /root/slownik
cat slownik/*.txt | tr -cs [:alnum:] '\012' | tr A-Z a-z | sort -u > slownik.txt

Polecenie to spowoduje, że zawartość wszystkich dokumentów tekstowych z katalogu Linux-HOWTOs zostanie zapisana w formacie: jedno słowo na linijkę, słowa te będą składać się ze wszystkich dostępnych znaków ([:alnum:]), wszystkie wielkie litery w tych wyrazach zostaną przekonwertowane na mały rozmiar (w celu uzyskania odwrotnego efektu wystarczy odwrócić ciąg A-Z a-z na a-z A-Z), oraz zostaną usunięte wszystkie duplikaty z powstałego słownika (sort -u), oczywiście słownik będzie posortowany od razu alfabetycznie.

Więcej informacji: John The Ripper, /doc, tr –help, sort –help

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , ,

1 komentarz.

  1. Ze względu, na fakt że tryb –incremental obsługuje tylko hasło o długości 8 znaków groszek napisał rozszerzenie trybu trybu –external, które pozwala pokonać tą barierę. Wystarczy skopiować kilka razy poniższy kod do pliku konfiguracyjnego john.conf z różnymi długościami znaków oraz uruchomić program z parametrem: --external=realcrack-10 lub --external=realcrack-11 itd.:

    [List.External:realcrack]
    int l;int i;int t;int s;int e;
    int w[10];//-----length
    void init( ) {
    l=10;//------length
    s=65;//------start
    e=126;//-----end
    i=0;
    while( i<l ) {
    w[i]=s;i++;
    }
    w[i++]=0;i=0;
    }
    void generate( ) {
    w[0]=w[0]+1;
    while( i<l ) {
    if( w[i]>=e ) {
    w[i]=s;w[i+1]=w[i+1]+1;
    }
    word[i]=w[i];i++;
    }
    word[i++]=0;i=0;
    }
    void restore( ) {
    while( i<l ) {
    w[i]=word[i];i++;
    }
    w[i++]=0;i=0;
    }
    

    Ponadto warto zainteresować się stroną Wiki poświęconą Johnowi, na której można znaleźć wiele patchy usprawniających i przyśpieszających działanie programu. Na Wiki znajdują się również opisy nowych metod łamania haseł np. Markov generator.