Red Team

Initial Access Simulado: Macros, LNK e ISO en un Lab Windows 11 Aislado

Por Equipe Basilisk ·

Reproducimos tres vectores clasicos de initial access en un lab Windows 11 cerrado para entender que registra realmente el EDR y donde falla la deteccion.

Quien trabaja en red team sabe que initial access sigue siendo el capitulo mas terco del playbook. Las macros de Office se declararon muertas en 2022 cuando Microsoft bloqueo VBA por defecto en archivos de internet, y aun asi, en 2025, Mandiant siguio mapeando campanas de Storm-0978 entregando .docm via HTML smuggling. Montamos un lab con Windows 11 23H2, Defender for Endpoint en modo audit y Sysmon 15 con la configuracion de SwiftOnSecurity para reproducir tres vectores: macro VBA clasica, archivo LNK con argumentos ofuscados e ISO con LNK mas DLL side-loading. Todo offline, VLAN aislada, snapshot antes de cada ejecucion. El objetivo no fue romper el EDR, fue entender que registra realmente.

El primer test fue la macro. Generamos un .docm con AutoOpen llamando a WScript.Shell para descargar un payload via certutil. Mark-of-the-Web activo, Defender bloqueo antes del prompt. Quitando MOTW con un Alternate Data Stream limpio (powershell -Command "Clear-Content -Stream Zone.Identifier"), la macro ejecuto. En Sysmon EventID 1 vimos winword.exe creando cmd.exe con la command line completa, y EventID 3 con la conexion saliendo en el puerto 80. Esto encaja con la regla Sigma proc_creation_win_office_susp_child_processes que muchas equipos ya tienen. Para entender el pipeline defensivo de punta a punta vale revisitar Threat Hunting con Sigma y Elastic: Del Indicador a la Regla de Deteccion y cruzar con Hunting de Living-off-the-Land Binaries en Windows con KQL, porque el problema rara vez es que la regla no exista, sino que no este habilitada en produccion.

Vector dos: LNK. Generamos un acceso directo con target apuntando a powershell.exe -nop -w hidden -enc e icono copiado de un PDF legitimo. El LNK viaja dentro de un .zip descargado por el navegador. Aqui se pone interesante: SmartScreen mira la reputacion del binario llamado, no del LNK. Como powershell.exe tiene reputacion perfecta, paso. Lo que lo agarro fue AMSI inspeccionando el script decodificado en memoria, generando EventID 4104 de PowerShell ScriptBlockLogging. Sin ScriptBlockLogging habilitado (politica por defecto en muchisimos entornos), el vector pasa silencioso. Quien quiera entender el otro lado de la moneda deberia leer Bypass de AMSI y ETW para Investigacion Defensiva: Lo que los Blue Teams Deben Saber con cuidado, y quien opera defensa necesita asegurar lo descrito en Hardening de Windows 11 para Estaciones de Trabajo de Alto Riesgo.

Vector tres fue el mas exitoso fingiendo ser benigno: ISO con LNK mas DLL legitima vulnerable a side-loading. Adjuntamos la ISO via mount automatico (comportamiento por defecto del Explorer en Windows 11). El usuario ve solo un "PDF" que en realidad es el LNK llamando a una copia renombrada de OneDriveStandaloneUpdater.exe que carga nuestra version.dll del mismo directorio. Como el binario firmado por Microsoft es quien hace LoadLibrary, la telemetria de EventID 7 (Image loaded) muestra la DLL no firmada, pero el parent process es legitimo. Defender no alerto. Hubo que habilitar Attack Surface Reduction con la regla Block untrusted unsigned processes that run from USB y ajustarla para mounted images, algo que Adversary Emulation con Caldera y MITRE ATT&CK en Laboratorio Corporativo tambien cubre en detalle.

Lo que aprendimos mirando los tres tests lado a lado: la deteccion depende mas de configuracion que de producto. Sysmon sin schema correcto, PowerShell sin ScriptBlockLogging, ASR eternamente en audit, MOTW ignorado por archivos extraidos con 7zip viejo. Cada uno de esos puntos convierte un vector visible en un vector ciego. Vale recordar que nada de esto es nuevo, todos los comportamientos estan mapeados en T1566.001, T1204.002 y T1574.002 de MITRE ATT&CK, y existen desde hace anos. Equipos que aun no construyeron el ciclo descrito en Purple Team en la Practica: Construyendo Ciclo de Feedback Red vs Blue van a seguir redescubriendo estas brechas en vez de cerrarlas de una vez.

Tambien probamos la cadena completa levantando un C2 minimalista para validar callback, en otra VLAN para no mezclar trafico de simulacion con trafico de gestion. Los detalles operacionales de esa parte estan en Construyendo Infra de C2 con Sliver en Lab Aislado para Estudio Defensivo, que ya documentamos. El punto importante es que initial access no termina en la ejecucion, termina en el beacon estable; y cada salto desde alli tiene su propia ventana de deteccion. Si solo miras EventID 1 de Sysmon y no correlacionas con DNS, TLS JA3 y flujos de salida, te pierdes la mitad de la historia.

Takeaway practico: no gastes un sprint reescribiendo ofuscacion de macros si tu equipo todavia no habilito ScriptBlockLogging, Sysmon con config curada y ASR fuera de audit. Reproduce los tres vectores de este post en un lab aislado, snapshotado, sin conexion con produccion, y genera la evidencia de que EventID dispara en que etapa. Documenta el gap. Solo despues tiene sentido evolucionar a tecnicas mas ruidosas como direct syscalls, que cubrimos en Evasion de EDR para Investigacion: Direct Syscalls Explicados sin Romantizar. Una herramienta cara sin configuracion decente sigue siendo un dashboard bonito mientras el adversario pasa por el descampado de al 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