SOC Prime Bias: Médio

25 Nov 2025 18:38

DarkGate Sob o Capô

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
DarkGate Sob o Capô
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

DarkGate é um carregador baseado em Delphi vendido como Malware-as-a-Service em mercados criminosos. Inclui funcionalidade total de RAT, resolução dinâmica de API e truques de evasão em camadas, como conjuntos de caracteres base64 personalizados, estilo Union-API syscall carregamento e injeção APC. A ferramenta, atribuída ao vendedor “RastaFarEye”, foi adotada por atores como TA577 e Ducktail. Ela se comunica com C2 via HTTP com cargas úteis ofuscadas e pode implantar utilitários de desktop remoto, roubar tokens do Discord e executar um shell reverso interativo.

Análise de Malware DarkGate

A publicação oferece um tutorial aprofundado de engenharia reversa do executável DarkGate, explicando seu embaralhamento de configuração sob medida, geração de BotID movida a XOR e registro criptografado. Cataloga as técnicas de persistência do carregador, caminhos de escalonamento de privilégios, fluxos de trabalho de roubo de tokens e abuso de binários legítimos como PsExec e Extexport para carregamento de DLL. O artigo documenta ainda mais os padrões de comunicação C2, credenciais hVNC padrão e as portas HTTP típicas utilizadas (2351 e 9999).

Mitigação

As equipes de segurança devem monitorar a criação dos arquivos e entradas de execução no registro referenciados, invalidar ou bloquear imediatamente as credenciais hVNC padrão e detectar o uso de PsExec e Extexport para o carregamento de DLLs não aprovadas. A análise de comportamento deve cobrir o uso de syscall Union-API, injeção APC via NtTestAlert e falsificação de PID pai. As defesas de rede podem sinalizar portas HTTP incomuns e tentar decodificar os alfabetos base64 personalizados do DarkGate para revelar o tráfego C2.

Resposta

Uma vez confirmada a atividade do DarkGate, isole o endpoint afetado, colha os artefatos documentados, termine processos maliciosos e limpe todos os pontos de persistência. Rotacione quaisquer credenciais expostas e bloqueie domínios e intervalos de IP conhecidos de C2. Uma revisão forense completa deve identificar quaisquer cargas úteis secundárias e verificar que todas as DLLs introduzidas por meio de Extexport ou carregadores relacionados foram erradicadas.

