Detectando Nimbus Manticore e suas cadeias de infecção por sideloading
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Nimbus Manticore, também rastreado como UNC1549, realizou uma campanha de phishing direcionada que usou portais de recrutamento falsos para entregar uma cadeia de malware .NET multiestágio. O ataque abusou de componentes legítimos do Microsoft Visual Studio juntamente com sequestro de AppDomain para carregar uma DLL personalizada, que então implantou uma DLL de segunda fase e criou persistência por meio de uma tarefa agendada. A infraestrutura de comando e controle foi hospedada em domínios baseados no Azure. A campanha visou principalmente empresas aeroespaciais e de defesa no Oriente Médio e na Europa.
Investigação
Pesquisadores reconstruíram toda a cadeia de infecção, começando com o atrativo do LinkedIn e continuando pelo arquivo ZIP, o setup.exe.config alterado e o stager criptografado. A análise deles revelou o abuso de um ServiceHub.VSDetouredHost.exerenomeado, o TOTPGuard.dll , um cabeçalho PE criptografado com AES, e uma tarefa agendada acionada por logon chamada BackupCheck. Indicadores de rede também apontaram para vários domínios hospedados no Azure usados para comunicações de comando e controle.
Mitigação
As organizações devem treinar os funcionários para identificar engenharia social temática de recrutamento, bloquear ou monitorar de perto domínios recém-registrados, e aplicar o AppLocker ou controles equivalentes em diretórios graváveis pelo usuário. Os defensores também devem observar tarefas agendadas chamadas BackupCheck ou execuções usando o argumento doit . Recomenda-se ainda monitorar o comportamento de sequestro de AppDomain em aplicativos .NET e tráfego suspeito para domínios de comando e controle hospedados no Azure.
Resposta
Se for detectada atividade relacionada, isole o ponto de extremidade afetado, colete os binários maliciosos e a definição da tarefa agendada, e bloqueie os domínios Azure associados, bem como o portal de recrutamento falso. Os investigadores devem realizar uma revisão forense da pasta AppData2FAGuard , remover a tarefa de persistência e caçar atividade similar em outros sistemas usando as mesmas assinaturas YARA. A lógica de detecção deve então ser atualizada com os novos indicadores identificados.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ccffcc classDef process fill:#ffdddd %% Nodes action_phishing[“<b>Action</b> – <b>T1566.002 Spearphishing Link</b><br/>As vítimas recebem mensagens do LinkedIn que se passam por um recrutador e contêm um link malicioso para um portal de emprego falso.”] class action_phishing action action_delivery[“<b>Action</b> – Distribuição via ZIP malicioso<br/>O portal falso fornece um arquivo ZIP que contém um binário da Microsoft disfarçado e arquivos ocultos.”] class action_delivery action file_malicious_zip[“<b>File</b> – <b>Name</b>: payload.zip<br/><b>Contains</b>: setup.exe e arquivos ocultos adicionais”] class file_malicious_zip file file_setup_exe[“<b>File</b> – <b>Name</b>: setup.exe (renomeado ServiceHub.VSDetouredHost.exe)<br/><b>Signature</b>: Assinatura de código válida da Microsoft”] class file_setup_exe file action_execution_proxy[“<b>Action</b> – <b>T1218 System Binary Proxy Execution</b><br/>Usa o binário assinado da Microsoft como proxy para executar código malicioso.”] class action_execution_proxy action action_masquerade[“<b>Action</b> – <b>T1036.001 Invalid Code Signature Masquerading</b><br/>Renomeia o binário assinado legítimo para parecer benigno e evitar detecção.”] class action_masquerade action action_hijack_path[“<b>Action</b> – <b>T1574.008 Search Order Hijacking</b><br/>O arquivo setup.exe.config manipula a ordem de busca para carregar componentes controlados pelo atacante.”] class action_hijack_path action action_hijack_appdomain[“<b>Action</b> – <b>T1574.014 AppDomainManager Hijack</b><br/>Força o runtime .NET a carregar a DLL maliciosa TOTPGuard.dll via AppDomainManager.”] class action_hijack_appdomain action file_totpguard[“<b>File</b> – <b>Name</b>: TOTPGuard.dll<br/><b>Purpose</b>: Fornece uma função 2FA personalizada usada pelo payload malicioso.”] class file_totpguard file action_ide_extension[“<b>Action</b> – <b>T1176.002 IDE Extensions</b><br/>Abusa do componente host do Visual Studio para executar o payload.”] class action_ide_extension action action_persistence[“<b>Action</b> – <b>T1037.001 Scheduled Task</b><br/>Cria uma tarefa agendada chamada \”BackupCheck\” que executa no login com o argumento \”doit\”.”] class action_persistence action action_env_keying[“<b>Action</b> – <b>T1480.001 Environmental Keying</b><br/>Implanta um payload AES criptografado com chave e IV embutidos, criptografando o cabeçalho MZ para execução condicional.”] class action_env_keying action action_virtual_instance[“<b>Action</b> – <b>T1564.006 Run Virtual Instance</b><br/>Incorpora uma interface gráfica funcional de 2FA para simular um fluxo legítimo e ocultar atividade maliciosa.”] class action_virtual_instance action %% Connections action_phishing –>|delivers| action_delivery action_delivery –>|provides| file_malicious_zip file_malicious_zip –>|contains| file_setup_exe file_setup_exe –>|used for| action_execution_proxy action_execution_proxy –>|combined with| action_masquerade action_masquerade –>|enables| action_hijack_path action_hijack_path –>|leads to| action_hijack_appdomain action_hijack_appdomain –>|loads| file_totpguard file_totpguard –>|enables| action_ide_extension action_ide_extension –>|supports| action_persistence action_persistence –>|establishes| action_env_keying action_env_keying –>|facilitates| action_virtual_instance
Fluxo de Ataque
Detecções
Domínio Azurewebsites Possível Contatado por Processo Incomum (via dns_query)
Visualizar
Tarefa Agendada Suspeita (via auditoria)
Visualizar
IOCs (HashSha256) para detectar: Detectando Nimbus Manticore e suas cadeias de infecção de carregamento lateral
Visualizar
IOCs (SourceIP) para detectar: Detectando Nimbus Manticore e suas cadeias de infecção de carregamento lateral
Visualizar
IOCs (DestinationIP) para detectar: Detectando Nimbus Manticore e suas cadeias de infecção de carregamento lateral
Visualizar
Detecção de Comunicação C2 do Nimbus Manticore via Domínios Azure [Conexão de Rede Windows]
Visualizar
Detecção da Cadeia de Infecção do Carregamento Lateral do Nimbus Manticore [Criação de Processo do Windows]
Visualizar
Execução de Simulação
Pré-requisito: Verificação Pré‑voo de Telemetria e Base deve ter passado.
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 as TTPs identificadas e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque e Comandos:
Um atacante obteve uma cópia dosetup.exebinário legítimo do Visual Studio, renomeou-o parasetup.exe(mantendo o nome inalterado para evitar suspeita) e o colocou em um diretório gravável. Eles criaram uma DLL maliciosa chamadaTOTPGuard.dllque contém a carga útil. Para sequestrar o AppDomain, eles embutem a stringAppDomainInjectionno argumento do caminho PDB. O atacante então lança o executável com a seguinte linha de comando:C:Tempsetup.exe /install /doit /dll "C:TempTOTPGuard.dll" /pdb "C:TempAppDomainInjection.pdb"Essa invocação exata satisfaz todas as três condições
CommandLine|containsna regra Sigma, causando a ativação da regra no evento ProcessCreate. -
Script de Teste de Regressão:
# ------------------------------------------------- # Script de regressão para acionar a detecção do Nimbus Manticore # ------------------------------------------------- $exePath = "C:Tempsetup.exe" $dllPath = "C:TempTOTPGuard.dll" $pdbPath = "C:TempAppDomainInjection.pdb" # Assegure que os arquivos existam (crie marcadores de posição para o teste) New-Item -ItemType File -Path $exePath -Force | Out-Null New-Item -ItemType File -Path $dllPath -Force | Out-Null New-Item -ItemType File -Path $pdbPath -Force | Out-Null # Construa a linha de comando maliciosa $arguments = @( "/install" "/doit" "/dll `"$dllPath`"" "/pdb `"$pdbPath`"" ) -join " " Write-Host "Lançando setup.exe malicioso com argumentos:" Write-Host $arguments # Execute o processo (irá terminar imediatamente pois o exe dummy não faz nada) Start-Process -FilePath $exePath -ArgumentList $arguments -PassThru | Out-Null -
Comandos de Limpeza:
# ------------------------------------------------- # Limpeza dos artefatos criados para o teste de regressão # ------------------------------------------------- $paths = @( "C:Tempsetup.exe", "C:TempTOTPGuard.dll", "C:TempAppDomainInjection.pdb" ) foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Force Write-Host "Removed $p" } }