WiFi hacking – Advanced 2/2
Eindelijk, het leukste hands-on gedeelte van de 2-delige WiFi Hacking reeks. In deze post gaan we kijken hoe we een aantal geavanceerde WiFi aanvallen kunnen doen zodat we ook oplettende WiFi gebruikers om de tuin kunnen leiden. We gaan kijken hoe we een de-authentication aanval doen en hoe we een reeds bekende AP na kunnen apen. Ook laat ik zien hoe een hacker als “Man-in-the-Middle) toch je beveiligde je HTTPS verkeer af kan luisteren.
Ingrediënten:
Om de voorbeelden in deze post te imiteren heb je de volgende zaken nodig:
- Linux Kali met de Aircrack-ng suite
- Device met WiFi adapter welke in “Promiscuous Mode” gezet kan worden (waarbij al het ontvangende verkeer naar de CPU gestuurd wordt)
- Diverse woordenlijsten en/of hash lijsten voor dictionary en rainbow table attacks
- Fluxion script
- mitmproxy software
Standaard werkzaamheden
Het device waarmee je deze werkzaamheden gaat uitvoeren moet beschikken over een netwerkkaart die in “Promiscuous Mode” gezet kan worden (waarbij al het ontvangende verkeer naar de CPU gestuurd wordt). Ik voer deze werkzaamheden uit met “Aircrack-ng” op een Linux Kali machine.
De volgende werkzaamheden vallen onder mijn “standaard werkzaamheden”:
- Netwerkkaart in Promiscuous Mode (monitor) mode plaatsen
- WiFi omgeving sniffen
Maar allereerst wat algemene informatie over de applicatie die we voornamelijk zullen gebruiken, Aircrack-ng.
Aircrack-ng
Aircrack-ng (of voluit Aircrack Next Generation) bestaat sinds 2006 en is de vervolgversie van “Aircrack”. Aircrack-ng ondersteund meer drivers, meer operatring systems, WEP dictionary attack, Fragmentation attack en nog veel meer. Aircrack-ng is een suite bestaande uit 17-18 applicaties die allemaal bedoeld zijn ten behoeve van “WiFi Beveiliging”. De meest bekende applicaties uit de suite zijn:
- aircrack-ng
- airmon-ng
- airodump-ng
- airdecap-ng
aircrack-ng is de tool die gebruikt wordt voor het kraken van WEP en WPA sleutels. airmon-ng zorgt ervoor dat je je netwerkkaarten in promiscuous mode kunt plaatsen. Airodump-ng luistert draadloze netwerken af en airdecap-ng ontcijfert WEP of WPA(2) capture files. Deze 4 tools alleen maken Aircrack-ng tot een uitermate krachtige tool. De overige tools versterken dit pakket nog meer en zorgen ervoor dat Aircrack-ng nog altijd de meest gebruikte tool is op het gebied van “WiFi beveiliging”.
Promiscuous Mode (Monitor) Mode:
Om de WiFi kaart in Promiscuous Mode (v.a. nu Monitor Mode) plaatsen moet je allereerst weten welke kaarten in je device in monitor mode geplaatst kunnen worden. Dit kun je nakijken met het volgende commando:
airmon-ng |
Nadat we de juiste kaart hebben gekozen (in dit voorbeeld is dat “wlan0” starten we deze kaart in op monitor mode:
airmon-ng start wlan0 |
Het kan voorkomen dat de netwerkkaart niet in monitor mode gezet kan worden omdat er nog bepaalde processen gebruik maken van de interface. Draai in dat geval het volgende commando om deze processen te stoppen:
airmon-ng check kill |
Netwerk sniffen:
Nadat de kaart in monitor mode staat kunnen we het draadloze netwerk gaan sniffen. Dit doen we met airodump-ng:
airodump-ng wlan0mon |
We zien nu exact welke netwerken er in de buurt zijn, de MAC adressen die erbij horen, de encryptie en nog veel meer interessante informatie.
- BSSID – Mac adres van het access point
- PWR – Signaal sterkte
- Beacons – Het aantal beacons welke ontvangen zijn (meestal afhankelijk van de signaalsterkte)
- Data – Het aantal data frames welke ontvangen zijn
- CH – Kanaal waarop het access point actief is
- MB – Snelheid van het access point
- ENC – Encryptie
- CIPHER – Soort cipher welke gebruikt wordt (CCMP, WRAP, TKIP, WEP, WEP40, WEP104)
- AUTH – Type authenticatie (Pre-shared Key (PSK), Managed (MGT), Shared Key (SKA), Open (OPN))
- ESSID – Netwerk naam (SSID)
De MB kolom kan een aantal waardes hebben waaronder:
- -1 = onbekend
- 11 = 802.11b
- 54 = 802.11g
Tussenwaardes zijn mix van meerdere standaarden. Als de “e” achter een getal staat dan betekend dit dat de lijn QoS ondersteund.
Om een WiFi netwerk te kraken moeten we ervoor zorgen dat we zoveel mogelijk data van dit netwerk ontvangen. Data van een specifiek netwerk dumpen doen we als volgt:
airodump-ng -c 6 –-bssid BC05433C59A1 –w dump wlan0mon |
De volgende parameters worden in bovenstaande commando gebruikt:
-c (channel)
Specificeer het kanaal zodat we geen last hebben van “channel hopping”
–bssid
Definieer het MAC adres van het access point dat je af wilt luisteren
-w (write)
De –w optie wordt gebruikt om aan te geven dat deze netwerk dump naar de HD geschreven moet worden (“dump” is in deze de bestandsnaam).
Op dit moment wordt het verkeer afgeluisterd. Er is echter nog geen WPA handshake gevangen (zodat we het wachtwoord kunnen kraken)
Om de WPA handshake te vangen moet je geduld hebben of… je kunt het proces bespoedigen door een cliënt van het access point een zogenaamd “deauth” pakket te sturen waarmee deze cliënt de verbinding met het access point verliest en vervolgens weer opbouwt (doordat de meeste cliënts zijn ingesteld om automatisch verbinding te maken).
De “associated cliënts” van het WiFi zijn zichtbaar in het onderste gedeelte van je “airodump” window:
Een cliënt van het netwerk disconnecten middels een “deauth” aanval gaat als volgt:
aireplay-ng --deauth 5 -a BC05433C59A1 –c E4F8EF5B4EC7 wlan0mon |
De volgende flags zijn in bovenstaande commando verwerkt:
–deauth
Dit betekend “deauthentication” en dus het sturen van een “deauth” pakket.
–deauth
Hier geven het het aantal “deauth” pakketjes op. Hoe meer pakketjes hoe langer de “storing” en hoe groter de kans dat het werkt (en hoe groter de kans op ontdekking).
-a
Dit is het MAC adres van het access point
-c
Dit is het MAC adres van de cliënt
Nadat de cliënt verbroken is en weer gaat verbinden met het access point kan de WPA handshake gevangen worden. Nadat deze is gevangen wordt deze rechts bovenin beeld weergegeven:
Nadat de WPA handshake gevangen is kan het proces gestopt worden. Gedurende de tijd dat airodump gedraait heeft, heeft airodump een aantal bestanden aangemaakt waaronder:
- dump-01.cap
- dump-01.csv
- dump-01.kismet.cap
- dump-01.kismet.netxml
De Kismet bestanden worden speciaal aangemaakt voor de Kismet applicatie en zijn hier dan ook direct in te gebruiken. Het dump-01.csv bestand bevat informatie over het access point en de associated cliënts (eigenlijk hetzelfde wat we op het scherm zagen tijdens het airodump proces). Het dump-01.cap bestand bevat alle ruwe data (TCP dump data) welke tijdens het proces opgevangen is, waaronder de WPA handshake. Het dump-01.cap bestand kan direct gebruikt worden voor analyse in WireShark.
.cap bestanden kunnen soms erg groot worden. Applicaties die tijdens verwerking alle data uit de .cap file verwerken en niet alleen relevante data uit het bestand halen (zoals Hashcat dat doet) kunnen moeite hebben met grote .cap bestanden. Hierdoor duurt het verwerken langer en wordt er meer processorkracht gebruikt. Hoewel ik het niet aanraad om .cap bestanden kleiner te maken kan het bestand een stuk kleiner gemaakt worden met het “wpaclean” commando. Maak altijd een backup van je originele .cap file zodat je altijd terug kunt vallen op de backup als je tijdens het opschoon proces per ongeluk je WP handshake beschadigd. Het wpaclean commando ziet er als volgt uit:
wpaclean wpa.cap dump-01.cap |
In bovenstaande commando wordt het “dump-01.cap” bestand opgeschoond en opgeslagen als “wpa.cap”.
Mocht je Hashcat willen gebruiken om vervolgens het WPA wachtwoord te hacken dan moet het bestand vervolgens geconverteerd worden naar een “hccap” bestand. Het hccap bestand bevat dezelfde TCP dump informatie als het normale cap bestand maar dan is de data op een andere manier gestructureerd waardoor Hashcat zijn magie erop los kan laten. Het omzetten naar een hccap bestand gaat als volgt:
aircrack-ng dump-01.cap –J dump-01.hccap |
WPA wachtwoord hacken
Nu we de belangrijke data opgeslagen hebben en de beschikking hebben over de juiste bestanden kunnen we proberen om het WiFi wachtwoord te kraken. Hiervoor zijn er een aantal mogelijkheden. Een van mijn favoriete applicaties is WiFite (zie deze post). Uiteraard kunnen we ook gewoon het alom bekende Hashcat gebruiken.
Met Hashcat hebben we een aantal mogelijkheden. Je kunt wachtwoordlijsten gebruiken (dictionary attack). Een dictionary attack werkt met wachtwoord lijsten. Elk wachtwoord zal geprobeerd worden tot het juiste (werkende) wachtwoord is gevonden. Een dictionary attack kan online en offline gebruikt worden. Vooral online kan dit een langzaam proces zijn omdat het wachtwoord door het doelsysteem omgezet moet worden in een hash en men moet wachten op de terugkoppeling. Offline is dit proces een stuk sneller. Nog sneller is het gebruik van een zogenaamde “rainbow table”. Een rainbow table is een lijst met berekende hashes. Het enige dat dus vergeleken en bekeken moet worden is of de hash overeen komt met een andere hash uit de lijst. Een rainbow table aanval is altijd een offline aanval waarbij je al in bezit moet zijn van de doelhash (in ons geval de WPA handshake). Het maken van rainbow tables kost veel tijd en dus is het altijd verstandig om een goede afweging te maken. Als je in het bezit bent van rainbow tables dan is dat prima. Als je deze nog moet gaan maken om 1 wachtwoord te achterhalen dan is de kans groot dat je langer bezig bent met het maken van de rainbow tables dan dat je bezig bent met het hacken van het wachtwoord middels een dictionary attack of brute force attack.
De “brute force attack” is een online en offline aanval en is de meest trage variant van allemaal. Tijdens een brute force attack worden alle mogelijke combinaties geprobeerd. Met Hashcat en andere applicaties kun je zaken als cijfers of symbolen uitsluiten waardoor het proces sneller gaat maar de kans op slagen kleiner is. Een brute force attack begint dus b.v. om de letters a-z te proberen, gevolgd door A-Z. Daarna probeert de aanval alle cijfers en symbolen. Als dat niet lukt gaat de aanval door met aa-az, gevolgd door Aa-Az, gevolgd door AA-AZ, gevolgd door ab-az etc. Omdat alle mogelijke combinaties geprobeerd worden duurt deze aanval ontzettend lang.
- 5 karakters – klein – gem. duur: 1 sec
- 5 karakters – klein, hoofd – gem. duur: 6 sec
- 5 karakters – klein, hoofd, cijfers – gem. duur: 20 sec
- 5 karakters – klein, hoofd, cijfers, symbolen – gem. duur: 4 min
- 8 karakters – klein – gem. duur: 1 min
- 8 karakters – klein en hoofd – gem. duur: 5 uur
- 8 karakters – klein, hoofd, cijfers – gem. duur: 21 uur
- 8 karakters – klein, hoofd, cijfers, symbolen – gem. duur: 24 dagen
- 10 karakters – klein – gem. duur: 13 uur
- 10 karakters – klein en hoofd – gem. duur: 19 maanden
- 10 karakters – klein, hoofd, cijfers – gem. duur: 10 jaar
- 10 karakters – klein, hoofd, cijfers, symbolen – gem. duur: 600 jaar
Bovenstaande tijden zijn gemiddelde tijden, berekend op een snelle computer. Het kraken van wachtwoorden kost veel processorkracht. Het kraken van wachtwoorden werkt nog beter via de GPU van je grafische kaart. Een goede grafische kaart kan bovenstaande tijden aanzienlijk verkorten.
Tip: Een echt veilig wachtwoord begint pas echt vanaf de 10 karakters waarbij kleine letters, hoofdletters, cijfers en symbolen elkaar afwisselen.
Hashcat kent naast bovengenoemde aanvallen ook een “hybrid attack”. Deze hybride aanval is een combinatie van een “dictionary attack” en een “hybrid attack”. Hashcat zal ik dit geval alle woorden uit de woordenlijst proberen in combinatie met willekeurige letters en cijfers.
Hashcat gebruiken met een normale dictionary attack gaat als volgt:
hashcat -m 2500 -a 0 dump-01.hccap wordlist.txt |
Hier bovenstaande commando gebruikt de –m flag om aan te geven welk type hash er gekraakt moet worden. De types zijn uiteraard op te vragen d.m.v. “hashcat –help”. Type 2500 is WPA/WPA2 (in Kali Linux maar kan anders zijn op andere operating systems). Dan geven we met –a het type aanval aan. 0 is een “straight attack” (snel met simpele wachtwoorden) en 1 is een “combination attack” waarbij woorden uit de lijst met elkaar gecombineerd worden. Nummer 3 is een “brute force attack”. Vervolgens geven we ons hccap bestand op en de woordenlijst die we willen gebruiken om het wachtwoord te achterhalen.
Een voorbeeld van een brute force attack:
hashcat -m 2500 -a 3 dump-01.hccap ?d?d?d?d |
Voor een brute force aanval moet een mask opgegeven worden. In bovenstaande voorbeeld gebruiken we 4x de ?d mask. ?d staat voor een cijfer. In bovenstaande voorbeeld worden dus alle combinaties van 0 tot 9999 geprobeerd.
Mask karakters:
- ?l = kleine letters a-z
- ?u = hoofdletters A-Z
- ?d = cijfers 0-9
- ?s = symbolen
- ?a = combinatie van bovenstaande (dus per positie alle letters, cijfers en symbolen)
hashcat --pw-min=5 --pw-max=10 -m 2500 -a 3 dump-01.hccap ?a?a?a?a?a?a?a?a?a?a |
Bovenstaande brute force attack begint met het genereren van wachtwoorden v.a. 5 karakters en gaat door tot maximaal 10 karakters (pw-min en pw-max flags). De ?a mask zorgt ervoor dat voor elke positie alle mogelijke varianten geprobeerd worden.
Een voorbeeld van een hybride aanval:
hashcat -m 2500 -a 1 dump-01.hccap wordlist.txt ?d?d?d?d |
De hybride aanval gebruikt de “1” als attack mode. Dit betekend een combinatie aanval. Vervolgens geven we de woordenlijst (wordlist.txt) op en het masker ?d?d?d?d. In dit geval zullen alle woorden op de woordenlijst geprobeerd worden incl. de cijfers 0-9999 aan het einde van het woord. Om de cijfers voor het woord te gebruiken kunnen we de aanval omdraaien als volgt:
hashcat -m 2500 -a 1 dump-01.hccap ?d?d?d?d wordlist.txt |
Bovenstaande aanvallen op de WPA handshake kunnen effectief zijn als het een zwak wachtwoord betreft. Langere wachtwoorden kunnen ontzettend lang duren en mogelijkerwijs niet gekraakt worden. Er is dan een mooiere methode om het wachtwoord te achterhalen, b.v. met Fluxion.
Fluxion
Fluxion is een tool die het volgende doet:
- Kopieert SSID van doel access point en zend deze uit
- Onderdrukt signaal van doel access point
- Zend een captive portal uit waar het WiFi wachtwoord ingevoerd moet worden
- Controleert of het wachtwoord correct is en zo niet dan vraagt de portal weer om het wachtwoord
Fluxion is gebaseerd op het “linset” script en is feitelijk een man-in-the-middle aanval om het WPA wachtwoord te verkrijgen. Het script zorgt ervoor dat WiFi users van het doelnetwerk verbroken worden. Vervolgens wordt het signaal van het doelnetwerk verstoord waardoor users met het rogue access point verbinden. Dit access point zend een captive portal uit welke te finetunen is en vraagt de gebruiker om het WiFi wachtwoord. Als het WiFi wachtwoord succesvol is ingevoerd stopt het script en zal de gebruiker weer verbinden met het originele WiFi.
Een gedetailleerde uitleg over Fluxion volgt in een andere post. Dit laat echter zien hoe we een valide access point gemakkelijk na kunnen apen.
Nadat het juiste WiFi wachtwoord gevonden is kunnen we ieder access point inzetten en configureren als het doel WiFi. Dus incl. MAC, SSID, wachtwoord etc. Als we er dan voor zorgen dat het signaal sterker is (of het signaal van het valide access point verstoord wordt) dan zorgen we ervoor dat gebruikers automatisch met ons access point verbinden. Op dat moment is het rogue access point de man-in-the-middle en heb je controle over de data.
HTTPS verkeer afluisteren
Nu we exact weten hoe we een rogue accesspoint op kunnen zetten is het gemakkelijk om het verkeer “af te luisteren”. We kunnen nu namelijk alle het verkeer opnemen, analyseren en modificeren. Er zijn allerhande tools op de markt om verkeer te analyseren zoals Wireshark en Darkstat. Verkeer omleiden kan met DNSChef en DNSSpoof. Verkeer modificeren (ofwel packet injection) kan met tools als HexInject.
Er zijn echter een aantal scenario’s waarbij het onmogelijk is om te zien welk verkeer er over de lijn gaan. Dit is het geval bij VPN tunnels en HTTPS (SSL) websites.
SSL versleuteling zorgt ervoor dat gegevens tussen verzender en ontvanger versleuteld over een openbaar netwerk gestuurd kunnen worden. SSL zorgt er dus voor dat gegevens anoniem (onleesbaar) blijven en dat gegevens ongemodificeerd bij de ontvanger aankomen.
SSL gebruikt hiervoor een certificaat. Dit certificaat bestaat uit 2 delen, namelijk:
De private key (prive sleutel) welke altijd geheim blijft en op de server geïnstalleerd wordt. De private key is het 1e gedeelte van het certificaat. Het andere deel van het certificaat is de publieke sleutel welke algemeen bekend gemaakt wordt.
De SSL verbinding komt tot stand middels de SSL Handshake (bestaande uit 4 stappen):
1. De cliënt verzoekt een veilige SSL verbinding met de server (ClientHello)
2. Certificaat van de server wordt weergegeven op gecontroleerd op geldigheid en ondertekening (ServerHello, Certificate, CertificateRequest, ServerKeyRequest, ServerHelloDone)
3. Bij akkoord stuurt de cliënt (versleuteld middels de publieke sleutel van de server) een unieke encryptiesleutel. (ClientKeyExchange, ChangeCipherSpec, Finished)
4. De server kan deze decoderen omdat alleen de server over de private key beschikt. De server en cliënt zetten nu een veilige verbinding op middels de unieke encryptiesleutel. (ChangeCipherSpec, Finished)
Omdat SSL verkeer dus versleuteld is zijn deze pakketten onleesbaar en dus niet te analyseren. Er zijn echter als man-in-the-middle wel degelijk methodes om HTTPS verkeer te lezen en analyseren. Bijvoorbeeld:
- De server private key wordt gestolen waardoor de MiTM eveneens de SSL handshake kan interpreteren en op kan zetten alsof het de server is.
- De cliënt vertrouwt een onbetrouwbare CA (certificate authority / instantie die de certificaten verifieerd en uitgeeft). Een certificaat wordt altijd gecontroleerd bij de door de cliënt vertrouwde CA’s. Op het moment dat de cliënt een onbetrouwbare CA vertrouwd (zoals een CA waar de root key van gestolen is of gewoon de CA die jou self-signed certificaten uitgeeft) zullen onbetrouwbare certificaten er net zo valide uitzien als “Verisign” certificaten.
- De cliënt de certificaten helemaal niet controleert en elk certificaat dus geldig is.
Bovenstaande scenario’s kunnen dus misbruikt worden door hackers. Er zijn overigens ook commerciële producten die deze technieken gebruiken. Denk aan producten die (deep) SSL inspectie uitvoeren op internetverkeer. Deze producten zien we vaak terug in corporate netwerken om internetverkeer volledig te controleren. Zo kunnen ook SSL pakketjes gecontroleerd worden op malafide inhoud.
Vooral de 2e en 3e optie zijn mogelijkheden die vaak door hackers uitgebuit worden. We kunnen proberen om b.v. verkeer primair over HTTP (onbeveiligd) te sturen i.p.v. over HTTPS. De meeste website accepteren echter alleen HTTPS en zullen HTTP verkeer omzetten in HTTPS verkeer. We kunnen ook proberen om de cliënt zo in te stellen dat de cliënt HTTPS certificaten helemaal niet controleert zodat we met gemak een self-signed certificaat kunnen gebruiken. Ook kunnen we onze eigen CA proberen toe te voegen aan de lijst met veilige CA’s.
In dit voorbeeld willen we HTTPS verkeer afluisteren zoals ook SSL inspectie te werk gaat. Dus waar de “man-in-the-middle” de server is voor de cliënt en de cliënt is voor de server. Om dit te bewerkstellen zijn diverse tools voor in omloop. Denk aan b.v. “mitmproxy” en “SSLsplit”.
In dit voorbeeld zal ik gebruik maken van “mitmproxy”, een traffic proxy om verkeer mee te onderscheppen, bekijken en modificeren. “mitmproxy” kan ook uitstekend gebruikt worden voor “cookie stealing” technieken. In dit scenario gaan we echter de volgende stappen doorlopen (ervan uitgaande dat je momenteel al acteert als “man-in-the-middle” en dus internetverkeer tussen cliënt en server kunt onderscheppen):
- Installeren mitmproxy
- Poorten redirecten d.m.v. Linux iptables
- mitmproxy starten
- mitmproxy root CA op de client installeren
Allereerst gaan we (indien niet reeds geïnstalleerd) mitmproxy installeren. Voer hiervoor de volgende commando’s uit:
sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev g++ |
Bovenstaande commando installeerd mitmproxy dependencies. Vervolgens installeren we mitmproxy zelf:
sudo pip install mitmproxy |
Na de installatie van mitmproxy is het zaak dat we bepaalde poorten gaan redirecten. Standaard werkt mitmproxy op poort 8080. We willen dus ook al het normale verkeer (HTTP – 80 en HTTPS – 443) laten redirecten naar de proxy poort. Op Linux doen we dit d.m.v. iptable commando’s:
sudo sysctl -w net.ipv4.ip_forward=1 |
Bovenstaande commando zorgt ervoor dat IP forwarding wordt ingeschakeld. Zet deze setting terug op 0 om IP forwarding weer uit te laten schakelen. Om ook onderstaande NAT settings te verwijderen gebruik je achteraf het commando:
iptables -t nat -F |
Onderstaande 2 commando’s redirecten de poorten 80 en 443 naar poort 8080.
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 8080 |
sudo iptables -t nat -A PREROUTING -i wlan1 -p tcp --dport 443 -j REDIRECT --to-port 8080 |
Nu al het inkomende verkeer via de mitmproxy gestuurd wordt zal mitmproxy het verkeer kunnen analyseren. We hebben het hier over onversleuteld verkeer. Om versleuteld verkeer te kunnen monitoren moeten we nog een aantal stappen nemen.
Allereerst gaan we mitmproxy starten:
sudo mitmproxy -T --host –e |
Nu moeten we ervoor zorgen dat mitmproxy bij de client als “trusted CA” geregistreerd wordt zodat de mitmproxy self-signed certificaten ook als vertrouwde certificaten gezien worden door de cliënt. Om dit te doen met het mitmproxy root certificaat bij de cliënt geïnstalleerd worden.
We kunnen dit op 3 manieren doen:
- Ga op de cliënt naar mitm.it en de vraag zal gesteld worden om het root CA certificaat te installeren. Je kunt cliënts eventueel spoofen om naar deze website te gaan middels DNSSpoof o.i.d. De meeste gebruikers zullen klakkeloos het certificaat installeren. Ook kun je zelf een webserver / captive portal maken welke het certificaat installeert.
- Als je toegang hebt tot de cliënt dan kun je dit certificaat ook handmatig op de cliënt installeren.
De handmatige installatie gaat als volgt:
- Kopieer het certificaat vanuit de mitmproxy machine naar een gegevensdrager. Het certificaat is te vinden op de volgende locatie “~/.mitmproxy/mitmproxy-ca-cert.cer “
- Installeer het certificaat op de cliënt
Mocht je geen mogelijkheid vinden om het mitmproxy root certificaat op de cliënt te installeren dan zal de cliënt een certificaat error zien bij het bezoeken van een HTTPS website. Zelfs in dat geval zullen veel gebruikers de waarschuwing negeren en doorklikken en kun je alsnog het HTTPS verkeer analyseren.
Als het certificaat wel geïnstalleerd is dan krijgt de cliënt geen melding en zal mitmproxy certificaten genereren voor de gebruiker. Als de gebruiker dus naar https://www.facebook.com gaat zal mitmprocy een certificaat maken voor www.facebook.com en deze ondertekenen met zijn eigen certificaat. De cliënt accepteert dit certificaat omdat mitmproxy vermeld is onder de veilige CA’s. De cliënt verstuurd het verkeer dus naar mitmproxy welke het verkeer weer doorstuurt naar Facebook, en het Facebook verkeer weer doorstuurt naar de cliënt. “mitmproxy” fungeert dus als server voor de cliënt en als cliënt voor de server.
Om de ontvangen packets in mitmproxy op te slaan gebruik je de “w” toets. Om mitmproxy af te sluiten druk je op de “q” toets en bevestig je de actie met de “y” toets.
Conclusie
Bovenstaande informatie is slechts een voorbeeld van de mogelijkheden om WiFi te hacken en om vervolgens een man-in-the-middle aanval te doen waarbij zelfs HTTPS verkeer onderschept kan worden. Eng he! Dit betekend dat het klakkeloos accepteren van ongeautoriseerde certificaten desastreuze gevolgen kan hebben voor uw privacy en in een bedrijfs- of overheidsinstelling netwerk voor bedrijfsgegevens. In bovenstaande voorbeeld kan al het TCP en UDP verkeer onderschept worden. Dus ook e-mail, SNMP en SSH verkeer. Be warned! Als de computer een waarschuwing geeft is er doorgaans iets niet in de haak en mag deze melding niet genegeerd worden.