Campanha AsyncRAT Usa AutoIt para Entrega de Malware em Múltiplos Estágios
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Foi identificada uma cadeia de infecção de cinco estágios do AsyncRAT que utiliza um arquivo de lote criado socialmente e o interpretador legítimo AutoIt para execução. O malware depende de ofuscação em camadas, incluindo reconstrução de fragmentos Base64 e múltiplas rodadas de descriptografia XOR, para evitar a detecção. O estágio final implanta uma carga útil AsyncRAT baseada em .NET que é injetada em um processo legítimo do Windows para roubar informações e capturar capturas de tela.
Investigação
A investigação rastreou a execução de um arquivo de lote malicioso até um script PowerShell, seguido por um script carregador AutoIt nomeado kojuyn.ini que solta uma carga útil criptografada. Os analistas usaram PE-Sieve para confirmar a injeção de processos em charmap.exe e determinaram que a carga útil era um assembly .NET capaz de ajustar o AMSI. A carga final foi recuperada da memória como Veukuzmw.dll.
Mitigação
Os defensores devem monitorar a execução suspeita de PowerShell usando janelas ocultas e para arquivos de lote criados na pasta de Inicialização do Usuário. As organizações devem restringir a execução de scripts não assinados e observar binários legítimos como charmap.exe iniciando conexões de rede de saída inesperadas. Recomenda-se também o monitoramento aprimorado da atividade do interpretador AutoIt e tentativas de injeção de memória.
Resposta
Se for detectada atividade do AsyncRAT, o ponto de extremidade afetado deve ser isolado imediatamente para interromper mais comunicações C2 ou exfiltração de dados. Os respondedores devem realizar uma análise forense de memória para identificar cargas injetadas e preservar artefatos voláteis. Os sistemas também devem ser verificados em busca de mecanismos de persistência na pasta de Inicialização, enquanto o histórico de comandos do PowerShell deve ser revisado para estágios adicionais ou movimentos laterais.
Fluxo de Ataque
Ainda estamos atualizando esta parte.
Detecções
Executável Suspeito Contendo Apenas Números No Nome (via linha de comando)
Strings Suspeitas do Powershell (via powershell)
Possíveis Indicadores de Ofuscação do Powershell (via powershell)
Binário / Scripts Suspeitos na Localização de Autoinicialização (via evento_de_arquivo)
IOCs (HashSha256) para detectar: AsyncRAT Entregue via AutoIT: Análise Completa da Cadeia
IOCs (SourceIP) para detectar: AsyncRAT Entregue via AutoIT: Análise Completa da Cadeia
IOCs (DestinationIP) para detectar: AsyncRAT Entregue via AutoIT: Análise Completa da Cadeia
Injeção de Processo AsyncRAT em charmap.exe [Criação de Processo do Windows]
Persistência do PowerShell via Pasta de Inicialização [Windows Powershell]
Execução da Simulação
-
Narrativa de Ataque & Comandos: O atacante obteve acesso inicial e deseja estabelecer persistência. Para evitar a detecção, evitam modificações diretas no Registro. Em vez disso, usam um shell de comando (
cmd.exe) para invocar uma instância oculta do PowerShell. Esta instância do PowerShell é instruída a escrever um pequeno arquivo de lote malicioso na pasta de Inicialização do usuário atual. Isso garante que, mesmo após uma reinicialização, o código do atacante será executado automaticamente quando o usuário fizer login. -
Script de Teste de Regressão:
# Este script simula a cadeia exata: CMD -> PowerShell (Oculto) -> Escreve em Inicialização $startupFolder = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartup" $targetFile = Join-Path $startupFolder "persistence_test.bat" $payloadContent = "@echo off`necho 'Teste de Persistência Bem-sucedido'" # Executamos via CMD para satisfazer o requisito 'ParentImage: cmd.exe' da regra Start-Process cmd.exe -ArgumentList "/c powershell.exe -WindowStyle Hidden -Command `"$payloadContent | Out-File -FilePath '$targetFile' -Encoding ascii`"" -Wait Write-Host "Comando de simulação enviado. Verifique Sysmon Event ID 1 e 11." -
Comandos de Limpeza:
$startupFolder = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartup" $targetFile = Join-Path $startupFolder "persistence_test.bat" if (Test-Path $targetFile) { Remove-Item $targetFile -Force Write-Host "Limpeza completa: $targetFile removido." } else { Write-Host "Arquivo não encontrado, limpeza desnecessária." }