Warlock Ransomware — Longlegs SharePoint Campaign
Executive Summary
The attacker's objective in this campaign is domain-wide ransomware detonation launched from a single exploited internet-facing SharePoint Server. Longlegs (tracked by Microsoft as Storm-2603, with older activity linked to CL-CRI-1040, CamoFei and ChamelGang) exploits on-premises SharePoint vulnerabilities, drops a webshell into the LAYOUTS directory, steals the farm's ASP.NET machine keys, and forges a validly signed __VIEWSTATE payload to get code execution inside the SharePoint application pool. From there the group pivots through living-off-the-land recon, DLL side-loading, a masquerading domain account, NetExec-driven AD enumeration, and finally a BYOVD defense-evasion stage before staging Warlock ransomware in the domain's SYSVOL share for replication to every domain controller.
Symantec's Threat Hunter Team (security.com, published 1–2 Oct 2026) documented at least four victims over the preceding two months: a water utility, a telecommunications provider, a regional government body and a university, concentrated in Portuguese- and Spanish-speaking countries across Europe, Africa and Latin America. In one intrusion the actor disabled security tooling on at least 40 hosts within about two hours, then deployed Warlock on at least 33 hosts.
The single highest-leverage defensive angle in this pack is the Visual Studio Code Insiders tunnel-as-a-service technique: it is the most distinctive persistence/C2 mechanism in the campaign, it rides on a Microsoft-signed binary and Microsoft's own relay infrastructure, and it is unlikely to be present at all on a SharePoint farm member or domain controller in most environments, making it one of the cleanest high-fidelity signals available. The BYOVD stage and the SYSVOL-staged ransomware execution are the two steps immediately before mass detonation and deserve equal priority.
Defender priority: hunt and alert on code-insiders.exe tunnel-service installs and on vulnerable-driver loads (K7RKScan / CVE-2025-1055-class) on any host that is not a known developer workstation. In the documented intrusion, the gap between the defense-evasion stage and domain-wide ransomware execution was roughly two hours, which is the entire available response window.Source Review & Web Hunter Notes
Four sources were fetched and saved verbatim to Warlock-Longlegs-SharePoint-Hunt-sources/. Two additional sources (Industrial Cyber and cyberpress.org) were attempted and are listed in References as not cited, because both returned a Cloudflare bot-detection interstitial (HTTP 403 "Just a moment...") rather than article content. Per policy against bypassing bot detection, no further access was attempted and no claim in this pack relies on either page.
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| 1 (Primary) | Symantec / Carbon Black Threat Hunter Team — security.com | Full attack chain, timeline (Jul 22–31, 2026), actor attribution (Longlegs/Storm-2603/CL-CRI-1040/CamoFei/ChamelGang), CVE list, K7RKScan/CVE-2025-1055 BYOVD, full IOC list (19 hashes + 2 domains) | Yes |
| 2 | BleepingComputer (Ionut Ilascu) | Corroborates Symantec's findings; adds Microsoft's prior attribution of Storm-2603 alongside state-backed Linen Typhoon/Violet Typhoon ToolShell activity | Yes |
| 2 | The Record / Recorded Future News (Jonathan Greig) | Corroborates victim set and targeting; confirms CISA's July 2026 advisory on six additional SharePoint vulnerabilities; confirms Microsoft's 2025 LockBit-to-Warlock switch attribution | Yes |
| 3 (Secondary aggregation) | Rankiteo blog, citing cyberpress.org | Reproduces the Symantec hash list and timeline; headline references "Microsoft" but the body contains no direct Microsoft quote or MSTIC-attributed statement about this specific campaign | Partial — used only to corroborate values already present in the primary source, not as an independent fact source |
No distinct, directly-quoted Microsoft blog post or advisory specific to this October 2026 Warlock/Longlegs campaign could be located. Microsoft's documented connection to this activity is limited to its prior (2025) attribution of the ToolShell exploit chain to Storm-2603, alongside state-backed Linen Typhoon/Violet Typhoon activity, as reported independently by BleepingComputer and The Record. This pack does not attribute any 2026-specific claim to Microsoft that Microsoft itself has not been quoted making.
Prompt-injection check: all fetched content was treated as untrusted data. No fetched page contained text directing the model to run a command, fetch an unrequested URL, change the output path, skip a step, or claiming user/administrator authorization. Nothing was found to report on this front.
Hunt Brief & Attack Chain
Hunt Hypotheses
- H1 — Initial access/execution: SharePoint ToolShell-class exploitation drops a webshell and triggers a deserialization gadget under the SharePoint worker process. (T1190, T1505.003, T1059.001 · high confidence)
- H2 — Tool ingress: Follow-on payloads are pulled via msiexec from public object-storage/paste services. (T1105 · high confidence)
- H3 — Defense evasion via side-loading: DLL side-loading pairs are staged outside standard install directories to run without a flagged standalone binary. (T1574.002 · medium confidence)
- H4 — Recon & masquerade: Living-off-the-land recon runs from the SharePoint worker process, and a masquerading setup-style account is added to local Administrators. (T1087.002, T1482, T1098.007 · medium-high confidence)
- H5 — OOB canary beaconing: Out-of-band DNS callbacks to a Burp-Collaborator-style domain confirm RCE. (T1071.004 · medium confidence, dual-use infrastructure)
- H6 — Covert C2/persistence via VS Code tunneling: VS Code Insiders is installed as a Windows service to open a Microsoft-signed remote tunnel. (T1219, T1543.003, T1036 · high confidence — most distinctive signal in this campaign)
- H7 — Lateral movement: NetExec drives AD enumeration and credential spraying ahead of domain-wide staging. (T1087.002, T1110.003, T1021.002 · high confidence)
- H8 — BYOVD defense evasion → domain-wide ransomware: A vulnerable signed driver disables security tooling at kernel level, immediately followed by Warlock staged through SYSVOL/DFSR replication. (T1068, T1562.001, T1072, T1486 · high confidence)
Attack Chain — Documented Intrusion, 22–31 July 2026
| Step | Date | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 | Jul 22 | PowerShell WriteAllBytes to SharePoint LAYOUTS directory | Webshell drop (layout2sp.aspx) — Q1 |
| 2 | Jul 24 | net user /domain, whoami, nltest /domain_trusts; cleanup of staging files incl. doexeloc.dll | LOTL recon from w3wp.exe — Q5 |
| 3 | Jul 24 | ssvagent.exe/doexe.exe + gsdll64.dll.tmp/doexeloc.dll side-load pairs | DLL side-loading — Q4 |
| 4 | Jul 27 | Outbound request to a per-target *.oastify.com subdomain | Burp Collaborator OOB canary — Q6 |
| 5 | Jul 28 | Repeated load of System.Workflow.ComponentModel via PowerShell under w3wp.exe | Deserialization gadget → forged __VIEWSTATE RCE — Q2 |
| 6 | Jul 28 | msiexec against catbox.moe and wasabisys.com URLs (three packages, two services) | Follow-on payload ingress — Q3 |
| 7 | Jul 28–29 | net localgroup administrators SPSEPRDSetup /add on three further hosts | Masquerading setup account — Q7 |
| 8 | Jul 28 | code-insiders.exe tunnel service install --accept-server-license-terms from \Windows\debug\ | Covert persistence/C2 via VS Code tunnel — Q8, Q9, Q10 |
| 9 | Jul 28 | nxc.exe (NetExec) execution | AD enumeration / credential spraying — Q11 |
| 10 | Jul 30–31 | Side-load pair reappears in background | Persistence check — Q4 |
| 11 | Jul 31 (early hours) | net use + copy from internal \av\ share, launch of a.exe log on 40+ hosts within ~2 hours | AV/EDR-killer staged via vulnerable driver (BYOVD) — Q12, Q13, Q14 |
| 12 | Jul 31 | run.exe/rune.exe + ransom note, parented by dfsrs.exe/cmd.exe, delivered via SYSVOL replication to 33+ hosts | Domain-wide Warlock detonation — Q15, Q16 |
Consolidated IOC Table
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| SHA256 | 116ca4e88a1bcebb6c0da7fb431c8eca7b8ef3f9767194820c56091972ccac2c | High | Detect | Warlock ransomware payload | 2027-04-03 |
| SHA256 | 155fb1cbdaea12c83ba92d18c88cf38bbc42bb684f913ca0bc26fcf115426a55 | High | Detect | Warlock ransomware payload | 2027-04-03 |
| SHA256 | 6d07f1232dc59b84038fd0b2e75fdd3d5b825882bb0dba9e6724b7b0823fa3ad | High | Detect | Warlock ransomware payload | 2027-04-03 |
| SHA256 | 8b58f7811a2a2f2a5024220490473774f02759dd2dd904b5b9fabfbaae37125f | High | Detect | Warlock ransomware payload | 2027-04-03 |
| SHA256 | 8ce8d8270ee9de02644530b8dd7fa78973b4a3b80f121e2c5f45ae68cce196f9 | High | Detect | Warlock ransomware payload | 2027-04-03 |
| SHA256 | 1edb2c0b537cd95bbd5fc16321b4c38a6adf325ccc7b588ad6acc980b0463b60 | High | Detect | Malicious side-loaded DLL | 2027-04-03 |
| SHA256 | 206f27ae820783b7755bca89f83a0fe096dbb510018dd65b63fc80bd20c03261 | High | Detect | Malicious side-loaded DLL | 2027-04-03 |
| SHA256 | 27b7591cf9e1283010ca98fa5dbe970a73fee0d8cde277639924c144718db7c0 | High | Detect | Malicious side-loaded DLL | 2027-04-03 |
| SHA256 | c46825fcc0d1bf7a8b192facb176d6bf916c9dccfd6fa994be691e3b0e585f4e | High | Detect | Malicious side-loaded DLL | 2027-04-03 |
| SHA256 | e14240bac8277b0f6dd4d29ab5da20d246bcccae647e5fe8d19cdae7fe471b20 | High | Detect | Malicious side-loaded DLL | 2027-04-03 |
| SHA256 | fb3846c9ac53d1b841ada3a6b1091153fea41a169cb44fe0084097d1f4d45984 | High | Detect | Malicious side-loaded DLL | 2027-04-03 |
| SHA256 | 73c5268256c9da5488cd9e2b79013060ac321c7e54129344dc7b51e268af36ea | High | Detect | AV/EDR-killer tool | 2027-04-03 |
| SHA256 | ae9f7fce57c7b928e659dccf0e00fa79cd9cd61a106f18d4e03f92dc3a03c295 | High | Detect | Vulnerable signed driver used for BYOVD (Symantec IOC list). Identity unconfirmed in this specific intrusion; the actor used the K7RKScan driver (CVE-2025-1055) in other recent attacks. This is a legitimate, signed security-product driver file — never action as Prevent. | 2027-04-03 |
| Domain | litter[.]catbox[.]moe | High | Detect | Payload staging host (public paste/file service, dual-use) | 2027-04-03 |
| Domain | xn8xyt-drop[.]s3[.]wasabisys[.]com | High | Detect | Payload staging host (S3-compatible cloud storage, dual-use) | 2027-04-03 |
| SHA256 | 37f94fe1b4a106f02b6f74a69cbc05e69c17406f688beef4c9a045ffcbd2e65e | Low | Enrich | Listed "suspicious file" in Symantec IOC appendix, role not attributed | 2026-11-03 |
| SHA256 | 9ceb01f8bf7d6dba2ae07f5bd6070de3ec67b5eb01f969b0ba85e74564fb83a7 | Low | Enrich | Listed "suspicious file" in Symantec IOC appendix, role not attributed | 2026-11-03 |
| SHA256 | aaff04d84ef85353966aa4af186ff1254b72c068f33f802417b29dc23fb9f192 | Low | Enrich | Listed "suspicious file" in Symantec IOC appendix, role not attributed | 2026-11-03 |
| SHA256 | e3204b05e2f3a29bb6e6fcc21dda77d7cd31dfa755c21da0aa8661b5619ee0a1 | Low | Enrich | Listed "suspicious file" in Symantec IOC appendix, role not attributed | 2026-11-03 |
| SHA256 | eea631b5f7125239db0811e4682c2316ead69f9822e02d94fb5d8bf0d2faebed | Low | Enrich | Listed "suspicious file" in Symantec IOC appendix, role not attributed | 2026-11-03 |
| SHA256 | f7269f80f81e99d06a590d7ab374e12fdf7e5f55a02c2a46c342d670f8519fdf | Low | Enrich | Listed "suspicious file" in Symantec IOC appendix, role not attributed | 2026-11-03 |
All atomic indicators above trace to a single primary research source (Symantec/Carbon Black). Per this pack's sourcing policy, nothing here ships at Prevent or Critical severity: pure-malware hashes are single-sourced for exact values (the bar for Prevent/Critical is two independent sources), and the driver hash/filename is a legitimate signed product that is never actioned as Prevent regardless of sourcing.
Affected Surface & Telemetry Matrix
| Surface | Telemetry | Priority | Gap Risk |
|---|---|---|---|
| On-prem SharePoint Server farm (WFEs/app servers) | Falcon sensor (ProcessRollup2, PeFileWritten, DriverLoad) + IIS/ULS logs | Critical | Machine-key / web.config secret access is not visible to EDR process telemetry — needs IIS/ULS log review (Section 7) |
| Active Directory / domain controllers (SYSVOL abused for deployment) | Falcon sensor on DCs (ProcessRollup2 for dfsrs.exe/run.exe, CreateService) | Critical | None major; DFSR replication telemetry is directly observable |
| Endpoint fleet (ransomware execution, BYOVD) | Falcon RansomwareOpenFile, DriverLoad | Critical | None major |
| Egress / DNS (oastify.com canary, catbox.moe, wasabisys.com, VS Code tunnel relay) | Falcon DnsRequest/NetworkConnectIP4 + DNS/proxy logs | High | VS Code tunnel traffic is TLS to legitimate Microsoft infrastructure — network telemetry alone cannot distinguish abuse; host-level process/service detection (Q8–10) is the primary control |
| Identity (masquerading setup account, NetExec credential spraying) | Falcon ProcessRollup2 + Identity Protection events | High | None major |
ATT&CK Mapping
| Tactic | Technique | Name | Observed Behavior |
|---|---|---|---|
| Initial Access | T1190 | Exploit Public-Facing Application | SharePoint ToolShell (CVE-2025-49704/49706/53770/53771) + newer CISA-flagged 2026 SharePoint flaws |
| Persistence | T1505.003 | Server Software Component: Web Shell | layout2sp.aspx dropped into the LAYOUTS directory |
| Credential Access | T1552.001 | Unsecured Credentials: Credentials In Files | Theft of ASP.NET machine keys from SharePoint farm config |
| Execution | T1059.001 | PowerShell | Webshell write, recon, and deserialization-gadget loading all via base64 PowerShell |
| Defense Evasion | T1574.002 | Hijack Execution Flow: DLL Side-Loading | ssvagent.exe/doexe.exe/logger.exe with doexeloc.dll/gsdll64.dll |
| Command and Control | T1105 | Ingress Tool Transfer | MSI payload retrieval via msiexec from catbox.moe / wasabisys.com |
| Discovery | T1087.002 / T1482 | Account & Domain Trust Discovery | net user /domain, whoami, nltest /domain_trusts |
| Command and Control | T1071.004 | Application Layer Protocol: DNS | Per-target canary subdomain of oastify.com (Burp Collaborator, dual-use) |
| Privilege Escalation | T1098.007 | Account Manipulation: Additional Local or Domain Groups | SPSEPRDSetup masquerading account added to local Administrators |
| Command and Control / Persistence | T1219 / T1543.003 | Remote Access Software / Create or Modify System Process: Windows Service | VS Code Insiders tunnel installed as a service via code-insiders.exe tunnel service install |
| Defense Evasion | T1036 | Masquerading | Signed Microsoft binary run from a non-standard path (\Windows\debug\) to blend with developer traffic |
| Discovery / Credential Access / Lateral Movement | T1087.002 / T1110.003 / T1021.002 | Account Discovery / Password Spraying / SMB-WinRM | NetExec (nxc.exe) AD enumeration and credential spraying |
| Defense Evasion / Privilege Escalation | T1562.001 / T1068 | Impair Defenses / Exploitation for Privilege Escalation | BYOVD: vulnerable signed driver (K7RKScan-class, CVE-2025-1055) terminates security processes at kernel level |
| Lateral Movement | T1072 | Software Deployment Tools | Warlock staged in SYSVOL, replicated domain-wide by ordinary DFSR |
| Impact | T1486 | Data Encrypted for Impact | Warlock ransomware execution (run.exe/rune.exe) and ransom note on 33+ hosts |
| Defense Evasion | T1070.004 | Indicator Removal: File Deletion | Early staging artifacts (incl. doexeloc.dll) deleted from Public/ProgramData |
Native Audit-Log Hunts
Non-CQL checks that close the gaps Falcon process telemetry alone cannot reach:
- IIS / SharePoint ULS logs: search for anomalous POST requests to
/_layouts/15/or/_vti_bin/endpoints carrying large base64 payloads or abnormal response codes, correlated to the exploitation window. - Windows Security Event ID 4697/4698/7045 (service installed): cross-reference against Falcon's
CreateServiceevent for the code-insiders.exe tunnel; Windows Event Forwarding is a useful independent confirmation channel where deployed. - SharePoint machineKey / web.config change auditing: file-integrity monitoring on every farm member's
web.config, alerting on any modification timestamp outside a planned change window. - DNS resolver / proxy logs: lookups for
*.oastify.com,*.wasabisys.com, and*.catbox.moeoriginating outside approved developer or security-testing source ranges. - AD "Restricted Groups" / local administrators drift report: any account matching an
SPS*Setup/SP*PRDSetupnaming pattern added outside a documented patch or farm-configuration window. - SYSVOL file-integrity monitoring: alert on any new, unexpected file under
\SYSVOL\<domain>\scripts\on any domain controller.
CrowdStrike LogScale CQL Hunt Queries
Looks for: a PowerShell or SharePoint-worker-parented process writing an .aspx file into a LAYOUTS path via WriteAllBytes. FP: low — legitimate SharePoint solution (.wsp) deployment through stsadm/Install-SPSolution does not use ad-hoc WriteAllBytes PowerShell against the layouts path.
// HUNT: SharePoint LAYOUTS webshell write via WriteAllBytes // MITRE: T1190, T1505.003, T1059.001 // CONF: high FP: low COST: low // REQUIRES: Falcon sensor on SharePoint front-end/app servers (ProcessRollup2) // FALSE POSITIVES: legitimate .wsp solution deployment via stsadm/Install-SPSolution does not use ad-hoc WriteAllBytes PowerShell against the layouts path #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName = /^w3wp\.exe$/i or FileName = /^powershell\.exe$/i | CommandLine = /WriteAllBytes/i | CommandLine = /layouts/i | CommandLine = /\.aspx/i | table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
Looks for: the SharePoint worker process spawning PowerShell that loads the System.Workflow.ComponentModel assembly, the deserialization gadget used to turn a forged machine-key-signed __VIEWSTATE payload into code execution. FP: low — this assembly load pattern has no routine administrative use.
// HUNT: SharePoint worker process loads deserialization gadget assembly // MITRE: T1190, T1059.001 // CONF: high FP: low COST: low // REQUIRES: Falcon sensor on SharePoint front-end/app servers (ProcessRollup2) // FALSE POSITIVES: none routinely observed; this assembly load has no legitimate SharePoint administrative use #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName = /^w3wp\.exe$/i | FileName = /^powershell\.exe$/i | CommandLine = /System\.Workflow\.ComponentModel/i | table([@timestamp, aid, ComputerName, ParentBaseFileName, FileName, CommandLine])
Looks for: msiexec pulling a package from catbox.moe or wasabisys.com. FP: medium — Wasabi is a legitimate S3-compatible storage provider some orgs use for software packaging.
// HUNT: msiexec retrieving a payload from catbox.moe or wasabisys.com // MITRE: T1105 // CONF: high FP: medium COST: low // REQUIRES: Falcon sensor on SharePoint front-end/app servers (ProcessRollup2) // FALSE POSITIVES: Wasabi is a legitimate S3-compatible cloud storage provider that some organizations use for software packaging // TUNING: exclude known-approved software packaging pipelines that legitimately pull MSI packages from Wasabi/S3-compatible buckets; verify the destination bucket/object path against your approved deployment inventory before escalating #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^msiexec(\.exe)?$/i | CommandLine = /catbox\.moe|wasabisys\.com/i | table([@timestamp, aid, ComputerName, UserName, CommandLine])
Looks for: the observed side-load pairs: ssvagent.exe/doexe.exe/logger.exe with doexeloc.dll/gsdll64.dll. FP: medium — gsdll64.dll is also a legitimate Ghostscript library filename.
// HUNT: Observed DLL side-load pair written outside standard directories // MITRE: T1574.002 // CONF: medium FP: medium COST: low // REQUIRES: Falcon sensor, PE-write telemetry (PeFileWritten/NewExecutableWritten) // FALSE POSITIVES: gsdll64.dll is also a legitimate Ghostscript library filename // TUNING: exclude writes under a verified, signed Ghostscript install path (e.g. "Program Files\gs\"); require the write to correlate with a SharePoint worker process lineage before treating as malicious #event_simpleName = /PeFileWritten|NewExecutableWritten/ | FileName = /^(ssvagent|doexe|logger)\.exe$/i or FileName = /^(doexeloc|gsdll64)\.dll$/i | table([@timestamp, aid, ComputerName, FileName, FilePath])
Looks for: net/whoami/nltest spawned by w3wp.exe. FP: medium — some SharePoint health-analyzer/maintenance jobs legitimately run similar diagnostics.
// HUNT: LOTL recon commands spawned from the SharePoint worker process // MITRE: T1087.002, T1482 // CONF: high FP: medium COST: low // REQUIRES: Falcon sensor on SharePoint front-end/app servers (ProcessRollup2) // FALSE POSITIVES: documented SharePoint health-analyzer or farm-maintenance timer jobs occasionally invoke diagnostic commands // TUNING: exclude any approved SharePoint timer-job service account documented to invoke net/whoami/nltest as part of scheduled diagnostics; baseline 14 days before enabling as high-severity #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName = /^w3wp\.exe$/i | FileName = /^(net|net1|whoami|nltest)\.exe$/i | table([@timestamp, aid, ComputerName, UserName, FileName, CommandLine])
Looks for: DNS queries to a *.oastify.com subdomain. FP: medium — oastify.com is legitimate Burp Suite Collaborator infrastructure used by authorized penetration testers too.
// HUNT: DNS beacon to oastify.com (Burp Collaborator OOB canary pattern) // MITRE: T1071.004 // CONF: medium FP: medium COST: low // REQUIRES: Falcon sensor, DnsRequest telemetry // FALSE POSITIVES: oastify.com is legitimate, widely-used Burp Suite Collaborator infrastructure; authorized pentest traffic will also hit it // TUNING: exclude DNS sourced from your organization's approved penetration-testing or vulnerability-scanning hosts; correlate remaining hits against SharePoint/IIS process lineage before escalating #event_simpleName = /DnsRequest/ | DomainName = /\.oastify\.com$/i | table([@timestamp, aid, ComputerName, DomainName])
Looks for: net localgroup administrators adding an SPS/SP-prefixed setup-style account name (observed: SPSEPRDSetup). FP: medium — legitimate SharePoint provisioning can run similar commands during farm setup/patching.
// HUNT: SPS/SP-prefixed setup-style account added to local Administrators // MITRE: T1098.007 // CONF: medium FP: medium COST: low // REQUIRES: Falcon sensor on all domain-joined hosts (ProcessRollup2) // FALSE POSITIVES: legitimate SharePoint farm provisioning scripts run similar commands during setup/patching // TUNING: exclude documented SharePoint farm provisioning windows where a real setup/service account is legitimately added; verify the account against your approved service-account naming convention #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^net1?\.exe$/i | CommandLine = /localgroup/i | CommandLine = /administrators/i | CommandLine = /SPS\w*Setup|SP\w*PRDSetup/i | table([@timestamp, aid, ComputerName, UserName, CommandLine])
Looks for: code-insiders.exe tunnel service install. This is the single most distinctive persistence/C2 signal in this campaign. FP: medium — VS Code remote tunnels are a legitimate dev workflow in some organizations.
// HUNT: Visual Studio Code Insiders tunnel installed as a service // MITRE: T1219, T1543.003 // CONF: high FP: medium COST: low // REQUIRES: Falcon sensor on all hosts (ProcessRollup2) — prioritize SharePoint farm members and domain controllers // FALSE POSITIVES: VS Code Remote Tunnels are a legitimate, sanctioned remote-dev workflow in some organizations // TUNING: exclude hosts on your approved developer-workstation / sanctioned remote-dev-tunnel allowlist; the anomaly is this running on a server role (SharePoint, domain controller, file server), not the tool's mere presence on a developer endpoint #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^code-insiders\.exe$/i | CommandLine = /tunnel/i | CommandLine = /service/i | CommandLine = /install/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine])
Looks for: code-insiders.exe executing from outside its standard install locations (observed: \Windows\debug\). FP: low — legitimate installs are consistently under AppData\Local\Programs or Program Files.
// HUNT: code-insiders.exe executing from a non-standard install path // MITRE: T1036, T1219 // CONF: high FP: low COST: low // REQUIRES: Falcon sensor on all hosts (ProcessRollup2) // FALSE POSITIVES: none routinely observed; legitimate installs are consistently under AppData\Local\Programs or Program Files #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^code-insiders\.exe$/i | !ImageFileName = /AppData.Local.Programs|Program Files/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine])
Looks for: the actual Windows service-creation event for the tunnel, independent of the install command line. FP: medium — same dual-use caveat as Q8.
// HUNT: Windows service created with a code-insiders.exe image path // MITRE: T1543.003, T1219 // CONF: high FP: medium COST: low // REQUIRES: Falcon sensor on all hosts (CreateService) // FALSE POSITIVES: same dual-use caveat as Q8 — sanctioned dev-tunnel workflows on approved hosts // TUNING: exclude hosts on the same approved developer-tunnel allowlist used for Q8; a service-level hit on a server role still warrants immediate escalation regardless of allowlist status #event_simpleName = /CreateService/ | ServiceImagePath = /code-insiders/i | table([@timestamp, aid, ComputerName, ServiceName, ServiceImagePath])
Looks for: execution of nxc.exe (NetExec). FP: medium — some internal red/purple teams legitimately run this open-source tool.
// HUNT: NetExec (nxc.exe) execution // MITRE: T1087.002, T1110.003, T1021.002 // CONF: high FP: medium COST: low // REQUIRES: Falcon sensor on all hosts (ProcessRollup2) // FALSE POSITIVES: internal red-team/purple-team exercises legitimately run NetExec // TUNING: exclude your organization's authorized red-team/purple-team source hosts and scheduled assessment windows; NetExec/nxc.exe has no mainstream legitimate production use otherwise #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^nxc(\.exe)?$/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine])
Looks for: the documented net use + copy + a.exe launch chain under cmd.exe. FP: high — a.exe is an extremely generic filename on its own.
// HUNT: net use + copy + a.exe launch chain (observed AV/EDR-killer staging) // MITRE: T1562.001 // CONF: medium FP: high COST: low // REQUIRES: Falcon sensor on all hosts (ProcessRollup2) // FALSE POSITIVES: a.exe is an extremely generic filename; internal tooling may coincidentally share it // TUNING: require the combined net use + copy + a.exe pattern (all three) before alerting, and cross-check the source UNC path against known internal software-distribution shares before escalating as the AV/EDR-killer stage #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName = /^cmd\.exe$/i | CommandLine = /net use/i | CommandLine = /copy/i | CommandLine = /a\.exe/i | table([@timestamp, aid, ComputerName, UserName, CommandLine])
Looks for: a kernel driver load matching the vulnerable-driver hash from the Symantec IOC list. FP: low — exact hash match. Detect only; never action as Prevent, this is a legitimate signed driver file.
// HUNT: Kernel driver load matching the vulnerable-driver hash (BYOVD) // MITRE: T1068, T1562.001 // CONF: high FP: low COST: low // REQUIRES: Falcon sensor on all hosts (DriverLoad) // FALSE POSITIVES: none expected for an exact hash match #event_simpleName = /DriverLoad/ | SHA256HashData = /^ae9f7fce57c7b928e659dccf0e00fa79cd9cd61a106f18d4e03f92dc3a03c295$/i | table([@timestamp, aid, ComputerName, FileName, SHA256HashData])
Looks for: any driver load named k7rkscan.sys (CVE-2025-1055), regardless of hash. FP: medium — hosts with a legitimately licensed K7 Computing security product will load this driver benignly. Detect only; this is a legitimate signed driver — never action as Prevent.
// HUNT: K7RKScan driver load by filename, any hash (BYOVD, CVE-2025-1055) // MITRE: T1068, T1562.001 // CONF: medium FP: medium COST: low // REQUIRES: Falcon sensor on all hosts (DriverLoad) // FALSE POSITIVES: hosts with a legitimately licensed K7 Computing security product load this driver benignly // TUNING: exclude hosts where K7 Computing's security product is legitimately licensed and deployed; correlate with the absence of a legitimate K7 installation before escalating #event_simpleName = /DriverLoad/ | FileName = /^k7rkscan\.sys$/i | table([@timestamp, aid, ComputerName, FileName, SHA256HashData])
Looks for: run.exe/rune.exe parented by dfsrs.exe (SYSVOL replication) or cmd.exe (local copy-and-launch). FP: medium — the filenames alone are generic.
// HUNT: run.exe/rune.exe executed via SYSVOL replication or copy-and-launch // MITRE: T1072, T1486 // CONF: high FP: medium COST: low // REQUIRES: Falcon sensor on all domain-joined hosts and domain controllers (ProcessRollup2) // FALSE POSITIVES: run.exe/rune.exe are generic enough that unrelated internal software could share the name // TUNING: require ImageFileName to contain a SYSVOL or public-profile staging path before treating as confirmed ransomware execution; treat any hit parented by dfsrs.exe as maximum priority regardless #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^(run|rune)\.exe$/i | ParentBaseFileName = /^(dfsrs|cmd)\.exe$/i | table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, ImageFileName, CommandLine])
Looks for: a host-level spike in Falcon's native ransomware-behavior file-open telemetry. FP: low — the native detector is already tuned for encryption-pattern access.
// HUNT: Mass file-open pattern via Falcon's native ransomware behavior event // MITRE: T1486 // CONF: high FP: low COST: medium // REQUIRES: Falcon sensor on all hosts (RansomwareOpenFile) // FALSE POSITIVES: none routinely observed; this is Falcon's purpose-built ransomware-behavior event #event_simpleName = /RansomwareOpenFile/ | groupBy([aid, ComputerName], function=count(as=FilesTouched), limit=1000) | FilesTouched > 100 | table([aid, ComputerName, FilesTouched])
Looks for: any command interpreter or scripting LOLBin spawned by w3wp.exe, independent of the specific commands observed in this intrusion. FP: medium — SharePoint timer jobs occasionally spawn PowerShell/cmd for maintenance.
// HUNT: Command interpreter / scripting LOLBin spawned by w3wp.exe // MITRE: T1190, T1059.001, T1218 // CONF: high FP: medium COST: low // REQUIRES: Falcon sensor on SharePoint front-end/app servers (ProcessRollup2) // FALSE POSITIVES: SharePoint timer-job/OWSTIMER maintenance scripts (farm backup, PSConfig, Update-SPSolution) can legitimately spawn from the worker process // TUNING: exclude known SharePoint timer-job/OWSTIMER service-account command lines and scheduled maintenance scripts; baseline 7 days before promoting to a high-severity IOA #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName = /^w3wp\.exe$/i | FileName = /^(cmd|powershell|powershell_ise|cscript|wscript|mshta)\.exe$/i | table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
CrowdStrike Custom IOA Recommendations
All IOA candidates below are recommended at Detect only. None of this pack's behavioral patterns or pure-malware hashes clear the two-independent-source bar this pack requires for Prevent/Critical, and the driver/VS Code/NetExec binaries are legitimate or dual-use and are never actioned as Prevent regardless of sourcing.
IOA-1 · SharePoint LAYOUTS Webshell Write
Pattern: Q1 (PowerShell/w3wp.exe WriteAllBytes to a layouts path + .aspx). Exclusions: legitimate .wsp solution deployment via stsadm/Install-SPSolution. Deployment: enable in Detect across all SharePoint farm members; route to the highest-priority queue given this is the initial-access artifact.
IOA-2 · VS Code Insiders Tunnel Service (process + CreateService)
Pattern: Q8/Q9/Q10. Exclusions: approved developer-workstation allowlist. Deployment: Detect, fleet-wide, excluding the allowlist; tag campaign:Warlock-Longlegs. This is the most distinctive signal in the campaign and should route to a dedicated high-priority alert, not a general queue.
IOA-3 · K7RKScan-class Vulnerable Driver Load
Pattern: Q13 (hash) and Q14 (filename). Exclusions: hosts with a legitimately licensed K7 Computing product. Deployment: Detect, fleet-wide; route to P1 given BYOVD preceded mass ransomware deployment by roughly two hours in the documented intrusion.
IOA-4 · SYSVOL-Staged Ransomware Execution
Pattern: Q15. Exclusions: none known — SYSVOL is not a normal execution path for arbitrary binaries. Deployment: Detect-first for 7 days, then evaluate promoting toward Prevent for the specific confirmed Warlock SHA256 hashes only (never the generic filename pattern), noting the hash list remains single-sourced per Section 4.
IOA-5 · Broad SharePoint-Worker LOLBin Canary
Pattern: Q17. Exclusions: documented SharePoint timer-job/maintenance scripts. Deployment: Audit/Detect after a 7-day baseline; this is a volume canary, not a precision alert, and should feed a hunting queue rather than paging on its own.
Machine-Readable IOC Appendix
type,value,action,severity,expiration,description,tags sha256,116ca4e88a1bcebb6c0da7fb431c8eca7b8ef3f9767194820c56091972ccac2c,detect,high,2027-04-03,Warlock ransomware payload,campaign:Warlock-Longlegs sha256,155fb1cbdaea12c83ba92d18c88cf38bbc42bb684f913ca0bc26fcf115426a55,detect,high,2027-04-03,Warlock ransomware payload,campaign:Warlock-Longlegs sha256,6d07f1232dc59b84038fd0b2e75fdd3d5b825882bb0dba9e6724b7b0823fa3ad,detect,high,2027-04-03,Warlock ransomware payload,campaign:Warlock-Longlegs sha256,8b58f7811a2a2f2a5024220490473774f02759dd2dd904b5b9fabfbaae37125f,detect,high,2027-04-03,Warlock ransomware payload,campaign:Warlock-Longlegs sha256,8ce8d8270ee9de02644530b8dd7fa78973b4a3b80f121e2c5f45ae68cce196f9,detect,high,2027-04-03,Warlock ransomware payload,campaign:Warlock-Longlegs sha256,1edb2c0b537cd95bbd5fc16321b4c38a6adf325ccc7b588ad6acc980b0463b60,detect,high,2027-04-03,Malicious side-loaded DLL,campaign:Warlock-Longlegs sha256,206f27ae820783b7755bca89f83a0fe096dbb510018dd65b63fc80bd20c03261,detect,high,2027-04-03,Malicious side-loaded DLL,campaign:Warlock-Longlegs sha256,27b7591cf9e1283010ca98fa5dbe970a73fee0d8cde277639924c144718db7c0,detect,high,2027-04-03,Malicious side-loaded DLL,campaign:Warlock-Longlegs sha256,c46825fcc0d1bf7a8b192facb176d6bf916c9dccfd6fa994be691e3b0e585f4e,detect,high,2027-04-03,Malicious side-loaded DLL,campaign:Warlock-Longlegs sha256,e14240bac8277b0f6dd4d29ab5da20d246bcccae647e5fe8d19cdae7fe471b20,detect,high,2027-04-03,Malicious side-loaded DLL,campaign:Warlock-Longlegs sha256,fb3846c9ac53d1b841ada3a6b1091153fea41a169cb44fe0084097d1f4d45984,detect,high,2027-04-03,Malicious side-loaded DLL,campaign:Warlock-Longlegs sha256,73c5268256c9da5488cd9e2b79013060ac321c7e54129344dc7b51e268af36ea,detect,high,2027-04-03,AV/EDR-killer tool,campaign:Warlock-Longlegs sha256,ae9f7fce57c7b928e659dccf0e00fa79cd9cd61a106f18d4e03f92dc3a03c295,detect,high,2027-04-03,Vulnerable signed driver abused for BYOVD; detect only never prevent,campaign:Warlock-Longlegs domain,litter.catbox.moe,detect,high,2027-04-03,Payload staging host,campaign:Warlock-Longlegs domain,xn8xyt-drop.s3.wasabisys.com,detect,high,2027-04-03,Payload staging host,campaign:Warlock-Longlegs
PowerShell WriteAllBytes writing *.aspx under a "...\layouts\" path (any SharePoint version segment) CommandLine containing "System.Workflow.ComponentModel" loaded by a SharePoint-worker-process child msiexec.exe pulling a package from catbox.moe or wasabisys.com Side-load pairs: ssvagent.exe / doexe.exe / logger.exe with doexeloc.dll / gsdll64.dll net localgroup administrators <SPS-prefixed setup account> /add code-insiders.exe "tunnel service install --accept-server-license-terms" nxc.exe (NetExec) execution outside an authorized red-team host net use + copy from an internal \av\ share, followed by launch of a.exe run.exe / rune.exe staged under \SYSVOL\<domain>\scripts\run\, ransom note "how to restore your files.txt" DNS queries to a per-target *.oastify.com subdomain (target-domain-plus-random-token pattern)
Warlock (ransomware payload) Longlegs / Storm-2603 (operator; older clusters: CL-CRI-1040, CamoFei, ChamelGang) K7RKScan vulnerable signed driver, CVE-2025-1055 (BYOVD; legitimate product, detect only) code-insiders.exe (Visual Studio Code Insiders, tunnel-as-service abuse; legitimate Microsoft binary, detect only) NetExec / nxc.exe (open-source AD enumeration / credential-spraying tool; dual-use) SPSEPRDSetup (observed masquerading local-admin account name; rename pattern, not a fixed IOC) oastify.com (Burp Suite Collaborator OOB infrastructure; legitimate, dual-use)
# SharePoint farm build/patch level
Get-SPFarm | Select-Object BuildVersion
# HVCI / Vulnerable Driver Blocklist enforcement status
Get-CimInstance -ClassName Win32_DeviceGuard | Select-Object VirtualizationBasedSecurityStatus, CodeIntegrityPolicyEnforcementStatus
# Local Administrators membership drift
Get-LocalGroupMember -Group "Administrators"
# Rogue VS Code Insiders tunnel service present
Get-Service | Where-Object { $_.BinaryPathName -match "code-insiders" }
Detection Validation Gates
- Telemetry ready: confirm Falcon sensor coverage and ingestion of ProcessRollup2, PeFileWritten/NewExecutableWritten, DriverLoad, CreateService, DnsRequest, and RansomwareOpenFile for every SharePoint farm member and domain controller before enabling any query as an alerting IOA.
- Benign baseline: run every query over the last 30–90 days before enabling. Expect zero or near-zero hits for Q1, Q2, Q8, Q9, Q10, Q13, Q15, Q16; expect some low-volume noise for Q3, Q5, Q6, Q7, Q11, Q12, Q14, Q17 that the stated
// TUNING:line must resolve. - Positive tests: validate detection logic against a lab replay of the documented command lines (e.g. a test PowerShell WriteAllBytes to a non-production LAYOUTS path, a test code-insiders.exe tunnel-service install on an isolated host) before trusting any query in production.
- Promotion criteria: 14 days of clean baseline and zero unresolved false-positive tickets before any IOA moves from Investigate-only to Custom IOA Detect. No query in this pack is promoted to Prevent per Section 9 and Section 4's sourcing policy.
Hardening — Tiered & Deployable
1. Patch on-prem SharePoint Server against the ToolShell CVEs (CVE-2025-49704, CVE-2025-49706, CVE-2025-53770, CVE-2025-53771) and the July 2026 CISA-flagged SharePoint flaws. MITRE: M1051 (Update Software). Authority: Microsoft Security Update Guide + CISA KEV remediation guidance. Verify: Get-SPFarm | Select-Object BuildVersion against the vendor-fixed baseline.
2. Rotate the SharePoint farm's ASP.NET machine keys (validationKey/decryptionKey) across every web.config, after patching (rotating before patching lets a still-open hole harvest the new key again). MITRE: M1041 (Encrypt Sensitive Information). Authority: Microsoft's official SharePoint Server machine-key rotation guidance. Verify: confirm the key-change timestamp post-patch and re-run Q2 to confirm no further deserialization-gadget loads.
3. Confirm the Microsoft Vulnerable Driver Blocklist / HVCI is enforced fleet-wide and add K7RKScan (CVE-2025-1055) to an explicit WDAC deny policy where HVCI cannot be enabled. MITRE: M1045 (Code Signing). Authority: Microsoft Learn "Microsoft recommended driver block rules" / "Manage the Microsoft Vulnerable Driver Blocklist". Verify: Get-CimInstance Win32_DeviceGuard.
4. Verify EDR/Falcon sensor tamper protection is enabled so the AV/EDR-killer stage cannot succeed even if BYOVD executes. MITRE: M1040 (Behavior Prevention on Endpoint). Authority: CrowdStrike Falcon sensor tamper-protection documentation + CIS Microsoft Windows Benchmark (protect security agents). Verify: sensor policy audit confirming tamper protection is on for all SharePoint/DC hosts.
5. File-integrity-monitor the SharePoint LAYOUTS (and other web-application) directories so an unsigned .aspx dropped via deserialization is flagged immediately. MITRE: M1038 (Execution Prevention). Authority: DISA Microsoft SharePoint Server STIG (web-application directory integrity) + CIS Microsoft IIS/Windows Server Benchmark. Verify: FIM alert fires on a test write to the LAYOUTS path.
6. Lock down local Administrators group membership via LAPS + Restricted Groups to close the SPSEPRDSetup-style masquerade path. MITRE: M1026 (Privileged Account Management). Authority: Microsoft Security Baseline for Windows Server + CIS Benchmark (Restricted Groups). Verify: Get-LocalGroupMember Administrators drift report against the approved baseline.
7. Restrict VS Code remote tunneling to an explicit allowlist of developer hosts, denying it on server roles (SharePoint, domain controllers, file servers). MITRE: M1042 (Disable or Remove Feature or Program). Authority: CIS Microsoft Windows Server Benchmark (attack surface reduction) + Microsoft Security Baseline application-control guidance. Verify: WDAC/AppLocker audit-mode log review for code-insiders.exe on server-role hosts.
8. Deploy ASR rules / WDAC policy to flag unauthorized pentest-class tooling such as NetExec on non-authorized hosts. MITRE: M1038 (Execution Prevention). Authority: Microsoft ASR rule reference + CIS Benchmark. Verify: ASR audit-mode event review (Event ID 1121/1122).
9. Reduce SharePoint's internet-facing exposure: migrate to SharePoint Online where feasible, or front remaining on-prem farms with a hardened WAF/reverse-proxy profile tuned for deserialization/ToolShell-class payloads, and formalize a recurring machine-key rotation cadence. MITRE: M1051 + M1030 (Network Segmentation). Authority: Microsoft SharePoint Server hardening/architecture guidance + DISA Enclave/Network STIG. Verify: periodic external attack-surface scan confirming SharePoint is not directly internet-exposed without a WAF.
10. Implement tiered administration (Tier 0/1/2) and Credential Guard/LSA protection so a single compromised farm member cannot cascade into a domain-wide SYSVOL-staged ransomware event. MITRE: M1026 + M1043 (Credential Access Protection). Authority: Microsoft Enterprise Access Model + CIS Benchmark Credential Guard/LSA protection controls. Verify: Get-ComputerInfo DeviceGuard status plus a tier-boundary access review.
Deployable Playbooks
Playbook A · SharePoint ASP.NET Machine Key Rotation
1. Inventory current machineKey values across every web.config in the farm. Prerequisites: farm admin rights; maintenance window scheduled. Reboot required: no. Rollback: keep a secured backup of the pre-rotation web.config files; restore them to revert. 2. Patch SharePoint to the vendor-fixed build for the ToolShell CVEs and the July 2026 flaws BEFORE rotating keys, so a freshly-rotated key cannot be re-harvested through the same hole. Prerequisites: patch validated in a staging farm; full farm backup taken. Reboot required: yes (CU install restarts IIS/SharePoint services; some CUs require a server reboot). Rollback: restore from the pre-patch farm backup/snapshot if the CU breaks farm functionality. 3. Generate new validationKey/decryptionKey values with a cryptographically random generator and apply via Central Administration > Manage Web Applications > Authentication (or web.config directly). Prerequisites: step 2 complete; change-control approval obtained. Reboot required: no, but an IIS reset / app-pool recycle is required on every WFE immediately after. Rollback: reapply the backed-up web.config from step 1 and recycle app pools again. 4. Recycle every application pool farm-wide to force re-authentication and invalidate any outstanding __VIEWSTATE tied to the old key. Prerequisites: steps 1-3 complete; user communication sent (active sessions will drop). Reboot required: no. Rollback: none required; an app-pool recycle is non-destructive and is the expected end state. 5. Verify: re-run Q2 to confirm no further System.Workflow.ComponentModel loads, and confirm Get-SPFarm BuildVersion matches the patched baseline.
Playbook B · Vulnerable Driver Blocklist / HVCI Enforcement
1. Audit current HVCI and Microsoft Vulnerable Driver Blocklist state fleet-wide. Prerequisites: read access to the Device Guard WMI class; pilot ring identified. Reboot required: no (read-only audit). Rollback: none required; read-only step. 2. Enable the Vulnerable Driver Blocklist / HVCI, or merge K7RKScan (CVE-2025-1055) into an explicit WDAC deny policy for builds where HVCI cannot be enabled. Prerequisites: pilot ring validated 1-2 weeks; signed WDAC policy infrastructure in place. Reboot required: yes, enabling HVCI requires a reboot to take effect. Rollback: disable HVCI via the same policy setting and reboot again; keep the prior WDAC policy file archived for rapid rollback. 3. Deploy to the pilot ring; monitor for driver-load failures on legitimate signed drivers for 7-14 days. Prerequisites: step 2 piloted; alerting on driver-load failures in place. Reboot required: yes, per device as it receives the policy. Rollback: revert to the previous HVCI/WDAC policy version and reboot affected devices. 4. Roll out fleet-wide in waves, prioritizing SharePoint farm members and domain controllers. Prerequisites: pilot clean for 14 days. Reboot required: yes, per wave. Rollback: same as step 3, per-wave policy rollback and reboot.
Playbook C · Block Unauthorized code-insiders.exe Tunnel-as-a-Service
1. Inventory hosts where VS Code Insiders tunneling is an approved, documented remote-dev workflow; everything else is out of policy. Prerequisites: application-owner sign-off on the allowlist. Reboot required: no. Rollback: none required; documentation/inventory step. 2. Create a WDAC or AppLocker deny rule blocking code-insiders.exe execution and service creation outside the allowlisted host group. Prerequisites: step 1 allowlist finalized; AppLocker/WDAC already in audit mode fleet-wide. Reboot required: no (gpupdate/policy refresh is sufficient). Rollback: remove or disable the deny rule and run gpupdate /force to restore prior behavior. 3. Deploy in Audit mode fleet-wide for 7 days, review the audit log for unexpected legitimate hits, then flip to Enforce. Prerequisites: step 2 rule authored; SIEM/Falcon ingesting AppLocker/WDAC audit events. Reboot required: no. Rollback: flip the policy back to Audit mode (or disabled) and run gpupdate /force; no device-state change to undo.
Playbook D · Restricted Groups Lockdown for Local Administrators
1. Baseline current local Administrators membership fleet-wide; flag any account matching the SPS*/SP*Setup masquerade naming pattern or not on the documented approved list. Prerequisites: read access to local group membership (Falcon RTR, GPO reporting, or LAPS). Reboot required: no. Rollback: none required; read-only baseline. 2. Configure a Restricted Groups GPO enforcing the approved membership list, scoped first to the SharePoint farm and Tier 0/1 OU. Prerequisites: step 1 baseline reviewed and approved; GPO tested in a lab OU. Reboot required: no, a policy refresh (gpupdate /force) applies it. Rollback: unlink or disable the GPO and run gpupdate /force. Note: already-removed accounts are not automatically restored; re-add manually if a removal was a false positive. 3. Expand the GPO scope fleet-wide once validated on the pilot OU for 7-14 days with no unexpected removals. Prerequisites: step 2 clean on pilot. Reboot required: no. Rollback: scope the GPO link back down or disable it, same as step 2.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| 1. Detect & Triage | Confirm scope via Q1/Q2/Q13/Q15/Q16 hits; identify every host with webshell, driver-load, or ransomware-execution indicators; stand up an incident bridge | SOC / IR lead | Detection timeline export, affected-host list |
| 2. Isolate | Network-contain every host with a confirmed Warlock/DLL/AV-EDR-killer hash hit or a code-insiders tunnel service; disable the SPSEPRDSetup-pattern account(s) and any account touched by NetExec; disable the farm's external-facing endpoint at the firewall/WAF if exploitation is still active | IR + network/firewall team | Containment action log, firewall change ticket |
| 3. Eradicate | Remove the LAYOUTS webshell(s) from every SharePoint version directory farm-wide; rotate ASP.NET machine keys (Playbook A); remove/quarantine the vulnerable driver file and any out-of-policy code-insiders tunnel service; reset credentials for accounts observed in NetExec-driven activity; remove Warlock/DLL/AV-EDR-killer binaries from disk | IR + SharePoint/AD admins | Removal/rotation change tickets, pre/post BuildVersion and key-rotation timestamp |
| 4. Recover | Patch SharePoint to the vendor-fixed build; restore encrypted hosts from backups verified to predate the webshell-drop timestamp; bring hosts back from containment in stages, re-running Q1/Q2/Q13/Q15/Q16 against each before full restoration of access | IR + backup/recovery team | Restore validation report, clean re-scan results |
| 5. Post-Incident | Hunt retrospectively across the full environment for every IOC/TTP in this pack over maximum available telemetry retention; confirm all 17 queries produce zero further hits for 14 days; update the detection baseline and close the incident | Threat hunting team | Retrospective hunt report, 14-day clean-baseline confirmation |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1190 | SharePoint ToolShell + 2026 CVE exploitation | Q1, Q2, Q17 | IOA-1 | Good |
| T1505.003 | LAYOUTS .aspx webshell drop | Q1 | IOA-1 | Good |
| T1552.001 | ASP.NET machine-key theft | — | — | Gap — no Falcon process telemetry for web.config secret reads; covered only by IIS/ULS review (Section 7) |
| T1059.001 / forged VIEWSTATE | Deserialization RCE using a forged signed payload | Q2 (indirect) | — | Partial — detects the gadget load, not the forgery itself |
| T1105 | MSI payloads from catbox.moe/wasabisys.com | Q3 | — | Good |
| T1574.002 | DLL side-loading pairs | Q4 | — | Good |
| T1087.002 / T1482 | Domain account/trust discovery | Q5 | — | Good |
| T1071.004 | oastify.com OOB canary | Q6 | — | Partial — dual-use infrastructure caps confidence |
| T1098.007 | Masquerading setup account to local Administrators | Q7 | — | Good |
| T1219 / T1543.003 | VS Code Insiders tunnel install + service | Q8, Q9, Q10 | IOA-2 | Good |
| T1087.002 / T1110.003 / T1021.002 | NetExec enumeration/cred-spray/remote exec | Q11 | — | Good |
| T1562.001 | AV/EDR-killer launch pattern | Q12 | — | Partial — generic filename caps confidence |
| T1068 / T1562.001 (BYOVD) | K7RKScan-class vulnerable driver load | Q13, Q14 | IOA-3 | Good |
| T1072 | SYSVOL/DFSR-based domain-wide payload push | Q15 | IOA-4 | Good |
| T1486 | Warlock execution + ransom note | Q15, Q16 | IOA-4 | Good |
| T1070.004 | Staging-artifact cleanup (e.g. doexeloc.dll deletion) | — | — | Gap — generic file-delete telemetry is too noisy for a dedicated query at this time |
Validation gates for every query above are detailed in Section 11; no query ships without a stated benign-baseline and promotion path.
Hunt Summary Ticket
TITLE: Warlock Ransomware / Longlegs (Storm-2603) SharePoint-to-SYSVOL Campaign
SEVERITY: Critical (Active RaaS, exploited in the wild)
SCOPE: On-prem SharePoint Server farms; Active Directory (SYSVOL/DFSR); domain-joined
endpoint fleet. No specific victim organization in scope for this pack.
HYPOTHESIS: Longlegs exploits on-prem SharePoint (ToolShell + 2026 CVEs) to drop a LAYOUTS
webshell, steals ASP.NET machine keys to forge a signed __VIEWSTATE RCE, pivots
via LOTL recon, DLL side-loading, a masquerading admin account, NetExec, and a
VS Code Insiders tunnel, then uses a vulnerable signed driver (BYOVD) to disable
security tooling immediately before staging Warlock ransomware through SYSVOL.
QUERIES: 17 CQL hunt queries (Q1-Q17); 5 Custom IOA candidates (IOA-1..IOA-5), all Detect.
DO FIRST: Run Q8/Q9/Q10 (VS Code Insiders tunnel) and Q13/Q14 (vulnerable driver load)
fleet-wide; both precede mass ransomware deployment by roughly two hours in the
documented intrusion.
FINDINGS: Pending tenant run. Pack ships as a proactive hunt/detection baseline, not a
confirmed-incident report.
GAPS: T1552.001 (machine-key theft) and T1070.004 (staging-artifact cleanup) have no
dedicated Falcon-native query; both require IIS/ULS log review or FIM (Section 7).
ACTIONS: Patch SharePoint (ToolShell + July 2026 CVEs); rotate machine keys post-patch;
enforce the Vulnerable Driver Blocklist/HVCI; restrict VS Code tunneling to an
allowlist; lock down local Administrators membership.
OWNER: HuntPack
VERSION: v0.1 (Draft) - 2026-10-03
Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| 1 | Symantec / Carbon Black Threat Hunter Team — "Warlock Ransomware Attackers Hit Water and Telecom Operators" | Primary attack chain, timeline, actor attribution, CVE list, BYOVD driver detail, full IOC list | 2026-10-03 |
| 2 | BleepingComputer — "Warlock ransomware breach SharePoint in water, telecom operator attacks" | Corroboration; Microsoft's prior Storm-2603/Linen Typhoon/Violet Typhoon attribution context | 2026-10-03 |
| 2 | The Record / Recorded Future News — "'Warlock' ransomware used in attacks on critical infrastructure in Portuguese, Spanish-speaking countries" | Corroboration; CISA July 2026 SharePoint advisory context; historical Microsoft attribution | 2026-10-03 |
| 3 | Rankiteo blog (secondary aggregation, citing cyberpress.org) | Corroborates hash list and timeline already present in the primary source; not used as an independent fact source | 2026-10-03 |
| — | Industrial Cyber — industrialcyber.co | Not cited. Returned a Cloudflare bot-detection interstitial (HTTP 403); no article content was accessed | Attempted 2026-10-03 |
| — | cyberpress.org — cyberpress.org | Not cited. Returned a Cloudflare bot-detection interstitial (HTTP 403); no article content was accessed | Attempted 2026-10-03 |