PyStoreRAT: Malware de Cadeia de Suprimentos Alimentado por IA Alvejando Profissionais de TI e OSINT
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
A Morphisec descobriu uma operação coordenada de malware que abusa de contas inativas do GitHub para hospedar repositórios gerados por IA, que, em última análise, entregam um backdoor em JavaScript/HTA apelidado de PyStoreRAT. O carregador perfila o host, implanta múltiplas cargas, incluindo o stealer Rhadamanthys, e ajusta dinamicamente seu comportamento quando soluções AV específicas são detectadas. Ele pode se propagar via mídia removível e depende de uma infraestrutura C2 rotativa para atualizar seus módulos. A campanha é direcionada a administradores de TI, analistas de segurança e profissionais de OSINT em todo o mundo.
Investigação
Pesquisadores examinaram os projetos maliciosos no GitHub, isolaram os componentes do backdoor e documentaram toda a cadeia de execução, incluindo a profilagem do sistema, a entrega em estágios das cargas, a evasão de AV, a propagação por unidades removíveis e o carregamento sob demanda de módulos. O relatório descreve ainda a arquitetura circular dos nós C2 que aumenta a resiliência, bem como o uso de strings em russo para validar o local do alvo. A análise vincula o carregador ao stealer Rhadamanthys e destaca sua capacidade de alterar caminhos de inicialização.
Mitigação
A Morphisec aconselha o uso de Defesa de Alvo em Movimento Automatizada para desestabilizar o ambiente de runtime do carregador, bloquear rotas de execução não confiáveis e impedir a implantação de cargas. Como os controles tradicionais baseados em assinatura são ineficazes, os defensores devem confiar em proteções baseadas em comportamento e virtualização. Restringir a execução de scripts de origens não confiáveis e monitorar de perto a atividade de unidades removíveis também são recomendados.
Resposta
Quando é identificada a atividade do PyStoreRAT, isole imediatamente o endpoint impactado, termine o processo do backdoor e remova quaisquer módulos persistentes. Realize análise forense para coletar IOCs, incluindo domínios C2, hashes de arquivos e tarefas agendadas. Corrija software vulnerável, imponha políticas de execução restritas ao menor privilégio e monitore continuamente o GitHub para atividades maliciosas ou suspeitas em repositórios.
“graph TB %% Definições de Classe classDef technique fill:#99ccff %% Definições de Nós technique_supply_chain[“<b>Técnica</b> – <b>T1195.002 Comprometimento da Cadeia de Suprimentos</b><br/><b>Descrição</b>: Compromete um repositório público do GitHub para injetar código malicioso em projetos que as vítimas clonam.<br/><b>Subtécnica</b>: Repositórios maliciosos do GitHub”] class technique_supply_chain technique technique_user_exec[“<b>Técnica</b> – <b>T1204 Execução de Usuário</b><br/><b>Descrição</b>: A vítima executa o projeto gerado por IA que contém a carga maliciosa”] class technique_user_exec technique technique_obfuscation[“<b>Técnica</b> – <b>T1027 Arquivos ou Informações Ofuscados</b><br/><b>Subtécnica</b>: T1027.009 Cargas Embarcadas<br/><b>Descrição</b>: A carga está escondida dentro de arquivos legítimos para evadir a detecção”] class technique_obfuscation technique technique_system_info[“<b>Técnica</b> – <b>T1082 Descoberta de Informações do Sistema</b><br/><b>Descrição</b>: Coletar a versão do sistema operacional, detalhes do hardware e outras informações do host”] class technique_system_info technique technique_software_disc[“<b>Técnica</b> – <b>T1518 Descoberta de Software</b><br/><b>Descrição</b>: Enumerar aplicativos instalados e versões de software”] class technique_software_disc technique technique_c2_https[“<b>Técnica</b> – <b>T1071.001 Protocolos Web</b><br/><b>Descrição</b>: Estabelecer comunicações de comando e controle via HTTPS”] class technique_c2_https technique technique_removable_media[“<b>Técnica</b> – <b>T1092 Comunicação Através de Mídia Removível</b><br/><b>Descrição</b>: Propagar a carga maliciosa para sistemas adicionais via unidades USB”] class technique_removable_media technique %% Conexões technique_supply_chain u002du002d>|leads_to| technique_user_exec technique_user_exec u002du002d>|leads_to| technique_obfuscation technique_obfuscation u002du002d>|leads_to| technique_system_info technique_system_info u002du002d>|leads_to| technique_software_disc technique_software_disc u002du002d>|leads_to| technique_c2_https technique_c2_https u002du002d>|leads_to| technique_removable_media “
Fluxo de Ataque
Detecções
Comportamento Suspeito de Evasão de Defesa LOLBAS MSHTA pela Detecção de Comandos Associados (via process_creation)
Ver
Tarefa Agendada Suspeita (via auditoria)
Ver
Comando e Controle Suspeito por Pedido DNS de Domínio de Primeiro Nível (TLD) Incomum (via dns)
Ver
Execução de Python a partir de Pastas Suspeitas (via linha de comando)
Ver
Execução Suspeita de Mshta Sem Arquivo HTA (via linha de comando)
Ver
Detecção do PyStoreRAT Usando Infraestrutura C2 Circular e Rotativa e Download Dinâmico de Módulos [Conexão de Rede Windows]
Ver
Detecção de Reativação de Conta Inativa do GitHub para Projetos Maliciosos [GitHub – Servidor Web]
Ver
Execução de Simulação
Pré-requisito: O Check de Pré-voo de Telemetria e Linha de Base deve ter sido aprovado.
-
Narrativa do Ataque e Comandos:
- Reativar uma conta inativa – o adversário usa a interface ou API do GitHub para alterar o status da conta de “inativa” para “ativa”.
- Publicar um repositório malicioso gerado por IA – imediatamente após a reativação, um novo repositório chamado
ai‑osint‑toolkité criado, contendo um README que anuncia “projetos gerados por IA”. - Adicionar um commit de “manutenção” que incorpora o backdoor PyStoreRAT; a mensagem do commit inclui intencionalmente a palavra “manutenção” para satisfazer a regra de detecção.
- Enviar o código malicioso – o envio gera um
evento de auditoria de envio, mas a regra que estamos testando só monitora a entrada de auditoria dereativação de conta, então o gatilho principal é o log de reativação com a descrição marcada.
-
Script de Teste de Regressão: (Bash usando a CLI do GitHub
gh– assume que o ator atacante possui um token de acesso pessoal comadmin:orgescopo)# simulate_attack.sh # Pré-requisitos: CLI do gh instalada e autenticada como o invasor # 1. Reativar conta inativa (simulada por atualização de um campo de usuário) gh api -X PATCH /admin/users/attacker_user -f state=active -f note="reativação: projetos gerados por IA; commits de manutenção agendados" # 2. Criar repositório malicioso gh repo create attacker_user/ai-osint-toolkit --public --description "ferramentas de OSINT geradas por IA" # 3. Adicionar arquivo malicioso (PyStoreRAT) e realizar commit cd ai-osint-toolkit echo "# Backdoor PyStoreRAT" > pystorerat.py git add pystorerat.py git commit -m "Commit inicial - commits de manutenção: incorporar backdoor" git push origin main # 4. Opcional: criar um segundo commit de manutenção para imitar atividade no mundo real echo "# Atualizar README" >> README.md git add README.md git commit -m "commit de manutenção: atualizar documentação" git push origin main -
Comandos de Limpeza:
# cleanup_attack.sh # Excluir o repositório malicioso gh repo delete attacker_user/ai-osint-toolkit -y # Opcionalmente, definir a conta do invasor de volta para inativa (se a API permitir) gh api -X PATCH /admin/users/attacker_user -f state=dormant