SOC Prime Bias: Mittel

29 Jan 2026 15:23 UTC

Der PyRAT-Code: Interna eines Python-basierten RAT

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Folgen
Der PyRAT-Code: Interna eines Python-basierten RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Der Artikel beschreibt PyRAT, einen auf Python basierenden Remote-Access-Trojaner, der als ELF-Binärdatei mittels PyInstaller verpackt ist. Er läuft sowohl auf Linux als auch auf Windows, kommuniziert über unverschlüsseltes HTTP mit einem C2-Server und unterstützt die Ausführung von Befehlen, Dateiexfiltration, Bildschirmaufnahme und eine Selbstzerstörungsroutine. Persistenz wird auf Linux durch XDG-Autostart und auf Windows durch einen Run-Registrierungsschlüssel implementiert. Der Bericht unterstreicht, wie leicht das Tool ist und wie einfach es von Cyberkriminellen umfunktioniert werden kann.

Untersuchung

Forscher extrahierten den eingebetteten Python-Bytecode mit pyinstxtractor, dekompilierten die Module und identifizierten die primäre Agent-Klasse, die Host-Fingerprinting, UID-Generierung, Thread-Management und C2-Koordination durchführt. Die statische Analyse deckte wichtige Importe, Dateinamen, Registrierungsinteraktionen und die für das Beacons verwendete HTTP-POST-Endpunkt auf. Verhaltensanalysen zeigten den gesamten Workflow: Erstellung der Persistenz, Befehlsausführung, Dateiauflistung, Hoch-/Herunterladevorgänge, Erstellung von ZIP-Archiven, Bildschirmaufnahme und optionales Bereinigen von Artefakten.

Minderung

Überwachen Sie verdächtige Autostart-.desktop-Dateien in Benutzerprofilen und für Hinzufügungen zum HKCURun-Registrierungsschlüssel mit unbekannten ausführbaren Namen. Auf der Netzwerkebene sollten Sie auf ausgehenden HTTP-POST-Verkehr zu unbekannten Hosts, der auf den /api/{uid}/hello-Endpunkt abzielt, achten. Auf Endpunkten markieren Sie unbekannte ELF-Binärdateien mit eingebettetem Python-Inhalt und anomales Prozessverhalten wie häufige Subprozesse-Ausführung.

Reaktion

Wenn erkannt, isolieren Sie das System, sammeln Sie das ELF-Sample und alle zugehörigen .desktop-Dateien und bewahren Sie relevante Registrierungszustände. Extrahieren Sie die UID, die C2-Adresse und alle während der Ausführung übertragenen Dateien im Rahmen der forensischen Analyse. Blockieren Sie die identifizierte C2-Infrastruktur, entfernen Sie die Persistenz und führen Sie eine vollständige Bereinigung durch. Ändern Sie die Anmeldedaten für Konten, die möglicherweise gefährdet wurden.

Angriffsablauf

Simulationausführung

Voraussetzung: Die Telemetrie & Basisüberprüfung vor dem Flug muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der gegnerischen Technik (TTP), die darauf ausgelegt ist, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die exakte Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffsnarrativ & Befehle:

    Ein Angreifer hat kompromittierte SSH-Anmeldedaten für einen regulären Benutzer erhalten. Nach der Anmeldung führen sie ein Living-off-the-Land Skript aus, das:

    1. Schreibt die bösartige ELF-Nutzlast (agent-svc.pyc) in das Home-Verzeichnis des Benutzers und tarnt sie als Python-Bytecode-Datei, während es tatsächlich eine ELF-Binärdatei ist.
    2. Kopiert ein getarntes Debian-Paket-Tool namens dpkgn nach /usr/local/bin, und versieht es mit Ausführungsrechten. Das Tool ist ein einfacher Wrapper, der einfach die ELF-Nutzlast startet.
    3. Installiert einen Autostart-Desktop-Eintrag (dpkgn.desktop) in ~/.config/autostart sodass die Nutzlast bei jedem Start der grafischen Sitzung ausgeführt wird.
    4. Setzt geeignete Berechtigungen um sofortigen Verdacht zu vermeiden.

    Die kombinierten Datei-Ereignisse (agent-svc.pyc and dpkgn) erfüllen die erste Bedingung der Regel, während die .desktop Datei die zweite Bedingung erfüllt.

  • Regressions-Test-Skript:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # 1. Bösartige ELF gefälscht als .pyc bereitstellen
    MALWARE_PATH="$HOME/agent-svc.pyc"
    echo "Falsche ELF-Nutzlast erstellen (Dummy-Binärdatei) ..."
    dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none
    chmod +x "$MALWARE_PATH"
    
    # 2. Falsches Debian-Tool namens dpkgn bereitstellen
    FAKE_TOOL="/usr/local/bin/dpkgn"
    echo "#!/usr/bin/env bash" | sudo tee "$FAKE_TOOL" > /dev/null
    echo "exec "$MALWARE_PATH" "$@"" | sudo tee -a "$FAKE_TOOL" > /dev/null
    sudo chmod +x "$FAKE_TOOL"
    
    # 3. Autostart-Desktop-Eintrag erstellen
    AUTOSTART_DIR="$HOME/.config/autostart"
    mkdir -p "$AUTOSTART_DIR"
    DESKTOP_FILE="$AUTOSTART_DIR/dpkgn.desktop"
    cat > "$DESKTOP_FILE" <<EOF
    [Desktop Entry]
    Type=Application
    Exec=$FAKE_TOOL
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Name=Package Manager
    Comment=System Update Service
    EOF
    
    echo "PyRAT-Persistenz-Artefakte bereitgestellt."
  • Bereinigungskommandos:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # Bösartige ELF entfernen
    rm -f "$HOME/agent-svc.pyc"
    
    # Falsches Tool entfernen
    sudo rm -f /usr/local/bin/dpkgn
    
    # Autostart-Eintrag entfernen
    rm -f "$HOME/.config/autostart/dpkgn.desktop"
    
    echo "Bereinigung abgeschlossen."