SOC Prime Bias: High

31 März 2026 17:23

Inside Pay2Key: Technische Analyse einer Linux-Ransomware-Variante

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
Inside Pay2Key: Technische Analyse einer Linux-Ransomware-Variante
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Pay2Key ist eine dem Iran zugeschriebene Ransomware-Operation, die Ende August 2025 eine Linux-Variante einführte. Die Malware läuft mit Root-Rechten, schaltet Sicherheitsmaßnahmen ab und verschlüsselt Dateien mit ChaCha20. Ihr Verhalten wird durch eine Konfigurationsdatei gesteuert und unterstützt sowohl Voll- als auch Teildateiverschlüsselungsmodi. Die Analyse betont die Techniken des Betreibers und den zunehmenden Bedarf an speziell für Linux entwickelten Ransomware-Abwehrmaßnahmen.

Untersuchung

Morphisec Threat Labs führte eine Reverse-Engineering-Überprüfung der Pay2Key-Linux-Probe durch. Die Forscher dokumentierten die Privilegienvalidierung, das Parsen der JSON-Konfiguration, die Dateisystemerkennung durch /proc/mounts, Servicebeendigung, Deaktivierung von SELinux und AppArmor, Persistenz auf Cron-Basis und ChaCha20-Verschlüsselung mit Datei-basierten Schlüsseln, die in einem verschleierten Metadatenblock gespeichert sind. Die Probe zeigte keine Anzeichen von Netzwerk-C2-Verkehr oder Datenexfiltration.

Abschwächung

Der Bericht empfiehlt, Linux-fokussierte Anti-Ransomware-Tools einzusetzen, die die Ausführung stoppen können, bevor die Verschlüsselung beginnt, Unterstützung für Moving-Target-Verteidigung bieten und den Schutz der Laufzeitintegrität aufrechterhalten. Die Reduzierung der Angriffsfläche durch Deaktivierung unnötiger Dienste und das Härten von SELinux/AppArmor-Richtlinien werden ebenfalls empfohlen. Ein Endpunktschutz, der abnormales privilegiertes Prozessverhalten verfolgt, kann die Resilienz weiter verbessern.

Antwort

Wenn Pay2Key erkannt wird, isolieren Sie das System, stoppen Sie den bösartigen Prozess und löschen Sie den Persistenzeintrag im Cron. Stellen Sie sicher, dass die Dateiberechtigungen intakt sind, und stellen Sie verschlüsselte Daten aus Backups wieder her. Eine forensische Untersuchung sollte dann relevante IOCs erfassen und die weitere Umgebung auf zugehörige Aktivitäten überprüfen.

"graph TB %% Klassendefinitionen classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Knoten, die jede ATT&CK-Technik darstellen persistence_cron["<b>Technik</b> – <b>T1053.003 Geplanter Task/Job: Cron</b><br/>Erstellt oder ändert einen Cron-Job, um die Ausführung nach dem Systemneustart sicherzustellen"] class persistence_cron technique defense_impair["<b>Technik</b> – <b>T1562 Verteidigungen beeinträchtigen</b><br/>Deaktiviert SELinux und AppArmor, um Schutzmechanismen des Hosts zu schwächen"] class defense_impair technique indicator_removal["<b>Technik</b> – <b>T1027.005 Indikatoren aus Werkzeugen entfernen</b><br/>Entfernt Sicherheitsindikatoren, um Erkennung zu vermeiden"] class indicator_removal technique discovery_mounts["<b>Technik</b> – <b>T1083 Datei- und Verzeichniserkennung</b><br/>Liest /proc/mounts, filtert Pseudo-Dateisysteme und klassifiziert Mounts zur Zielauswahl"] class discovery_mounts technique obfuscation_storage["<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/>Speichert Verschlüsselungsmetadaten mithilfe eines festkodierten Strings und verschleiert die Nutzlast"] class obfuscation_storage technique deobfuscate["<b>Technik</b> – <b>T1140 Dateien oder Informationen entschleiern/decodieren</b><br/>Decodiert die verschleierte Nutzlast während der Verarbeitung"] class deobfuscate technique impact_encryption["<b>Technik</b> – <b>T1486 Datenverschlüsselung für Auswirkungen</b><br/>Erzeugt pro Datei ChaCha20-Schlüssel und verschlüsselt Daten, wodurch Lösegeldforderung-Dateien entstehen"] class impact_encryption technique %% Flussverbindungen persistence_cron –>|leads_to| defense_impair defense_impair –>|leads_to| indicator_removal indicator_removal –>|leads_to| discovery_mounts discovery_mounts –>|leads_to| obfuscation_storage obfuscation_storage –>|leads_to| deobfuscate deobfuscate –>|leads_to| impact_encryption "

