Monthly archives "Dezember 2017"

Gadget Test: Packet Squirrel

Hak5 (https://www.hak5.org/) ist nicht nur eine wöchentliche Show über Hacking und Spass mit elektronischen Geräten, sondern auch eine Bezugsquelle für verschiedenartige Gadgets. Wir benutzen einige dieser Gadgets bei Penetrationstests (wie z.B. die LAN Turtle oder den WiFi PineApple) und interessieren uns deshalb immer für Neuerscheinungen.

Eine dieser Neuerscheinungen ist nun der Packet Squirrel. Da im aktuellen Projekt gerade eine kurze Pause angesagt ist, habe ich endlich mal die Zeit mir das Teil näher anzuschauen.

Fangen wir erst mal mit zwei Bildern an, auf denen die einzelnen Anschlüsse, Schalter und Anzeigen erkennbar sind.

Das Gerät ist mit zwei Netzwerkanschlüssen ausgestattet, so dass es in eine bestehenden Verbindung eingesteckt werden kann. Dabei ist zu beachten, dass es sich nicht um Gigabit-Anschlüsse handelt und die Anschlüsse auch nicht PoE unterstützen. Hier muss man also gerade im Rahmen eines Pentests genau planen, wo man das Gerät anschliesst.

In diesem Bild wird schon deutlich (anhand des 1-EURO-Stücks) wie klein das Gerät ist. Wir sehen hier einen der Netwzerkanschlüsse, den Anschluss für einen USB 2.0 Stick, die LED Statusanzeige (programmierbar) sowie den Auswahlschalter. Man kann nämlich drei verschiedene Programme auf den Packer Squirrel laden und über den Schalter steuern, was genutzt werden soll. In der vierten Position ermöglicht der Schalter den Zugang per SSH auf das Gerät.

Hier sehen wir nun die andere Seite des Gerätes. Auch hier gibt es einen Netzwerkanschluss; zudem finden wir hier den Mini-USB-Anschluss für die Stromversorgung sowie (an der Seite) einen Knopf. Dieser Knopf kann im Programm abgefragt werden und ermöglicht so z.B. das saubere Schreiben auf den Stick, um das Gerät dann wieder entfernen zu können.

Der Packet Squirrel benötigt auf jeden Fall eine Stromversorgung. Allerdings soll er, aufgrund der geringen Leistungsaufnahme (0.12 A laut Webseite), mit einer entsprechenden Power Bank eine Woche lang auskommen.

Die Inbetriebnahme startet mit einem Firmware-Update. Dazu wird die aktuelle Firmware-Datei heruntergeladen und auf einen leeren USB Stick kopiert (nicht in ein Unterverzeichnis). Der Stick muss entweder mit NFTS oder Ext4 formatiert sein; dass gilt auch für alle weiteren Nutzungen. Ich hatte ein wenig Probleme mit einem NTFS-formatierten Stick und bin dann auf Ext4 umgestiegen. Woran es genau lag, habe ich nicht erforscht; vermutlich klappt es auch mit NTFS und ich habe irgendwo einen Fehler gemacht.

Kleiner Tipp: nach einem erfolgreichen Update sollte die Firmware-Datei wieder vom Stick gelöscht werden. Sonst dauert das nächste Starten unnötig lange 😉

Schauen wir uns nun den Packet Squirrel genauer an. Dazu steckt man ihn per Netzwerkkabel an einen PC an und versorgt ihn (z.B. über ein Smartphone-Ladegerät) mit Strom. er benötigt ca. 30 Sekunden zum Starten. Am Anfang ist die LED noch aus; nach einiger Zeit leuchtet sie dann je nach Schalterstellung. Und da tritt auch das erste Problem auf: prüft man vor dem Einstecken nicht die Schalterstellung, dann wird ggf. ein Payload geladen anstatt dass der SSH-Zugang aktiviert wird. Ist beim Draufschauen der Mini-USB-Anschluß links, dann wird der erste Payload geladen, sofern der Schalter ganz nach Links geschoben wurde. Wird der Schalter nach ganz Rechts geschoben, so wird der SSH-Zugang aktiviert. Hier hilft vielleicht ein Aufkleber auf dem Gerät 😉

Zu beachten ist ebenfalls, dass der Netzwerkanschluss auf der Seite des Mini-USB-Anschlusses für die Verbindung zum Zielgerät ist und der andere Anschluss zum Netzwerk geht.

Hat man nun alles richtig verkabelt und geschoben, kann man sich per SSH Client mit dem Packet Squirrel verbinden. Die IP des Squirrel ist 172.16.32.1; der PC bezieht eine IP aus dem Subnetz über den Squirrel. Man meldet sich als root mit dem Passwort hak5squirrel an.

Man landet nun im Verzeichnis /root/. Dort findet man, neben der Versionsdatei, das Verzeichnis payloads. Unterhalb von payloads befinden sich die Verzeichnisse switch1, switch2 und switch3. In diesen Verzeichnissen befindet sich nun das Skript, dass je nach Schalterstellung beim Booten geladen wird; ggf. befinden sich dort noch weitere Dateien.

Hier nun mal der Code für den ersten Payload; es geht um das Mitprotokollieren des Netzwerkverkehrs mit Hilfe von TCPDUMP:

#!/bin/bash
# TCPDump payload v1.0

function monitor_space() {
while true
do
[[ $(df | grep /mnt | awk '{print $4}') -lt 10000 ]] && {
kill $1
LED G SUCCESS
sync
break
}
sleep 5
done
}

function finish() {
# Kill TCPDump and sync filesystem
kill $1
wait $1
sync

# Indicate successful shutdown
LED R SUCCESS
sleep 1

# Halt the system
LED OFF
halt
}

function run() {
# Create loot directory
mkdir -p /mnt/loot/tcpdump &> /dev/null

# Set networking to TRANSPARENT mode and wait five seconds
NETMODE TRANSPARENT
sleep 5

# Start tcpdump on the bridge interface
tcpdump -i br-lan -w /mnt/loot/tcpdump/dump_$(date +%Y-%m-%d-%H%M%S).pcap &>/dev/null &
tpid=$!

# Wait for button to be pressed (disable button LED)
NO_LED=true BUTTON
finish $tpid
}

# This payload will only run if we have USB storage
[[ ! -f /mnt/NO_MOUNT ]] && {
LED ATTACK
run &
monitor_space $! &
} || {
LED FAIL
}

Wir sehen in dem Beispiel sehr schön einige Konzepte der Skripte. An mehreren Stellen wird die LED angesprochen und, je nach Zustand, leuchtet sie in anderen Farben. Das Skript läuft auch nur bei eingestecktem USB Stick,  da dort die PCAP-Datei abgespeichert wird. An einer Stelle wird auch geprüft, ob der Knopf gedrückt wurde. Im Großen und Ganzen also eine übersichtliche Skriptsprache. Aber der interessanteste Punkt ist, dass die aufgerufenen Tools schon vorinstalliert sind. Schauen wir mal in die Verzeichnisse /usr/bin und /usr/sbin:

Wir finden hier einige Tools (neben tcpdump), die den gespeicherten Netzwerkverkehr direkt analysieren können. Es stellt sich nun die Frage, was man mit den Tools anfangen kann. Neben der Möglichkeit selbst Skripte zu schreiben kann man auch auf die GitHub-Seite des Projektes gehen. Dort finden sich erste Beispiele für weitere Tools.

Verbleiben wir aber für einen kurzen Moment noch mal bei den mitgelieferten Payloads. Neben TCPDUMP gibt es noch einen Payload zum Spoofen von DNS-Antworten. Hierbei können DNS-Anfragen entweder komplett oder nur für einzelne Hosts falsch beantwortet werden. Dazu muss nur die Datei /root/payloads/switch2/spoofhost bearbeitet werden.

Will ich nun zum Beispiel alle Aufrufe der Seite https://schalke04.de/ umlenken auf die Seite https://www.bvb.de/, dann trage ich in die Datei die folgenden Zeile ein:

address=/schalke04.de/5.147.249.101

Hinter dem Beispiel verbirgt sich eine kleine Geschichte; aber ich schweife ab…

Der dritte Payload bietet die Möglichkeit entweder einen Remotezugang (SSH) zum Packet Squirrel einzurichten oder den PacketSquirrel als VPN-Client zu nutzen. In beiden Fällen benötigt man noch einen OpenVPN-Server.

Nun kommen wir zu den Payloads auf Github.

Neben einem Payload zum Versenden der gesammelten Daten per SCP gibt es noch eine Handvoll anderer Skripte. Hier ist jetzt wieder die Community gefragt noch weitere Beispiele zu erstellen. Ich habe mir zwei Payloads näher angeschaut:

  • nmapdump (unter payloads/library/recon)
  • ispyintel (unter payloads/library/sniffing)

nmapdump scannt automatisch das lokale Netz. Dabei erkennt das Skript selbsttätig das Subnetz; allerdings wird empfohlen, das Interface „lo“ im Skript durch ein anderes Interface zu ersetzen (ich habe es auf „br-lan“ geändert). Das Ganze hat aber einen kleinen Haken: im Ergebnis werden die Hosts mit ihrer IPv6-Adresse aufgelistet. Hier muss ich mich noch mal tiefer ins Skript vergraben. Ansonsten macht der Payload genau was er soll.

NMAP wird wie folgt im Skript aufgerufen:

# Finally! Lets run NMap!
# Use ipv4
if [ ! "$ipv6" ]; then
nmap -Pn -e $goodInterface -sS -F -sV -oA $lootPath/$lootFileNameScheme -D RND:$rndDecoyNumber --randomize-hosts --spoof-mac $spoofDevType

$targets >> $lootPath/log.txt
else
# Use ipv6
nmap -Pn -e $goodInterface -sT -F -R -oA $lootPath/$lootFileNameScheme --randomize-hosts --spoof-mac $spoofDevType -6 $ipv6 >>

$lootPath/log.txt
fi

ispyintel macht im ersten Schritt dasselbe wie tcpdump; es wird der Netzwerktraffic aufgezeichnet. Allerdings geht das Skript noch weiter: mit Hilfe weiterer Tools werden interessante Informationen direkt aus der PCAP-Datei gezogen. Theoretisch sollten die besuchten Webseiten (URLs), Passworte und Session IDs herausgetrennt werden; ferner sollen IPs und Mailadressen aus der PCAP-Datei gezogen werden. Hier hat mich ein erster Test noch nicht so ganz überzeugt. In weiteren Tests wäre zu klären, ob vielleicht zu viel Datenverkehr den Packet Squirrel überlastet. Da die Auswertung aber erst erfolgt, nachdem man den Knopf gedrückt hat (und somit man den Packet Squirrel eh wieder einsammeln will), kann man die Auswertung natürlich auch am heimischen PC machen.

Grundsätzlich gilt aber auch hier, dass ein USB Stick eingesteckt sein muss.

Der Stick hat aber noch einen Vorteil…

Legt man auf dem Stick ein Verzeichnis payloads an und erstellt darunter auch Verzeichnisse switch1, switch2 und switch3, so werden dort abgelegte Skripte anstelle der Skripte auf dem Packet Squirrel ausgeführt. Man kann sich also Sticks mit verschiedenen Payload-Sammluungen zusammenstellen.

Was wäre nun ein mögliches Angriffsszenario (natürlich nur im Rahmen eines beauftragten Pentests)? Man könnte den Packet Squirrel an einen Netzwerkdrucker anstecken, der Zugriff auf einen Verzeichnisdienst hat (z.B. Active Directory). Erfolgt der Zugriff dann über LDAP, so hat man schon mal ein erstes Benutzerkonto.

Der Packet Squirrel lässt sich natürlich auch dafür nutzen, den Nezwerkverkehr von Geräten zu überwachen, auf die man keinen Sniffer installieren kann/darf. Mir würden da spontan Smart TVs einfallen.

Be creative!

Zum Schluss noch die Frage nach dem Preis: bestellt man direkt bei Hak5, so liegt der Preis bei ca. 60 US-$. Bei Bestellungen in den USA muss man aber imemr mit höheren Versandkosten rechnen. Bestellt man nur einen Packet Squirrel und begnügt man sich mit US Postal Service (7-30 Werktage), dann kommt man auf 13 US-$. DHL Express läge bei 33.54 US-$ und von UPS rede ich lieber erst gar nicht…

Einige Hak5-Produkte werden auch über einen Shop in Irland vertrieben (https://edutech-hakshop.myshopify.com/); aber leider nicht der Packet Squirrel.

Aber ich habe dann doch noch einen Shop in Deutschland gefunden, der ihn anbietet: http://www.firewire-revolution.de/shop/index.php?route=product/category&path=318_326

Hier liegt man inklusive Versandkosten bei (aktuell) knapp 90,-€.

PS: nein, ich bekomme von keinem der Shops Provision.