winforensics-mcp

KALI Linux üzerinde Windows dijital adli bilişimi için kapsamlı bir MCP sunucusu

Dokümantasyon

WinForensics MCP

Windows Forensics MCP Server

Windows DFIR from Linux - A comprehensive forensics toolkit designed for Linux environments with no Windows runtime dependencies. Parse Windows artifacts natively, with an optional Rust SIDR sidecar for Windows Search.


Related Projects

  • mem_forensics-mcp - Unified Memory Forensics MCP Server - Multi-tier engine combining Rust speed with Vol3 coverage
  • mac_forensics-mcp - macOS DFIR - Unified Logs, FSEvents, Spotlight, Plists, SQLite databases, Extended Attributes

Features

Core Forensics

CategoryCapabilities
EVTX LogsCompact structured queries, field filters, logon correlation, NTLM summaries, and JSONL export
Offline NTDSQuery exact SAM accounts, domain SIDs, and trust metadata without credential decryption
RegistryAnalyze SAM, SYSTEM, SOFTWARE, SECURITY, and NTUSER.DAT; paginated queries, normalized FILETIMEs, and USBSTOR/WPD correlation
Remote CollectionCollect artifacts via WinRM (password or pass-the-hash)

Execution Artifacts

CategoryCapabilities
PE AnalysisStatic analysis with hashes (MD5/SHA1/SHA256/imphash), imports, exports, packer detection
PrefetchExecution evidence with run counts, timestamps, loaded files
AmcacheSHA1 hashes and first-seen timestamps from Amcache.hve
SRUMExact application/time filtering, raw resource counters, network MB/MiB totals, and optional aggregation from SRUDB.dat

File System Artifacts

CategoryCapabilities
MFTMaster File Table parsing with ADS metadata and timestomping detection
USN JournalChange journal for file operations and deleted file recovery
TimelineUnified timeline from MFT, USN, Prefetch, Amcache, EVTX

User Activity

CategoryCapabilities
BrowserEdge, Chrome, Firefox history and downloads
LNK FilesWindows shortcut analysis for recently accessed files
ShellBagsFolder navigation history from both UsrClass.dat and NTUSER.DAT, incl. UNC shares and browsed archive interiors (libfwsi)
RecentDocsRegistry-based recent document tracking
Windows SearchSIDR-backed Windows.edb file, internet-history, activity-history, and System.Search.AutoSummary recovery

Network Forensics

CategoryCapabilities
PCAP AnalysisParse PCAP/PCAPNG files - conversations, DNS queries, HTTP requests, suspicious connections

API Monitor Capture Analysis

CategoryCapabilities
APMX ParsingParse API Monitor captures (.apmx64/.apmx86) - process metadata, API call extraction, parameter values
Pattern DetectionDetect injection, hollowing, credential dumping, and other attack patterns from captured API call sequences with MITRE ATT&CK mapping
Handle CorrelationTrack handle values across calls to reconstruct attack chains (OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread)
Injection AnalysisExtract enriched injection chain details: target PID/process, shellcode size, allocation addresses, technique classification
API Knowledge Base26,944 Windows API definitions with parameter signatures, DLL mappings, and category browsing

Malware Detection

CategoryCapabilities
YARA Scanning718 rules from signature-base - APT, ransomware, webshells, hacktools
IoC PacksBehavioral IoC packs for hunting across exported logs, filenames, and PCAP payloads; includes optional GPL-2.0 impacket-iocs pack with 65 rules
VirusTotalHash/IP/domain reputation lookups with caching and rate limiting (free tier supported)
DiE IntegrationDetect packers (UPX, Themida, VMProtect), compilers, .NET, installers via Detect It Easy

Orchestrators

ToolWhat It Does
investigate_executionCorrelates Prefetch + Amcache + SRUM to answer "Was this binary executed?"
investigate_user_activityCorrelates Browser + ShellBags + LNK + RecentDocs for user activity timeline
hunt_iocSearches for IOC (hash/filename/IP/domain) across ALL artifact sources + optional YARA scanning
hunt_ioc_packHunts behavioral IoCs from bundled/external metadata packs such as impacket-iocs
build_timelineBuilds unified forensic timeline from multiple sources

