↳ Source GitHubRègle analytiqueHigh
WMI Spawning Suspicious Child Process (Living off the Land)
Description
Detects WmiPrvSE.exe (the WMI Provider Host) spawning high-risk processes
such as PowerShell, cmd.exe, cscript, or other LOLBins.
WMI requires no external tools, generates minimal disk artifacts, and can
execute code on remote systems over DCOM/RPC while bypassing many controls.
Tune AllowlistedCmdPatterns for known-safe management tools such as SCCM.
- Type de règle
- Scheduled
- Version
- 1.0.5
- Statut déclaré
- Available
- Fréquence
- 1h
- Période analysée
- 1h
- Déclenchement
- gt 0
Couverture MITRE déclarée
Sources déclarées
Métadonnées du fichier source. Aucune dépendance déduite du KQL.
Connecteurs
Types de données
Requête KQL
Requête originale, sans modification.
let Lookback = 1h;
let SuspiciousChildProcesses = dynamic([
"powershell.exe", "pwsh.exe", "cmd.exe", "cscript.exe", "wscript.exe",
"mshta.exe", "certutil.exe", "bitsadmin.exe", "regsvr32.exe",
"rundll32.exe", "msiexec.exe", "installutil.exe", "cmstp.exe",
"msbuild.exe", "wmic.exe", "net.exe", "net1.exe", "nltest.exe",
"whoami.exe", "ipconfig.exe", "tasklist.exe", "schtasks.exe",
"at.exe", "sc.exe", "reg.exe"
]);
let AllowlistedCmdPatterns = dynamic([
"ccmexec", "SMSAgent", "MOMAgent", "nessus", "qualys"
]);
let NetworkIndicators = dynamic([
"http://", "https://", "ftp://", "Net.WebClient",
"DownloadString", "IEX", "Invoke-Expression", "/transfer", "-urlcache"
]);
let CredentialIndicators = dynamic([
"lsass", "mimikatz", "sekurlsa", "dump", "sam", "ntds"
]);
let MDE_Results =
DeviceProcessEvents
| where Timestamp >= ago(Lookback)
| where InitiatingProcessFileName =~ "WmiPrvSE.exe"
| where FileName in~ (SuspiciousChildProcesses)
| where not(ProcessCommandLine has_any (AllowlistedCmdPatterns))
| extend
ChildProcess = FileName,
ChildCmdLine = ProcessCommandLine,
AccountName = InitiatingProcessAccountName,
AccountDomain = InitiatingProcessAccountDomain,
HostName = DeviceName,
EventTime = Timestamp,
NetworkActivity = ProcessCommandLine has_any (NetworkIndicators),
CredentialActivity = ProcessCommandLine has_any (CredentialIndicators)
| project EventTime, HostName, AccountName, AccountDomain, ChildProcess,
ChildCmdLine, NetworkActivity, CredentialActivity;
let SecEvent_Results =
SecurityEvent
| where TimeGenerated >= ago(Lookback)
| where EventID == 4688
| where ParentProcessName endswith "\\WmiPrvSE.exe"
| extend ChildProcess = tostring(split(NewProcessName, "\\")[-1])
| where ChildProcess in~ (SuspiciousChildProcesses)
| where not(CommandLine has_any (AllowlistedCmdPatterns))
| extend
ChildCmdLine = CommandLine,
AccountName = SubjectUserName,
AccountDomain = SubjectDomainName,
HostName = Computer,
EventTime = TimeGenerated,
NetworkActivity = CommandLine has_any (NetworkIndicators),
CredentialActivity = CommandLine has_any (CredentialIndicators)
| project EventTime, HostName, AccountName, AccountDomain, ChildProcess,
ChildCmdLine, NetworkActivity, CredentialActivity;
union MDE_Results, SecEvent_Results
| extend RiskScore = iif(CredentialActivity == true, 3, iif(NetworkActivity == true, 2, 1))
| sort by RiskScore desc, EventTime desc
Entités déclarées
Contenus associés
Liens établis à partir des identifiants déclarés et des manifests des solutions.
Traçabilité de la source
GitHubLes valeurs affichées proviennent des fichiers du dépôt Azure/Azure-Sentinel. Elles décrivent le modèle publié, pas la configuration de votre workspace.
- Commit
9800e51↗- Identifiant source
3c8e5f0b-1d4a-4b69-9c2e-7f0d3a5e8b1f
GSTEP / SUIVI DU CATALOGUE
Ajouté au catalogue : 16 sept. 2026 · 05:49 UTC
Dernier changement observé : 16 sept. 2026 · 05:49 UTC