Question Analysis

Review Windows process execution logs to find any native utility that was used to enumerate connected drives. Which utility was invoked?

424e18fd-48b8-4201-8d3a-bf591523a686
Question ID
4/23
Models Correct
1
Valid Answer
17%
Success Rate
Reference Answer

Human-validated correct answer for this question

fsutil
Model Performance Comparison

See how different AI models performed on this question

ModelAnswerKQL QueryStatusAttemptsTimeCost
gemini-2.5-flash-preview-04-17
net.exe
DeviceProcessEvents | where FileName in~ ("wmic.exe", "powershell.exe", "net.exe", "fsutil.exe") | where (FileName =~ "wmic.exe" and ProcessCommandLine contains "logicaldisk get caption") or (FileName =~ "powershell.exe" and ProcessCommandLine contains "Get-PSDrive" and ProcessCommandLine contains "FileSystem") or (FileName =~ "net.exe" and ProcessCommandLine contains "use") or (FileName =~ "fsutil.exe" and ProcessCommandLine contains "fsinfo drives") | project Timestamp, DeviceName, FileName, ProcessCommandLine, AccountName
Incorrect
1
21.19s
0.0106
gpt-35-turbo
net use
DeviceProcessEvents | where ProcessCommandLine contains 'net use' or ProcessCommandLine contains 'wmic logicaldisk list' | project ProcessCommandLine, TimeGenerated
Incorrect
1
4.08s
0.0025
gpt-4-turbo-2024-04-09
net
DeviceProcessEvents | where ActionType == 'ProcessCreated' | where (ProcessCommandLine has 'diskpart' and (ProcessCommandLine has_any('list', 'volume', 'disk'))) or (ProcessCommandLine has 'wmic' and (ProcessCommandLine has 'logicaldisk' or ProcessCommandLine has 'volume')) or (ProcessCommandLine has 'net' and ProcessCommandLine has 'use') | project DeviceId, DeviceName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, TimeGenerated
Incorrect
5
35.79s
0.2400
gpt-4.1
fsutil.exe
DeviceProcessEvents | where FileName in~ ("wmic.exe", "diskpart.exe", "mountvol.exe", "fsutil.exe", "cmd.exe", "powershell.exe") | where ProcessCommandLine has_any ("logicaldisk", "list disk", "list volume", "mountvol", "fsutil", "drives", "get-psdrive") | project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine | order by TimeGenerated desc
Correct
3
13.03s
0.0281
gpt-4.1-finetuned
net.exe
DeviceProcessEvents | where Timestamp > ago(7d) | where (FileName == "net.exe" or FileName == "net1.exe") | extend cmd = tostring(split(ProcessCommandLine, "/")[0]) | where cmd contains "use" | project Timestamp, DeviceId, DeviceName, InitiatingProcessAccountName, ProcessCommandLine, FileName, InitiatingProcessAccountDomain | extend Account = strcat(InitiatingProcessAccountDomain, "/", InitiatingProcessAccountName)
Incorrect
2
17.10s
0.0236
gpt-4.1-mini
fsutil
DeviceProcessEvents | where ProcessCommandLine has_any ("mountvol", "net use", "wmic logicaldisk", "fsutil fsinfo drives") or FileName has_any ("mountvol.exe", "net.exe", "wmic.exe", "fsutil.exe") | extend Utility = case( FileName has "mountvol", "mountvol", FileName has "net", "net", FileName has "wmic", "wmic", FileName has "fsutil", "fsutil", "Other" ) | summarize Count = count(), Earliest = min(TimeGenerated), Latest = max(TimeGenerated) by Utility | where Utility != "Other"
Correct
1
18.61s
0.0024
gpt-4.1-nano
No answer provided
No query generated
Incorrect
5
0.00s
0.0016
gpt-4o
wmic
DeviceProcessEvents | where FileName in ("cmd.exe", "powershell.exe", "wmic.exe", "diskpart.exe") | where isnotempty(ProcessCommandLine) and (ProcessCommandLine has_any ("list", "select", "disk", "volume", "get", "drive")) | project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName
Incorrect
2
28.39s
0.0499
gpt-5-high
net
let patterns = datatable(Tool:string, Proc:string, CmdSubstr:string) [ "WMIC LogicalDisk","wmic.exe","logicaldisk", "WMIC LogicalDisk (get)","wmic.exe","logicaldisk get", "WMIC Volume","wmic.exe","volume get", "FSUTIL FSINFO DRIVES","fsutil.exe","fsinfo drives", "NET USE","net.exe"," use", "MOUNTVOL","mountvol.exe","mountvol", "DISKPART list volume","diskpart.exe","list volume", "DISKPART list disk","diskpart.exe","list disk", "PowerShell Get-PSDrive","powershell.exe","get-psdrive", "PowerShell Get-PSDrive (FileSystem)","powershell.exe","-psprovider filesystem", "PowerShell Get-Volume","powershell.exe","get-volume", "PowerShell Win32_LogicalDisk (WMI)","powershell.exe","win32_logicaldisk", "PowerShell Get-CimInstance LogicalDisk","powershell.exe","get-ciminstance", "PowerShell Get-Disk","powershell.exe","get-disk", "PowerShell Get-Partition","powershell.exe","get-partition", "pwsh Get-PSDrive","pwsh.exe","get-psdrive" ]; DeviceProcessEvents | extend proc = tolower(FileName), cmd = tolower(ProcessCommandLine) | where proc in ("wmic.exe","fsutil.exe","net.exe","mountvol.exe","diskpart.exe","powershell.exe","pwsh.exe") | join kind=inner ( patterns | extend proc = tolower(Proc), patt = tolower(CmdSubstr) | project Tool, proc, patt ) on proc | where cmd has patt | project TimeGenerated, DeviceName, AccountDomain, AccountName, Tool, FileName=proc, ProcessCommandLine | summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), ExecCount=count(), ExampleCommand=any(ProcessCommandLine) by Tool, DeviceName | order by LastSeen desc
Incorrect
1
102.70s
0.0481
gpt-5-mini-high
powershell
DeviceProcessEvents | where isnotempty(ProcessCommandLine) or isnotempty(FileName) | extend cmd = tolower(tostring(ProcessCommandLine)), fname = tolower(tostring(FileName)) // Find likely drive-enumeration activity by keywords or executable names | where ( cmd contains "wmic logicaldisk" or cmd contains "wmic" or cmd contains "get-psdrive" or cmd contains "get-volume" or cmd contains "get-partition" or cmd contains "get-disk" or (cmd contains "get-ciminstance" and cmd contains "logicaldisk") or (cmd contains "get-wmiobject" and cmd contains "logicaldisk") or cmd contains "win32_logicaldisk" or cmd contains "fsutil" or cmd contains "fsinfo" or cmd contains "diskpart" or cmd contains "list volume" or cmd contains "list disk" or cmd contains "mountvol" or cmd contains "net use" or cmd contains "net view" or cmd contains "net share" or fname in ("wmic.exe","fsutil.exe","diskpart.exe","mountvol.exe","net.exe","powershell.exe","pwsh.exe") or fname contains "powershell" or fname contains "pwsh" ) | extend matched_utility = case( cmd contains "wmic" or fname contains "wmic.exe", "wmic", cmd contains "get-psdrive", "powershell:Get-PSDrive", cmd contains "get-volume", "powershell:Get-Volume", (cmd contains "get-ciminstance" and cmd contains "logicaldisk") or (cmd contains "get-wmiobject" and cmd contains "logicaldisk") or cmd contains "win32_logicaldisk", "powershell:Get-CimInstance/Get-WmiObject Win32_LogicalDisk", cmd contains "fsutil" or fname contains "fsutil.exe", "fsutil", cmd contains "diskpart" or fname contains "diskpart.exe", "diskpart", cmd contains "mountvol" or fname contains "mountvol.exe", "mountvol", cmd contains "net use" or cmd contains "net view" or cmd contains "net share" or fname == "net.exe", "net", (fname contains "powershell" or fname contains "pwsh") and (cmd contains "get-psdrive" or cmd contains "get-volume" or cmd contains "get-ciminstance" or cmd contains "get-wmiobject" or cmd contains "win32_logicaldisk"), "powershell:drive-enumeration", fname contains "powershell" or fname contains "pwsh", "powershell (other)", "other") | where matched_utility != "other" // Summary to identify which native utility was used | summarize count = count(), sample_command = any(ProcessCommandLine), first_seen = min(TimeGenerated), last_seen = max(TimeGenerated), devices = make_set(DeviceName, 20), users = make_set(InitiatingProcessAccountName, 20) by matched_utility | order by count desc
Incorrect
3
89.93s
0.0191
gpt-5-mini-low
fsutil
// Find native Windows utilities that enumerate drives: mountvol, fsutil, diskpart, wmic logicaldisk, powershell Get-PSDrive, Get-CimInstance Win32_LogicalDisk let keywords = dynamic(["mountvol","fsutil","diskpart","wmic logicaldisk","wmic logicaldisk get","Get-PSDrive","Get-CimInstance","Win32_LogicalDisk","Get-WmiObject Win32_LogicalDisk","Get-CimInstance Win32_LogicalDisk","Get-WmiObject"]); // Search DeviceProcessEvents for matching process/file names or command lines let procMatches = DeviceProcessEvents | where array_length(keywords) == array_length(keywords) // no-op to keep let | where tolower(ProcessCommandLine) has_any (dynamic(["mountvol","fsutil","diskpart","wmic","get-psdrive","get-ciminstance","win32_logicaldisk","get-wmiobject"])) | extend match_term = case( tolower(FileName) contains "mountvol" or tolower(ProcessCommandLine) contains "mountvol", "mountvol", tolower(FileName) contains "fsutil" or tolower(ProcessCommandLine) contains "fsutil", "fsutil", tolower(FileName) contains "diskpart" or tolower(ProcessCommandLine) contains "diskpart", "diskpart", tolower(ProcessCommandLine) contains "wmic" and tolower(ProcessCommandLine) contains "logicaldisk", "wmic logicaldisk", tolower(ProcessCommandLine) contains "get-psdrive", "Get-PSDrive", tolower(ProcessCommandLine) contains "get-ciminstance" or tolower(ProcessCommandLine) contains "win32_logicaldisk", "Get-CimInstance", tolower(ProcessCommandLine) contains "get-wmiobject" , "Get-WmiObject", "other") | summarize count=count(), firstTime=min(TimeGenerated), lastTime=max(TimeGenerated), sample_commandlines=make_set(ProcessCommandLine,10), sample_files=make_set(FileName,10) by match_term, DeviceName, InitiatingProcessAccountName ; // Also search DeviceEvents and DeviceFileEvents for additional evidence let otherMatches = ( DeviceEvents | where tolower(ProcessCommandLine) has_any (dynamic(["mountvol","fsutil","diskpart","wmic","get-psdrive","get-ciminstance","win32_logicaldisk","get-wmiobject"])) | extend match_source = "DeviceEvents", match_command = ProcessCommandLine, match_file = FileName | project TimeGenerated, DeviceName, InitiatingProcessAccountName, match_source, match_file, match_command ) | union ( DeviceFileEvents | where tolower(InitiatingProcessCommandLine) has_any (dynamic(["mountvol","fsutil","diskpart","wmic","get-psdrive","get-ciminstance","win32_logicaldisk","get-wmiobject"])) | extend match_source = "DeviceFileEvents", match_command = InitiatingProcessCommandLine, match_file = FileName | project TimeGenerated, DeviceName, InitiatingProcessAccountName, match_source, match_file, match_command ) | top 100 by TimeGenerated desc ; procMatches | order by count desc, firstTime desc | join kind=leftouter (otherMatches) on DeviceName | project match_term, DeviceName, InitiatingProcessAccountName, count, firstTime, lastTime, sample_commandlines, sample_files, other_Time=TimeGenerated, other_source=match_source, other_file=match_file, other_command=match_command | take 200
Correct
1
24.60s
0.0069
gpt-5-mini-medium
net use
let utilities = dynamic(["mountvol","fsutil","diskpart","wmic","wmic.exe","powershell","pwsh","get-psdrive","net use","dir","Get-WmiObject","gwmi","Get-CimInstance","cscript","wscript"]); let detectFromProc = DeviceProcessEvents | where isnotempty(ProcessCommandLine) or isnotempty(FileName) | extend ProcLower = tolower(coalesce(FileName, InitiatingProcessFileName, "")), CmdLineLower = tolower(coalesce(ProcessCommandLine, InitiatingProcessCommandLine, "")) | mv-expand util=utilities | where ProcLower contains util or CmdLineLower contains util | extend DetectedUtility = case( ProcLower contains "mountvol" or CmdLineLower contains "mountvol","mountvol", ProcLower contains "fsutil" or CmdLineLower contains "fsutil","fsutil", ProcLower contains "diskpart" or CmdLineLower contains "diskpart","diskpart", ProcLower contains "wmic" or CmdLineLower contains "wmic","wmic", ProcLower contains "powershell" or CmdLineLower contains "pwsh" or CmdLineLower contains "get-psdrive","powershell", CmdLineLower contains "get-psdrive","powershell", CmdLineLower contains "get-wmiobject" or CmdLineLower contains "gwmi" or CmdLineLower contains "get-ciminstance","wmi", CmdLineLower contains "net use" or ProcLower contains "net.exe","net use", CmdLineLower contains "dir" and (CmdLineLower contains ":\\" or CmdLineLower contains " /s"),"dir", CmdLineLower contains "cscript" or CmdLineLower contains "wscript","cscript/wscript", "other") | project TimeGenerated, DeviceName, AccountName, AccountDomain, FileName, ProcessId, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessId, DetectedUtility ; let detectFromEvents = DeviceEvents | where isnotempty(ProcessCommandLine) or isnotempty(FileName) | extend ProcLower = tolower(coalesce(FileName, InitiatingProcessFileName, "")), CmdLineLower = tolower(coalesce(ProcessCommandLine, InitiatingProcessCommandLine, "")) | mv-expand util=utilities | where ProcLower contains util or CmdLineLower contains util | extend DetectedUtility = case( ProcLower contains "mountvol" or CmdLineLower contains "mountvol","mountvol", ProcLower contains "fsutil" or CmdLineLower contains "fsutil","fsutil", ProcLower contains "diskpart" or CmdLineLower contains "diskpart","diskpart", ProcLower contains "wmic" or CmdLineLower contains "wmic","wmic", ProcLower contains "powershell" or ProcLower contains "pwsh" or CmdLineLower contains "get-psdrive","powershell", CmdLineLower contains "get-psdrive","powershell", CmdLineLower contains "get-wmiobject" or CmdLineLower contains "gwmi" or CmdLineLower contains "get-ciminstance","wmi", CmdLineLower contains "net use" or ProcLower contains "net.exe","net use", CmdLineLower contains "dir" and (CmdLineLower contains ":\\" or CmdLineLower contains " /s"),"dir", CmdLineLower contains "cscript" or CmdLineLower contains "wscript","cscript/wscript", "other") | project TimeGenerated, DeviceName, AccountName, AccountDomain, FileName, ProcessId, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessId, DetectedUtility ; union detectFromProc, detectFromEvents | summarize Count = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by DetectedUtility, DeviceName | order by Count desc, LastSeen desc | where DetectedUtility != "other" and DetectedUtility != "" | take 100
Incorrect
1
33.02s
0.0075
gpt-5-nano-high
wmic
DeviceProcessEvents | where InitiatingProcessFileName in ("wmic.exe","wmic","diskpart.exe","diskpart","fsutil.exe","fsutil","powershell.exe","powershell","cmd.exe","cmd") | where (InitiatingProcessCommandLine has_any("logicaldisk","Win32_LogicalDisk","Get-PSDrive","Get-Disk","DiskPart","wmic","Get-WmiObject","Enumerate","ListVolume","ListDisk") or ProcessCommandLine has_any("logicaldisk","Win32_LogicalDisk","Get-PSDrive","Get-Disk","DiskPart","wmic","Get-WmiObject","Enumerate","ListVolume","ListDisk")) | project TimeGenerated, InitiatingProcessFileName, InitiatingProcessCommandLine, ProcessCommandLine, InitiatingProcessId, ProcessId, DeviceName | sort by TimeGenerated desc
Incorrect
4
70.38s
0.0056
gpt-5-nano-medium
No answer provided
No query generated
Incorrect
5
0.00s
0.0079
grok-3-beta
fsutil.exe
DeviceProcessEvents | where TimeGenerated > ago(7d) | where FileName in ('diskpart.exe', 'fsutil.exe', 'wmic.exe') or InitiatingProcessFileName in ('diskpart.exe', 'fsutil.exe', 'wmic.exe') | project UtilityName = FileName, CommandLine = ProcessCommandLine, DeviceName, AccountName, ProcessCreationTime | order by ProcessCreationTime desc
Correct
3
20.65s
0.0556
grok-3-mini-beta
powershell.exe, cmd.exe
DeviceProcessEvents | where ProcessCommandLine contains "logicaldisk" or ProcessCommandLine contains "drives" or ProcessCommandLine contains "mountvol" or ProcessCommandLine contains "net use" | distinct FileName
Incorrect
1
18.30s
0.0015
o1-high
net
DeviceProcessEvents | where ActionType == "ProcessCreated" | where FileName in~ ("cmd.exe", "powershell.exe", "net.exe", "wmic.exe", "fsutil.exe", "diskpart.exe", "mountvol.exe") | where ProcessCommandLine has_any ("net use", "wmic logicaldisk", "Get-WmiObject Win32_LogicalDisk", "Get-PSDrive", "fsutil volume", "diskpart", "mountvol") | project TimeGenerated, DeviceName, AccountName, FileName, FolderPath, ProcessCommandLine | order by TimeGenerated desc
Incorrect
1
33.88s
0.2580
o1-low
net
// Search process execution events for enumerating drives (e.g., using net.exe, mountvol.exe, wmic.exe) DeviceProcessEvents | where // Filter for timeframe in portal. E.g., TimeGenerated >= startofday(ago(7d)) (FileName in~ ("net.exe", "wmic.exe", "mountvol.exe", "cmd.exe", "powershell.exe")) and ( ProcessCommandLine has "net use" or ProcessCommandLine has "wmic logicaldisk" or ProcessCommandLine has "mountvol" or ProcessCommandLine has "Get-PSDrive" ) | project TimeGenerated, DeviceName, AccountName, FileName, FolderPath, ProcessCommandLine | order by TimeGenerated desc
Incorrect
1
34.15s
0.2338
o3-high
No answer provided
No query generated
Incorrect
5
0.00s
0.1030
o3-mini-high
net.exe
DeviceProcessEvents | where FileName in~ ("net.exe", "wmic.exe", "diskpart.exe", "fsutil.exe", "vol.exe") | where ProcessCommandLine has_any ("use", "logicaldisk", "list", "drive") | summarize EventCount=count() by FileName, ProcessCommandLine | sort by EventCount desc
Incorrect
1
34.48s
0.0089
o3-mini-low
net.exe
DeviceProcessEvents | where tolower(InitiatingProcessFileName) in ("wmic.exe", "fsutil.exe", "net.exe") | where tolower(InitiatingProcessCommandLine) contains "logicaldisk" or tolower(InitiatingProcessCommandLine) contains "drives" or tolower(InitiatingProcessCommandLine) contains "use" | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine | summarize Count = count() by InitiatingProcessFileName, bin(TimeGenerated, 1h) | sort by TimeGenerated desc
Incorrect
4
50.52s
0.0348
o4-mini-high
cmd.exe
DeviceProcessEvents | where ProcessCommandLine has_any ("logicaldisk", "fsinfo", "Get-PSDrive", "net use", "mountvol", "list volume") | summarize InvocationCount = count() by FileName | order by InvocationCount desc
Incorrect
1
43.47s
0.0139
o4-mini-low
net.exe
DeviceProcessEvents | where FileName in~ ("fsutil.exe", "mountvol.exe", "diskpart.exe", "wmic.exe", "powershell.exe", "net.exe") // Identify only those invocations that enumerate connected drives | where (tolower(FileName) == "fsutil.exe" and ProcessCommandLine has "fsinfo drives") or (tolower(FileName) == "mountvol.exe") or (tolower(FileName) == "diskpart.exe" and ProcessCommandLine has_any ("list disk", "list volume")) or (tolower(FileName) == "wmic.exe" and ProcessCommandLine has "logicaldisk") or (tolower(FileName) == "powershell.exe"and ProcessCommandLine has "get-psdrive") or (tolower(FileName) == "net.exe" and ProcessCommandLine has "use") | project Timestamp, DeviceName, Utility=FileName, Command=ProcessCommandLine | summarize UsageCount = count(), SampleDevices = make_set(DeviceName, 5), SampleCommands = make_set(Command, 5) by Utility | sort by UsageCount desc
Incorrect
3
62.71s
0.0216