Utilities

ToolWhat It Does
ingest_parsed_csvImport Eric Zimmerman tool CSV output (MFTECmd, PECmd, AmcacheParser)

Installation

Prerequisites

# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc

# Ensure Python 3.10+
python3 --version

Install from PyPI

uv tool install winforensics-mcp

Install from source

git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp

# Install with uv (recommended)
uv sync

# Or install with all optional extras
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"

Windows Search parsing uses SIDR 0.9.2. The source repository includes stripped Linux releases for ARM64 (.tools/sidr) and x86_64 (.tools/sidr_x86), built from the pinned commit recorded in their adjacent manifests. Either architecture can rebuild that exact revision with:

bash scripts/build_sidr.sh

The server discovers SIDR from an explicit tool argument, WINFORENSICS_SIDR_PATH, the architecture-matched bundled binary, or PATH, in that order. It never downloads or builds executables at runtime. Build or supply SIDR 0.9.2 separately on unsupported platforms. Without SIDR, windows_search_parse uses a clearly marked partial pyesedb fallback that cannot recover every compressed long value.

Verify

uv run python -m winforensics_mcp.server
# Should start without errors (Ctrl+C to exit)

Add to an MCP client

Register winforensics-mcp as a local stdio server in your MCP client's settings. Configuration format and location depend on the client. For clients that accept mcpServers JSON, a PyPI install (uv tool install winforensics-mcp) looks like this:

{
  "mcpServers": {
    "winforensics-mcp": {
      "command": "winforensics-mcp"
    }
  }
}

For a source checkout (uv sync), use:

{
  "mcpServers": {
    "winforensics-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/winforensics-mcp", "python", "-m", "winforensics_mcp.server"]
    }
  }
}

Replace the example path with the absolute path to your checkout. If your client uses a different configuration format, enter the same command and arguments through its MCP server settings. Make sure winforensics-mcp or uv, respectively, is on the client's PATH, then use the client's MCP server list to confirm it connects.


Quick Start Examples

Was This Binary Executed?

Investigate if mimikatz.exe was executed on the system at /mnt/evidence

The investigate_execution orchestrator checks Prefetch, Amcache, and SRUM:

{
  "target": "mimikatz.exe",
  "execution_confirmed": true,
  "confidence": "HIGH",
  "evidence": [
    {"source": "Prefetch", "finding": "Executed 3 times, last at 2024-03-15T14:23:45Z"},
    {"source": "Amcache", "finding": "SHA1: abc123..., First seen: 2024-03-14T09:00:00Z"},
    {"source": "SRUM", "finding": "Network: 15.2 MB sent; Foreground: 47 seconds"}
  ]
}

Hunt for IOC Across All Artifacts

Hunt for the hash 204bc44c651e17f65c95314e0b6dfee586b72089 in /mnt/evidence

The hunt_ioc tool searches Prefetch, Amcache, SRUM, MFT, USN, Browser, EVTX, and optionally YARA:

{
  "ioc": "204bc44c651e17f65c95314e0b6dfee586b72089",
  "ioc_type": "sha1",
  "found": true,
  "sources_with_hits": ["Amcache", "MFT"],
  "findings": [
    {"source": "Amcache", "matches": 1, "details": "bloodhound.exe"},
    {"source": "MFT", "matches": 1, "details": "Users\\Admin\\Downloads\\bloodhound.exe"}
  ]
}

Compact EVTX and Offline AD Queries

Use compact, fields, where, and max_chars to keep EVTX results focused:

{
  "evtx_path": "/evidence/Security.evtx",
  "event_ids": [4724],
  "where": {"EventData.SubjectUserName": {"neq": "Administrator"}},
  "compact": true,
  "fields": ["EventID", "TimeCreated", "EventData.TargetUserName"],
  "max_chars": 12000
}

Follow next_cursor with the same query; evtx_get_event opens a full record. Use the helpers below for logon correlation, rare-first NTLM summaries, and JSONL exports. Descriptor tools decode explicit hex/base64 and report unavailable values honestly. NTDS tools query account, domain, and trust metadata without SYSTEM or credential decryption.

