Hak5 Packet Squirrel
De Hak5 Packet Squirrel is het nieuwste telg binnen de Hak5 productlijn. Hak5 staat bekend om zijn uitzonderlijk degelijke en goed ontworpen tools voor penetration testers en systeembeheerders. De producten van Hak5 zijn altijd zo ontworpen dat de functionaliteiten voor diverse “testen” aanwezig zijn maar waarbij het aan de gebruiker is om deze vorm te geven. De gebruiker is in-control van de te gebruiken exploits en kan deze naar hartenlust scripten. Of de Packet Squirrel net zo in elkaar steekt en of dit kleine apparaatje een must-have is gaan we ontdekken. Ik heb mijn versie in huis en ga hem nu testen. Trust your technolust… right!
De Hak5 Packet Squirrel word aangekondigd met de slogan “The man-in-the-middle that’s nuts for networks”. Dit verklapt al een beetje wat voor apparaatje het is. De Packet Squirrel is een “man-in-the-middle” netwerk afluisterapparaat. De Packet Squirrel is ontworpen om netwerkverkeer te monitoren en op te slaan. De Packet Squirrel kan v.a. afstand beheerd worden en maakt het mogelijk om een veilige VPN tunnel op te zetten. Dit zijn overigens slechts de mogelijkheden die de Packet Squirrel op dit moment biedt. Omdat de producten van Hak5 open zijn en ondersteund worden door een grote community zullen er in de toekomst nog veel meer mogelijkheden bijkomen. Op dit moment zijn er op de officiële GitHub pagina een 10-tal payloads te vinden, waaronder een WiFi de-auth script, OpenVPN script, SSH Meterpreter script, tcpdump script en een ngep script.
Hak5 volgt hiermee dezelfde procedure als bij de Bash Bunny. Een centrale resource voor alle (goedgekeurde) Packet Squirrel scripts die als geheel of slechts gedeeltelijk kan worden gedownload.
De Packet Squirrel is net als de meeste Hak5 tools ideaal voor penetration testers en systeembeheerders omdat hij de volgende functionaliteiten biedt:
- Ontvang, analyseer en sla netwerkverkeer op welke tussen 2 netwerkapparaten wordt verstuurd (bi directioneel).
- Sla pakketdumps op in standaard .pcap files zodat deze later gemakkelijk te analyseren zijn met open source tools zoals Wireshark.
- Sla data op naar een extern USB opslagapparaat voor latere analyse.
- Verkrijg veilige externe toegang d.m.v. een VPN’s en reversed shells.
- De Packet Squirrel ligt op de ideale positie in het netwerk voor het uitvoeren van Man-in-the-Middle attacks zoals DNS Spoofing.
- Gebruik de Packet Squirrel als hardwarefirewall en VPN-router.
- En nog heel veel meer…
Packet Squirrel Specificaties
Alvorens we aan de slag gaan is het zinvol om even naar de specificaties van de Packet Squirrel te bekijken. Zoals al aangegeven kan er externe USB data opslag gebruikt worden. In mijn ogen een gemiste kans. De PPMB (Prijs Per MB) is zeker lager bij USB based opslag dan bij flash based opslag, maar toch had een micro SD kaart het apparaat meer stealthy kunnen maken. Overigens vereist niet ieder script de aanwezigheid van externe opslag. Momenteel is tcpdump het enige script welke dit vereist. PCAP bestanden kunnen aardig groot worden. De Packet Squirrel heeft intern slechts 16 MB flash opslag en dat is dus niet voldoende voor data dumps.
Verder beschikt de Packet Squirrel over een Atheros AR9331 SoC at 400 MHz MIPS processor en 64 MB DDR2 RAM geheugen. Uiteraard zitten er 2 netwerkpoorten (ethernet) op welke 10/100 zijn. De Packet Squirrel is dus geen gigabit apparaat en zal het verkeer via auto-negotiation schalen op 100 Mbps. Er is een USB 2.0 host poort aanwezig voor het aansluiten van externe dataopslag. Let erop dat de Packet Squirrel alleen USB opslag kan benaderen in EXT4 of NTFS formaat. De meeste USB opslagapparaten zijn FAT32 en moeten dus geformatteerd worden als EXT4 of NTFS. Persoonlijk had ik problemen met mijn USB drive welke in Windows geformatteerd was als NTFS. Deze werd niet herkend. Nadat ik deze via de Packet Squirrel geformetteerd had als EXT4 werkte hij perfect.
mkfs.ext4 /dev/sdb1 |
De Packet Squirrel wordt gevoed via een mini-USB aansluiting (5V 120mA / 0.12A) en kan dus, als er geen USB apparaat aanwezig is uren gevoed worden middels een powerbank. De sterkste powerbanks kunnen de Packet Squirrel wel 8 tot 10 dagen online houden.
Het apparaatje is ontzettend klein, slechts 50 x 39 x 16 mm en weegt 24 gram. Het mooie aan de Packet Squirrel is dat hij net als de Bash Bunny voorzien is van een 4-way payload switch (net als de Bash Bunny) en hij is ook voorzien van een RGB LED om de status van het script te monitoren. Ook beschikt de Packet Squirrel over een programmeerbare pushbutton. Deze pushbutton is speciaal geplaatst om “user interaction” met de scripts mogelijk te maken (voer pas uit als er op gedrukt wordt o.i.d.).
Al met al een prachtig apparaat. Op zich jammer dat PoE (Power over Ethernet) niet ondersteund wordt en dat er een SD kaart optie afwezig is, maar aan de andere kant zijn dit designkeuzes die met een reden gemaakt zijn. Bijvoorbeeld om het formaat klein te houden of om de prijs laag te houden.
Laten we snel de Packet Squirrel gaan aansluiten want ik ben ondertussen enorm nieuwsgierig geworden.
Packet Squirrel Aansluiten
De Packet Squirrel is de eerste Hak5 tool die out-of-the-box geleverd wordt met een aantal payloads. Dus zelfs systeembeheerders die geen zin hebben om via terminals het e.e.a. te programmeren kunnen de Packet Squirrel meteen gebruiken. De eerste payload is de TCPDump payload, de 2e payload is de DNS Spoofing payload, de 3e payload is de OpenVPN payload. De 4e positie op de Packet Squirrel is de “Arming Mode”. In deze mode kan de Packet Squirrel beheerd worden en krijgt de beheerder dedicated shell access.
Aan de andere zijkant van de Packet Squirrel bevind zich de pushbutton. Deze button kan naar eigen inzicht geprogrammeerd worden en maakt het dus mogelijk om user-interactie te laten plaatsvinden tijdens een actief script. B.v. dim alle LED’s voor 10 minuten op het moment dat deze button wordt ingedrukt.
Aan de bovenkant zit het RGB LED en aan de andere zijde zit de MicroUSB power input samen met de Ethernet IN kabel, dus de kabel die naar het apparaat gaat welke je wilt sniffen. De tegenovergestelde zijde heeft een Ethernet OUT poort waarvan de kabel doorgaat naar het WAN, de router, de switch of naar een ander specifiek apparaat. Naast de Ethernet OUT poort bevind zich de USB Storage USB 2.0 poort.
Nu we dit weten is het aansluiten en sniffen van een PC zo simpel als de kabel uit de PC halen en die in de Ethernet OUT pluggen, vervolgens sluit je een nieuw kort kabeltje van je Ethernet IN naar je PC en zet je de Payload Switch op de juiste positie. Vervolgens voorzie je de Packet Squirrel van stroom al dan niet voorzien van externe USB opslag en klaar is het aansluiten van de Packet Squirrel.
De uitdaging is het programmeren van de Packet Squirrel.
Programmeren Packet Squirrel
Om de Packet Squirrel te programmeren zet je de Payload Switch op positie 4 (rechts). De Packet Squirrel staat dan in zijn zogenaamde “Arming Mode”. De Packet Squirrel werkt met onderstaande default settings:
- IP: 172.16.32.1
- Gebruikersnaam: root
- Wachtwoord: hak5squirrel
Uiteraard kun je het IP adres en de credentials aanpassen want… de Packet Squirrel draait gewoon op Linux (OpenWrt). En daar schuilt ook de kracht van de Packet Squirrel. Je kunt allerlei soorten payloads schrijven en in de juiste payload folder plaatsen. Gebruik b.v. PHP, Python of gewoon Bash. Alles is mogelijk.
En voordat we gaan kijken naar de Packet Squirrel Code bekijken we eerst de default betekenissen van de multicolor RGB LED bekijken:
- Groen (knipperend) – Bootting
- Blauw (knipperend) – Armin Mode
- Rood (knipperend) – Kan USB stick niet lezen
- Cyan / Groenblauw (1x knipperen) – Start payload 1
- Cyan / Groenblauw (2x knipperen) – Start payload 2
- Cyan / Groenblauw (3x knipperen) – Start payload 3
Nu we de Packet Squirrel aangesloten hebben willen we eerst de firmware updaten. Dit doen we door de nieuwste firmware te downloaden (https://www.hak5.org/gear/packet-squirrel/docs) en op een EXT4 of NTFS geformatteerde USB stick te plaatsen. Hernoem dit bestand niet. Zet vervolgens de Packet Squirrel in “arming mode” en plug de USB stick erin. Zet de Packet Squirrel weer aan. Het updaten van de firmware duurt ongeveer 5-10 minuten. Gedurende de upgrade zal het RGB LED de volgende signalen geven:
- Groen knipperen (booting)
- Rood/Blauw knipperen (start het flashen van de firmware)
- Permanent rood of blauw (firmware flash is aan het draaien)
- Groen knipperen (rebooting)
- Blauw knipperen (upgrade klaar, in arming mode)
Packet Squirrel Code
De Packet Squirrel script code is eigenlijk niet echt een code zoals we die kennen van de Rubber Ducky of de Bash Bunny. Packet Squirrel Script bestaat uit een aantal commando’s om Packet Squirrel-specifieke opdrachten uit te voeren. Deze commando’s vereenvoudigen de interface met de hardware en kunnen worden aangeroepen vanuit payloads geschreven in bash, python en PHP, of rechtstreeks vanuit de console via SSH. Denk bijvoorbeeld aan het veranderen van de LED kleur of het veranderen van de netwerk modus waarin de Packet Squirel staat.
Wat? Jazeker! De Packet Squirrel kan in 5 verschillende netwerkmodussen geplaatst worden. Namelijk:
Cliënt = device aan de ETHERNET IN zijde (dus het device waarvan het netwerkverkeer gemonitored wordt.
- NAT – Nu de Packet Squirrel als NAT device fungeert zal de Packet Squirrel een IP adres ontvangen van een aanwezige DHCP server, maar de cliënt ontvangt een IP adres van de Packet Squirrel.
- Bridge – Deze modus faciliteert een “brug” tussen de 2 netwerk interfaces. Zowel de Packet Squirrel als de cliënt ontvangen een IP adres van de aanwezige DHCP server.
- Transparent – In deze modus ontvangt de Packet Squirrel geen IP adres. Alleen de client zal een IP adres ontvangen van een aanwezige DHCP server. Dit betekend dat de Packet Squirrel geen netwerk heeft en dus ook niet op internet zal kunnen. De Packet Squirrel luistert echter nog wel naar het netwerk en kan dus wel al het verkeer monitoren en analyseren. De Packet Squirrel zal in deze mode niet als extra hop getoond worden.
- VPN – Deze mode lijkt op die van NAT. Dus de Packet Squirrel ontvangt een IP adres van een aanwezige DHCP server en de cliënt ontvangt een IP adres van de Packet Squirrel. Er wordt echter ook een VPN opgezet tussen de Packet Squirrel en de cliënt.
- Clone – Deze netwerkmodus dupliceert het MAC-adres van de cliënt en spooft deze op zijn Ethernet OUT poort. Dit wordt gedaan door pakketten van het doelapparaat af te luisteren en te inspecteren. Zorg ervoor dat je eerst de Ethernet IN kabel verbind, 10 tot 20 seconde wacht en daarna pas de Ethernet OUT kabel verbind. Wanneer het MAC adres met succes gespooft is op de Ethernet OUT poort zal het RGB LED enkele seconden wit knipperen. Op deze manier wordt het echte MAC adres van de Packet Squirrel nooit opgemerkt.
Om de Packet Squirrel in een bepaalde mode te plaatsen gebruik je simpelweg de code:
NETMODE BRIDGE |
Naast NETMODE kent Squirrel Script nog 3 varianten om de Packet Squirrel te besturen. Namelijk, LED voor het besturen van het RGB LED, SWITCH voor het definiëren van de payload switch en BUTTON voor het definiëren van de pushbutton actie.
LED kent verschillende parameters. Je kunt namelijk de kleur en het knipperpatroon definiëren. Op de Packet Squirrel Wiki zijn de volgende parameters te vinden:
Verder wordt aangeraden om payloads te programmeren met eenzelfde kleurcodes voor de verschillende statussen van de payloads zoals de setup fase, attack fase, cleanup fase, finish en fail fase. De volgende kleurcombinaties worden bij default aangeraden:
Om een LED langzaam rood te laten knipperen gebruik je:
LED R SLOW |
of:
LED R 1000 |
Het SWITCH commando retourneert de locatie van de payload switch button. Het commando retourneert “switch1, switch2, switch3 of switch4”.
Tenslotte kennen we nog het BUTTON commando waarmee we de payload kunnen onderbreken tot de button wordt ingedrukt of nadat een specifieke tijd is verstreken. Het gedrag van de pushbutton is volledig programmeerbaar.
Een script blijft “hangen” op het punt waar het BUTTON commando gegeven wordt. En aan dat commando kunnen we dan weer wat logica hangen. Bijvoorbeeld:
while true do //Zorgt ervoor dat de button de status van het LED niet veranderd. NO_LED=true BUTTON && { //Wanneer de button wordt ingedrukt knipper dan het LED rood LED R SLOW //Wacht 3 seconde sleep 3 //Zet het LED nu uit LED OFF //Schakel het systeem in “halt” modus } done |
Deze Squirrel Script commando’s zijn dus bruikbaar binnen Linux en in Bash, Python scripts. Deze coomando’s werken ook met andere scripting languages op de Packet Squirrel zoals PHP.
Herstel de Packet Squirrel naar Factory Defaults
In sommige gevallen is het handig om de Packet Squirrel te herstellen naar zijn factory defaults. Bijvoorbeeld als de Packet Squirrel foutief geconfigureerd wordt waardoor je jezelf buitensluit. Het terugzetten naar de factory defaults van de Packet Squirrel doe je als volgt:
- Download de Packet Squirrel recovery image via https://www.hak5.org/gear/packet-squirrel/docs
- Stel de netwerkkaart van een aangesloten PC (Ethernet IN) in op 192.168.1.2 (of een ander ip adres in de 192.168.1.x/24 range zolang het maar niet 192.168.1.1 is).
- Zet de payload switch to “arming mode”
- Zet stroom op de Packet Squirrel en hou tegelijkertijd de pushbutton 5 seconde lang ingedrukt. Laat deze daarna los.
- Ga naar de http://192.168.1.1 webpagina via de aangesloten computer.
- Herstel de Packet Squirrel met de recovery image via de recovery website.
Conclusie
De Hak5 Packet Squirrel is een perfect apparaatje en misschien wel het mooiste apparaat uit de Hak5 product catalogus bekeken vanuit de ogen van een systeembeheerder. De Packet Squirrel maakt het ontzettend makkelijk om netwerkverkeer op verschillende manieren te monitoren en te analyseren. Ook zit er veel potentie in de Packet Squirrel als het gaat over penetration testing mogelijkheden. De Packet Squirrel is klein, veelzijdig en snel te installeren. De huidige payloads en de voor geïnstalleerde payloads zijn fantastisch en de library met payloads zal de komende maanden nog enorm gaan groeien. Voor de prijs van de Packet Squirrel, zo’n 50 euro is het een fantastisch apparaat welke verschillende functionaliteiten van andere HAK5 producten combineert zoals die van de Bash Bunny en de LAN Turtle in een prachtige man-in-the-middle toolbox. De enige nadelen zijn wat mij betreft het ontbreken van een SD storage optie, het ontbreken van PoE en het ontbreken van een WiFi module. Als de Packet Squirrel voorzien zou zijn van een WiFi module zou er een nieuwe wereld aan mogelijkheden opengaan. Uiteraard niet altijd handig en ook zou het de prijs beïnvloeden, maar he… i’m just saying. 🙂
De Packet Squirrel is een geweldig product en een must-have tool voor iedere systeembeheerder en penetration tester. De slogan “The man-in-the-middle that’s nuts for networks” is dan ook uitstekend op zijn plaats.