SOC Prime Bias: Crítico

02 Jun 2026 19:43 UTC

Detectando Nimbus Manticore e suas cadeias de infecção por sideloading

Author Photo
SOC Prime Team linkedin icon Seguir
Detectando Nimbus Manticore e suas cadeias de infecção por sideloading
shield icon

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

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 do setup.exe binário legítimo do Visual Studio, renomeou-o para setup.exe (mantendo o nome inalterado para evitar suspeita) e o colocou em um diretório gravável. Eles criaram uma DLL maliciosa chamada TOTPGuard.dll que contém a carga útil. Para sequestrar o AppDomain, eles embutem a string AppDomainInjection no 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|contains na 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"
        }
    }