Question Analysis
Using Windows process event logs, investigate PowerShell activity around lsass.exe memory capture. What was the name of the script file invoked to perform the dump?
6502c8f0-b775-4dbd-9193-1298f56b6781
Question ID
10/22
Models Correct
1
Valid Answer
45%
Success Rate
Reference Answer
Human-validated correct answer for this question
Out-Minidump.ps1
Model Performance Comparison
See how different AI models performed on this question
Model | Answer | KQL Query | Status | Attempts | Time | Cost |
---|---|---|---|---|---|---|
gemini-2.5-flash-preview-04-17 | Out-Minidump.ps1 | DeviceProcessEvents
| where FileName in~ ("powershell.exe", "pwsh.exe")
| where ProcessCommandLine contains "lsass"
| where ProcessCommandLine contains "dump" or ProcessCommandLine contains "minidump" or ProcessCommandLine contains "credential" or ProcessCommandLine contains "memory"
| project Timestamp, DeviceName, AccountName, ProcessCommandLine | Correct | 1 | 19.84s | 0.0068 |
gpt-35-turbo | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0115 |
gpt-4-turbo-2024-04-09 | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.2371 |
gpt-4.1 | Out-Minidump.ps1 | DeviceProcessEvents
| where ActionType == "ProcessCreated"
| where tolower(FileName) in ("powershell.exe", "pwsh.exe")
| where tolower(ProcessCommandLine) has_any ("lsass", "procdump", "minidump", "out-minidump", "sekurlsa")
| extend ScriptFile = extract(@"([\w\-\\.:]+\.ps1)", 1, ProcessCommandLine)
| where isnotempty(ScriptFile)
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessCommandLine, ProcessCommandLine, ScriptFile
| order by TimeGenerated desc | Correct | 3 | 15.20s | 0.0280 |
gpt-4.1-finetuned | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0364 |
gpt-4.1-mini | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0080 |
gpt-4.1-nano | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0015 |
gpt-4o | Out-Minidump.ps1 | DeviceProcessEvents
| where InitiatingProcessFileName == "powershell.exe"
| where ProcessCommandLine has "lsass"
| extend ScriptFileName = FileName | Correct | 1 | 5.43s | 0.0233 |
gpt-5-high | Out-Minidump.ps1 | DeviceProcessEvents
| where FileName in~ ("rundll32.exe","procdump.exe","procdump64.exe","werfault.exe","taskmgr.exe","powershell.exe","pwsh.exe","powershell_ise.exe")
// Look for common lsass dump indicators
| where ProcessCommandLine has_any ("comsvcs.dll","MiniDump","lsass","lsass.exe","procdump",".dmp","-ma")
// Decide which command line to parse for the script: PowerShell's own CL or the initiator's CL
| extend RawCL = tostring(iif(FileName in~ ("powershell.exe","pwsh.exe","powershell_ise.exe"), ProcessCommandLine, InitiatingProcessCommandLine))
// Extract a .ps1 path/token, then just the script file name
| extend ScriptPath = extract(@'(?i)([^\s"''<>|]+\.ps1)', 1, RawCL)
| extend ScriptFile = extract(@'(?i)([^\\/:]+\.ps1)$', 1, ScriptPath)
| where isnotempty(ScriptFile)
| summarize Count=count(), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated) by ScriptFile
| order by Count desc, LastSeen desc
| take 1
| project ScriptFile | Correct | 2 | 208.91s | 0.1032 |
gpt-5-mini-high | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0195 |
gpt-5-mini-low | Out-Minidump.ps1 | // Find PowerShell commands that reference lsass or procdump and extract invoked .ps1 script names
let ps_cmds = DeviceProcessEvents
| where FileName has_cs "powershell" or InitiatingProcessFileName has_cs "powershell"
// look for signs of lsass memory dumping or a script invocation
| where ProcessCommandLine has_cs "lsass" or ProcessCommandLine has_cs "procdump" or ProcessCommandLine has_cs ".ps1"
| extend ScriptName = extract(@"(?i)([^\\\/\s]+\.ps1)", 1, ProcessCommandLine)
| project TimeGenerated, DeviceName, AccountName, ProcessId, ProcessCommandLine, ScriptName;
// Find PowerShell-launched .ps1 files (file events)
let ps_files = DeviceFileEvents
| where FileName endswith_cs ".ps1" and (InitiatingProcessFileName has_cs "powershell" or InitiatingProcessCommandLine has_cs "powershell")
| extend ScriptName = FileName
| project FileTimeGenerated = TimeGenerated, DeviceName, ScriptName, FolderPath, FileOriginUrl, InitiatingProcessCommandLine;
// Correlate and show results
ps_cmds
| join kind=leftouter (ps_files) on DeviceName, ScriptName
| project TimeGenerated, FileTimeGenerated, DeviceName, AccountName, ScriptName, FolderPath, ProcessCommandLine, InitiatingProcessCommandLine, FileOriginUrl
| order by TimeGenerated desc
| where isnotempty(ScriptName)
| take 50 | Correct | 1 | 32.50s | 0.0078 |
gpt-5-mini-medium | Out-Minidump.ps1 | // PowerShell + lsass memory dump investigation
let indicators = dynamic(["lsass","lsass.exe","dump","procdump",".dmp","minidumpwritedump","comsvcs.dll","rundll32"]);
let proc = DeviceProcessEvents
| where TimeGenerated between (startofday(ago(7d)) .. now())
| where isnotempty(ProcessCommandLine)
| where ProcessCommandLine has_cs "powershell" or ProcessCommandLine has_cs "pwsh" or ProcessCommandLine has_cs "powershell.exe" or ProcessCommandLine has_cs "pwsh.exe"
| where (
ProcessCommandLine has_cs "lsass" or ProcessCommandLine has_cs "lsass.exe" or
ProcessCommandLine has_cs "dump" or ProcessCommandLine has_cs "procdump" or
ProcessCommandLine has_cs ".dmp" or ProcessCommandLine has_cs "MiniDumpWriteDump" or
ProcessCommandLine has_cs "comsvcs.dll" or ProcessCommandLine has_cs "rundll32"
)
| extend Cmd = ProcessCommandLine, Time = TimeGenerated, Device = DeviceName, PID = ProcessId, User = AccountName
| extend ScriptName = extract(@"(?i)([\w\-\.]+\.ps1)", 1, Cmd)
| extend EXEInvoked = extract(@"(?i)([\w\-\.]+\.(exe|dll|ps1))", 1, Cmd)
| extend DmpFile = extract(@"(?i)([\w\-\.]+\.dmp)", 1, Cmd)
| extend PotentialIndicator = trim('\"', coalesce(ScriptName, EXEInvoked, DmpFile, ""))
| project Time, Device, PID, User, Cmd, ScriptName, EXEInvoked, DmpFile, PotentialIndicator;
let dev = DeviceEvents
| where TimeGenerated between (startofday(ago(7d)) .. now())
| where isnotempty(InitiatingProcessCommandLine)
| where ActionType has_cs "ProcessCreated" or ActionType has_cs "Create" or ActionType has_cs "Process"
| where InitiatingProcessCommandLine has_cs "powershell" or InitiatingProcessCommandLine has_cs "pwsh" or InitiatingProcessCommandLine has_cs "powershell.exe" or InitiatingProcessCommandLine has_cs "pwsh.exe"
| where (
InitiatingProcessCommandLine has_cs "lsass" or InitiatingProcessCommandLine has_cs "lsass.exe" or
InitiatingProcessCommandLine has_cs "dump" or InitiatingProcessCommandLine has_cs "procdump" or
InitiatingProcessCommandLine has_cs ".dmp" or InitiatingProcessCommandLine has_cs "MiniDumpWriteDump" or
InitiatingProcessCommandLine has_cs "comsvcs.dll" or InitiatingProcessCommandLine has_cs "rundll32"
)
| extend Cmd = InitiatingProcessCommandLine, Time = TimeGenerated, Device = DeviceName, PID = InitiatingProcessId, User = InitiatingProcessAccountName
| extend ScriptName = extract(@"(?i)([\w\-\.]+\.ps1)", 1, Cmd)
| extend EXEInvoked = extract(@"(?i)([\w\-\.]+\.(exe|dll|ps1))", 1, Cmd)
| extend DmpFile = extract(@"(?i)([\w\-\.]+\.dmp)", 1, Cmd)
| extend PotentialIndicator = trim('\"', coalesce(ScriptName, EXEInvoked, DmpFile, ""))
| project Time, Device, PID, User, Cmd, ScriptName, EXEInvoked, DmpFile, PotentialIndicator;
proc
| union dev
| summarize FirstSeen=min(Time), LastSeen=max(Time), Count=count(), SampleCmd=any(Cmd), SamplePotentialIndicator=any(PotentialIndicator) by Device, User, PID, ScriptName, EXEInvoked, DmpFile
| where Count > 0
| order by LastSeen desc
| top 100 by LastSeen
| project Device, User, PID, ScriptName, EXEInvoked, DmpFile, SamplePotentialIndicator, FirstSeen, LastSeen, Count | Correct | 2 | 43.47s | 0.0076 |
gpt-5-nano-high | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0116 |
grok-3-beta | Out-Minidump.ps1 | DeviceProcessEvents
| where (InitiatingProcessFileName =~ 'powershell.exe' or FileName =~ 'powershell.exe')
| where (ProcessCommandLine contains 'lsass' or InitiatingProcessCommandLine contains 'lsass')
| project
ScriptFileName = extract('([^ \"]*\\.ps1)', 1, ProcessCommandLine),
ProcessFileName = FileName,
ProcessCommandLine,
InitiatingProcessFileName,
InitiatingProcessCommandLine,
AccountName,
AccountDomain,
DeviceName,
DeviceId,
Timestamp
| order by Timestamp desc | Correct | 1 | 12.18s | 0.0242 |
grok-3-mini-beta | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0079 |
o1-high | Out-Minidump.ps1 | DeviceProcessEvents
| where (FileName == "powershell.exe" or InitiatingProcessFileName == "powershell.exe")
and (ProcessCommandLine has "lsass" or InitiatingProcessCommandLine has "lsass")
| extend InvokedScript = extract(@"([^\s]+\.ps1)",1,ProcessCommandLine)
| project TimeGenerated, DeviceName, AccountName, InvokedScript, ProcessCommandLine, InitiatingProcessCommandLine | Correct | 1 | 33.34s | 0.2002 |
o1-low | Out-Minidump.ps1 | DeviceProcessEvents
| where FileName in~ ("powershell.exe", "pwsh.exe")
| where ProcessCommandLine has "lsass"
| extend ScriptFile = extract(@"(\S+\.ps1)", 1, ProcessCommandLine)
| where isnotempty(ScriptFile)
| project TimeGenerated, DeviceName, AccountName, ScriptFile, ProcessCommandLine
| distinct ScriptFile | Correct | 3 | 48.28s | 0.4114 |
o3-high | Out-Minidump.ps1 | let ps_hosts = dynamic(["powershell.exe","pwsh.exe","powershell_ise.exe"]);
let dump_keywords = dynamic(["lsass","minidump","comsvcs.dll","procdump","out-minidump"]);
DeviceProcessEvents
| where ActionType == "ProcessCreated"
| where FileName in~ (ps_hosts)
| where ProcessCommandLine has_any (dump_keywords)
| extend ScriptFile = extract(@'\S+\.ps1', 0, ProcessCommandLine)
| where isnotempty(ScriptFile)
| project TimeGenerated, DeviceName, AccountName, ProcessCommandLine, ScriptFile
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), Devices = make_set(DeviceName, 50) by ScriptFile
| order by FirstSeen asc | Correct | 4 | 123.77s | 0.0703 |
o3-mini-high | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0402 |
o3-mini-low | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0425 |
o4-mini-high | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0417 |
o4-mini-low | No answer provided | No query generated | Incorrect | 5 | 0.00s | 0.0345 |