
Herramienta de consola de C#/.NET que captura, registra, reproduce y explica la telemetría ETW de Microsoft Defender Antivirus y EDR en tiempo real con filtrado y una base de conocimiento de eventos integrada.
Una herramienta de consola en C# / .NET 9 para capturar, grabar, reproducir y analizar telemetría ETW de Microsoft Defender Antivirus & EDR en tiempo real.
Para RedTeamers que quieran observar cómo reacciona Defender ante sus herramientas ofensivas.
Eventos ETW capturados desde:
Microsoft-Antimalware-EngineVibe-Coded one-shot con Gemini 4 Argon (planificación) y Gemini 3.8 Flash (implementación) basado en docs/antimalware-engine.md.
> dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- capture -p 32456
09:43:06.443 [MsMpEng:32456] StreamScanRequestStartEvent (Streamscanrequest) ID:5.1
↳ Id=195974179 Path=\Device\HarddiskVolume3\Users\dobin\AppData\Roaming\discord\sentry\scope_v3.json Process=\Device\HarddiskVolume3\Users\dobin\AppData\Local\Discord\app-1.0.9261\Discord.exe Reason=5 ThreadTime=01/01/1601 01:00:07 PID=31264
ℹ Starts a scan request for streamed content, with path and process context.
09:43:06.443 [MsMpEng:32456] ⏭ SkippedFileEvent (Skippedfile) ID:7.0
↳ Path=\Device\HarddiskVolume3\Users\dobin\AppData\Roaming\discord\sentry\scope_v3.json Reason=Log skip
ℹ Records a skipped file and the associated reason.
09:43:06.443 [MsMpEng:32456] StreamScanRequestEndEvent (Streamscanrequest) ID:6.1
↳ Id=195974179 Path=\Device\HarddiskVolume3\Users\dobin\AppData\Roaming\discord\sentry\scope_v3.json Process=\Device\HarddiskVolume3\Users\dobin\AppData\Local\Discord\app-1.0.9261\Discord.exe Reason=5 ThreadTime=01/01/1601 01:00:07 PID=31264
ℹ Ends the streamed-content scan request.
09:43:06.472 [MsMpEng:32456] BmNotificationHandleStopEvent (BehaviorMonitoring) ID:112.0
↳ PID=17092 AttrId=16435 AttrSeq=0 AttrSubset=0 MatchedThreatsNumber=0 IsMultiProcMatch=False IsMultiProcDetection=False
ℹ Ends notification handling and reports match-related counts and flags.
09:43:06.472 [MsMpEng:32456] BmEtwEvent (BehaviorMonitoring) ID:60.0
↳ PID=43940 Channel=ThreatIntel EventId=19
ℹ ETW-related activity with channel and event identifiers.
09:43:06.472 [MsMpEng:32456] BmNotificationHandleStartEvent (BehaviorMonitoring) ID:111.0
↳ PID=17092 AttrId=16435 AttrSeq=0 AttrSubset=0
TraceEvent de Microsoft.jsonl (NDJSON).jsonl con el mismo filtrado, formato y enriquecimiento automático.La captura de Microsoft-Antimalware-Engine requiere privilegios de administrador.
Capturar todos los mensajes de registro de Defender e imprimirlos en la consola:
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- capture
Capturar el registro a un archivo de todos los procesos que contienen "beacon" en el nombre de su proceso (como beacon_1.exe):
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- capture -o trace.jsonl -p beacon
Captura el log a archivo de tu beacon C2 con pid 666:
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- capture -o trace.jsonl -p 666
Filtrado:
--path <pattern>: Coincidencia por subcadena, comodín o regex en todos los campos de ruta/archivo/imagen/registro.-p|--process <pattern>: Coincide con el nombre del proceso o PID (resuelto automáticamente a partir de eventos del SO y BmProcess).--event-id <ids> & --exclude-id <ids>: Dirigir o excluir IDs específicos (p. ej. --event-id 8,53,63,74).-t|--task <tasks>: Filtrar por tarea de Defender (p. ej. -t BehaviorMonitor,SmsScan,SenseRemediation).-s|--search <text>: Búsqueda de texto completo en todas las claves, valores y resúmenes de la carga útil.# Replay all events with colored output and inline explanations
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- replay trace.jsonl
# Replay with path and task filtering
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- replay trace.jsonl --path mimikatz -t BehaviorMonitor
# Hide explanations for compact view
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- replay trace.jsonl --no-help
explain)# Look up explanation, opcode, and fields for SenseRemediation (Event 74)
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- explain 74
# Search for any event mentioning "Tainting" or "RemoteThread"
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- explain Tainting
# List all tasks
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- explain --tasks
# List all enumerated value maps (SMS Scan results, stop reasons, etc.)
dotnet run --project src/DefenderObserver/DefenderObserver.csproj -- explain --enums