DarkGate Sob o Capô
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
Detecções
Detecção de Injeção APC via NtQueueApcThread e NtTestAlert no DarkGate [Windows Sysmon]
Ver
Detecção de Execução de Comando e Escalonamento de Privilégio do Malware DarkGate [Criação de Processo do Windows]
Ver
IOCs (HashMd5) para detectar: Internos do DarkGate
Ver
IOCs (HashSha256) para detectar: Internos do DarkGate
Ver
Execução Suspeita de AutoHotKey e AutoIT de Localização Incomum (via criação de processo)
Ver
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via evento_registro)
Ver
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 comcmdkey, em seguida usampsexec.exepara 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.- Coleta de Credenciais (T1552.001) – Armazene uma entrada de credencial criada que corresponda ao
padrão de seleção_cmdkeyda regra. - Movimento Lateral (T1219) – Execute
psexec.execontra um host remoto, invocando um comando que gera uma nova sessão do PowerShell. - Execução de PowerShell (T1059.001) – Execute um comando PowerShell que carrega um script malicioso (simulado aqui com um comando inofensivo codificado em base64).
- Implantação de Keylogger (T1056.001) – Compile e execute um pequeno binário C que chama
GetAsyncKeyState, gerando a correspondência doAPIcampo.
- Coleta de Credenciais (T1552.001) – Armazene uma entrada de credencial criada que corresponda ao
-
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