Der PyRAT-Code: Interna eines Python-basierten RAT
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
Erkennungen
Möglicher eigenständiger Malware-Entfernungs- oder Stderr-Verschleierungs-Vorgang (über cmdline)
Ansehen
Archiv wurde im Linux-Tmp-Ordner erstellt (über file_event)
Ansehen
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER Hive] (über cmdline)
Ansehen
Versuch der Entfernung möglicher Registrierungsschlüssel (über Prozess-Erstellung)
Ansehen
Versuch der Änderung von möglichen Linux XDG Autostart-Dateien (über cmdline)
Ansehen
Gefährliche Berechtigungen für eine Binärdatei/Skript/Ordner wurden gesetzt (über cmdline)
Ansehen
IOCs (HashMd5) zur Erkennung: Der PyRAT-Code: Python-basierter RAT und seine Interna
Ansehen
Windows-Persistenz über Run-Schlüssel des aktuellen Benutzers [Windows-Registrierungsereignis]
Ansehen
Erkennung von PyRAT-Persistenz auf Linux [Linux-Prozess-Erstellung]
Ansehen
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:
- 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. - Kopiert ein getarntes Debian-Paket-Tool namens
dpkgnnach/usr/local/bin, und versieht es mit Ausführungsrechten. Das Tool ist ein einfacher Wrapper, der einfach die ELF-Nutzlast startet. - Installiert einen Autostart-Desktop-Eintrag (
dpkgn.desktop) in~/.config/autostartsodass die Nutzlast bei jedem Start der grafischen Sitzung ausgeführt wird. - Setzt geeignete Berechtigungen um sofortigen Verdacht zu vermeiden.
Die kombinierten Datei-Ereignisse (
agent-svc.pycanddpkgn) erfüllen die erste Bedingung der Regel, während die.desktopDatei die zweite Bedingung erfüllt. - Schreibt die bösartige ELF-Nutzlast (
-
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."