Question Analysis

Review process creation logs for an instance where a built-in Windows utility was used to enumerate installed device drivers with verbose list output. What is the name of that tool?

235b30a2-e5b1-441f-9705-be6231c88ddd
Question ID
22/23
Models Correct
1
Valid Answer
96%
Success Rate
Reference Answer

Human-validated correct answer for this question

driverquery
Model Performance Comparison

See how different AI models performed on this question

ModelAnswerKQL QueryStatusAttemptsTimeCost
gemini-2.5-flash-preview-04-17
driverquery.exe
DeviceProcessEvents | where ActionType == "ProcessCreated" | where ProcessCommandLine has "driverquery" and ProcessCommandLine has "/v" | summarize count() by FileName
Correct
1
6.59s
0.0023
gpt-35-turbo
No answer provided
No query generated
Incorrect
5
0.00s
0.0111
gpt-4-turbo-2024-04-09
driverquery
DeviceProcessEvents | where ProcessCommandLine contains 'driverquery.exe' and ProcessCommandLine contains '/v' | project DeviceName, ProcessCommandLine, ProcessCreationTime, FileName, FolderPath, InitiatingProcessCommandLine, InitiatingProcessFileName
Correct
1
10.52s
0.0516
gpt-4.1
driverquery.exe
DeviceProcessEvents | where FileName =~ "driverquery.exe" | where ProcessCommandLine has_any("/v", "/verbose") | project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine | limit 100
Correct
2
6.40s
0.0145
gpt-4.1-finetuned
driverquery.exe
DeviceProcessEvents | where ProcessCommandLine has_any ("/v ", "/verbose") | where AccountName !~ "ANONYMOUS" | where FileName in~ ("driverquery.exe", "dism.exe", "pnputil.exe", "sigverif.exe") //known native drivers querying commands | summarize FirstObserved = min(TimeGenerated), LastObserved = max(TimeGenerated), count() by AccountName, AccountDomain, InitiatingProcessLogonId, ProcessCommandLine, FileName, DeviceId, DeviceName | extend Tactics = "Collection", Techniques = "T1005" | extend Name = tostring(split(AccountName, "@", 0)[0]), UPNSuffix = tostring(split(AccountName, "@", 1)[0]) | extend Account_0_Name = Name | extend Account_0_UPNSuffix = UPNSuffix | extend Device_0_Name = DeviceName | extend Host_0_Id = DeviceId | extend Host_0_Name = DeviceName
Correct
2
35.20s
0.0237
gpt-4.1-mini
driverquery.exe
DeviceProcessEvents | where isnotempty(ProcessCommandLine) | where tolower(ProcessCommandLine) contains "driverquery" or (tolower(ProcessCommandLine) contains "pnputil" and (tolower(ProcessCommandLine) contains "/enum" or tolower(ProcessCommandLine) contains "/verbose")) | summarize count() by InitiatingProcessFileName, ProcessCommandLine | order by count_ desc | project InitiatingProcessFileName, ProcessCommandLine, count_
Correct
5
30.69s
0.0077
gpt-4.1-nano
driverquery.exe
DeviceProcessEvents | where FileName in ('driverquery.exe', 'driverquery') | where ProcessCommandLine contains '/v' | project ProcessCommandLine, FileName, InitiatingProcessFileName, InitiatingProcessCommandLine, TimeGenerated | order by TimeGenerated desc
Correct
3
3.77s
0.0012
gpt-4o
driverquery.exe
DeviceProcessEvents | where FileName == 'driverquery.exe' and (ProcessCommandLine contains '/V' or ProcessCommandLine contains '/FO') | project FileName, ProcessCommandLine, DeviceName, TimeGenerated
Correct
2
4.66s
0.0270
gpt-5-high
driverquery.exe
DeviceProcessEvents | where ActionType == "ProcessCreated" | extend cmd = tolower(coalesce(ProcessCommandLine, "")) | where cmd contains "driverquery" and cmd contains "/v" and cmd contains "/fo list" | extend ToolName = tolower(FileName) | summarize Events=count(), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), ExampleCommand=any(ProcessCommandLine) by ToolName, DeviceName | order by LastSeen desc
Correct
1
48.44s
0.0338
gpt-5-mini-high
driverquery
// Look for built-in Windows utilities used to enumerate installed drivers with verbose output let candidates = dynamic(["driverquery","pnputil","wmic","sc"]); let procEvents = DeviceProcessEvents | where isnotempty(ProcessCommandLine) or isnotempty(FileName) | where tolower(FileName) has_any (candidates) or tolower(ProcessCommandLine) has_any (candidates) | extend file_lower = tolower(FileName), cmd_lower = tolower(ProcessCommandLine) | extend tool = case( file_lower contains "driverquery" or cmd_lower contains "driverquery", "driverquery", file_lower contains "pnputil" or cmd_lower contains "pnputil", "pnputil", file_lower contains "wmic" or cmd_lower contains "wmic", "wmic", file_lower contains "sc" or cmd_lower contains "sc", "sc", "other") | where tool != "other" | extend verbose_flag = iff(cmd_lower contains " /v" or cmd_lower contains "/v" or cmd_lower contains " -v", true, false) | project TimeGenerated, DeviceName, DeviceId, ProcessId, ProcessCreationTime, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessId, InitiatingProcessAccountName, tool, verbose_flag ; let deviceEvents = DeviceEvents | where isnotempty(ProcessCommandLine) or isnotempty(FileName) | where tolower(FileName) has_any (candidates) or tolower(ProcessCommandLine) has_any (candidates) | extend file_lower = tolower(FileName), cmd_lower = tolower(ProcessCommandLine) | extend tool = case( file_lower contains "driverquery" or cmd_lower contains "driverquery", "driverquery", file_lower contains "pnputil" or cmd_lower contains "pnputil", "pnputil", file_lower contains "wmic" or cmd_lower contains "wmic", "wmic", file_lower contains "sc" or cmd_lower contains "sc", "sc", "other") | where tool != "other" | extend verbose_flag = iff(cmd_lower contains " /v" or cmd_lower contains "/v" or cmd_lower contains " -v", true, false) | project TimeGenerated, DeviceName, DeviceId, ProcessId = InitiatingProcessId, ProcessCreationTime = InitiatingProcessCreationTime, FileName = InitiatingProcessFileName, ProcessCommandLine = InitiatingProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessId, InitiatingProcessAccountName, tool, verbose_flag ; union procEvents, deviceEvents | where verbose_flag == true or tool == "driverquery" // driverquery commonly used for verbose listing | summarize first_Time = min(TimeGenerated), any_FileName = any(FileName), any_ProcessCommandLine = any(ProcessCommandLine), any_InitiatingProcessFileName = any(InitiatingProcessFileName), any_InitiatingProcessCommandLine = any(InitiatingProcessCommandLine), any_InitiatingProcessId = any(InitiatingProcessId), any_InitiatingProcessAccountName = any(InitiatingProcessAccountName) by DeviceId, DeviceName, tool | order by first_Time asc | project first_Time, DeviceName, DeviceId, tool, any_FileName, any_ProcessCommandLine, any_InitiatingProcessFileName, any_InitiatingProcessCommandLine, any_InitiatingProcessId, any_InitiatingProcessAccountName
Correct
1
16.99s
0.0044
gpt-5-mini-low
driverquery
let keywords = dynamic(["driverquery","driverquery.exe","sc query","sc.exe query","wmic sysdriver list","flipped" ]); DeviceProcessEvents | where ProcessCommandLine has_any ("driverquery","/v","/verbose","sc query","type= driver","wmic sysdriver","list","drivers") | extend matched = case(ProcessCommandLine has "driverquery", "driverquery", ProcessCommandLine has "sc query", "sc query", ProcessCommandLine has "wmic sysdriver", "wmic sysdriver", "other") | project TimeGenerated, DeviceName, InitiatingProcessAccountName, ProcessCommandLine, FileName, ProcessId, InitiatingProcessFileName, InitiatingProcessCommandLine, matched | sort by TimeGenerated desc | distinct ProcessCommandLine, FileName, DeviceName, ProcessId, matched, TimeGenerated // Also check DeviceEvents and DeviceFileEvents for any occurrences | union ( DeviceEvents | where ProcessCommandLine has_any ("driverquery","/v","/verbose","sc query","type= driver","wmic sysdriver","list","drivers") | project TimeGenerated, DeviceName, InitiatingProcessAccountName, ProcessCommandLine, FileName, ProcessId = tostring(ProcessId), InitiatingProcessFileName, InitiatingProcessCommandLine ), ( DeviceFileEvents | where InitiatingProcessCommandLine has_any ("driverquery","/v","/verbose","sc query","type= driver","wmic sysdriver","list","drivers") | project TimeGenerated, DeviceName, InitiatingProcessAccountName, ProcessCommandLine = InitiatingProcessCommandLine, FileName = InitiatingProcessFileName, ProcessId = tostring(InitiatingProcessId), InitiatingProcessFileName ) | sort by TimeGenerated desc | take 50
Correct
1
15.14s
0.0051
gpt-5-mini-medium
driverquery
// Detect usage of built-in Windows utilities enumerating installed device drivers with verbose/list output let tools_pattern = dynamic(["driverquery","pnputil","driverquery.exe","pnputil.exe"]); let verbose_flags = dynamic(["/v","-v","/verbose","/fo list","/fo:list","/fo=list","/enum-drivers","/e","/all"]); // Helper: check if any of the substrings in arr appear in text (case-insensitive) let any_contains = (text:string, arr:dynamic){ tobool(array_length(arr) > 0 and text has_any(arr)) }; // Normalize and search DeviceProcessEvents let dpe = DeviceProcessEvents | where isnotempty(ProcessCommandLine) or isnotempty(FileName) | extend cmd = tostring(ProcessCommandLine), fname = tostring(FileName), icmd = tostring(InitiatingProcessCommandLine) | extend lcmd = tolower(cmd), lfname = tolower(fname), licmd = tolower(icmd) | where ( // contains a known tool name in command or file name lcmd contains "driverquery" or lfname contains "driverquery" or licmd contains "driverquery" or lcmd contains "pnputil" or lfname contains "pnputil" or licmd contains "pnputil" ) | where ( // and has one of the verbose/list flags in the command line lcmd contains "/v" or lcmd contains "-v" or lcmd contains "/verbose" or lcmd contains "/fo" or lcmd contains "enum-drivers" or lcmd contains "/e" or lcmd contains "/all" or licmd contains "/v" or licmd contains "-v" or licmd contains "/verbose" or licmd contains "/fo" or licmd contains "enum-drivers" or licmd contains "/e" or licmd contains "/all" ) | extend DetectedTool = case( lcmd contains "driverquery" or lfname contains "driverquery" or licmd contains "driverquery", "driverquery", lcmd contains "pnputil" or lfname contains "pnputil" or licmd contains "pnputil", "pnputil", "unknown" ) | where DetectedTool != "unknown" | project TimeGenerated, DeviceName, AccountName, FileName, ProcessId, ProcessCreationTime, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessId, InitiatingProcessCreationTime, ReportId, DetectedTool; // Normalize and search DeviceEvents let de = DeviceEvents | where isnotempty(ProcessCommandLine) or isnotempty(FileName) | extend cmd = tostring(ProcessCommandLine), fname = tostring(FileName), icmd = tostring(InitiatingProcessCommandLine) | extend lcmd = tolower(cmd), lfname = tolower(fname), licmd = tolower(icmd) | where ( lcmd contains "driverquery" or lfname contains "driverquery" or licmd contains "driverquery" or lcmd contains "pnputil" or lfname contains "pnputil" or licmd contains "pnputil" ) | where ( lcmd contains "/v" or lcmd contains "-v" or lcmd contains "/verbose" or lcmd contains "/fo" or lcmd contains "enum-drivers" or lcmd contains "/e" or lcmd contains "/all" or licmd contains "/v" or licmd contains "-v" or licmd contains "/verbose" or licmd contains "/fo" or licmd contains "enum-drivers" or licmd contains "/e" or licmd contains "/all" ) | extend DetectedTool = case( lcmd contains "driverquery" or lfname contains "driverquery" or licmd contains "driverquery", "driverquery", lcmd contains "pnputil" or lfname contains "pnputil" or licmd contains "pnputil", "pnputil", "unknown" ) | where DetectedTool != "unknown" | project TimeGenerated, DeviceName, AccountName, FileName, ProcessId, ProcessCreationTime=InitiatingProcessCreationTime, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessId, ReportId, DetectedTool; // Combine results and summarize (dpe | union de) | sort by TimeGenerated desc | take 500 | summarize Count = count(), AnyCommand = any(ProcessCommandLine), AnyInitiatingCommand = any(InitiatingProcessCommandLine), SampleFileNames = makeset(FileName, 10) by DetectedTool, DeviceName, AccountName, ReportId | order by Count desc
Correct
4
51.88s
0.0161
gpt-5-nano-high
driverquery
DeviceProcessEvents | where (FileName endswith "driverquery.exe" or InitiatingProcessFileName endswith "driverquery.exe" or ProcessCommandLine contains "driverquery" or InitiatingProcessCommandLine contains "driverquery") | where ProcessCommandLine contains "/v" and ProcessCommandLine contains "/fo" and ProcessCommandLine contains "list" | extend ToolUsed = "driverquery" | project TimeGenerated, ToolUsed, FileName, InitiatingProcessFileName, ProcessCommandLine, InitiatingProcessCommandLine
Correct
1
35.74s
0.0022
gpt-5-nano-medium
driverquery
DeviceProcessEvents | where (InitiatingProcessFileName has "driverquery" or InitiatingProcessCommandLine has "driverquery") | where (InitiatingProcessCommandLine has "/v" or InitiatingProcessCommandLine has "/fo" or InitiatingProcessCommandLine has "/FO") | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine | distinct TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine | sort by TimeGenerated desc
Correct
1
31.89s
0.0017
grok-3-beta
driverquery
DeviceProcessEvents | where FileName == 'driverquery.exe' | where ProcessCommandLine contains '/v' | project TimeGenerated, DeviceName, FileName, ProcessCommandLine | order by TimeGenerated desc
Correct
1
7.09s
0.0194
grok-3-mini-beta
driverquery
DeviceProcessEvents | where ProcessCommandLine has "driverquery" and ProcessCommandLine has "/v" | project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine | order by TimeGenerated desc | limit 10
Correct
1
12.62s
0.0016
o1-high
driverquery.exe
DeviceProcessEvents | where ActionType == "ProcessCreated" | where FileName =~ "driverquery.exe" or (FileName endswith ".exe" and ProcessCommandLine contains "driverquery") | where ProcessCommandLine has "/v" or ProcessCommandLine has "/fo list" | project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine | order by TimeGenerated desc
Correct
1
17.57s
0.1473
o1-low
driverquery
DeviceProcessEvents | where TimeGenerated >= ago(30d) | where ActionType == "CreateProcess" or ActionType == "ProcessCreated" | where tolower(FileName) has "driverquery" or tolower(ProcessCommandLine) contains "driverquery" | where tolower(ProcessCommandLine) contains " /v" | project TimeGenerated, DeviceName, AccountDomain, AccountName, FileName, ProcessCommandLine
Correct
4
76.08s
0.5825
o3-high
driverquery.exe
// Process creation events for driver enumeration done with verbose list output DeviceProcessEvents | where FileName =~ "driverquery.exe" // built-in driver enumeration tool | where ProcessCommandLine has "/v" // verbose switch | where ProcessCommandLine matches regex @"/fo\s+list" // list-formatted output // Return useful context | project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine, LogonId, ReportId
Correct
1
26.08s
0.0168
o3-mini-high
driverquery.exe
union DeviceProcessEvents, DeviceEvents | where ((InitiatingProcessFileName has "driverquery" or FileName has "driverquery") and (InitiatingProcessCommandLine has "/v" or ProcessCommandLine has "/v")) | project TimeGenerated, FileName, InitiatingProcessFileName, ProcessCommandLine, InitiatingProcessCommandLine | order by TimeGenerated desc
Correct
2
18.90s
0.0192
o3-mini-low
driverquery.exe
DeviceProcessEvents | where tolower(FileName) contains "driverquery" | where tolower(ProcessCommandLine) contains "/v" | project TimeGenerated, DeviceName, FileName, ProcessCommandLine, ProcessId, InitiatingProcessId
Correct
3
32.62s
0.0230
o4-mini-high
driverquery
DeviceProcessEvents // Filter within external time range | where FileName == "driverquery.exe" or ProcessCommandLine has "driverquery" // Look for verbose output switches | where ProcessCommandLine has_any ("/v", "-v", "/verbose") // Show relevant details | project TimeGenerated, DeviceName, InitiatingProcessAccountName, FileName, ProcessCommandLine, ProcessId | sort by TimeGenerated desc
Correct
1
21.08s
0.0096
o4-mini-low
driverquery.exe
DeviceProcessEvents | where FileName == "driverquery.exe" | where ProcessCommandLine contains "/v" | project TimeGenerated, DeviceName, InitiatingProcessAccountName, FileName, ProcessCommandLine | sort by TimeGenerated desc
Correct
1
16.68s
0.0052