Ataques APT Visam o Governo da Índia com GOGITTER, GITSHELLPAD e GOSHELL | Parte 1
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Zscaler ThreatLabz descobriu duas campanhas – Gopher Strike e Sheet Attack lideradas por um grupo APT vinculado ao Paquistão, que visa organizações governamentais indianas. A atividade introduz ferramentas baseadas em Golang, incluindo GOGITTER, GITSHELLPAD e GOSHELL, para preparar cargas úteis, usar repositórios privados do GitHub para C2 e, finalmente, implantar um beacon do Cobalt Strike. O acesso inicial é conseguido por meio de spearphishing com PDFs que atraem as vítimas a baixar arquivos ISO maliciosos. Os operadores usam vários métodos de evasão, incluindo verificação de ambiente, preenchimento de arquivos, e persistência de tarefas agendadas.
Investigação
A análise mostrou que o GOGITTER valida a presença de um script windows_api.vbs, cria-o se ausente, e registra uma tarefa agendada para executá-lo a cada 50 minutos. O GITSHELLPAD usa a API REST do GitHub para recuperação de comandos e exfiltração de dados, enquanto o GOSHELL carrega condicionalmente um beacon do Cobalt Strike apenas em hostnames selecionados. As ferramentas incorporam URLs e strings user agent codificadas para dificultar a análise automatizada e o sandboxing. As campanhas também usaram repositórios privados do GitHub para hospedar cargas de suporte, como adobe_update.zip.
Mitigação
Bloqueie a execução de binários Golang não confiáveis/não assinados e imponha uma lista de permissões rigorosa e revisão para criação de tarefas agendadas. Monitore o tráfego de saída para domínios maliciosos conhecidos e para recursos do GitHub usados como C2, incluindo uso anômalo da API do GitHub de pontos de extremidade que não são de desenvolvedores. Fortaleça a segurança de e-mail escaneando anexos PDF em busca de ofuscação e bloqueando links que redirecionam para downloads de ISO. As detecções de endpoint devem alertar sobre a criação do windows_api.vbs e padrões de execução de tarefas periódicas consistentes com intervalos de 50 minutos.
Resposta
Se qualquer IOC for detectado, isole o endpoint, pare e remova a tarefa agendada, e exclua artefatos maliciosos associados. Realize uma revisão forense de atividades de C2 baseadas no GitHub, preserve logs de execução de comando e remova qualquer conteúdo exfiltrado ou carregado quando possível. Redefina credenciais para contas afetadas, procure movimentos laterais e atualize detecções com indicadores extraídos para identificar atividades relacionadas em todo o ambiente.
graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#b3e5fc classDef tool fill:#ffe0b2 classDef malware fill:#ffcccb classDef process fill:#d5f5e3 classDef operator fill:#ff9900 %% Nodes – Attack Steps step1_initial_access[“<b>Técnica</b> – T1204.002 Execução pelo Usuário: Arquivo Malicioso<br/><b>Descrição</b>: O usuário executa um arquivo malicioso entregue por engenharia social.<br/><b>Detalhe</b>: PDF de spear-phishing disfarçado como atualização do Adobe Acrobat; ao clicar em um botão falso, um ISO com o payload é baixado.”] class step1_initial_access technique step2_recon[“<b>Técnica</b> – T1593.003 Pesquisa em Sites/Domínios Abertos: Repositórios de Código<br/><b>Descrição</b>: O adversário coleta informações de sites públicos de hospedagem de código.<br/><b>Detalhe</b>: Atores de ameaça criam repositórios privados no GitHub que posteriormente hospedam C2 e payloads.”] class step2_recon technique step3_exec_vbscript[“<b>Técnica</b> – T1059.005 Interpretador de Comandos e Scripts: Visual Basic<br/><b>Descrição</b>: Executa scripts Visual Basic para rodar comandos.<br/><b>Detalhe</b>: O GOGITTER solta o windows_api.vbs e o executa para obter comandos adicionais de um servidor web.”] class step3_exec_vbscript technique step4_exec_cmd[“<b>Técnica</b> – T1059.003 Interpretador de Comandos e Scripts: Shell de Comando do Windows<br/><b>Descrição</b>: Usa o shell de comando nativo do Windows para execução.<br/><b>Detalhe</b>: O GITSHELLPAD executa comandos como net user, systeminfo, tasklist e curl.”] class step4_exec_cmd technique step5_persistence[“<b>Técnica</b> – T1053.005 Tarefa/Job Agendado: Tarefa Agendada<br/><b>Descrição</b>: Cria uma tarefa agendada para executar código malicioso periodicamente.<br/><b>Detalhe</b>: O GOGITTER cria uma tarefa chamada MicrosoftEdge_ConfigurationUpdate_<random> que executa o VBScript a cada 50 minutos.”] class step5_persistence technique step6_masquerade[“<b>Técnica</b> – T1036.008 Mascaramento: Tipo de Arquivo Mascarado e T1036.007 Extensão Dupla de Arquivo<br/><b>Descrição</b>: Arquivos são nomeados para parecerem legítimos e ocultar seu tipo real.<br/><b>Detalhe</b>: Arquivos criados com nomes windows_api.vbs, adobe_update.zip, edgehost.exe.”] class step6_masquerade technique step7_obfuscation[“<b>Técnica</b> – T1027.015 Arquivos ou Informações Ofuscadas: Compressão<br/><b>Descrição</b>: Usa compressão para ocultar payloads maliciosos.<br/><b>Detalhe</b>: Payloads empacotados em arquivos ZIP/RAR hospedados no repositório privado do GitHub.”] class step7_obfuscation technique step8_account_disc[“<b>Técnica</b> – T1087.001 Descoberta de Contas: Conta Local<br/><b>Descrição</b>: Enumera contas de usuários locais no sistema.<br/><b>Detalhe</b>: O GITSHELLPAD executa \”net user\” para listar contas.”] class step8_account_disc technique step9_network_disc[“<b>Técnica</b> – T1016.001 Descoberta da Configuração de Rede do Sistema: Descoberta de Conectividade com a Internet<br/><b>Descrição</b>: Verifica conectividade com a Internet e endpoints C2 acessíveis.<br/><b>Detalhe</b>: Usa curl para testar conectividade com domínios do atacante.”] class step9_network_disc technique step10_collection[“<b>Técnica</b> – T1560.002 Arquivar Dados Coletados: Arquivamento via Biblioteca<br/><b>Descrição</b>: Comprime os dados coletados em arquivos para uso posterior.<br/><b>Detalhe</b>: Ferramentas pós-comprometimento entregues como arquivos ZIP/RAR.”] class step10_collection technique step11_c2[“<b>Técnica</b> – T1102.001 Serviço Web: Dead Drop Resolver<br/><b>Descrição</b>: Comunica-se com C2 por meio de um serviço web que atua como dead-drop.<br/><b>Detalhe</b>: Usa a API REST do GitHub para enviar info.txt e consultar command.txt.”] class step11_c2 technique step12_exfil[“<b>Técnica</b> – T1567.001 Exfiltração por Serviço Web: Exfiltração para Repositório de Código<br/><b>Descrição</b>: Exfiltra dados enviando-os para um repositório de código.<br/><b>Detalhe</b>: O info.txt coletado é enviado para um repositório GitHub controlado pelo atacante.”] class step12_exfil technique %% Connections – Attack Flow step1_initial_access –>|leva_a| step2_recon step2_recon –>|leva_a| step3_exec_vbscript step3_exec_vbscript –>|leva_a| step4_exec_cmd step4_exec_cmd –>|leva_a| step5_persistence step5_persistence –>|leva_a| step6_masquerade step6_masquerade –>|leva_a| step7_obfuscation step7_obfuscation –>|leva_a| step8_account_disc step8_account_disc –>|leva_a| step9_network_disc step9_network_disc –>|leva_a| step10_collection step10_collection –>|leva_a| step11_c2 step11_c2 –>|leva_a| step12_exfil
Fluxo de Ataque
Detecções
Tentativa Possível de Comunicações de Domínio de Pesquisa de IP (via dns)
Ver
Processo Suspeito Utiliza um URL na Linha de Comando (via cmdline)
Ver
Uso Suspeito do CURL (via cmdline)
Ver
Possível Enumeração de Sistema (via cmdline)
Ver
Possível Enumeração de Conta ou Grupo (via cmdline)
Ver
Arquivos Extraídos Suspeitos de um Arquivo (via file_event)
Ver
Possível Descoberta de Configuração de Rede de Sistema (via cmdline)
Ver
IOCs (HashSha1) para detectar: Ataques APT visando o governo indiano usando GOGITTER, GITSHELLPAD e GOSHELL | Parte 1
Ver
IOCs (HashMd5) para detectar: Ataques APT visando o governo indiano usando GOGITTER, GITSHELLPAD e GOSHELL | Parte 1
Ver
IOCs (HashSha256) para detectar: Ataques APT visando o governo indiano usando GOGITTER, GITSHELLPAD e GOSHELL | Parte 1
Ver
Detecção do Backdoor GITSHELLPAD e Comandos de Limpeza [Criação de Processos do Windows]
Ver
Detecção do Downloader GOGITTER e Comunicação C2 [Conexão de Rede do Windows]
Ver
Execução de Simulação
Pré-requisito: O Telemetria & Check de Pré-voo de Linha de Base deve ter passado.
Racional: 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 visam gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.
-
Narrativa de Ataque & Comandos:
Um grupo APT implanta o backdoor GITSHELLPAD (edgehost.exe) em um host Windows comprometido. Para se misturar ao comportamento esperado do sistema, o atacante lança o backdoor via o shell de comando do Windows (cmd /c). Após completar sua carga (por exemplo, baixando módulos adicionais), o backdoor realiza uma “limpeza” terminando seu próprio processo usandotaskkill /F /PID <PID>. Ambas as ações geram eventos de criação de processos que contêm o nome do binário e as substrings de linha de comando necessárias, satisfazendo a regra Sigma. -
Script de Teste de Regressão:
# ------------------------------------------------- # Simular execução e limpeza do backdoor GITSHELLPAD # ------------------------------------------------- # 1. Solte um edgehost.exe de marcador de posição (qualquer executável benigno) $src = "$env:SystemRootSystem32notepad.exe" $dst = "$env:TEMPedgehost.exe" Copy-Item -Path $src -Destination $dst -Force # 2. Lançar edgehost.exe via cmd /c (corresponde ao padrão de cmd_cmd) $proc = Start-Process -FilePath "cmd.exe" -ArgumentList "/c `"$dst`"" -PassThru # 3. Aguarde alguns segundos para garantir que o processo esteja ativo Start-Sleep -Seconds 5 # 4. Limpeza: mate o processo edgehost.exe usando taskkill (corresponde ao padrão de taskkill_cmd) $pid = $proc.Id cmd /c "taskkill /F /PID $pid" # 5. Remova o arquivo solto Remove-Item -Path $dst -Force -
Comandos de Limpeza:
# Garanta que qualquer instância de edgehost.exe remanescente seja terminada Get-Process -Name "edgehost" -ErrorAction SilentlyContinue | Stop-Process -Force # Apague o binário temporário se ainda estiver presente $tempPath = "$env:TEMPedgehost.exe" if (Test-Path $tempPath) { Remove-Item $tempPath -Force }