Red Team

Initial Access Simulado: Macros, LNK e ISO em Lab Windows 11 Isolado

Por Equipe Basilisk ·

Reproduzimos tres vetores classicos de initial access em um lab Windows 11 fechado para entender o que o EDR realmente registra e onde a deteccao falha.

Quem trabalha com red team sabe que initial access continua sendo o capitulo mais teimoso do playbook. Macros do Office foram declaradas mortas em 2022 quando a Microsoft bloqueou VBA por padrao em arquivos da internet, e mesmo assim, em 2025, a Mandiant ainda mapeou campanhas do Storm-0978 entregando .docm via HTML smuggling. Montamos um lab com Windows 11 23H2, Defender for Endpoint em modo audit e Sysmon 15 com configuracao do SwiftOnSecurity para reproduzir tres vetores: macro VBA classica, arquivo LNK com argumentos ofuscados e ISO contendo LNK + DLL side-load. Tudo offline, em VLAN isolada, snapshot antes de cada execucao. O objetivo nao foi quebrar EDR, foi entender o que ele realmente loga.

O primeiro teste foi a macro. Geramos um .docm com AutoOpen chamando WScript.Shell para baixar um payload via certutil. Mark-of-the-Web ativo? Defender bloqueou antes do prompt. Removendo MOTW com Alternate Data Stream zerado (powershell -Command "Clear-Content -Stream Zone.Identifier"), a macro executou. No Sysmon EventID 1 vimos winword.exe gerando cmd.exe com command line completo, e EventID 3 com a conexao saindo na porta 80. Isso casa com a regra Sigma proc_creation_win_office_susp_child_processes que muitas equipes ja tem. Para entender o pipeline defensivo end-to-end vale revisitar Threat Hunting com Sigma e Elastic: Do Indicador a Regra de Deteccao e cruzar com Hunting de Living-off-the-Land Binaries no Windows com KQL, porque o problema raramente e a regra existir, e sim ela estar habilitada em producao.

Vetor dois: LNK. Geramos um atalho com target apontando para powershell.exe -nop -w hidden -enc e icone copiado de um PDF legitimo. O LNK vem dentro de um .zip baixado via navegador. Aqui a coisa fica interessante: o Defender SmartScreen olha o reputation do binario chamado, nao do LNK. Como powershell.exe tem reputacao perfeita, passou. O que pegou foi AMSI inspecionando o script decodificado em memoria, gerando EventID 4104 do PowerShell ScriptBlockLogging. Sem ScriptBlockLogging habilitado (politica padrao em muito ambiente), o vetor passa silencioso. Pesquisadores que queiram entender o outro lado dessa moeda devem ler Bypass de AMSI e ETW para Pesquisa Defensiva: O que Blue Teams Devem Saber com cuidado, e quem opera defesa precisa garantir o pipeline descrito em Hardening de Windows 11 para Estacoes de Trabalho de Alto Risco.

Vetor tres foi o mais bem sucedido em fingir ser benigno: ISO com LNK + DLL legitima vulneravel a side-loading. Anexamos a ISO via mount automatico (comportamento padrao do Explorer no Windows 11), o usuario ve apenas um "PDF" que e na verdade o LNK chamando uma copia renomeada do OneDriveStandaloneUpdater.exe que carrega nossa version.dll do mesmo diretorio. Como o binario assinado pela Microsoft e quem faz LoadLibrary, a telemetria de EventID 7 (Image loaded) mostra a DLL nao assinada, mas o parent process e legitimo. Defender nao alertou. Foi necessario habilitar Attack Surface Reduction com a regra Block untrusted unsigned processes that run from USB e tunar para mounted images, algo que Adversary Emulation com Caldera e MITRE ATT&CK em Lab Corporativo tambem cobre em detalhe.

O que aprendemos olhando os tres testes lado a lado: a deteccao depende mais de configuracao do que de produto. Sysmon sem schema correto, PowerShell sem ScriptBlockLogging, ASR em audit eterno, MOTW ignorado por arquivos extraidos com 7zip antigo. Cada um desses pontos transforma um vetor visivel em vetor cego. Vale lembrar que nada disso e novo, todos os comportamentos estao mapeados em T1566.001, T1204.002 e T1574.002 do MITRE ATT&CK, e existem ha anos. Equipes que ainda nao construiram o ciclo descrito em Purple Team na Pratica: Construindo Ciclo de Feedback Red x Blue vao continuar redescobrindo essas lacunas em vez de fechar uma vez.

Tambem testamos a cadeia completa subindo um C2 minimalista para validar callback, separado em outra VLAN para nao misturar trafego de simulacao com trafego de gerenciamento. Detalhes operacionais dessa parte ficam em Construindo Infra de C2 com Sliver em Lab Isolado para Estudo Defensivo, que ja documentamos. O ponto importante e que initial access nao termina na execucao, termina no beacon estavel; e cada hop dali pra frente tem sua propria janela de deteccao. Se voce so olha o EventID 1 do Sysmon e nao correlaciona com DNS, TLS JA3 e fluxos de saida, vai perder metade da historia.

Takeaway pratico: nao gaste sprint reescrevendo macro obfuscation se a sua equipe ainda nao habilitou ScriptBlockLogging, Sysmon com config curada e ASR fora de audit. Reproduza os tres vetores deste post em um lab isolado, snapshotado, sem conexao com producao, e gere as evidencias de qual EventID dispara em qual estagio. Documente o gap. So depois disso faz sentido evoluir para tecnicas mais ruidosas como direct syscalls, que cobrimos em Evasao de EDR para Pesquisa: Direct Syscalls Explicados sem Romantizacao. Ferramenta cara sem configuracao decente continua sendo dashboard bonito enquanto o adversario passa pelo terreno baldio do lado.

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly