Question Analysis

On a Windows endpoint, an attacker ran a PowerShell sequence to establish a WMI event subscription using CommandLineEventConsumer. Inspect the process or script execution logs to uncover which executable was set to run by this subscription.

3c64f177-28e2-49eb-a799-d767b24dd1e0
Question ID
8/23
Models Correct
1
Valid Answer
35%
Success Rate
Reference Answer

Human-validated correct answer for this question

notepad.exe
Model Performance Comparison

See how different AI models performed on this question

ModelAnswerKQL QueryStatusAttemptsTimeCost
gemini-2.5-flash-preview-04-17
No answer provided
No query generated
Incorrect
5
0.00s
0.0471
gpt-35-turbo
No answer provided
No query generated
Incorrect
5
0.00s
0.0112
gpt-4-turbo-2024-04-09
No answer provided
No query generated
Incorrect
5
0.00s
0.2363
gpt-4.1
notepad.exe
DeviceProcessEvents | where FileName in~ ("powershell.exe", "pwsh.exe") | where ProcessCommandLine has_all ("CommandLineEventConsumer") and (ProcessCommandLine has "WMI" or ProcessCommandLine has "__EventFilter" or ProcessCommandLine has "event subscription") | extend SubscriptionCommand = extract(@'CommandLine="([^"]+)"', 1, ProcessCommandLine) | extend SubscriptionExecutable = extract(@'([a-zA-Z]:\\[^"\s]+\.exe)', 1, SubscriptionCommand) | project TimeGenerated, DeviceName, AccountName, InitiatingProcessCommandLine, ProcessCommandLine, SubscriptionCommand, SubscriptionExecutable | order by TimeGenerated desc
Correct
1
8.62s
0.0127
gpt-4.1-finetuned
No answer provided
No query generated
Incorrect
5
0.00s
0.0544
gpt-4.1-mini
notepad.exe
DeviceProcessEvents | where ProcessCommandLine contains "Register-WmiEvent" or ProcessCommandLine contains "Register-WmiEventSubscription" or ProcessCommandLine contains "EventFilter" or ProcessCommandLine contains "__EventFilter" or ProcessCommandLine contains "CommandLineEventConsumer" | extend ExecutorCommand = extract(@"(?i)CommandLineEventConsumer" , 0, ProcessCommandLine) | project TimeGenerated, DeviceName, InitiatingProcessAccountName, ProcessCommandLine, ExecutorCommand | order by TimeGenerated desc
Correct
1
3.72s
0.0023
gpt-4.1-nano
No answer provided
No query generated
Incorrect
5
0.00s
0.0017
gpt-4o
No answer provided
No query generated
Incorrect
5
0.00s
0.0478
gpt-5-high
notepad.exe
let wmi_keywords = dynamic(["CommandLineEventConsumer","CommandLineTemplate","__FilterToConsumerBinding","__EventFilter","root\\subscription","New-CimInstance","Set-WmiInstance","Register-WmiEvent","wmic"]); let proc_hits = DeviceProcessEvents | where FileName in~ ("powershell.exe","pwsh.exe","wmic.exe","mofcomp.exe") | where ProcessCommandLine has_any (wmi_keywords) | extend CommandLineTemplate = coalesce( extract("CommandLineTemplate\\s*=\\s*\"([^\"]+)\"", 1, ProcessCommandLine), extract("CommandLineTemplate\\s*=\\s*'([^']+)'", 1, ProcessCommandLine), extract("-CommandLineTemplate\\s+\"([^\"]+)\"", 1, ProcessCommandLine), extract("-CommandLineTemplate\\s+'([^']+)'", 1, ProcessCommandLine), extract("CommandLineTemplate\\s*[:=]\\s*([^\\s,}]+)", 1, ProcessCommandLine) ) | where isnotempty(CommandLineTemplate) | extend ExecutableSetToRun = coalesce( extract("^\\s*\"([^\"]+?)\"", 1, CommandLineTemplate), extract("^\\s*'([^']+?)'", 1, CommandLineTemplate), extract("^\\s*([^\\s]+)", 1, CommandLineTemplate) ) | extend ConsumerName = coalesce( extract("Name\\s*=\\s*\"([^\"]+)\"", 1, ProcessCommandLine), extract("Name\\s*=\\s*'([^']+)'", 1, ProcessCommandLine), extract("-Name\\s+\"([^\"]+)\"", 1, ProcessCommandLine), extract("-Name\\s+'([^']+)'", 1, ProcessCommandLine) ) | project TimeGenerated, DeviceId, DeviceName, AccountName, InitiatingProcessAccountName, FileName, FolderPath, ProcessCommandLine, ConsumerName, CommandLineTemplate, ExecutableSetToRun; let script_hits = DeviceEvents | where ActionType startswith "PowerShell" | extend ScriptText = tostring(coalesce(AdditionalFields.ScriptContent, AdditionalFields.ScriptBlockText, AdditionalFields.DecodedCommand, AdditionalFields.Command, AdditionalFields.Content, AdditionalFields.CommandLine, AdditionalFields.Payload)) | where isnotempty(ScriptText) and ScriptText has_any (wmi_keywords) | extend CommandLineTemplate = coalesce( extract("CommandLineTemplate\\s*=\\s*\"([^\"]+)\"", 1, ScriptText), extract("CommandLineTemplate\\s*=\\s*'([^']+)'", 1, ScriptText), extract("-CommandLineTemplate\\s+\"([^\"]+)\"", 1, ScriptText), extract("-CommandLineTemplate\\s+'([^']+)'", 1, ScriptText), extract("CommandLineTemplate\\s*[:=]\\s*([^\\s,}]+)", 1, ScriptText) ) | where isnotempty(CommandLineTemplate) | extend ExecutableSetToRun = coalesce( extract("^\\s*\"([^\"]+?)\"", 1, CommandLineTemplate), extract("^\\s*'([^']+?)'", 1, CommandLineTemplate), extract("^\\s*([^\\s]+)", 1, CommandLineTemplate) ) | extend ConsumerName = coalesce( extract("Name\\s*=\\s*\"([^\"]+)\"", 1, ScriptText), extract("Name\\s*=\\s*'([^']+)'", 1, ScriptText), extract("-Name\\s+\"([^\"]+)\"", 1, ScriptText), extract("-Name\\s+'([^']+)'", 1, ScriptText) ) | project TimeGenerated, DeviceId, DeviceName, AccountName, ActionType, ConsumerName, CommandLineTemplate, ExecutableSetToRun, ScriptText; proc_hits | union isfuzzy=true script_hits | order by TimeGenerated desc
Correct
3
319.45s
0.1746
gpt-5-mini-high
No answer provided
No query generated
Incorrect
5
0.00s
0.0229
gpt-5-mini-low
No answer provided
No query generated
Incorrect
5
0.00s
0.0162
gpt-5-mini-medium
notepad.exe
// Known WMI subscription indicators let wmiIndicators = dynamic(["Register-WmiEvent","New-EventFilter","Set-WmiInstance","CommandLineEventConsumer","CommandLineTemplate","FilterToConsumerBinding","__InstanceModificationEvent","__EventConsumer","Bind","Filter","Consumer","FilterToConsumerBinding"]); // Helper to extract executables or scripts from strings let extractExe = (s:string){ // Try full path first, then filename-only coalesce( extract(@"([A-Za-z]:\\[\\\w\-\.\s\\/]+\\?\.(?:exe|ps1|bat|vbs|wsh|cmd|msc|jar))", 1, s), extract(@"([\\\w\-]+\.(?:exe|ps1|bat|vbs|cmd|msi|msc|jar))", 1, s) ) }; // PowerShell process events where PowerShell constructs WMI subscriptions let psProcesses = DeviceProcessEvents | where tolower(FileName) has "powershell" or tolower(InitiatingProcessFileName) has "powershell" | where ProcessCommandLine has_any (wmiIndicators) or InitiatingProcessCommandLine has_any (wmiIndicators) | extend Source = "DeviceProcessEvents", CmdLine = tostring(ProcessCommandLine), InitiatorCmd = tostring(InitiatingProcessCommandLine) | project TimeGenerated, DeviceName, Source, FileName, ProcessId, ProcessCreationTime, CmdLine, InitiatorCmd, InitiatingProcessFileName; // DeviceEvents (process creation) for PowerShell let psCreations = DeviceEvents | where tolower(FileName) has "powershell" or tolower(InitiatingProcessFileName) has "powershell" | where ProcessCommandLine has_any (wmiIndicators) or InitiatingProcessCommandLine has_any (wmiIndicators) | extend Source = "DeviceEvents", CmdLine = tostring(ProcessCommandLine), InitiatorCmd = tostring(InitiatingProcessCommandLine) | project TimeGenerated, DeviceName, Source, FileName, ProcessId, ProcessCreationTime, CmdLine, InitiatorCmd, InitiatingProcessFileName; // Registry writes under WBEM/WMI that create CommandLineTemplate or FilterToConsumerBinding let regWrites = DeviceRegistryEvents | where tostring(RegistryKey) has "WBEM" or tostring(RegistryKey) has "WMI" | where RegistryValueName has_any ("CommandLineTemplate","FilterToConsumerBinding","Consumer") or tostring(RegistryValueData) has_any (wmiIndicators) | extend Source = "DeviceRegistryEvents", CmdLine = tostring(RegistryValueData), InitiatorCmd = tostring(InitiatingProcessCommandLine) | project TimeGenerated, DeviceName, Source, FileName = InitiatingProcessFileName, ProcessId = InitiatingProcessId, ProcessCreationTime = InitiatingProcessCreationTime, CmdLine, InitiatorCmd, RegistryKey, RegistryValueName; // Additional DeviceEvents where AdditionalFields include WMI subscription indicators let otherEvents = DeviceEvents | where tostring(AdditionalFields) has_any (wmiIndicators) | extend Source = "DeviceEvents_AddFields", CmdLine = iff(isnull(ProcessCommandLine) or ProcessCommandLine == "", tostring(AdditionalFields), tostring(ProcessCommandLine)), InitiatorCmd = tostring(InitiatingProcessCommandLine) | project TimeGenerated, DeviceName, Source, FileName, ProcessId, ProcessCreationTime, CmdLine, InitiatorCmd, InitiatingProcessFileName; union psProcesses, psCreations, regWrites, otherEvents | extend FoundExecutable = extractExe(tostring(CmdLine)) | extend FoundExecutable = tostring(FoundExecutable) | where isnotempty(CmdLine) and (FoundExecutable != "" or CmdLine contains "CommandLineEventConsumer" or CmdLine contains "CommandLineTemplate" or RegistryKey contains "WBEM" ) | summarize Occurrences = count(), SampleCmdLines = make_set(CmdLine, 10), SampleInitiators = make_set(InitiatorCmd, 10), Devices = make_set(DeviceName), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by FoundExecutable, Source | where isnotempty(FoundExecutable) or Occurrences > 0 | project FoundExecutable, Occurrences, Devices, Source, FirstSeen, LastSeen, SampleCmdLines, SampleInitiators | top 200 by LastSeen desc
Correct
3
39.73s
0.0120
gpt-5-nano-high
None
let StartTime = ago(1d); let EndTime = now(); let WmiSubscriptions = DeviceRegistryEvents | where TimeGenerated between (StartTime .. EndTime) | where RegistryKey contains "WBEM" or RegistryKey contains "WMI" or RegistryValueName contains "CommandLineTemplate" or RegistryValueName contains "CommandLine" or RegistryValueData contains "CommandLineTemplate" | project TimeGenerated, DeviceId, DeviceName, RegistryKey, RegistryValueName, RegistryValueData, InitiatingProcessId, InitiatingProcessFileName, InitiatingProcessCommandLine; let PsInitiators = DeviceProcessEvents | where TimeGenerated between (StartTime .. EndTime) | where InitiatingProcessFileName in ("powershell.exe","pwsh.exe","powershell") or InitiatingProcessCommandLine contains "powershell" | project DeviceId, InitiatingProcessId, InitiatingProcessFileName, InitiatingProcessCommandLine; let SubWithInitiator = WmiSubscriptions | join kind=inner (PsInitiators) on DeviceId, InitiatingProcessId | extend SubscriptionCommandLine = tostring(RegistryValueData) | extend ExecutableFromSubscription = extract(@"([A-Za-z]:\\[^\""]+\\.exe)", 1, SubscriptionCommandLine) | project TimeGenerated, DeviceName, DeviceId, InitiatingProcessFileName, InitiatingProcessCommandLine, RegistryKey, RegistryValueName, RegistryValueData, SubscriptionCommandLine, ExecutableFromSubscription; SubWithInitiator | sort by TimeGenerated desc
Incorrect
2
106.43s
0.0055
gpt-5-nano-medium
No answer provided
No query generated
Incorrect
5
0.00s
0.0105
grok-3-beta
No answer provided
No query generated
Incorrect
5
0.00s
0.1135
grok-3-mini-beta
notepad.exe
DeviceProcessEvents | where FileName has "powershell.exe" and ProcessCommandLine contains "CommandLineEventConsumer" | extend Executable = extract("CommandLineTemplate=[\"']([^\"']+)[\"']", 1, ProcessCommandLine) | project TimeGenerated, DeviceName, ProcessCommandLine, Executable | order by TimeGenerated desc
Correct
3
35.67s
0.0045
o1-high
notepad.exe
DeviceProcessEvents | where FileName =~ "powershell.exe" | where ProcessCommandLine has "CommandLineEventConsumer" or ProcessCommandLine has "__EventFilter" or ProcessCommandLine has "__FilterToConsumerBinding" | parse kind=regex flags=U ProcessCommandLine with @"CommandLineTemplate\s*=\s*'([^']+)'" CommandLineTemplate | project TimeGenerated, DeviceId, DeviceName, InitiatingProcessAccountName, ProcessCommandLine, CommandLineTemplate
Correct
1
41.21s
0.2311
o1-low
notepad.exe
DeviceProcessEvents | where FileName in~ ("powershell.exe", "pwsh.exe", "powershell_ise.exe") | where isnotempty(ProcessCommandLine) | where ProcessCommandLine has_any("Register-WMIEvent","CommandLineEventConsumer","__EventConsumer") | project TimeGenerated, DeviceName, InitiatingProcessAccountName, FileName, FolderPath, ProcessCommandLine
Correct
1
31.21s
0.2148
o3-high
No answer provided
No query generated
Incorrect
5
0.00s
0.1015
o3-mini-high
notepad.exe
union withsource=TableName DeviceProcessEvents, DeviceEvents | where (InitiatingProcessCommandLine has "PowerShell" or ProcessCommandLine has "PowerShell") and (InitiatingProcessCommandLine has "CommandLineEventConsumer" or ProcessCommandLine has "CommandLineEventConsumer") | extend CmdLine = iif(isnotempty(ProcessCommandLine), ProcessCommandLine, InitiatingProcessCommandLine) | extend ExecutableSet = extract("(?i)([\\w]+\\.exe)", 1, CmdLine) | project TimeGenerated, DeviceName, TableName, FileName, CmdLine, ExecutableSet | sort by TimeGenerated desc
Correct
2
25.32s
0.0183
o3-mini-low
No answer provided
No query generated
Incorrect
5
0.00s
0.0390
o4-mini-high
No answer provided
No query generated
Incorrect
5
0.00s
0.0459
o4-mini-low
No answer provided
No query generated
Incorrect
5
0.00s
0.0467