Door Maurice op 24 augustus 2008 (aangepast op 22 augustus 2008) populariteit:
'Wardriving ... is een activiteit waarbij men rondrijdt met een auto en een computer uitgerust met Wi-Fi-apparatuur'(wiki). Omdat ik wat luier ingesteld ben, ben ik niet in de auto gestapt maar ben gewoon vanuit de woonkamer aan de slag gegaan. Thuis op de bank. Warsitting zeg maar. In dit artikel mijn ervaring over het kraken van wireless netwerken in mijn buurt...
!!! DISCLAIMER !!!
Dit is een educatief artikel, niet bedoeld om mensen aan te zetten tot het hacken van andermans wireless netwerken. Dat is, zoals je waarschijnlijk weet, strafbaar in Nederland en heel veel andere landen. Ik heb alleen WEP keys gekraakt en WPA wachtwoorden proberen te kraken. Ik heb me geen toegang verschaft tot andermans netwerken zonder medeweten van de eigenaar(s). Namen, SSIDs en MAC-addressen zijn fictief. Ik probeer met dit artikel mensen te waarschuwen dat WEP-versleuteling onvoldoende is.
Dit artikel beschrijft mijn bevindingen. Het is niet mijn bedoeling om een stap-voor-stap handleiding te schrijven, mede omdat dit per OS (of zelfs Linux distributie) en driver verschilt. De commandline voorbeelden in dit artikel zijn voor OpenSuse 11 64-bit in combinatie met deze hardware:
Acer Extensa 5220 laptop
Broadcom BCM94311MCG wlan mini-PCI (wlan0 in de voorbeelden)
Ubiquiti XPress Express Card (Atheros 5006 chipset, ath0 in de voorbeelden)
De voorbeelden kunnen ook voor andere distributies gebruikt worden. Voor Ubuntu bijvoorbeeld moet je overal 'sudo' voortypen . Overigens is een tweede wifi-kaartje zoals ik heb niet nodig.
Hardware voorbereidingen
Wat je nodig hebt is een laptop met een (on-board) wifi chipset dat goed ondersteund wordt onder Linux. Gelukkig had ik nog zo'n laptop liggen.
Software voorbereidingen
Onder Windows zul je ook wel tools hebben, maar de meeste (gratis) tools zijn voor Linux geschreven. Op mijn laptop draait OpenSuse 11. Dus als je Linux hebt met een goedwerkende wifi driver kom je al een heel eind.
Packet injection Doe daarbij nog packet injection en je bent klaar. Het is eigenlijk niet per se nodig, maar het verkort de tijd van het kraken van een wifi netwerk wel enorm. Je driver moet het wel ondersteunen en in mijn geval kostte het me wat moeite om aan de gang te krijgen. Je moet dus niet schrikken van het feit dat je zelf even een gepatche driver moet hercompileren.
Zoals ik al vertelde heb ik ook een extern wifi kaartje gekocht, deze heeft een Atheros 5006 chipset. Ook bij deze kostte het wat moeite om aan de gang te krijgen.
Aircrack Om draadloze netwerken te kraken heb ik gebruik gemaakt van Aircrack. Kwestie van downloaden, compileren en installeren:
wget http://download.aircrack-ng.org/aircrack-ng-1.0-rc1.tar.gz
tar -zxvf aircrack-ng-1.0-rc1.tar.gz
cd aircrack-ng-1.0-rc1
make
make install
Overigens zijn er meerdere versies beschikbaar maar daar had ik problemen mee, waarbij de monitor mode met airmon-ng niet werkte:
/usr/sbin/airmon-ng: line 357: /sys/class/ieee80211/phy0/add_iface: No such file or directory
mon0: unknown interface: No such device
Monitor mode Voordat je draadloze netwerken kunt kraken, moet je je netwerkkaart in monitor mode staan. Dit kan op twee manieren: dedicated of shared (termen die ik er zelf aan geef). Dedicated betekent dat je je huidige connectie verliest, shared houdt in dat je een extra monitor netwerk interface aanmaakt, naast je huidige. Zo kun je toch je wireless internet connectie houden terwijl je aan het monitoren bent.
Hier wat voorbeelden om de interfaces in (dedicated) monitor mode te zetten.
Broadcom in monitor mode zetten:
ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
Broadcom monitor mode weer uitzetten:
ifconfig wlan0 down
iwconfig wlan0 mode managed
ifconfig wlan0 up
Om een extra monitor interface te creeren met Aircrack heb je iw nodig:
mkdir iw
cd iw
wget http://dl.aircrack-ng.org/iw.tar.bz2
tar xjf iw.tar.bz2
make
make install
Dan kun je, naast het reguliere wireless device, een monitor device creeren met (voor the Broadcom):
sudo airmon-ng start wlan0
Nu is er een mon0 device gecreerd. En weer uitzetten:
sudo airmon-ng stop wlan0
Bij de Ubiquiti werkt het net iets anders:
airmon-ng start wifi0
En weer uit:
airmon-ng stop ath1
Ik gebruik deze shared manier overigens niet vaak, omdat de netwerkverbinding met de Broadcom dan trager is en soms wegvalt.
Netwerken vinden
Kraken begint met het vinden van netwerken. Hier kun je de standaard wifi mananager voor gebruiken van je OS, of een tool die bij Aircrack zit:
aireplay-ng -9 ath0
of een meer gespecialeerde tool zoals Kismet, die ook meer gegevens over de gebruikte encryptie weergeeft. Starten doe je door de drivernaam, devicenaam en een zelf verzonnen naam mee te geven.
Voor Broadcom:
kismet -c b43,wlan0,bla
Voor Ubiquity:
kismet -c ath5k,ath0,bla
Zelf gebruik ik daarnaast ook WiFiFofum op mijn windows smartphone in combinatie met een bluetooth GPS module.
Wat je moet onthouden van het netwerk dat je wilt kraken is:
ESSID (naam van het netwerk)
BSSID (MAC-address )
Kanaal
Overigens kunnen de eerste netwerken al toegevoegd worden aan de score lijst: drie open netwerken zonder encryptie, waarvan 2 een internet connectie hebben. De derde werkt niet, waarschijnlijk door MAC filtering.
MAC filtering
Maar MAC filtering is geen obstakel. Het is een kwestie van wachten tot er een client connect en dat MAC adres gebruiken wanneer de client weer offline is:
ifconfig wlan0 down
ifconfig wlan0 hw ether 00:12:34:56:78:90
ifconfig wlan0 up
Werkwijze WEP
Om een WEP netwerk te kraken moet je pakketjes verzamelen. Met deze pakketjes kan de WEP-key gereconstrueerd worden. Daarnaast zijn er manieren om meer pakketjes te genereren zodat het kraken soms al in 5 minuten gedaan is. Ik heb mijn kennis hier opgedaan.
IVs verzamelen Het kraken van WEP begint met het verzamelen van speciale WEP pakketjes, IVs genaamd. Het zijn een soort initializatie pakketjes, zal er verder niet over uitwijden (omdat ik het zelf ook niet weer). Wanneer er genoeg IVs zijn verzameld, kan een WEP key gekraakt worden.
...waar:
2 is het kanaalnummer
00:1A:2B:3C:4D:5E is de BSSID van het netwerk
ath0 is de netwerkinterface die in monitor mode staat
output is een prefix voor de files die weggeschreven worden
Je ziet nu een overzicht met gegevens van het netwerk. Wanneer er clients verbonden zijn zie je daarvan ook het MAC-adres. Erg handig voor MAC adres spoofing.
False authenticatie Om straks meer IVs te genereren via ARP request moet het MAC adres van je netwerkinterface bekend zijn bij de accesspoint van het 'target netwerk'. Open een nieuwe terminal en type:
...waar:
6000 de periode in milliseconden waarop de fake authenticatie herhaald moet worden (niet altijd nodig)
Netwerk is de naam van het netwerk
00:1A:2B:3C:4D:5E is de BSSID van het netwerk
00:01:02:03:04:05 is het MAC adres van je netwerkinterface
ath0 is de netwerkinterface die in monitor mode staat
Meer IVs genereren: ARP requests Om de ARP requests de ether in te sturen doe je een:
...waar:
00:1A:2B:3C:4D:5E is de BSSID van het netwerk
00:01:02:03:04:05 is het MAC adres van je netwerkinterface
ath0 is de netwerkinterface die in monitor mode staat
Heb geduld, maar wanneer de pakketjes 'aanslaan', heb je in een mum van tijd genoeg IVs.
Kraken Om op de verzamelde pakketjes een aanval uit voeren doe je van uit de directory met de .cap files:
aircrack-ng -z -b 00:1A:2B:3C:4D:5E *.cap
...waar:
00:1A:2B:3C:4D:5E is de BSSID van het netwerk
Het eerste netwerk kraken kostte me ongeveer een uur. Voornamelijk omdat ik niet goed doorhad hoe meer verkeer te genereren. Het volgende netwerk had ik niet meer dan 5 minuten nodig, een kleine dertigduizend pakketjes was genoeg.
Om het leven wat makkelijker te maken heb ik een script gemaakt dat je vanuit gnome kunt starten: crack_wep.sh
Werkwijze WPA en WPA2
Check goed of het gaat om een WPA/PSK netwerk, elke andere vorm van versleuteling hoef je niet eens aan te beginnen. De werkwijze bij WPA (en WPA2) is anders dan bij WEP. WPA is alleen te kraken met een zogenaamde 'brute force attack' of 'dictionary attack'. Bij een brute force attack worden alle mogelijke passphrases geprobeerd. Dit is tijdsintensief en daardoor onpraktisch. Een dictionary attack maakt gebruik van woordenlijsten om wachtwoorden te raden. Voor beide attacks moet je wel eerste de '4-way-handshake' onderscheppen. Ik heb mijn kennis hier opgedaan.
Wachten op de 4-way handshake Net zoals bij WEP beginnen we met het dumpen van pakketjes naar een file. Deze keer niet om IVs te verzamelen, maar om de 4-way handshake te onderscheppen:
...waar:
2 is het kanaalnummer
00:1A:2B:3C:4D:5E is de BSSID van het netwerk
output is een prefix voor de files die weggeschreven worden
ath0 is de netwerkinterface die in monitor mode staat
Net zoals bij WEP zie je ook nu weer een overzicht met gegevens van het netwerk. Wanneer er clients verbonden zijn zie je daarvan ook het MAC-adres en dat heb je nodig wanneer je de handshake wilt forceren met behulp van de-authorisatie.
Handshake forceren Een aangemelde client kun je proberen af te melden door de juiste de-authorisatie pakketjes te sturen. Als je geluk hebt zal een client zich dan opnieuw proberen aan te melden bij het accesspoint. En daarbij wordt de 4-way handshake gebruikt die je nodig hebt. Dus:
aireplay-ng -0 1 -a 00:1A:2B:3C:4D:5E -c 00:AA:BB:CC:DD:EE ath0
...waar:
1 is het aantal keer dat de pakketjes gestuurd moeten worden, experimenteer hier maar mee
00:1A:2B:3C:4D:5E is de BSSID van het netwerk
00:AA:BB:CC:DD:EE is het MAC adres van een aangemelde client
ath0 is de netwerkinterface die in monitor mode staat
Dictionary attack Wanneer je de 4-way handshake hebt (tot nu toe is het bij mij alleen gelukt om deze op mijn eigen netwerk te onderscheppen), kun je een dictionary attack doen. Download een woordenlijst ergens op internet en doe een poging.
waar:
00:1A:2B:3C:4D:5E is de BSSID van het netwerk
../dictionary/dictionary.txt de woordenlijst is
Conclusie
De 4-way handshake verzamelen is lastiger dan ik dacht omdat het de-authoriseren van clients bij mij niet wil lukken (en omdat ik te ongeduldig ben om te wachten totdat clients zich aanmelden).
Het kan ook zijn dat ik toch net te ver weg zit van het netwerk, want behalve een goede ontvangst moet het wifi device dat je gebruikt ook een groot zendbereik hebben. Je moet namelijk niet alleen de accesspoint kunnen bereiken, maar ook de clients die verbonden zijn.
Score De score tot nu toe:
Aantal netwerken zichtbaar 32, waarvan 8 geen SSID uitzonden
Hiervan 6 open netwerken, 13 beveiligd met WEP, 8 beveiligd met WPA en 5 beveiligd met WPA2
Van de open netwerken waren er 4 binnen bereik, 1 er van was beveiligd met MAC address filtering
Alle 5 met WEP beveiligde netwerken zijn gekraakt, de meeste binnen 5 minuten
Van de met WPA beveiligde netwerken waren er 5 binnen bereik, allen WPA/PSK. Ik heb nog geen 4-way handshake kunnen onderscheppen
Van de met WPA2 beveiligde netwerken waren er 2 binnen bereik. Ik heb de 4-way handshake kunnen onderscheppen van 1 daarvan, namelijk mijn eigen netwerk.
Beveiligingstips
Veel mensen laten het na om hun netwerk te beveiligen, want "wie wil er nu hun netwerk op?". Of: "het maakt mij niet uit als ze van mijn internet verbinding gebruik maken".
Nou, mij maakt het wel uit. Men kan via jouw verbinding bv spam sturen, of ergere dingen doen waarvoor men liever anoniem wil blijven. Daarnaast, als de eerste barriere van veiligheid is doorbroken zit men ook meteen op je interne netwerk. Met packetsniffing kunnen wachtwoorden achterhaald worden van bijvoorbeeld je Windows-share met belangrijke documenten, maar ook wachtwoorden van internetsites of creditcard gegevens.
Daarnaast komt het ook vaak voor dat mensen die hun draadloze netwerk niet of nauwelijk beveiligen ook de wachtwoorden in hun kabel- of adslmodem of router niet aanpassen, zodat het standaard wachtwoord gebruikt wordt. Niet slim, op internet zijn dezewachtwoordengewoon te vinden. En wist je dat aan de hand van het MAC-adres van een router men kan zien welk merk het is? En dat een wireless router dit MAC adres gewoon de ether in stuurt?
In dit artikel stond ik even aan de kant van men, om te zien wat er mogelijk is. Gebruik dit artikel om je netwerk te beveiligen. Hier een tweetal tips:
Gebruik minimaal WPA/PSK met een goed wachtwoord (dat niet te vinden is in een of andere woordenlijst)
Gebruik geen standaard wachtwoorden voor je router en kabel/adslmodem
Was dit artikel nuttig voor je? Help mij dan door met behulp van de toolbar hieronder het artikel te tweeten, een eKudo te geven of toe te voegen aan Hyves, Facebook, Delicous, Digg of andere site. Bedankt!
Wanneer ik make doe bij het installeren van IW krijg ik de volgende foutmelding:
CC iw.o
iw.c:11:31: error: netlink/genl/genl.h: No such file or directory
iw.c:12:33: error: netlink/genl/family.h: No such file or directory
iw.c:13:33: error: netlink/genl/ctrl.h: No such file or directory
iw.c:14:25: error: netlink/msg.h: No such file or directory
iw.c:15:26: error: netlink/attr.h: No such file or directory
iw.c: In function ‘nl80211_init’:
iw.c:25: error: implicit declaration of function ‘nl_handle_alloc’
iw.c:25: warning: assignment makes pointer from integer without a cast
iw.c:31: error: implicit declaration of function ‘genl_connect’
iw.c:37: error: implicit declaration of function ‘genl_ctrl_alloc_cache’
iw.c:37: warning: assignment makes pointer from integer without a cast
iw.c:44: error: implicit declaration of function ‘genl_ctrl_search_by_name’
iw.c:44: warning: assignment makes pointer from integer without a cast
iw.c:54: error: implicit declaration of function ‘nl_cache_free’
iw.c:56: error: implicit declaration of function ‘nl_handle_destroy’
iw.c: In function ‘nl80211_cleanup’:
iw.c:62: error: implicit declaration of function ‘genl_family_put’
make: *** Error 1
Reactie toevoegen Een reactie toevoegen is simpel en registratie is niet nodig!
Je IP-adres wordt gelogd, maar niet gepubliceerd, alle reacties hebben een E-mail bevestiging nodig en worden stuk voor stuk gemodereerd. Misbruik wordt niet getolereerd. Naderhand wijzigen van je reactie is niet mogelijk