In diesem Blog wurden bereits die Penetration Testings Tools von Hak 5 ausführlich vorgestellt. Darüber hinaus werden Sie hier viele Anregungen für den Einsatz diese Werkzeuge und die entsprechenden Payloads für den USB Rubber Ducky bzw. Bash Bunny finden.
Die Zeit ist aber nicht stehengeblieben. So haben sich weitere USB-Angriffsplattformen auf der Basis des Arduino entwickelt. In dieser Rubrik stechen vor allem der Malduino und Digispark hervor.
Ganz besonders interessant finde ich aber das Projekt von mame82. Hinter der als P4wnP1 bezeichnete USB-Angriffsplattform verbirgt sich ein angepasster Raspberry Pi Zero bzw. Raspberry Pi Zero W, die als Human Interface Device (HID) und für Netzwerkangriffe eingesetzt werden können.
Auf den ersten Blick möchte man ihn mit dem Bash Bunny von Hak5 vergleichen, der kurz nach Erscheinen des P4wnP1 herausgebracht wurde. Schaut man aber genauer hin, so werden deutliche Unterschiede sichtbar. Die Entwickler haben auf Github ein Vergleich beider Tools veröffentlicht, der bemerkenswert ist. Hier fallen die verfügbaren Features deutlich zu Gunsten des P4wnP1 aus. Wer die Plattform einsetzen möchte, der sollte für seine Test unbedingt einen Raspberry Pi Zero W auswählen. Die so vorhandenen WLAN- und Bluetooth-Fähigkeiten machen das Tool zu einer USB-Angriffs-Plattform, die vielseitig anpassbar und einsetzbar ist.
In diesem ersten Teil werde ich zeigen, wie Sie den P4wnP1 installieren und ihn für den ersten Einsatz vorbereiten. Danach folgen weitere Beiträge, die sich mit den diversen Einsatzmöglichkeiten beschäftigen.
Installation
Wer sich bereits mit dem Raspberry Pi beschäftigt hat, der wird keine Probleme haben den P4wnP1 zu installieren. Die übliche Vorgehensweise ist im Wiki der Entwickler sehr gut beschrieben.
Wer nicht viel Zeit mit komplizierten Anleitungen verschwenden möchte, der sollte das vorgefertigte Image auf der Release-Seite der Entwickler herunterladen und mit Hilfe des Image-Tools seiner Wahl auf die Speicherkarte übertragen. Ich habe z.B. mit dem Win32 Disk Imager gute Erfahrungen gemacht.
Erste Schritte nach der Installation
Der Aufbau der Angriffsplattform ist ebenfalls im Wiki ausführlich beschrieben. Das folgende Bild zeigt, wie Sie mit dem P4wnP1 nach dem ersten Start kommunizieren können. Verbinden Sie dazu die Angriffsplattform mit einem passenden USB-Kabel. Verwenden Sie dazu die zweite USB-Schnittstelle (am dichtesten zur HDMI-Schnittstelle) des Gerätes.
Der Raspberry benötigt einige Zeit, bis er vollständig hochgefahren ist. Danach sollten Sie ein neues WLAN in unmittelbare Nähe des Gerätes mit der SSID P4wnP1 feststellen. Nachdem Sie die kabellose Verbindung zum Pi hergestellt haben, können Sie mittels ssh auf das Gerät zugreifen. Verwenden Sie dazu folgende Nutzerdaten:
Nutzername: pi
Passwort: raspberry
Wer lieber mittels USB over Ethernet auf die Angriffsplattform zugreifen möchte, der verwendet die im Bild angegebene IP-Adresse.
Nehmen Sie sich ein wenig Zeit, um den P4wnP1 zu erkunden. Ein erster Blick in die Verzeichnisse lässt das Potential dieses Gerätes schon erahnen. Wichtige Erkenntnisse über die Verwendung der Angriffsplattform erlangt man aber beim Studium der Konfigurationsdatei setup.cfg. Auch hier sind alle Einstellungen vorbildlich dokumentiert.
Die einzelnen Payloads lassen sich durch auskommentieren auswählen. Standartmäßig ist der „network_only“ Modus eingestellt.
Verbindung zum Internet herstellen
Wer das von den Entwicklern zur Verfügung gestellte Image verwendet, der kann sofort auf die beigefügten Tools zugreifen. Dem einen oder anderen wird es aber sinnvoll erscheinen, wenn vom P4wnP1 selbst eine Verbindung ins Internet hergestellt werden könnte, um z.B. weiter Werkzeuge zu installieren oder Updates durchzuführen. Im folgenden Abschnitt zeige ich, wie Sie eine Internetverbindungsfreigabe in Windows bzw. Linux für den P4wnP1 realisieren können.
Windows 7 und Windows 10 – Internetverbindungsfreigabe
Wer in die Netzwerkeinstellungen schaut, wird die dazu notwendigen Schnittstellen finden. In der Regel ist der Laptop/PC mit einer LAN bzw. WLAN-Verbindung mit dem Internet verbunden. In unserem Beispiel wird sie als “LAN-Verbindung” bezeichnet. Die RNDIS-Schnittstelle des P4wnP1 wird als “LAN-Verbindung 3” angezeigt.
Die gemeinsame Nutzung der Internetverbindung können Sie unter den Netzwerkeigenschaften der LAN-Verbindung einstellen. Hierzu wählen Sie die Bezeichnung des RNDIS-Adapters als “Heimnetzwerkverbindung” (in unseren Beispiel LAN-Verbindung 3) aus.
Abschließend müssen Sie nun noch die Eigenschaften des RNDIS-Adapter unseres P4wnP1 so konfigurieren, dass hier die richtige IP-Adresse (172.16.0.2) angezeigt wird. In einigen Fällen reicht es, die Option “IP-Adresse automatisch beziehen” auszuwählen. Diese IP-Adresse wird später als Default-Gateway eingerichtet.
Für Windows 10 gehen Sie analog vor.
Linux – Internetverbindungsfreigabe
Je nach Linux Distribution können die Bezeichnungen der Netzwerkschnittstellen variieren. In unseren Beispiel wird die Schnittstellen mit der Internetverbindung als enp0s5 und die Verbindung USB over Ethernet des P4wnP1 mit enp0s29f7u1i3 angegeben.
Auch hier sollte der USB-Adapter die IP-Adresse 172.16.0.2 tragen. Falls dies nicht der Fall sein sollte, können Sie dies mit folgenden Befehl einstellen:
sudo ifconfig enp0s29f7u1i3 172.16.0.2 netmask 255.255.255.252
Abschließend wird die Internetverbindungsfreigabe auf dem Linux-System mit folgenden Befehlen eingerichtet:
sudo su
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o enp0s5 -j MASQUERADE
Achten Sie darauf, dass im letzen Befehl der richtige Name der Schnittstelle für das Interface mit der Internetverbindung (in unserem Beispiel enp0s5) angegeben werden muss.
Routing einstellen
Nun können Sie sich per ssh mit dem P4wnP1 verbinden. Nutzen Sie dazu die oben genannten Nutzerdaten und die IP-Adresse 172.16.0.1. Das folgende Bild zeigt die Einstellungen für PuTTY:
Abschließend stellen Sie das Standardgateway auf 172.16.0.2 ein und legen einen Nameserver für Ihre Verbindung fest. Dies könnte der DNS-Server Ihres Internetzugangs bzw. ein bekannter Nameserver Ihrer Wahl (z.B. 8.8.8.8) sein.
sudo route add default gw 172.16.0.2
sudo echo "nameserver 192.168.0.1" > /etc/resolv.conf
Versuchen Sie nun, ob Sie einen Server im Internet erreichen können:
P4wnP1 über WLAN mit dem Internet verbinden
Wer keine Einstellungen auf seinem Host-System vornehmen möchte, der kann auch über die WLAN-Client-Einstellungen des P4wnP1 einem verfügbaren WLAN beitreten. Öffnen Sie dazu die Konfigurationsdatei setup.cfg auf dem P4wnP1 und nehmen die entsprechenden Einstellungen im Bereich “WiFi Client Settings” vor:
WIFI_CLIENT=true
WIFI_CLIENT_SSID="MeineSSID"
WIFI_CLIENT_PSK="MeinPasswort"
Bei nächsten Neustart sollte nun der P4wnP1 eine Verbindung zum Internet über das konfigurierte WLAN herstellen.