SOC Prime Bias: Alto

31 Mar 2026 17:23

Dentro Pay2Key: Analisi Tecnica di una Variante di Ransomware per Linux

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
Dentro Pay2Key: Analisi Tecnica di una Variante di Ransomware per Linux
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riassunto

Pay2Key è un’operazione ransomware attribuita all’Iran che ha introdotto una variante Linux alla fine di agosto 2025. Il malware viene eseguito con privilegi di root, disattiva le protezioni di sicurezza e cripta i file con ChaCha20. Il suo comportamento è guidato da un file di configurazione e supporta sia modalità di crittografia completa che parziale. L’analisi sottolinea le tecniche dell’operatore e la crescente necessità di difese ransomware specifiche per Linux.

Indagine

Morphisec Threat Labs ha condotto una revisione di reverse-engineering del campione Linux di Pay2Key. I ricercatori hanno documentato la convalida dei privilegi, l’analisi della configurazione JSON, la scoperta del filesystem tramite /proc/mounts, terminazione dei servizi, disabilitazione di SELinux e AppArmor, persistenza basata su cron e crittografia ChaCha20 con chiavi per file memorizzate all’interno di un blocco di metadata offuscato. Il campione non ha mostrato evidenza di traffico C2 di rete o esfiltrazione di dati.

Mitigazione

Il rapporto consiglia di implementare strumenti anti-ransomware focalizzati su Linux che possano interrompere l’esecuzione prima dell’inizio della crittografia, supportare la difesa con obiettivo mobile e mantenere protezioni di integrità durante il runtime. Ridurre la superficie di attacco disattivando servizi non necessari e rafforzando le policy di SELinux/AppArmor è anche raccomandato. La protezione degli endpoint che traccia le attività anomale dei processi privilegiati può migliorare ulteriormente la resilienza.

Risposta

Se viene rilevato Pay2Key, isolare il sistema, interrompere il processo dannoso e eliminare l’entrata di persistenza cron. Confermare che i permessi dei file siano intatti e recuperare i dati criptati dai backup. Un’indagine forense dovrebbe quindi catturare gli IOC rilevanti e controllare l’ambiente più ampio per attività correlate.

"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes representing each ATT&CK technique persistence_cron["<b>Tecnica</b> – <b>T1053.003 Operazione Programmata/Job: Cron</b><br/>Crea o modifica un job cron per garantire l’esecuzione dopo il riavvio del sistema"] class persistence_cron technique defense_impair["<b>Tecnica</b> – <b>T1562 Indebolire le Difese</b><br/>Disattiva SELinux e AppArmor per indebolire i meccanismi di protezione dell’host"] class defense_impair technique indicator_removal["<b>Tecnica</b> – <b>T1027.005 Rimozione degli Indicatori dagli Strumenti</b><br/>Rimuove gli indicatori degli strumenti di sicurezza per evitare il rilevamento"] class indicator_removal technique discovery_mounts["<b>Tecnica</b> – <b>T1083 Scoperta di File e Directory</b><br/>Legge /proc/mounts, filtra i filesystem pseudo e classifica i mount per selezione del target"] class discovery_mounts technique obfuscation_storage["<b>Tecnica</b> – <b>T1027 File o Informazioni Offuscati</b><br/>Memorizza i metadata di crittografia utilizzando una stringa hard-coded e offusca il payload"] class obfuscation_storage technique deobfuscate["<b>Tecnica</b> – <b>T1140 Deoffuscare/Decodificare File o Informazioni</b><br/>Decodifica il payload offuscato durante l’elaborazione"] class deobfuscate technique impact_encryption["<b>Tecnica</b> – <b>T1486 Dati Cifrati per Impatto</b><br/>Genera chiavi ChaCha20 per file e cripta i dati, producendo file che richiedono un riscatto"] class impact_encryption technique %% Flow connections persistence_cron –>|porta a| defense_impair defense_impair –>|porta a| indicator_removal indicator_removal –>|porta a| discovery_mounts discovery_mounts –>|porta a| obfuscation_storage obfuscation_storage –>|porta a| deobfuscate deobfuscate –>|porta a| impact_encryption "

Flusso d’Attacco

Esecuzione Simulazione

Prerequisito: Il Controllo Pre-volo di Telemetria & Baseline deve essere superato.

Ragionamento: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e il racconto DEVONO riflettere direttamente i TTP identificati e mirare a generare l’esatta telemetria attesa dalla logica di rilevamento.

  • Narrativa d’Attacco & Comandi:

    L’attaccante simulato ha già ottenuto un punto d’appoggio sull’host Linux e desidera preparare l’ambiente per il dispiegamento del ransomware. Iniziano verificando di operare con privilegi di root, quindi disabilitano deliberatamente i controlli di sicurezza e fermano i servizi critici per evitare interruzioni durante la crittografia. L’attaccante evita di creare una voce cron in questa fase per soddisfare la clausola di negazione della regola.

    1. Verifica dei Privilegi – L’attaccante esegue id -u e controlla per UID 0, che appare sulla linea di comando come “root”.
    2. Interruzione del Servizio – Usando systemctl stop l’attaccante ferma il ssh servizio per prevenire interferenze remote.
    3. Interruzione del Processo – L’attaccante uccide un processo in background a bassa priorità (sleep 300 &) per illustrare il pattern kill. Disabilitazione della Difesa
    4. – SELinux è impostato su permissivo ( ) e AppArmor è disabilitato () e AppArmor è disabilitato (Questi passaggi produconoQuesti passaggi producono).

    eventi execve che soddisfano selezione1 (contiene “root”) e selezione2 selezione3/(contiene comandi di stop/kill o disable) mentre viene omesso , attivando così la regola Sigma. , attivando così la regola Sigma.Script di Test Regressione:

  • #!/usr/bin/env bash set -e echo “[*] Passo 1 – Verifica privilegi di root (contiene ‘root’)” id -u | grep ^0 && echo “privilegio root confermato” echo “[*] Passo 2 – Ferma un servizio (systemctl stop sshd)” sudo systemctl stop sshd || true echo “[*] Passo 3 – Genera e termina un processo dummy” sleep 300 & DUMMY_PID=$! sudo kill -9 $DUMMY_PID || true echo “[*] Passo 4 – Disabilita SELinux e AppArmor” sudo setenforce 0 || true sudo aa-disable || true echo “[+] Simulazione completata – il rilevamento dovrebbe essere stato attivato.”

    Comandi di Pulizia:
  • #!/usr/bin/env bash set -e echo “[*] Ripristino dei servizi” sudo systemctl start sshd || true echo “[*] Riattivazione di SELinux (enforcing) e AppArmor” sudo setenforce 1 || true sudo aa-enable || true echo “[*] Assicurando che non rimangano processi estranei” pkill -f “sleep 300” || true echo “[+] Pulizia terminata.”

    #!/usr/bin/env bash
    set -e
    
    echo "[*] Restoring services"
    sudo systemctl start sshd || true
    
    echo "[*] Re‑enabling SELinux (enforcing) and AppArmor"
    sudo setenforce 1 || true
    sudo aa-enable || true
    
    echo "[*] Ensuring no stray processes remain"
    pkill -f "sleep 300" || true
    
    echo "[+] Cleanup finished."