See the query reference for examples, limits, and completeness semantics.

Tool Reference

Orchestrators (High-Level Investigation)

ToolDescription
investigate_executionCorrelate Prefetch/Amcache/SRUM to prove binary execution
investigate_user_activityCorrelate Browser/ShellBags/LNK/RecentDocs for user activity
hunt_iocHunt IOC (hash/filename/IP/domain) across all artifacts; yara_scan=True adds YARA threat intel
build_timelineBuild unified timeline from multiple artifact sources

Execution Artifacts

ToolDescription
file_analyze_peStatic PE analysis - hashes, imports, exports, Authenticode program name, packer detection
disk_parse_prefetchParse Prefetch for execution evidence
disk_parse_amcacheParse Amcache.hve for SHA1 hashes and timestamps
disk_parse_srumParse SRUDB.dat with exact/regex app filters, UTC ranges, derived network units, and optional aggregation

Malware Detection (YARA)

ToolDescription
yara_scan_fileScan file with 718 YARA rules (Mimikatz, CobaltStrike, webshells, APT, ransomware)
yara_scan_directoryBatch scan directory for malware
yara_list_rulesList available/bundled YARA rules

Behavioral IoC Packs

ToolDescription
ioc_pack_listList bundled and external IoC packs with license metadata
hunt_ioc_packHunt behavioral IoCs across text exports, filenames, and PCAP payloads

Threat Intelligence (VirusTotal)

ToolDescription
vt_lookup_hashLook up file hash (MD5/SHA1/SHA256) on VirusTotal
vt_lookup_behaviorBounded sandbox domains, URLs, commands, registry/file writes; optional full-result persistence
vt_lookup_ipGet IP address reputation and geolocation
vt_lookup_domainGet domain reputation and categorization
vt_lookup_fileCalculate file hashes and look up on VirusTotal

Network Forensics (PCAP)

ToolDescription
pcap_get_statsGet PCAP statistics - packet counts, protocols, top talkers
pcap_get_conversationsExtract TCP/UDP conversations with byte counts
pcap_get_dnsExtract DNS queries and responses
pcap_get_httpExtract HTTP requests with URLs, methods, user-agents
pcap_searchSearch packet payloads for strings or regex patterns
pcap_find_suspiciousDetect C2 indicators, beaconing, DNS tunneling

API Monitor Capture Analysis (APMX)

ToolDescription
apmx_parseParse .apmx64/.apmx86 capture - process info, modules, call counts
apmx_get_callsExtract API calls with filtering, pagination, and time range support
apmx_get_call_detailsDetailed records with parameter values, return values, timestamps
apmx_detect_patternsDetect attack patterns (injection, hollowing, credential dumping) with MITRE ATT&CK IDs
apmx_correlate_handlesTrack handle producer/consumer chains across API calls
apmx_get_injection_infoEnriched injection chain extraction (target PID, shellcode size, technique)
apmx_get_calls_aroundContext window of calls around a specific record
apmx_search_paramsSearch all records for a specific parameter value
api_analyze_importsFull PE import analysis with pattern detection and MITRE ATT&CK mapping
api_detect_patternsDetect attack patterns from PE import tables
api_lookupLook up Windows API signature (26,944 APIs with params, DLL, category)
api_search_categoryBrowse APIs by category (e.g., "Process Injection", "File Management")

Packer Detection (DiE)

ToolDescription
die_analyze_fileAnalyze file for packers, compilers, protectors, .NET
die_scan_directoryBatch scan directory for packed executables
die_get_packer_infoGet info about packer (difficulty, unpack tools)

File System

ToolDescription
disk_parse_mftParse $MFT with ADS metadata and timestomping detection
disk_parse_usn_journalParse $J for file operations and deleted files

User Activity

ToolDescription
browser_get_historyParse Edge/Chrome/Firefox history and downloads
user_parse_lnk_filesParse Windows shortcuts for target paths
user_parse_shellbagsParse ShellBags (UsrClass.dat + NTUSER.DAT) for folder navigation, network shares and archive browsing
windows_search_parseParse an explicit Windows.edb with SIDR; filter and paginate file, internet, activity, and indexed-content records

