Sysmon Event ID 1 explicado: criação de processo para triagem DFIR
O event 1 do Sysmon é o registro mais rico de criação de processo que o Windows consegue produzir. Eis o que ele contém e como triá-lo rápido.
Sysmon é uma ferramenta gratuita da Microsoft que aumenta o Windows Event Log com telemetria que o SO base não captura em forma utilizável. Seu event ID 1 — ProcessCreate — é o registro Sysmon mais citado em playbooks de IR. Se você só extrai um canal Sysmon de um host, este é o canal.
Onde vive e o que captura
Sysmon escreve no canal Microsoft-Windows-Sysmon/Operational (em disco: Microsoft-Windows-Sysmon%4Operational.evtx). Um registro ProcessCreate contém:
<Data Name="UtcTime">2026-05-17 14:02:11.123</Data>
<Data Name="ProcessGuid">{...}</Data>
<Data Name="ProcessId">7842</Data>
<Data Name="Image">C:\Windows\System32\powershell.exe</Data>
<Data Name="CommandLine">powershell -enc SQBFAFgA...</Data>
<Data Name="CurrentDirectory">C:\Users\alice\</Data>
<Data Name="User">CORP\alice</Data>
<Data Name="LogonId">0x3e7</Data>
<Data Name="Hashes">SHA256=...</Data>
<Data Name="ParentProcessGuid">{...}</Data>
<Data Name="ParentImage">C:\Program Files\Microsoft Office\winword.exe</Data>
<Data Name="ParentCommandLine">"winword.exe" /n /dde</Data>
Os campos que dirigem investigações: CommandLine (o argv completo, não só o binário), Image + Hashes (o binário exato que rodou, hash usável em VT/Hybrid Analysis) e o conjunto Parent* (o processo chamador — crítico para encontrar cadeias de macro e LOLBin).
Triagem em três pivots
Quando você tem um arquivo Sysmon de triagem, três queries cobrem a maioria dos casos:
- Pais suspeitos: filtre por
ParentImageterminando emwinword.exe,excel.exe,outlook.exe,mshta.exeou um browser, comImagesendo um shell (cmd.exe,powershell.exe,pwsh.exe,wscript.exe,cscript.exe,rundll32.exe). Um app de documento spawnando um shell é quase sempre malicioso. - PowerShell encodado:
Imageterminando empowershell.exeeCommandLinecontendo-enc,-encodedcommandouFromBase64String. Decodifique o payload, veja o que faz — e cruze com o registro PowerShell 4104 scriptblock no mesmo host para ver o que de fato executou. - LOLBins de locais estranhos: binários Microsoft assinados (
certutil,regsvr32,mshta,installutil,bitsadmin) rodando deC:\Users\,%TEMP%ouC:\ProgramData\.
Por que a cadeia pai importa
Um único ProcessCreate é um snapshot; a cadeia é a história. ProcessGuid e ParentProcessGuid são GUIDs que o Sysmon atribui para rastrear linhagem entre exits de processo — são mais confiáveis que PIDs porque PIDs são reutilizados. Reconstrua a árvore (cada ParentProcessGuid de registro é o ProcessGuid de algum outro registro) e a kill-chain fica óbvia: Outlook → Word → PowerShell → cmd → certutil → mshta.
Exemplo de regra Sigma — app Office spawnando shell
title: Office Application Spawning Shell or Scripting Host (Sysmon)
id: 7a4c1f2b-6e3d-4a5f-9c2a-1b3d4e5f6a7c
status: stable
description: A Microsoft Office or document-rendering process spawned cmd, powershell, wscript, cscript, mshta, rundll32 or regsvr32.
references:
- https://attack.mitre.org/techniques/T1566/001/
- https://attack.mitre.org/techniques/T1059/
logsource:
product: windows
service: sysmon
category: process_creation
detection:
selection:
EventID: 1
ParentImage|endswith:
- '\winword.exe'
- '\excel.exe'
- '\powerpnt.exe'
- '\outlook.exe'
- '\mshta.exe'
- '\acrord32.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
condition: selection
falsepositives:
- Office add-ins running approved scripts
- Document automation pipelines
level: high
tags:
- attack.execution
- attack.t1059
- attack.initial_access
- attack.t1566.001
Exemplo de KQL — PowerShell encodado com contexto pai
DeviceProcessEvents
| where InitiatingProcessFileName =~ "powershell.exe" or FileName =~ "powershell.exe"
| where ProcessCommandLine matches regex @"(?i)\b-e(?:nc|ncodedcommand)?\b\s"
or ProcessCommandLine contains "FromBase64String"
| project Timestamp, DeviceName, AccountName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
| order by Timestamp desc
InitiatingProcessCommandLine é o equivalente do Defender XDR para o ParentCommandLine do Sysmon 1 — que o 4688 não fornece.
Exemplo de Splunk — LOLBins de caminhos graváveis por usuário
sourcetype=xmlwineventlog source="*Sysmon/Operational"
EventCode=1
( Image="*\\certutil.exe" OR Image="*\\regsvr32.exe" OR Image="*\\mshta.exe"
OR Image="*\\bitsadmin.exe" OR Image="*\\installutil.exe" OR Image="*\\msbuild.exe" )
( ParentImage="*\\Users\\*" OR CommandLine="*\\Users\\*"
OR CommandLine="*%TEMP%*" OR CommandLine="*ProgramData*" )
| table _time Computer User ParentImage Image CommandLine Hashes
Mapeamento ATT&CK
- T1059 — Command and Scripting Interpreter e sub-técnicas
.001PowerShell,.003Windows Command Shell,.005Visual Basic,.007JavaScript. - T1566.001 — Phishing: Spearphishing Attachment: cadeias Office → shell.
- T1218 — System Binary Proxy Execution e sub-técnicas
.005Mshta,.010Regsvr32,.011Rundll32,.007Msiexec. - T1036.003 — Masquerading: Rename System Utilities:
OriginalFileName≠ filename deImage. - T1055 — Process Injection:
IntegrityLeveldo Sysmon 1 e a cadeia pai ajudam a detectar pais anômalos para processos comolsass.exeouservices.exe.
Falsos positivos que parecem ataques
- Agentes de software-update rotineiramente spawnam shells sob SYSTEM (Chocolatey, WinGet, MSI de vendor). Marque hosts conhecidos de auto-update.
- Scanners de vulnerabilidade imitam árvores de processo ofensivas durante scans autenticados. Marque IPs de scanner.
- Citrix / RDS hosts multi-sessão geram tráfego denso de process-create que se sobrepõe a padrões de atacante. Filtre por range de origem.
- Scans do Defender / EDR rodam binários Microsoft assinados de caminhos incomuns durante scans on-demand.
Caveats de cobertura
Sysmon só captura o que sua config diz para capturar. A config padrão não registra nada; as referências canônicas são o sysmon-config do SwiftOnSecurity e o sysmon-modular do Olaf Hartong. Sem uma config real no lugar, seus registros de event 1 serão esparsos, o campo CommandLine pode estar redacted e Hashes pode estar ausente. Leia a config Sysmon do host junto com seus logs.