Pwnagotchi, alle coole WiFi Engineers hebben er een (of meer)!
Tamagotchi
Wie in de jaren 90 op school zat weet het nog wel, als je geen Tamagotchi had hoorde je er niet bij! Nu in 2019 heeft Evilsocket er een twist op bedacht. Evilsocket is een hacker/security researcher die ook bettercap heeft verzonnen. Bettercap is een WiFi tool voor Man in the Middle attacks. Man in the middle attacks laten de noodzaak voor VPN oplossingen en andere beveilingen voor WiFi zien.
Fase 1: Project PITA
Project PITA is een vervolg op Bettercap, gebruikmakend van ultrakleine singleboard computers is PITA een massale deauthenticator. DE—Authenticator? JA DE-Authenticator! Als een apparaat gebruik maakt van WiFi vinden er een aantal stappen plaats om verbinding te krijgen. Bij een open netwerk (lees geen sleutel dus onbeveiligd) zijn dit er 4, bij een WPA2 beveiligd netwerk komen er nog minstens 4 bij (de 4-way handshake). Maar standaard is alle communicatie om op het netwerk te komen of er vanaf te gaan onbeveiligd. Deze communicatie noemen we in WiFi Management frames.
Project Pita maakt gebruik van een RaspberryPi Zero-W om alle kanalen te scannen en als het een WiFi netwerk vind stuurt het De-authentication frames om de verbonden apparaten van het netwerk af te gooien. Een DEAUTH aanval. Kan dit dan zo maar? Jazeker! Kunnen we er dan niets tegen doen?
Jawel! Daar is 802.11w voor gemaakt. Dit onderdeel van de WiFi standaard noemen we ook MFP: Management Frame Protection en zorgt er onder andere voor dan een onbekend apparaat jou laptop niet zomaar van het WiFi netwerk kan afgooien.
Enter Pwnagotchi
De nieuwste ontwikkeling van PITA is de Pwnagotchi. De term Pwned komt uit de gamer wereld en is eigenlijk een typ-fout maar is blijven hangen. Iets of iemand pwnen (spreek uit als pownen) betekend dat je er volledige controle over hebt. En als je dan een hacktool hebt met een gezichtje is de samentrekking Pwnagotchi wel erg passend.
Maar wat is het nu? Pwnagotchi is een AI die op een RaspberryPi Zero-W draait. Gebruikmakend van Bettercap luistert en leert je Pwnagotchi van de WiFi omgeving. Door te luisteren of door DEAUTH aanvallen probeert het zoveel mogelijk handshakes te pakken te krijgen. Deze handshakes worden dan opgeslagen en kunnen gebruikt om een wachtwoord hash er uit te halen. Een hash is een overeengekomen sleutel tussen bijvoorbeeld je laptop en WiFi zender. Als de Pwnagotchi die heeft, kan die gebruikt worden om je WPA2 sleutel te kraken.
Hebben Hebben Hebben!
En? Wil je er al een? Dacht ik wel! Daarom deze handleiding hoe je snel aan de slag kunt.
Je kunt het zo uitgebreid maken als je wilt maar dit zijn wat mij betreft de noodzakelijke dingen:
RaspberryPi Zero W
e-ink display (je wilt je Pwnagotchi toch een gezicht geven?)
Hardware klok (anders zijn je resultaten ook zo verwarrend)
SD oplag
Acrilic case (er zijn legio 3d print modellen beschikbaar, ik gebruik de achterkant om sluiting te voorkomen.
Ik heb gekozen voor de RaspberryPi met GPIO header, ik had geen zin in het extra soldeerwerk.
De RaspberryPi heeft geen eigen hardware klok of batterij hiervoor. De datum wordt dus elke boot opnieuw geherstart. Dit zorgt voor verkeerde data bij handshakes etc. Daarom heb ik hier een hardware klok op gesoldeerd. Pin 1-3-5-7-9 zorgen voor 3.3v, ground en clock aansturing.
Na het solderen heb ik de klok met isolatietape omwikkeld omdat het straks een net pakketje wordt.
De klok past netjes boven de 2 usb aansluitingen. Dan past het e-ink display er nog netjes boven op.
In de klok moet nog een CR1220 batterij.
Als je aller hebt samen gevoegd tot een net pakketje moet je nog de software op de SD schrijven.
gewoon kopiëren gaat niet werken. Ik heb hiervoor Balena Etcher gebruikt.
Download de nieuwste Pwnagotchi image op https://github.com/evilsocket/pwnagotchi/releases
Start Balena, kies de image, selecteer de drive van de SD kaart en kies Flash!
Dan is je Pwnagotchi klaar voor de eerste keer opstarten! Mijn advies is om dit dan te doen met een USB kabel via de “middelste” aansluiting. Dit zorgt er voor dat je Pwnagotchi als RNDIS adapter onder windows zichtbaar wordt. Hier kun je dan een FIXED ip adres aangeven de Pwnagotchi heeft op deze interface standaard 10.0.0.2 dus gebruik zelf bijvoorbeeld 10.0.0.1.
Het eerste wat ik gedaan heb is Bluetooth tethering gefixed, hierdoor kom ik ook de software voor de klok downloaden en updaten:
SSH naar je PI met Putty bijvoorbeeld
Standaard inlog : pi / raspberry
Zorg dat je telefoon bluetooth tethering aan heeft staan en dat het bluetooth venster open staat.
In je SSH venster start de bluetooth module en laat deze scannen:
We willen het mac-adres van de telefoon: bv 50:32:37:A9:4C:49. Deze hebben we nodig voor de config.yml.
Voer hiervoor sudo nano /etc/pwnagotchi/config.yml uit.
LETOP! Verander de eerste 3 octetten van het ip adres niet, dit is voor Android de adresreeks voor BT tethering.
Sla deze file op en dan gaan we weer terug naar de bluetooth module:
De beveiligingscodes moeten op de telefoon en in he SSH overeenkomen. Een trust commando is daarna nodig voor automatisch verbinden.
De IP gegevens moeten nog opgeslagen worden in een config file:
sudo nano /etc/network/interfaces.d/bnep0-cfg
Alles aangepast? Voer dan een reboot uit: sudo reboot
Als het goed is zie je na de herstart een BT staan in je pwnagotchi scherm. Omdat je via usb verbonden bent zal je pwnagotchi in MANU mode staan en dus niets doen, ook geen bluetooth verbinding maken. Dit kun je forceren door het het commando touch /root/.pwnagotchi-auto && systemctl restart pwnagotchi MAAR: hiervoor heb je een root wachtwoord nodig. Voor dus eerst sudo passwd root uit om dit in te stellen. Je pwnagotchi komt nu tot leven en bij BT in het scherm zal een C komen te staan. Als het goed is kun je nu dus bijvoorbeeld ook 8.8.8. pingen.
Phew.. op naar de klok:
Allereerst moeten we de I2C aanzetten dmv sudo raspi-config onder 5. Interfacing options vind je de mogelijkheid:
Afsluiten met een reboot.
Controle van de soldering doen we met:
sudo apt-get install python-smbus i2c-tool
en het daarna uitvoeren van de tool: sudo i2cdetect -y 1
Je ziet nu ID 68 of UU naar voren komen.
edit nu de volgende file:
sudo nano /boot/config.txt
en voeg aan het einde de volgende regel toe: dtoverlay=i2c-rtc,pcf8523
reboot en als je bij de vorige sudo i2cdetect -y 1 wel #68 zag zou dit nu zeker UU moeten zijn.
De RaspberryPi gebruikte een nepklok om iets van tijd bij te houden, die moeten weg:
sudo apt-get -y remove fake-hwclock
sudo update-rc.d -f fake-hwclock remove
sudo systemctl disable fake-hwclock
Nu kan de “echte” klok weer aan:
sudo nano /lib/udev/hwclock-set zet # voor de volgende regels om deze uit te schakelen:
#if [ -e /run/systemd/system ] ; then
# exit 0
#fi
Doe dat ook voor de volgende regels:
/sbin/hwclock –rtc=$dev –systz –badyear
en
/sbin/hwclock –rtc=$dev –systz
Controleer de tijd dmv het date commando en pas het eventueel aan.
Schrijf daarna de datum dmv sudo hwclock -w en
controleer dit dmv sudo hwclock -r
Pesto. De basis voor je pwnagotchi is gelegd! Wil je meer aanpassen?
Check dan: https://community.pwnagotchi.ai/