mermaid graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#c2e0ff classDef action fill:#d9ffd9 %% Nodes – Techniques step_initial_infection[“<b>Técnica</b> – <b>T1055.001: Acesso Inicial via Script AutoIt</b><br/>Script AutoIt é usado para entregar o payload de malware ao sistema da vítima.”] class step_initial_infection technique step_dynamic_api[“<b>Técnica</b> – <b>T1027.007: Arquivos Ofuscados/Armazenados – Resolução Dinâmica de API</b><br/>Código malicioso resolve as APIs do Windows necessárias em tempo de execução para evitar a análise estática.”] class step_dynamic_api technique step_union_syscall[“<b>Técnica</b> – <b>T1106: API Nativa</b><br/>Evasão syscall Union API é realizada para ocultar comportamentos maliciosos das ferramentas de monitoramento.”] class step_union_syscall technique step_process_injection[“<b>Técnica</b> – <b>T1055.004: Injeção de Processo – APC</b><br/>Injeção de Chamada de Procedimento Assíncrona é usada para executar código malicioso dentro de um processo legítimo.”] class step_process_injection technique step_token_manipulation[“<b>Técnica</b> – <b>T1134: Manipulação de Token de Acesso</b><br/>O atacante rouba ou modifica tokens de acesso para obter privilégios elevados.”] class step_token_manipulation technique step_priv_esc_psexec[“<b>Técnica</b> – <b>T1548.002: Abuso do Mecanismo de Controle de Elevação – PsExec</b><br/>PsExec é utilizado para executar comandos como um usuário de maior privilégio em sistemas remotos.”] class step_priv_esc_psexec technique step_persistence[“<b>Técnica</b> – <b>T1547.001: Scripts de Inicialização do Boot ou Logon – LNK e Execução no Registro</b><br/>Arquivos de atalho e chaves de execução no registro são criados para garantir que o malware inicie na inicialização.”] class step_persistence technique step_keylogging[“<b>Técnica</b> – <b>T1056.001: Captura de Entrada – Keylogging</b><br/>As teclas do usuário são gravadas para capturar credenciais e dados sensíveis.”] class step_keylogging technique step_remote_vnc[“<b>Técnica</b> – <b>T1021.005: Serviços Remotos – VNC</b><br/>Um servidor VNC oculto fornece ao atacante acesso remoto interativo à área de trabalho.”] class step_remote_vnc technique step_command_execution[“<b>Técnica</b> – <b>T1059.001: Interpretação de Comandos e Scripts – PowerShell</b> e <b>T1059.003: Interpretação de Comandos e Scripts – Shell de Comando Windows</b><br/>PowerShell e cmd são usados para executar comandos adicionais do atacante.”] class step_command_execution technique step_c2_communication[“<b>Técnica</b> – <b>T1102.002/T1102.003: Protocolo de Camada de Aplicação – Protocolos Web (HTTP/HTTPS)</b> e <b>T1132.002: Codificação de Dados – Codificação Padrão</b><br/>O tráfego C2 é enviado via HTTP com codificação personalizada para se misturar com o tráfego web normal.”] class step_c2_communication technique step_environment_checks[“<b>Técnica</b> – <b>T1497.001: Evasão de Virtualização/Sandbox – Verificações de Sistema</b> e <b>T1112: Modificar Registro</b><br/>O malware examina o ambiente e altera valores do registro para ocultar sua presença.”] class step_environment_checks technique %% Nodes – Tools tool_autoit[“<b>Ferramenta</b> – <b>Nome</b>: AutoIt<br/><b>Descrição</b>: Linguagem de script usada para criar o script de infecção inicial.”] class tool_autoit tool tool_psexec[“<b>Ferramenta</b> – <b>Nome</b>: PsExec<br/><b>Descrição</b>: Utilitário de execução remota que executa processos com privilégios elevados.”] class tool_psexec tool tool_vnc[“<b>Ferramenta</b> – <b>Nome</b>: Servidor VNC Oculto<br/><b>Descrição</b>: Fornece capacidade de área de trabalho remota furtiva para o atacante.”] class tool_vnc tool %% Connections – Attack Flow step_initial_infection u002du002d>|utiliza| tool_autoit step_initial_infection u002du002d>|leva para| step_dynamic_api step_dynamic_api u002du002d>|leva para| step_union_syscall step_union_syscall u002du002d>|leva para| step_process_injection step_process_injection u002du002d>|leva para| step_token_manipulation step_token_manipulation u002du002d>|leva para| step_priv_esc_psexec step_priv_esc_psexec u002du002d>|utiliza| tool_psexec step_priv_esc_psexec u002du002d>|leva para| step_persistence step_persistence u002du002d>|leva para| step_keylogging step_keylogging u002du002d>|leva para| step_remote_vnc step_remote_vnc u002du002d>|utiliza| tool_vnc step_remote_vnc u002du002d>|leva para| step_command_execution step_command_execution u002du002d>|leva para| step_c2_communication step_c2_communication u002du002d>|leva para| step_environment_checks

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Check de Pré-voo de Telemetria & Baseline deve ter sido aprovado.

  • Narrativa de Ataque & Comandos:
    O adversário simulado já infiltrou o endpoint e busca estabelecer acesso persistente via RDP. Primeiro, eles coletam credenciais armazenando-as com cmdkey, em seguida usam psexec.exe para mover-se lateralmente, e finalmente lançam uma carga útil do PowerShell que solta um stub de key-logger. Cada etapa é projetada para gerar exatamente os eventos de criação de processo que a regra de detecção monitora.

    1. Coleta de Credenciais (T1552.001) – Armazene uma entrada de credencial criada que corresponda ao padrão de seleção_cmdkey da regra.
    2. Movimento Lateral (T1219) – Execute psexec.exe contra um host remoto, invocando um comando que gera uma nova sessão do PowerShell.
    3. Execução de PowerShell (T1059.001) – Execute um comando PowerShell que carrega um script malicioso (simulado aqui com um comando inofensivo codificado em base64).
    4. Implantação de Keylogger (T1056.001) – Compile e execute um pequeno binário C que chama GetAsyncKeyState, gerando a correspondência do API campo.
  • Script de Teste de Regressão:

    # Script de Simulação DarkGate – PowerShell
    # --------------------------------------------------
    # 1. Entrada de credencial Cmdkey (corresponde ao padrão de detecção)
    $generic = '""'                         # genérico vazio como usado pelo DarkGate
    $user    = 'SafeMode'                   # nome de usuário que a regra espera
    $pass    = 'darkgatepassword0'          # senha que a regra espera
    cmd.exe /c cmdkey /generic:$generic /user:$user /pass:$pass
    
    # 2. Movimento lateral com PsExec (o binário deve existir no PATH ou especificar caminho completo)
    $remoteHost = '10.0.0.5'
    $psexecPath = "$env:SystemRootSystem32psexec.exe"
    if (Test-Path $psexecPath) {
        & $psexecPath \$remoteHost -accepteula cmd /c "whoami"
    } else {
        Write-Host "PsExec não encontrado em $psexecPath – pulando esta etapa."
    }
    
    # 3. Execução de PowerShell (comando inofensivo codificado em base64)
    $psCommand = 'Write-Output "PowerShell payload executed"'
    $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($psCommand))
    powershell.exe -EncodedCommand $encoded
    
    # 4. Compilação e execução do stub do keylogger
    $cSource = @"
    #include <windows.h>
    int main() {
        // Chamada simples para GetAsyncKeyState para satisfazer a correspondência da API
        GetAsyncKeyState(VK_RETURN);
        return 0;
    }
    "@
    $srcPath = "$env:TEMPkeylog_stub.c"
    $exePath = "$env:TEMPkeylog_stub.exe"
    $cSource | Set-Content -Path $srcPath -Encoding ASCII
    # Compile com Visual C++ (cl.exe deve estar no PATH)
    cl.exe /nologo /O2 /Fe:$exePath $srcPath
    if (Test-Path $exePath) {
        & $exePath
    }
  • Comandos de Limpeza:

    # Remova a entrada de credencial
    cmd.exe /c cmdkey /delete:$generic
    
    # Delete arquivos temporários
    Remove-Item -Force -ErrorAction SilentlyContinue "$env:TEMPkeylog_stub.c"
    Remove-Item -Force -ErrorAction SilentlyContinue "$env:TEMPkeylog_stub.exe"
    
    # Opcional: termine quaisquer processos psexec ou powershell lançados pelo script
    Get-Process -Name psexec, powershell -ErrorAction SilentlyContinue | Stop-Process -Force