Dentro do Pay2Key: Análise Técnica de uma Variante de Ransomware para Linux
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Pay2Key é uma operação de ransomware atribuída ao Irã que introduziu uma variante do Linux no final de agosto de 2025. O malware opera com privilégios de root, desativa proteções de segurança e criptografa arquivos com ChaCha20. Seu comportamento é guiado por um arquivo de configuração e suporta modos de criptografia de arquivo completo e parcial. A análise enfatiza as técnicas do operador e a crescente necessidade de defesas específicas para ransomware em Linux.
Investigação
O Morphisec Threat Labs conduziu uma revisão de engenharia reversa da amostra do Pay2Key para Linux. Os pesquisadores documentaram a validação de privilégios, a análise da configuração JSON, a descoberta de sistema de arquivos através de /proc/mounts, encerramento de serviços, desativação do SELinux e AppArmor, persistência baseada em cron e criptografia ChaCha20 com chaves por arquivo armazenadas dentro de um bloco de metadados ofuscado. A amostra não mostrou evidências de tráfego de rede C2 ou exfiltração de dados.
Mitigação
O relatório aconselha a implantação de ferramentas de antivírus para Linux que possam interromper a execução antes que a criptografia comece, suporte a defesa de alvo móvel e mantenha proteções de integridade em tempo de execução. Reduzir a superfície de ataque desativando serviços desnecessários e fortalecendo as políticas de SELinux/AppArmor também é recomendado. A proteção de endpoint que rastreia atividades de processos privilegiados anormais pode melhorar ainda mais a resiliência.
Resposta
Se o Pay2Key for detectado, isole o sistema, pare o processo malicioso e exclua a entrada de persistência do cron. Confirme se as permissões de arquivos estão intactas e recupere os dados criptografados a partir de backups. Uma investigação forense deve então capturar IOCs relevantes e verificar o ambiente mais amplo para atividades relacionadas.
"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes representing each ATT&CK technique persistence_cron["<b>Technique</b> – <b>T1053.003 Scheduled Task/Job: Cron</b><br/>Creates or modifies a cron job to ensure execution after system reboot"] class persistence_cron technique defense_impair["<b>Technique</b> – <b>T1562 Impair Defenses</b><br/>Disables SELinux and AppArmor to weaken host protection mechanisms"] class defense_impair technique indicator_removal["<b>Technique</b> – <b>T1027.005 Indicator Removal from Tools</b><br/>Removes securityu2011tool indicators to evade detection"] class indicator_removal technique discovery_mounts["<b>Technique</b> – <b>T1083 File and Directory Discovery</b><br/>Reads /proc/mounts, filters pseudou2011filesystems and classifies mounts for target selection"] class discovery_mounts technique obfuscation_storage["<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/>Stores encryption metadata using a hardu2011coded string and obfuscates the payload"] class obfuscation_storage technique deobfuscate["<b>Technique</b> – <b>T1140 Deobfuscate/Decode Files or Information</b><br/>Decodes the obfuscated payload during processing"] class deobfuscate technique impact_encryption["<b>Technique</b> – <b>T1486 Data Encrypted for Impact</b><br/>Generates peru2011file ChaCha20 keys and encrypts data, producing ransomu2011demanding files"] class impact_encryption technique %% Flow connections 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 "
Fluxo de Ataque
Execução da Simulação
Pré-requisito: A Verificação Prévia de Telemetria & Linha de Base deve ter sido aprovada.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visa gerar exatamente a telemetria esperada pela lógica de detecção.
-
Narrativa do Ataque & Comandos:
O atacante simulado já obteve uma posição no host Linux e deseja preparar o ambiente para a implantação do ransomware. Primeiro, eles verificam se estão operando com privilégios de root, depois desativam deliberadamente os controles de segurança e interrompem serviços críticos para evitar interrupções durante a criptografia. O atacante evita criar uma entrada de cron durante esta fase para satisfazer a cláusula de negação da regra.
- Verificação de Privilégios – O atacante executa
id -ue verifica o UID 0, que aparece na linha de comando como “root”. - Interrupção de Serviço – Utilizando
systemctl stopo atacante interrompe osshserviço para prevenir interferência remota. - Disrupção de Processo – O atacante mata um processo de segundo plano de baixa prioridade (
sleep 300 &) para ilustrar o padrãokill. - Desativação de Defesas – SELinux é configurado para permissivo (
setenforce 0) e AppArmor é desativado (aa-disable).
Estes passos produzem
eventos execveque satisfazemseleção1(contêm “root”) eseleção2/seleção3(contêm comandos de stop/kill ou disable) enquanto omitemcrontab, disparando assim a regra Sigma. - Verificação de Privilégios – O atacante executa
-
Script de Teste de Regressão:
#!/usr/bin/env bash set -e echo "[*] Etapa 1 – Verificar privilégios de root (contém 'root')" id -u | grep ^0 && echo "privilégio de root confirmado" echo "[*] Etapa 2 – Parar um serviço (systemctl stop sshd)" sudo systemctl stop sshd || true echo "[*] Etapa 3 – Gerar e matar um processo dummy" sleep 300 & DUMMY_PID=$! sudo kill -9 $DUMMY_PID || true echo "[*] Etapa 4 – Desativar SELinux e AppArmor" sudo setenforce 0 || true sudo aa-disable || true echo "[+] Simulação concluída – a detecção deve ter sido acionada." -
Comandos de Limpeza:
#!/usr/bin/env bash set -e echo "[*] Restaurando serviços" sudo systemctl start sshd || true echo "[*] Reativando SELinux (enforcement) e AppArmor" sudo setenforce 1 || true sudo aa-enable || true echo "[*] Assegurando que nenhum processo estranho reste" pkill -f "sleep 300" || true echo "[+] Limpeza concluída."