Offline Active Directory

ToolDescription
ntds_get_object_by_samRead allowlisted metadata for an exact offline SAM account selector
ntds_get_object_sidReturn SID metadata with explicit ambiguity/completeness status
ntds_get_domain_infoRead domain metadata and evidence-backed forest-root attribution
ntds_get_trustsRead paginated trust metadata without authentication secrets

Event Logs

ToolDescription
evtx_list_filesList EVTX files in a directory
evtx_get_statsGet event counts, time range, Event ID distribution
evtx_searchSearch with filters, compact field projection, response budgets, and stable continuation
evtx_get_eventRetrieve a full normalized event using its source-bound reference
evtx_correlate_logon_idJoin subject/target LUID occurrences within an explicit time window
evtx_exportPersist filtered JSONL with a hash, completion diagnostics, and bounded preview
evtx_ntlm_operational_summaryGroup NTLM 4021/4022/4023 events and surface rare process/user combinations
security_descriptor_decodeDecode bounded self-relative descriptor bytes from explicit hex/base64
evtx_describe_security_descriptorDescribe an EVTX attribute descriptor or report its source placeholder
evtx_security_searchPre-built security event searches (logon, process creation, etc.)
evtx_attack_summaryCompact TSV summary for rapid triage - one line per event, attack-relevant columns only
evtx_explain_event_idGet Event ID description

Registry

ToolDescription
registry_get_keyGet specific key and values
registry_searchSearch values by pattern
registry_queryPaginated exact/substring/regex registry query with subtree scope, field projection, and diagnostics
registry_get_persistenceGet Run keys and services
registry_get_usersGet user accounts from SAM
registry_get_usb_historyCorrelate USBSTOR identity, physical serial, WPD device names, and secondary volume labels
registry_get_system_infoGet OS version, hostname, timezone
registry_get_networkGet network configuration

Utilities

ToolDescription
ingest_parsed_csvImport Eric Zimmerman CSV output (MFTECmd, PECmd, AmcacheParser, SrumECmd)
forensics_list_important_eventsList important Event IDs by channel
forensics_list_registry_keysList forensic registry keys by category

Remote Collection

ToolDescription
remote_collect_artifactsCollect artifacts via WinRM (password or pass-the-hash)
remote_get_system_infoGet remote system info

Configuration

VirusTotal API Key

# Option 1: Environment variable
export VIRUSTOTAL_API_KEY="your-api-key-here"

# Option 2: Config file
mkdir -p ~/.config/winforensics-mcp
echo "your-api-key-here" > ~/.config/winforensics-mcp/vt_api_key

Get your free API key at virustotal.com. Free tier is rate-limited to 4 requests/minute; the client handles rate limiting and caches results for 24 hours.


Troubleshooting

DiE (Detect It Easy) not found

# Debian/Ubuntu
sudo apt install detect-it-easy

# Or download from https://github.com/horsicq/DIE-engine/releases

SIDR not found

Source checkouts include stripped SIDR releases for Linux ARM64 and x86_64. To rebuild the pinned revision for the current Rust target, run:

bash scripts/build_sidr.sh

For another installation, set WINFORENSICS_SIDR_PATH to a SIDR 0.9.2 executable. The parser reports the executable path, version, SHA-256, database state, extraction completeness, and evidence hashes in every response. See .tools/SIDR-LICENSE for the bundled sidecar's Apache-2.0 license.

Remove MCP Server

Remove the winforensics-mcp entry from your MCP client's server settings.


License

Credits: omerbenamram/evtx (Rust EVTX parser), strozfriedberg/sidr (Windows Search), Rohitab Batra (API Monitor), Neo23x0/signature-base (YARA rules), horsicq/DIE-engine (Detect It Easy)

Core winforensics-mcp code is MIT licensed. See LICENSE.

Optional bundled IoC packs may use different licenses:

  • winforensics_mcp/ioc_packs/impacket-iocs contains material derived from ThatTotallyRealMyth/Impacket-IoCs and is licensed under GPL-2.0. See winforensics_mcp/ioc_packs/impacket-iocs/LICENSE.

Built for the DFIR community. No Windows required >)