Inside Pay2Key: Technische Analyse einer Linux-Ransomware-Variante
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.
- Privilegienüberprüfung – Der Angreifer führt
id -uaus und überprüft auf UID 0, die in der Befehlszeile als „root“ erscheint. - Dienstunterbrechung – Mit
systemctl stopstoppt der Angreifer densshDienst, um z.B. entfernte Eingriffe zu verhindern. - Prozessstörung – Der Angreifer beendet einen niedrig priorisierten Hintergrundprozess (
sleep 300 &) zur Verdeutlichung deskill-Musters. - Verteidigungsdeaktivierung – SELinux wird auf permissiv gesetzt (
setenforce 0) und AppArmor wird deaktiviert (aa-disable).
Diese Schritte erzeugen
execveEreignisse, dieselection1(beinhaltet „root“) undselection2/selection3(beinhaltet stop/kill oder disable-Befehle) erfüllen, während weggelassencrontab, wodurch die Sigma-Regel ausgelöst wird. - Privilegienüberprüfung – Der Angreifer führt
-
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."