Question Analysis

On a Windows system, PowerShell was used to gather multiple browser credential files into a temp folder and then archive them. What was the name of the resulting ZIP file?

f543635c-1705-42c3-b180-efd6dc6e7ee7
Question ID
13/23
Models Correct
1
Valid Answer
57%
Success Rate
Reference Answer

Human-validated correct answer for this question

T1555.003.zip
Model Performance Comparison

See how different AI models performed on this question

ModelAnswerKQL QueryStatusAttemptsTimeCost
gemini-2.5-flash-preview-04-17
T1555.003.zip
DeviceFileEvents | where InitiatingProcessFileName =~ "powershell.exe" | where FileName endswith ".zip" | where FolderPath contains "temp" or FolderPath contains @"AppData\Local\Temp" | distinct FileName
Correct
1
11.09s
0.0046
gpt-35-turbo
T1555.003.zip
DeviceFileEvents | where ActionType == 'FileCreated' | where InitiatingProcessCommandLine contains 'PowerShell' and FolderPath contains 'temp' and FileName endswith '.zip' | project FileName
Correct
5
14.46s
0.0112
gpt-4-turbo-2024-04-09
T1555.003.zip
DeviceFileEvents | where ActionType == 'FileCreated' and FileName has '.zip' and FolderPath has 'temp' and InitiatingProcessFileName == 'powershell.exe' | project DeviceName, FileName, FolderPath, InitiatingProcessCommandLine
Correct
1
11.47s
0.0630
gpt-4.1
T1555.003.zip
DeviceFileEvents | where ActionType =~ 'FileCreated' | where FileName endswith '.zip' | where FolderPath contains 'temp' | where InitiatingProcessFileName =~ 'powershell.exe' | project TimeGenerated, DeviceName, FileName, FolderPath, InitiatingProcessCommandLine | sort by TimeGenerated desc
Correct
1
5.55s
0.0134
gpt-4.1-finetuned
No answer provided
No query generated
Incorrect
5
0.00s
0.0361
gpt-4.1-mini
chrome-win.zip
DeviceProcessEvents | where InitiatingProcessFileName =~ "powershell.exe" | where ProcessCommandLine has_any ("zip", "archive", "compress", "7zip", "tar", "compress-archive") | where ProcessCommandLine has_any ("temp", "tmp", "AppData", "Chrome", "Edge", "Firefox", "Credentials", "Passwords") | extend ZipFileName = extract(@"[\\/]?([\w\-. ]+\.zip)", 1, ProcessCommandLine) | where isnotempty(ZipFileName) | project TimeGenerated, DeviceName, ProcessId, ProcessCommandLine, ZipFileName | order by TimeGenerated desc | distinct ZipFileName
Incorrect
3
36.34s
0.0057
gpt-4.1-nano
No answer provided
No query generated
Incorrect
5
0.00s
0.0020
gpt-4o
T1555.003.zip
DeviceFileEvents | where ActionType == "FileCreated" and InitiatingProcessCommandLine contains "powershell" | where FileName endswith ".zip" | project FileName
Correct
1
19.06s
0.0143
gpt-5-high
T1555.003.zip
let browserCredFileNames = dynamic(["Login Data","Web Data","Cookies","Local State","History","Favicons","Cookies.sqlite","key4.db","logins.json"]); // common browser credential store files let pwsh_staging = DeviceFileEvents | where InitiatingProcessFileName in~ ("powershell.exe","pwsh.exe","powershell_ise.exe") | where ActionType in ("FileCreated","FileRenamed") | where FolderPath has_any ("\\AppData\\Local\\Temp\\","\\Windows\\Temp\\","\\Temp\\","\\TMP\\") | where FileName has_any (browserCredFileNames) | project DeviceId, DeviceName, InitiatingProcessId, InitiatingProcessCreationTime, StageTime=TimeGenerated, TempFolder=FolderPath, StagedFile=FileName; let candidates = pwsh_staging | summarize StagedCount=dcount(StagedFile), FirstStage=min(StageTime), LastStage=max(StageTime), any(TempFolder) by DeviceId, DeviceName, InitiatingProcessId, InitiatingProcessCreationTime | where StagedCount >= 2; // ensure multiple browser credential files were staged DeviceFileEvents | where InitiatingProcessFileName in~ ("powershell.exe","pwsh.exe","powershell_ise.exe") | where ActionType in ("FileCreated","FileRenamed") | where FileName endswith ".zip" | where FolderPath has_any ("\\AppData\\Local\\Temp\\","\\Windows\\Temp\\","\\Temp\\","\\TMP\\") | project DeviceId, DeviceName, InitiatingProcessId, InitiatingProcessCreationTime, ZipTime=TimeGenerated, ZipFolderPath=FolderPath, ZipFileName=FileName | join kind=innerunique (candidates) on DeviceId, DeviceName, InitiatingProcessId, InitiatingProcessCreationTime | where ZipTime >= FirstStage and ZipTime <= LastStage + 4h | project Time=ZipTime, DeviceName, ZipFileName, ZipFolderPath | order by Time desc
Correct
1
154.01s
0.0728
gpt-5-mini-high
exfil_folder.zip
union DeviceFileEvents, DeviceEvents, DeviceProcessEvents | extend Cmd = tolower(coalesce(InitiatingProcessCommandLine, ProcessCommandLine, tostring(AdditionalFields.CommandLine), "")) | extend InitiProc = tolower(coalesce(InitiatingProcessFileName, FileName, "")) | extend ObservedPath = strcat(tolower(coalesce(FolderPath, "")), " ", tolower(coalesce(FileName, PreviousFileName, ""))) // Filter for PowerShell as the creator/initiator | where Cmd contains "powershell" or InitiProc contains "powershell" // Only consider records that reference or created ZIPs | where Cmd contains ".zip" or ObservedPath contains ".zip" // Limit to activity likely targeting browser credentials/profiles | where Cmd has_any ("login data","cookies","web data","chrome","edge","firefox","key4.db","logins.json","profile","user data") // Try to extract a .zip filename from the command line or observed path | extend CmdZip = extract("([A-Za-z0-9_\\-\\.]+\\.zip)", 1, Cmd) | extend ObservedZip = extract("([A-Za-z0-9_\\-\\.]+\\.zip)", 1, ObservedPath) | extend ZipFileName = tostring(coalesce(CmdZip, ObservedZip, FileName)) | where isnotempty(ZipFileName) | summarize Count = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by ZipFileName, ZipPath = coalesce(CmdZip, ObservedZip), DeviceName, InitiatingProcessAccountName, InitiProc | order by LastSeen desc | project ZipFileName, ZipPath, Count, DeviceName, InitiatingProcessAccountName, InitiProc, FirstSeen, LastSeen
Incorrect
5
103.80s
0.0288
gpt-5-mini-low
No answer provided
No query generated
Incorrect
5
0.00s
0.0171
gpt-5-mini-medium
T1555.003.zip
// Find PowerShell processes that reference browser credential files and temp folders and/or use archive commands let browserIndicators = dynamic(["login data","logindata","logins.json","key4.db","cookies","web data","local state","chrome","chromium","edge","firefox","login-","logins","logins-backup","Login Data","LoginData","logins.json"]); let tempIndicators = dynamic(["%temp%","$env:temp","\\temp\\","\\AppData\\Local\\Temp","\\Local Settings\\Temp","/tmp/","/temp/"]); let archiveExtPattern = @"([\\w\- \\\.]+\\.(zip|7z|rar|tar|gz))"; // Candidate PowerShell process events let procCandidates = DeviceProcessEvents | where ( tolower(ProcessCommandLine) contains "powershell" or tolower(ProcessCommandLine) contains "pwsh" or tolower(InitiatingProcessFileName) has_any ("powershell.exe","pwsh.exe") or tolower(InitiatingProcessCommandLine) contains "powershell" ) // include typical copy/archive verbs or indicators of zipping | where ProcessCommandLine has_any ("compress-archive","Compress-Archive","Copy-Item","copy-item","Move-Item","move-item","xcopy","robocopy","7z","zip.exe","tar","Expand-Archive","Add-Type","System.IO.Compression","New-Object","Ionic.Zip","Out-File","Set-Content") // require references to either temp paths or browser credential files | where (ProcessCommandLine has_any (tempIndicators) or ProcessCommandLine has_any (browserIndicators)) | extend ProcTime = TimeGenerated | project ProcTime, DeviceName, AccountName, ProcessId, ProcessCreationTime, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName ; // Archive file events written to temp locations let fileArchives = DeviceFileEvents | where FolderPath has_any (tempIndicators) or FileName has_any (".zip",".7z",".rar",".tar",".gz") | where FileName endswith ".zip" or FileName endswith ".7z" or FileName endswith ".rar" or FileName endswith ".tar" or FileName endswith ".gz" | extend ArchiveTime = Timestamp | project ArchiveTime, DeviceName, ArchiveFile = FileName, ArchiveFolder = FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine, RequestAccountName ; // Correlate processes and file archive events on the same device within a 10-minute window procCandidates | join kind=leftouter (fileArchives) on DeviceName | where isnotempty(ArchiveTime) and abs(datetime_diff('second', ProcTime, ArchiveTime)) <= 600 // ensure PowerShell is initiating or present in the related commandline | where tolower(coalesce(InitiatingProcessFileName, "")) contains "powershell" or tolower(coalesce(InitiatingProcessCommandLine, "")) contains "powershell" or tolower(ProcessCommandLine) contains "powershell" or tolower(ProcessCommandLine) contains "pwsh" | extend ExtractedFromCmd = extract(archiveExtPattern, 1, ProcessCommandLine) | extend ArchiveFileName = tostring(coalesce(ArchiveFile, ExtractedFromCmd)) | where isnotempty(ArchiveFileName) | project DeviceName, Account = coalesce(AccountName, RequestAccountName, InitiatingProcessAccountName), ProcTime, ProcessCommandLine, ArchiveTime, ArchiveFileName, ArchiveFolder, InitiatingProcessFileName, InitiatingProcessCommandLine | summarize arg_max(ArchiveTime, *) by DeviceName, ArchiveFileName | order by ArchiveTime desc | take 200 // Fallback: direct file events where PowerShell is the initiator writing an archive into temp | union ( DeviceFileEvents | where FolderPath has_any (tempIndicators) | where FileName endswith ".zip" or FileName endswith ".7z" or FileName endswith ".rar" or FileName endswith ".tar" or FileName endswith ".gz" | where tolower(InitiatingProcessFileName) has_any ("powershell.exe","pwsh.exe") or tolower(InitiatingProcessCommandLine) contains "powershell" | extend ArchiveTime = Timestamp, ArchiveFileName = FileName | project DeviceName, Account = RequestAccountName, ProcTime = ArchiveTime, ProcessCommandLine = InitiatingProcessCommandLine, ArchiveTime, ArchiveFileName, ArchiveFolder = FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine ) | summarize arg_max(ArchiveTime, *) by DeviceName, ArchiveFileName | order by ArchiveTime desc | take 200
Correct
2
49.65s
0.0117
gpt-5-nano-high
extension.zipextension.zip
let _timeRange = 7d; DeviceFileEvents | where TimeGenerated >= ago(_timeRange) | where tolower(FileName) endswith ".zip" | where FolderPath contains "Temp" | where tolower(InitiatingProcessCommandLine) contains "powershell" or tolower(InitiatingProcessCommandLine) contains "pwsh" or tolower(InitiatingProcessCommandLine) contains "compress-archive" | extend ZipPath = strcat(FolderPath, FileName) | project TimeGenerated, ZipPath, FolderPath, FileName, InitiatingProcessCommandLine | sort by TimeGenerated desc | take 1
Incorrect
2
69.81s
0.0045
gpt-5-nano-medium
extension.zip
DeviceFileEvents | where InitiatingProcessFileName has_any ("powershell.exe","pwsh.exe","pwsh") or InitiatingProcessCommandLine has_any ("powershell","pwsh") | where tolower(FolderPath) contains "temp" or tolower(FolderPath) contains "tmp" | extend ZipNameLower = tolower(FileName) | where ZipNameLower endswith ".zip" | extend ZipPath = strcat(FolderPath, "\\", FileName) | project TimeGenerated, DeviceName, InitiatingProcessFileName, ZipName = FileName, ZipPath, FolderPath, FileName | distinct ZipPath, ZipName
Incorrect
1
43.83s
0.0020
grok-3-beta
T1555.003.zip
DeviceFileEvents | where TimeGenerated > ago(7d) | where InitiatingProcessFileName =~ 'powershell.exe' | where ActionType == 'FileCreated' | where FileName endswith '.zip' | where FolderPath contains 'temp' or FolderPath contains 'tmp' | project Timestamp, DeviceName, FileName, FolderPath, InitiatingProcessCommandLine | order by Timestamp desc
Correct
1
14.56s
0.0262
grok-3-mini-beta
T1555.003.zip
DeviceFileEvents | where InitiatingProcessFileName == "powershell.exe" | where ActionType == "FileCreated" | where FolderPath contains "Temp" | where FileName endswith ".zip" | project FileName, FolderPath, Timestamp | summarize arg_max(Timestamp, *) by FileName
Correct
1
16.47s
0.0016
o1-high
T1555.003.zip
DeviceFileEvents | where ActionType == "FileCreated" | where InitiatingProcessFileName =~ "powershell.exe" or InitiatingProcessCommandLine has "powershell" | where FileName endswith ".zip" | project TimeGenerated, DeviceName, FolderPath, FileName, InitiatingProcessCommandLine | order by TimeGenerated desc
Correct
1
23.02s
0.1987
o1-low
T1555.003.zip
DeviceFileEvents | where InitiatingProcessFileName =~ "powershell.exe" | where ActionType == "FileCreated" | where FolderPath contains "temp" | where FileName endswith ".zip" | project TimeGenerated, DeviceName, FolderPath, FileName, InitiatingProcessCommandLine, InitiatingProcessAccountName, InitiatingProcessAccountDomain | order by TimeGenerated desc
Correct
1
33.28s
0.2358
o3-high
T1555.003.zip
// PowerShell created a ZIP archive in a Temp folder – find the ZIP name DeviceFileEvents | where ActionType == "FileCreated" // new file on disk | where FileName endswith ".zip" // archive file | where FolderPath has "Temp" // typically %TEMP% or AppData\Local\Temp | where InitiatingProcessFileName in~ ("powershell.exe","pwsh.exe") // created by PowerShell // optional extra assurance that it was a Compress-Archive operation //| where InitiatingProcessCommandLine contains "Compress-Archive" or InitiatingProcessCommandLine contains "Add-Type" | project TimeGenerated, DeviceName, ZipFileName = FileName, ZipFolderPath = FolderPath, FullZipPath = strcat(FolderPath, "\\", FileName), InitiatingProcessCommandLine | summarize FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated), Events = count() by DeviceName, FullZipPath, ZipFileName, InitiatingProcessCommandLine | sort by LastSeen desc // If you only want the single most recent ZIP across the estate, take the first row: //| take 1
Correct
1
35.80s
0.0239
o3-mini-high
No answer provided
No query generated
Incorrect
5
0.00s
0.0494
o3-mini-low
T1555.003.zip
DeviceFileEvents | where FileName endswith ".zip" | where tolower(FolderPath) contains "temp" | where tolower(InitiatingProcessFileName) == "powershell.exe" | project TimeGenerated, FileName, FolderPath, InitiatingProcessCommandLine | order by TimeGenerated desc
Correct
1
15.48s
0.0119
o4-mini-high
T1560-data-ps.zip
// First, capture PowerShell processes that ran Compress-Archive targeting a .zip let psCompress = DeviceProcessEvents | where FileName == "powershell.exe" | where ProcessCommandLine has "Compress-Archive" | where ProcessCommandLine contains ".zip" | project DeviceId, InitiatingProcessId = ProcessId; // Then find the matching file events for .zip files created by those PowerShell processes DeviceFileEvents | where InitiatingProcessFileName == "powershell.exe" | where FileName endswith ".zip" | join kind=inner psCompress on DeviceId, InitiatingProcessId | distinct FileName | project ZipFileName = FileName
Incorrect
1
65.15s
0.0151
o4-mini-low
No answer provided
No query generated
Incorrect
5
0.00s
0.0442