O Código PyRAT: Internos de um RAT Baseado em Python
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.
Fluxo de Ataque
Detecções
Possível Remoção Automática de Malware ou Operação de Ocultação de Stderr (via cmdline)
Ver
Arquivo Foi Criado Na Pasta Tmp do Linux (via file_event)
Ver
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via cmdline)
Ver
Tentativa de Remoção de Chaves do Registro Possível (via process_creation)
Ver
Tentativa de Modificação de Arquivos Autostart do XDG no Linux Possível (via cmdline)
Ver
Permissões Perigosas para um Binário/Script/Pasta foram definidas (via cmdline)
Ver
IOCs (HashMd5) para detectar: O Código PyRAT: RAT Baseado em Python e seus Internos
Ver
Persistência no Windows via Chave Run do Usuário Atual [Evento do Registro do Windows]
Ver
Detecção de Persistência do PyRAT no Linux [Criação de Processo no Linux]
Ver
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 :
- 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. - Copia uma ferramenta de pacote-debian mascarada nomeada
dpkgnem/usr/local/bin, concedendo-lhe direitos de execução. A ferramenta é um invólucro fino que simplesmente lança a carga ELF. - Instala uma entrada desktop autostart (
dpkgn.desktop) em~/.config/autostartpara que a carga útil seja executada em cada início de sessão gráfica. - Define permissões apropriadas para evitar suspeita imediata.
Os eventos de arquivo combinados (
agent-svc.pycanddpkgn) satisfazem a primeira condição da regra, enquanto o.desktoparquivo satisfaz a segunda condição. - Escreve a carga útil ELF maliciosa (
-
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."