Angriffsablauf

Simulation Ausführung

Voraussetzung: Der Telemetrie- und Basislinien-Preflight-Check muss bestanden werden.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifertechnik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Narrative MÜSSEN die identifizierten TTPs direkt widerspiegeln und das erwartete Telemetrieergebnis der Erkennungserkennung generieren.

  • Angriffsnarrativ & Befehle:

    Der simulierte Angreifer hat bereits einen Zugriff auf den Linux-Host erlangt und möchte die Umgebung für die Ransomware-Bereitstellung vorbereiten. Zuerst verifizieren sie, dass sie mit Root-Rechten agieren, dann deaktivieren sie bewusst Sicherheitskontrollen und stoppen kritische Dienste, um während der Verschlüsselung keine Unterbrechung zu erfahren. Der Angreifer vermeidet es, in dieser Phase einen Cron-Eintrag zu erstellen, um die Negationsklausel der Regel zu erfüllen.

    1. Privilegienüberprüfung – Der Angreifer führt id -u aus und überprüft auf UID 0, die in der Befehlszeile als „root“ erscheint.
    2. Dienstunterbrechung – Mit systemctl stop stoppt der Angreifer den ssh Dienst, um z.B. entfernte Eingriffe zu verhindern.
    3. Prozessstörung – Der Angreifer beendet einen niedrig priorisierten Hintergrundprozess (sleep 300 &) zur Verdeutlichung des kill -Musters.
    4. Verteidigungsdeaktivierung – SELinux wird auf permissiv gesetzt (setenforce 0) und AppArmor wird deaktiviert (aa-disable).

    Diese Schritte erzeugen execve Ereignisse, die selection1 (beinhaltet „root“) und selection2/selection3 (beinhaltet stop/kill oder disable-Befehle) erfüllen, während weggelassen crontab, wodurch die Sigma-Regel ausgelöst wird.

  • Regressions-Testskript:

    #!/usr/bin/env bash
    set -e
    
    echo "[*] Schritt 1 – Root-Rechte verifizieren (enthält 'root')"
    id -u | grep ^0 && echo "Root-Rechte bestätigt"
    
    echo "[*] Schritt 2 – Einen Dienst stoppen (systemctl stop sshd)"
    sudo systemctl stop sshd || true
    
    echo "[*] Schritt 3 – Einen Dummy-Prozess erzeugen und beenden"
    sleep 300 &
    DUMMY_PID=$!
    sudo kill -9 $DUMMY_PID || true
    
    echo "[*] Schritt 4 – SELinux und AppArmor deaktivieren"
    sudo setenforce 0 || true
    sudo aa-disable || true
    
    echo "[+] Simulation abgeschlossen – Erkennung sollte ausgelöst worden sein."
  • Aufräumbefehle:

    #!/usr/bin/env bash
    set -e
    
    echo "[*] Dienste wiederherstellen"
    sudo systemctl start sshd || true
    
    echo "[*] SELinux (durchsetzen) und AppArmor wieder aktivieren"
    sudo setenforce 1 || true
    sudo aa-enable || true
    
    echo "[*] Sicherstellen, dass keine verirrten Prozesse verbleiben"
    pkill -f "sleep 300" || true
    
    echo "[+] Bereinigung abgeschlossen."