SOC Prime Bias: Médio

29 Jan 2026 18:23

O Código PyRAT: Internos de um RAT Baseado em Python

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
O Código PyRAT: Internos de um RAT Baseado em Python
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O artigo perfila o PyRAT, um trojan de acesso remoto baseado em Python empacotado como um binário ELF utilizando o PyInstaller. Ele é executado tanto em Linux quanto em Windows, comunica-se com um servidor C2 sobre HTTP não criptografado e suporta execução de comandos, exfiltração de arquivos, captura de tela e uma rotina de autodestruição. A persistência é implementada através do XDG autostart no Linux e de uma chave de registro Run no Windows. O relatório enfatiza quão leve é a ferramenta e como ela pode ser facilmente repropósita por cibercriminosos.

Investigação

Pesquisadores extraíram o bytecode Python embutido com pyinstxtractor, descompilaram os módulos e identificaram a classe principal Agent que executa fingerprinting de host, geração de UID, gerenciamento de threads e coordenação de C2. A análise estática revelou importações chave, nomes de arquivos, interação com o registro e o endpoint HTTP POST usado para beaconing. Testes de comportamento mostraram o fluxo de trabalho completo: criação de persistência, execução de comandos, enumeração de arquivos, operações de upload/download, criação de arquivo ZIP, captura de tela e limpeza opcional de artefatos.

Mitigação

Monitore arquivos .desktop de autostart suspeitos criados em perfis de usuários e adições à chave de registro HKCURun usando nomes de executáveis desconhecidos. Na camada de rede, observe por tráfego HTTP POST de saída para hosts desconhecidos direcionados ao endpoint /api/{uid}/hello. Nos endpoints, sinalize binários ELF desconhecidos contendo conteúdo Python embutido e comportamento anômalo de processos, como execução frequente de subprocessos.

Resposta

Se detectado, isole o sistema, colete a amostra ELF e quaisquer arquivos .desktop associados, e preserve o estado do registro relevante. Extraia o UID, endereço C2, e quaisquer arquivos transferidos durante a execução como parte da análise forense. Bloqueie a infraestrutura C2 identificada, remova a persistência e complete uma limpeza total. Altere as credenciais para contas que possam ter sido expostas.

