
Reproducible incident micro-postmortem for on-prem Microsoft SharePoint “ToolShell” (CVE-2025-53770): ATT&CK snapshot, “logs that matter” table, three hunts (KQL/SPL/Sigma), first-4-hours comms, sample data, and figures. Built for fast triage; no org data; SharePoint Online out of scope.
This kit triages the mid-2025 “ToolShell” zero-day campaign against on-premises Microsoft SharePoint Server; SharePoint Online is out of scope. It delivers end-to-end reproducible hunts, comms, and figures without relying on external data.
Why this repo exists: accelerate analyst triage with reproducible detections and aligned executive communications.
Techniques emphasized: T1190 (Exploit Public-Facing Application), T1059.001 (PowerShell), T1505.003 (Web Shell), T1078 (Valid Accounts), T1027 (Obfuscated/Complicated Files), T1003 (OS Credential Dumping), T1082 (System Information Discovery), T1021 (Remote Services), T1071 (Application Layer Protocol), T1567 (Exfiltration Over Web Services).

hunts/w3wp_powershell_encodedcommand.kql · SPL · Sigma: Catch encoded PowerShell spawned from IIS worker.hunts/sharepoint_webshell_filecreate.kql · SPL · Sigma: Identify unexpected .aspx files within SharePoint web roots.hunts/dns_newly_seen_post_iis_anomaly.kql · · : Surface low-prevalence DNS domains following IIS anomalies and suspicious IIS child processes.samples/example_events.json for representative Windows Security 4688, Sysmon 11, and DNS entries aligned to each hunt (benign noise included).Account of the app pool service account, CommandLine containing -enc, with 3 malicious hits and 1 benign admin script note..aspx paths under \inetpub\wwwroot\wss\VirtualDirectories\80\Layouts\ during the attack hour and a benign deployment entry.cdn-msupdate.example, toolshare-sync.example tied to the IIS host IP with <5 total queries in 24h plus one benign corporate CDN domain ignored by thresholding.comms/first_4h.md for ready-to-send templates and placeholders.figures/decision-tree.png mirrors the ASCII logic in the comms pack.Vendor research:
index=*, SecurityEvent, Sysmon) to match local data models (e.g., m365:security, wineventlog).Account, ClientIP, TargetFilename) with environment-specific aliases or normalized schemas (e.g., user, ip_src, file_path).ago(24h) or earliest windows to match fleet retention and detection latency.| Phase | Signal | Log Source | Key Fields | Example Pattern |
|---|
| Web tier/IIS | Long __VIEWSTATE blobs, unusual POSTs to /_layouts/*, rare UAs, 500/404 bursts | IIS/W3C logs, SharePoint ULS | cs-uri-stem, cs-useragent, sc-status, payload length | Spikes of large POST bodies followed by 500 errors |
| Process exec | w3wp.exe -> cmd.exe -> powershell.exe with -enc or -EncodedCommand | Windows Security 4688 | ParentProcessName, NewProcessName, CommandLine, Account | C:\Windows\System32\inetsrv\w3wp.exe spawning PowerShell with encoded payload |
| File create/webshell | Unexpected .aspx drops under \inetpub\wwwroot\wss\... or \_layouts\... | Sysmon 11 / File integrity feeds | TargetFilename, Image, Hashes | New .aspx in \inetpub\wwwroot\wss\VirtualDirectories\80\App_Data\ |
| Identity/token | Abnormal session issuance, admin actions traced to service accounts | SharePoint ULS, AD FS logs | User, ClientIP, CorrelationId, token claims | Service account issuing multiple high-privilege tokens |
| DNS/Proxy | Newly-seen low-prevalence domains after IIS anomalies | DNS, proxy, firewall logs | query, src_ip, count, prevalence scores | First-seen domain resolving shortly after PowerShell execution |
SPL