Practical, copy-paste command samples for using WinFIRE during a real incident-response engagement on a Windows 10/11 host. Run from an elevated prompt for complete results.
Repository: https://github.com/Masriyan/WinFire/
Authorized use only. WinFIRE collects forensic data from the live host. Use it only on systems you are authorized to investigate.
WinFIRE.bat self-elevates to Administrator, then runs the orchestrator. Most probes
(services, scheduled tasks, raw NTFS, protected-process memory) need admin.
WinFIRE.bat -LiveTriage -CaseNumber INC-2026-001 -Investigator "J. Doe"powershell -NoProfile -ExecutionPolicy Bypass -File .\WinFIRE.ps1 -LiveTriage -CaseNumber INC-2026-001.\WinFIRE.ps1 -ListModules.\WinFIRE.ps1 -GetTools # report present vs missing
.\WinFIRE.ps1 -GetTools -AutoGetTools # download yara + hayabusa + rawcopy from GitHub
.\tools\Get-Tools.ps1 -Auto # same, standalone (run on a staging box, carry bin\ on USB)Eric Zimmerman tools (PECmd / AmcacheParser / AppCompatCacheParser / SrumECmd / MFTECmd) are
manual — drop them in bin\EZTools\ (get them from https://ericzimmerman.github.io/).
-Quick = LiveTriage + YARA over registry + YARA over PowerShell event logs.
WinFIRE.bat -Quick -CaseNumber INC-2026-001 -Investigator "J. Doe"Runs everything that has its tool present; missing-tool modules degrade gracefully.
WinFIRE.bat -Full -CaseNumber INC-2026-001 -Investigator "J. Doe" -Purpose "Suspected compromise"Autoruns, services, scheduled tasks, WMI subscriptions, scored for suspicion.
WinFIRE.bat -LiveTriage -CaseNumber INC-2026-001 -Investigator "J. Doe"Recursive, multithreaded YARA scan of a path (also unpacks .zip archives and scans inside).
WinFIRE.bat -ScanFiles C:\Users -CaseNumber INC-2026-001
WinFIRE.bat -ScanFiles "C:\Users\suspect\Downloads","C:\ProgramData" -CaseNumber INC-2026-001Use a specific rules folder instead of the bundled rules\yara\:
WinFIRE.bat -ScanFiles C:\ -RulesPath D:\rules\signature-base -CaseNumber INC-2026-001YARA against running-process memory (needs admin + SeDebugPrivilege for protected processes).
WinFIRE.bat -ScanMemory -CaseNumber INC-2026-001Behavioral injection/hollowing detection (RWX regions, unbacked executable memory):
WinFIRE.bat -DetectInjection -CaseNumber INC-2026-001Scan PowerShell Operational (4104/4103) script-block logs with YARA, then auto-deobfuscate Base64/XOR and re-scan the cleartext.
WinFIRE.bat -ScanEventLogs -Deobfuscate -CaseNumber INC-2026-001YARA over exported Run/Winlogon/Policies keys.
WinFIRE.bat -ScanRegistry -CaseNumber INC-2026-001Runs Hayabusa (Sigma engine) over the EVTX store and maps hits to ATT&CK.
WinFIRE.bat -SigmaScan -CaseNumber INC-2026-001Requires the EZTools in bin\EZTools\.
WinFIRE.bat -CollectArtifacts -CaseNumber INC-2026-001Parse the raw MFT (via RawCopy + MFTECmd) and diff it against the Windows API.
WinFIRE.bat -UseRawNtfs -CaseNumber INC-2026-001WinFIRE.bat -Full -CaseNumber INC-2026-001 -Investigator "J. Doe" -Purpose "Ransomware IR" -HashAlgorithm SHA256WinFIRE.bat -LiveTriage -ScanFiles C:\Users\suspect -ScanRegistry -ScanEventLogs -SigmaScan -CaseNumber INC-2026-001| Option | Purpose |
|---|---|
-CaseNumber <id> |
Stamped into the report + chain-of-custody record |
-Investigator "<name>" |
Recorded in the report header / custody |
-Purpose "<text>" |
Free-text reason for the collection |
-OutputPath <dir> |
Where the case folder is created (default: current dir) |
-RulesPath <dir> |
Use a different YARA rules folder than rules\yara\ |
-HashAlgorithm MD5|SHA1|SHA256 |
Hash algorithm for evidence (default SHA256) |
-Quiet |
Suppress console chatter (errors/warnings still show); report still written |
WinFIRE.bat -Full -OutputPath E:\Evidence -CaseNumber INC-2026-001 -Investigator "J. Doe" -QuietEach run creates a timestamped case folder, e.g.
WinFIRE_<HOST>_<yyyyMMdd_HHmmss>\, containing:
report.html— self-contained report: severity summary, MITRE ATT&CK matrix, and a findings table. Each finding has an expandable evidence block (YARA rule name + surface, PID, registry key, memory address, matched path, etc.).findings.json— machine-readable findings (full evidence) for SOAR / ingestion.raw\— raw collected artifacts: triage CSV/JSON, exported registry, EVTX string dumps, YARA index, parsed MFT/artifact CSVs, decoded payloads, the Hayabusa timeline, etc.winfire.log— run log.raw\chain_of_custody.json— tool/version, case, investigator, host, start time, modules.
| Code | Meaning |
|---|---|
0 |
No findings at all |
1 |
Highest finding was Info / Low / Medium |
2 |
At least one High / Critical finding |
.\WinFIRE.ps1 -Quick -CaseNumber INC-2026-001
if ($LASTEXITCODE -ge 2) { Write-Host "High/Critical findings — escalate." }Note: informational findings (e.g. "engine unavailable", benign autoruns) count toward exit
1, so a perfectly clean run that still emits Info notes returns1, not0.
- Drop
.yar/.yarafiles anywhere underrules\yara\(subfolders are scanned recursively). - WinFIRE auto-skips rule files that fail to compile (duplicate rule names, syntax errors,
unsupported
imports) and logsYARA: excluding non-compiling rule file: ...— one bad file in a large third-party pack will not break the whole scan. - The standard external variables used by signature-base / LOKI / THOR rules
(
filename,filepath,extension,filetype,owner) are defined automatically so those rules compile. Because recursive scanning can't set them per file, rules that condition on filename/path/extension may under-match on the file surface; pure content rules match fully. - Save rules as ASCII or UTF-8 without BOM (a BOM makes yara reject the file).
- On an internet-connected staging machine:
\.tools\Get-Tools.ps1 -Auto(and manually add EZTools tobin\EZTools\). - Copy the whole WinFIRE folder (with a populated
bin\and yourrules\yara\) to USB. - On the target:
WinFIRE.bat -Full -CaseNumber <id>— no network calls are made unless you pass-AutoGetTools.
WinFIRE.bat -Full -OutputPath \\evidence-share\cases -CaseNumber INC-2026-001 -Investigator "J. Doe"Running via WinFIRE.bat keeps the working directory in the WinFIRE folder during elevation, so
relative paths and the default output location behave as expected.