graph TB %% Class Definitions classDef malware fill:#ff9999 classDef technique fill:#99ccff classDef action fill:#ccffcc classDef persistence fill:#ffcc99 classDef cleanup fill:#dddddd %% Node Definitions malware_pyrat[“<b>Malware</b> – <b>Nome</b>: PyRAT ELF<br/><b>Descrição</b>: RAT para Linux/Windows executado como binário ELF”] class malware_pyrat malware tech_system_info[“<b>Técnica</b> – <b>T1082 Descoberta de Informações do Sistema</b><br/>Coleta versão do SO, nome do host e detalhes de hardware”] class tech_system_info technique tech_user_discovery[“<b>Técnica</b> – <b>T1033 Descoberta do Proprietário/Usuário do Sistema</b><br/>Enumera o usuário logado e detalhes da conta”] class tech_user_discovery technique action_establish_c2[“<b>Ação</b> – Estabelecer C2 via HTTP POST não criptografado”] class action_establish_c2 action tech_web_service[“<b>Técnica</b> – <b>T1102.003 Serviço Web: Comunicação Unidirecional</b><br/>Usa HTTP POST para enviar dados a um servidor remoto”] class tech_web_service technique tech_exfil_unenc[“<b>Técnica</b> – <b>T1048.003 Exfiltração por Protocolo Não C2 Não Criptografado</b><br/>Transfere dados sem criptografia”] class tech_exfil_unenc technique tech_data_encoding[“<b>Técnica</b> – <b>T1132.002 Codificação de Dados: Codificação Não Padrão</b><br/>Aplica codificação personalizada antes da transmissão”] class tech_data_encoding technique action_execute_cmd[“<b>Ação</b> – Executar Comandos”] class action_execute_cmd action tech_windows_shell[“<b>Técnica</b> – <b>T1059.003 Shell de Comando do Windows</b><br/>Executa comandos via cmd.exe”] class tech_windows_shell technique tech_unix_shell[“<b>Técnica</b> – <b>T1059.004 Shell Unix</b><br/>Executa comandos via /bin/sh”] class tech_unix_shell technique action_collect_files[“<b>Ação</b> – Coletar Arquivos e Enumerar o Sistema de Arquivos”] class action_collect_files action tech_archive[“<b>Técnica</b> – <b>T1560.002 Arquivar Dados Coletados: Arquivamento via Biblioteca</b><br/>Comprime dados usando uma biblioteca ZIP”] class tech_archive technique tech_screenshot[“<b>Técnica</b> – <b>T1113 Captura de Tela</b><br/>Captura a imagem da área de trabalho”] class tech_screenshot technique tech_persist_linux[“<b>Técnica</b> – <b>T1547.013 Autostart XDG</b><br/>Adiciona uma entrada .desktop ao diretório de inicialização do usuário”] class tech_persist_linux persistence tech_persist_windows[“<b>Técnica</b> – <b>T1547.014 Chaves Run do Registro / Pasta de Inicialização</b><br/>Cria uma entrada em HKCU\\Run para persistência”] class tech_persist_windows persistence tech_cleanup[“<b>Técnica</b> – <b>T1070.009 Remoção de Indicadores: Limpar Persistência</b><br/>Remove artefatos de persistência e logs”] class tech_cleanup cleanup %% Connections malware_pyrat –>|leva_a| tech_system_info malware_pyrat –>|leva_a| tech_user_discovery tech_system_info –>|fornece informações para| action_establish_c2 tech_user_discovery –>|fornece informações para| action_establish_c2 action_establish_c2 –>|usa| tech_web_service action_establish_c2 –>|usa| tech_exfil_unenc action_establish_c2 –>|usa| tech_data_encoding action_establish_c2 –>|habilita| action_execute_cmd action_execute_cmd –>|usa| tech_windows_shell action_execute_cmd –>|usa| tech_unix_shell action_execute_cmd –>|leva_a| action_collect_files action_collect_files –>|leva_a| tech_archive tech_archive –>|leva_a| tech_screenshot tech_screenshot –>|habilita| tech_persist_linux tech_screenshot –>|habilita| tech_persist_windows tech_persist_linux –>|posteriormente leva a| tech_cleanup tech_persist_windows –>|posteriormente leva a| tech_cleanup

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Verificação de Pré-vôo do Telemetria & Baseline deve ter passado.

Racional: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa de Ataque & Comandos:

    Um atacante obteve uma credencial SSH comprometida para um usuário regular. Após o login, eles executam um script de permanência :

    1. Escreve a carga útil ELF maliciosa (agent-svc.pyc) no diretório home do usuário, disfarçando-o como um arquivo de bytecode Python enquanto é na verdade um binário ELF.
    2. Copia uma ferramenta de pacote-debian mascarada nomeada dpkgn em /usr/local/bin, concedendo-lhe direitos de execução. A ferramenta é um invólucro fino que simplesmente lança a carga ELF.
    3. Instala uma entrada desktop autostart (dpkgn.desktop) em ~/.config/autostart para que a carga útil seja executada em cada início de sessão gráfica.
    4. Define permissões apropriadas para evitar suspeita imediata.

    Os eventos de arquivo combinados (agent-svc.pyc and dpkgn) satisfazem a primeira condição da regra, enquanto o .desktop arquivo satisfaz a segunda condição.

  • Script de Teste de Regressão:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # 1. Deploy payload ELF disfarçado como .pyc
    MALWARE_PATH="$HOME/agent-svc.pyc"
    echo "Criando carga ELF falsa (binário dummy) ..."
    dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none
    chmod +x "$MALWARE_PATH"
    
    # 2. Deploy ferramenta Debian falsa chamada dpkgn
    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. Criar entrada autostart desktop
    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=Serviço de Atualização de Sistema
    EOF
    
    echo "Artefatos de persistência do PyRAT implantados."
  • Comandos de Limpeza:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # Remover ELF malicioso
    rm -f "$HOME/agent-svc.pyc"
    
    # Remover ferramenta falsa
    sudo rm -f /usr/local/bin/dpkgn
    
    # Remover entrada autostart
    rm -f "$HOME/.config/autostart/dpkgn.desktop"
    
    echo "Limpeza concluída."