Flax Typhoon / Integrity Technology Group: Microscan and FishHub Seizure Hunt

DOJ and FBI seized the Microscan scanner and FishHub spear-phishing domains on 2026-10-08; CISA added five Flax Typhoon-exploited CVEs to the KEV catalog (due 2026-10-11). Retrospective domain hunts, Exchange password spraying, KEV server exploitation and SoftEther persistence.
Threat
Flax Typhoon / Integrity Technology Group
Severity
EXPLOITED ITW
Type
State-sponsored (PRC) · Exploit, spray, persist, mail theft
Access
Internet-facing servers, Exchange, Microsoft 365, spear phishing
Advisory
CISA AA26-281A
Version
v0.1 · 2026-10-10
Author
HuntPack
Confidence
High (attribution, TTPs, CVEs) · Medium (atomic IOCs, mostly single primary source)
01

Executive Summary

On 2026-10-08 the US Justice Department and FBI announced court-authorized seizures of the domains behind two hacking tools, Microscan (internet-wide vulnerability scanning) and FishHub (spear phishing and follow-on malware delivery). The DOJ release says the tools were operated and used by actors working for Integrity Technology Group, a company based in the People's Republic of China with PRC government contracts, and that the actors are associated with Flax Typhoon. The same day the FBI, CISA, NSA and partner agencies published joint advisory AA26-281A, and CISA added five CVEs to the Known Exploited Vulnerabilities catalog with a federal due date of 2026-10-11.

The advisory describes a repeatable pipeline: scan with Microscan and open-source scanners, exploit internet-facing software (ProFTPD, ONLYOFFICE Docs, Strapi, Apache Struts, ISC BIND, plus three older KEV entries), run EBurst password spraying and XSS credential harvesting against Microsoft Exchange and Microsoft 365, persist with renamed SoftEther VPN clients (conhost.exe, dllhost.exe), and steal mail with Curlc4 and office-cli. Confirmed Microscan targets include a South Carolina power company, Japanese and Polish airports, Taiwanese gas and power companies and a multinational NGO. FishHub victims include about 20 Taiwanese universities.

What this pack can and cannot do. The six domains named by the DOJ (and a seventh reported by the Hacker News and found in the advisory) are now seized, so DNS and network hits are retrospective evidence of past contact, not live C2. Falcon sees the Exchange and Linux server process chains, Windows endpoint execution of the FishHub-style payload, failed-logon fan-out on Windows and domain controllers, and file hashes. Falcon does not see Microsoft 365 / Entra sign-ins, Exchange IIS logs, web-shell file writes in script languages, the spear-phishing email itself, or a crash of a BIND DNS server. Those are listed as gaps in Section 15 and covered with native hunts in Section 7 where a native log exists.

IOC posture. All 33 indicators ship as detect. No indicator is corroborated by two independent saved sources in a form that would justify prevent, the domains are already seized, and several are legitimate software (SoftEther) or public tools. See Section 10.

Defender priority: patch or isolate any internet-facing ProFTPD, ONLYOFFICE Docs, Strapi, Apache Struts or BIND instance now (KEV due date 2026-10-11), review Exchange and Microsoft 365 for password spraying across many accounts, and run Q1 to Q3 and Q11 over 90 to 180 days of history to find past contact.

02

Source Review & Web Hunter Notes

Eight source snapshots were saved verbatim (page text) to FlaxTyphoon-IntegrityTech-Microscan-Hunt-sources/ and every indicator in Section 10 traces to one of them. Tier 1 sources are US government publications.

#TierSourceKey findingCarry forward
11DOJ Office of Public Affairs press release 26-1155 (2026-10-08)Names Microscan, FishHub, Integrity Tech, Flax Typhoon; lists six seized domains; 200,000+ device Mirai-variant botnet (2024 action); victimsyes
21CISA KEV catalog JSON feed, release 2026.10.08 (five entries extracted)All five CVEs added 2026-10-08, due date 2026-10-11, BOD 26-04 required actionyes
31CISA / FBI / NSA joint advisory AA26-281A (2026-10-08)Full TTPs: Microscan, EBurst, XSS, SoftEther, Curlc4, office-cli, DC.exe; IOC appendix (domains, IPs, hashes); eight exploited CVEsyes (primary IOC source)
42The Hacker News, "Flax Typhoon Exploits Five Flaws" (2026-10-09)Five CVE descriptions and CVSS; three older KEV CVEs; federal deadlineyes
52The Hacker News, "FBI Seizes 7 Domains" (2026-10-09)Lists seven seized domains (adds 98aiblog.com); aliases Ethereal Panda and RedJuliett; two IP addresses from court documentspartial (single source for the two IPs)
62CyberScoopCorroborates tool names, victims and the joint advisorypartial
72The RecordCorroborates tools, victims and EBurst use against Exchangepartial
83gblock.app analysis of the advisoryRestates advisory detail; only used to corroborate 98aiblog.com and natcloudservice.compartial, not independent of source 3

Decisions and discrepancies

  • Six or seven seized domains. The DOJ release (source 1) names six. The Hacker News (source 5) names seven, adding 98aiblog.com. CISA AA26-281A (source 3) independently lists 98aiblog.com as a SoftEther hosting domain. The seventh domain is therefore shipped, labelled as not named in the DOJ release.
  • Directive number. The requested brief referred to BOD 22-01. The CISA KEV feed entries (source 2) cite BOD 26-04, so this pack uses BOD 26-04.
  • Botnet size. The DOJ release says more than 200,000 devices (September 2024 action). The larger figures (1.2 million database records, about 260,000 active devices as of 2024-06-05) come from the Hacker News and The Record reporting of court documents and are secondary only. They are not used in any detection.
  • Not usable. BleepingComputer returned only a summary through the fetch tool and SecurityWeek returned HTTP 403, so neither was snapshotted or cited. The USAO-WDPA copy of the DOJ release returned no content. No fetched page contained instructions aimed at the analyst.
  • Hashes were not taken from summaries. Every hash in this pack was read from the raw AA26-281A page text (snapshot 3), not from an AI-generated page summary.
03

Hunt Brief & Attack Chain

Hypothesis: an Integrity Tech-enabled operator scanned the environment with Microscan or an open-source scanner, then obtained a foothold through one of the KEV-listed internet-facing products or through password spraying and XSS against Exchange and Microsoft 365. After that, the operator persisted with a renamed SoftEther client, collected credentials (including DCSync), and exfiltrated mail.

StepBehaviorTelemetry (plain terms, then platforms)Hunt angle
1 ReconMicroscan and open-source scanners probe ports 21, 22, 53, 80, 443, 1080Perimeter and web server logs (outside endpoint telemetry). Scanner tools run from a victim host: process creation with command line (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents)Q14; native firewall and web log review (Section 7)
2 Initial access, productsExploitation of ProFTPD, ONLYOFFICE Docs, Strapi, Struts, BIND (and Bash, Pulse Secure, GitLab)Web and FTP server logs (outside endpoint telemetry). Child processes of the service on Linux and Windows (process creation with parent name)Q5, Q6, Q7
3 Initial access, identityEBurst password spraying against ten Exchange interfaces; XSS credential harvestFailed logon events on the Exchange server (CrowdStrike: UserLogonFailed2. Defender: DeviceLogonEvents). Domain controller authentication failures (CrowdStrike Falcon Identity: ActiveDirectoryAuthenticationFailure). Entra sign-in logs and IIS logs (outside endpoint telemetry)Q8, Q9; native hunts
4 ExecutionWeb shells under IIS (w3wp.exe parent); XSS-delivered live700_v1.exe launches DiagTrack.exeProcess creation with parent name and image pathQ4, Q10, Q11
5 PersistenceRenamed SoftEther VPN client as conhost.exe or dllhost.exe, auto-reconnectProcess creation with image path; outbound connection with owning process (CrowdStrike: NetworkConnectIP4. SentinelOne: IP Connect. Defender: DeviceNetworkEvents)Q10, Q12, Q2
6 Credential accessDC.exe performs DCSync over RPC replicationDomain controller directory-replication audit events (Windows Security 4662, outside endpoint telemetry); Falcon Identity Protection native detectionQ11 for the hash; Section 7 for 4662
7 Collection and exfiltrationCurlc4 (PHP, EWS API), office-cli (Linux, Outlook 365 client credentials), RC4 or AES-128-CBC archives, files renamed 001.gif, Css.js, Include.png, M2k.jsProcess creation with command line; DNS lookup with requesting process (CrowdStrike: DnsRequest. SentinelOne: DNS Resolved. Defender: DeviceEvents DnsQueryResponse); Entra audit logs for app secretsQ2, Q3, Q11, Q13

Exploited CVEs (AA26-281A Table 16)

CVEProductCVSSWeaknessKEV
CVE-2015-3306ProFTPD (affected 1.3.5), mod_copy SITE CPFR / CPTO10.0Improper access control: arbitrary file read and writeAdded 2026-10-08, due 2026-10-11
CVE-2021-3199ONLYOFFICE Docs / DocumentServer (5.1.5 through 5.6.2)9.8Path traversal with JWT via an image upload parameter, RCEAdded 2026-10-08, due 2026-10-11
CVE-2023-22894Strapi (up to 4.5.5), end-of-life7.2Cleartext storage; admin panel query filter; chains with CVE-2023-22621 to RCEAdded 2026-10-08, due 2026-10-11
CVE-2016-3081Apache Struts (2.3.19 to 2.3.28 ranges)8.1Command injection via method:prefix with Dynamic Method InvocationAdded 2026-10-08, due 2026-10-11
CVE-2015-5477ISC BIND 9.x (before 9.9.7-P2, 9.10.x before 9.10.2-P3)7.5Reachable assertion via TKEY queries: denial of serviceAdded 2026-10-08, due 2026-10-11
CVE-2014-6278, CVE-2019-11510, CVE-2021-22205GNU Bash (Shellshock), Pulse Connect Secure, GitLabn/aAlso exploited per AA26-281A; already in KEV before this actionEarlier KEV entries

Hunt hypotheses (ordered by fidelity)

  1. Known hash or masquerade of the FishHub-style payload, SoftEther copies, office-cli or dc.exe is present (Q10, Q11). Confidence high.
  2. An Exchange IIS worker process spawned a shell or recon tool (Q4). Confidence high, medium FP.
  3. conhost.exe or dllhost.exe holds external connections (Q12). Confidence medium.
  4. A Struts, Node, ONLYOFFICE or PHP service spawned a shell (Q5, Q6). Confidence medium.
  5. One source address failed logons across ten or more accounts (Q8, Q9). Confidence medium.
  6. Past contact with the seized or advisory-listed infrastructure (Q1 to Q3). Retrospective, confidence varies by indicator.
  7. Curlc4 artifacts or scanning tools on a Linux or server host (Q13, Q14). Confidence medium.
04

Consolidated IOC Table

33 atomic indicators (21 domains, 3 IPv4, 9 SHA-256). The advisory warns that several indicators date back to 2016 and should be vetted before blocking. All are detect, expiry 2027-04-10. Sources in the last-but-one column use the numbering from Section 2.

TypeValueConfidenceActionContextSourcesExpiry
domainc0cc[.]ccHIGHdetectFlax Typhoon Microscan access domain, seized 2026-10-08DOJ release (1); Hacker News (5)2027-04-10
domain98aicai[.]comHIGHdetectFlax Typhoon FishHub malware delivery domain, seized 2026-10-08DOJ release (1); Hacker News (5)2027-04-10
domain98aicode[.]comHIGHdetectFlax Typhoon FishHub malware delivery domain, seized 2026-10-08DOJ release (1); Hacker News (5)2027-04-10
domainoutlook3650[.]comHIGHdetectFlax Typhoon FishHub delivery domain, Outlook/Microsoft 365 brand lookalike, seized 2026-10-08DOJ release (1); Hacker News (5)2027-04-10
domainyoutubecard[.]comHIGHdetectFlax Typhoon FishHub delivery domain, YouTube brand lookalike, seized 2026-10-08DOJ release (1); Hacker News (5)2027-04-10
domainlinkedinns[.]netHIGHdetectFlax Typhoon FishHub delivery domain, LinkedIn brand lookalike, seized 2026-10-08DOJ release (1); Hacker News (5)2027-04-10
domain98aiblog[.]comHIGHdetectFlax Typhoon SoftEther hosting domain, named in AA26-281A; reported as seventh seized domain by Hacker News only (not in DOJ release)CISA AA26-281A (3); Hacker News (5); gblock (8)2027-04-10
domainnatcloudservice[.]comMEDIUMdetectFlax Typhoon Curlc4 mail-theft bot main C2 domainCISA AA26-281A (3); gblock (8)2027-04-10
domainupl[.]natcloudservice[.]comMEDIUMdetectFlax Typhoon Curlc4 download and upload hostCISA AA26-281A (3)2027-04-10
domaindns[.]studiocloud[.]xyzMEDIUMdetectFlax Typhoon DiagTrack.exe encrypted HTTP C2 attributed to Integrity Tech by the FBICISA AA26-281A (3)2027-04-10
domainstudiocloud[.]xyzMEDIUMdetectFlax Typhoon infrastructure parent domain (AA26-281A Table 12)CISA AA26-281A (3)2027-04-10
domain96cee[.]comMEDIUMdetectFlax Typhoon infrastructure domain (AA26-281A Table 12)CISA AA26-281A (3)2027-04-10
domainjavacheck[.]ooguy[.]comMEDIUMdetectFlax Typhoon SoftEther VPN hostCISA AA26-281A (3)2027-04-10
domainjavaupdate[.]giize[.]comMEDIUMdetectFlax Typhoon SoftEther VPN hostCISA AA26-281A (3)2027-04-10
domainpw[.]sexytube0[.]comMEDIUMdetectFlax Typhoon SoftEther VPN hostCISA AA26-281A (3)2027-04-10
domainximmd[.]sexytube0[.]comMEDIUMdetectFlax Typhoon SoftEther VPN hostCISA AA26-281A (3)2027-04-10
domainhmbcloud[.]netMEDIUMdetectFlax Typhoon SoftEther VPN hosting domainCISA AA26-281A (3)2027-04-10
domainhmbcloud[.]comMEDIUMdetectFlax Typhoon SoftEther VPN hosting domainCISA AA26-281A (3)2027-04-10
domainhmbiplc-01[.]comMEDIUMdetectFlax Typhoon SoftEther VPN hosting domainCISA AA26-281A (3)2027-04-10
domainasean[.]twimg[.]co[.]ukMEDIUMdetectFlax Typhoon SoftEther VPN host (twimg.co.uk is a lookalike; the legitimate CDN is twimg.com)CISA AA26-281A (3)2027-04-10
domainbsnl[.]twimg[.]co[.]ukMEDIUMdetectFlax Typhoon SoftEther VPN hostCISA AA26-281A (3)2027-04-10
ipv4149.28.132[.]137MEDIUMdetectFlax Typhoon Curlc4 download host (upl.natcloudservice.com)CISA AA26-281A (3)2027-04-10
ipv4202.182.109[.]151MEDIUMdetectFlax Typhoon botnet database server (court documents as reported)Hacker News (5)2027-04-10
ipv4198.13.53[.]226MEDIUMdetectFlax Typhoon Microscan original host (court documents as reported)Hacker News (5)2027-04-10
sha256c4503db6ece93eddf4511e787607cb14606a1df9f526f1e39992497119437cecMEDIUMdetectFlax Typhoon live700_v1.exe XSS-delivered payloadCISA AA26-281A (3)2027-04-10
sha256804a53be802378a8ec4c94602fd3d6584e0d472d83148e8a42c731950fec415dMEDIUMdetectFlax Typhoon DiagTrack.exe masquerading C2 implantCISA AA26-281A (3)2027-04-10
sha256add7dd142e4f7e2873bc8f7b7fb6308063608e0b49a773dea93abad4047f1489MEDIUMdetectFlax Typhoon office-cli Linux Outlook 365 mail exfiltration toolCISA AA26-281A (3)2027-04-10
sha2569dc85f9569a15eaf51c7d34254767ea30dd67b2178cec4cc7125288b9544fe00MEDIUMdetectFlax Typhoon dc.exe DCSync toolCISA AA26-281A (3)2027-04-10
sha256b1552703ff0035f197c22cdb3a514bb6aa45ec98de3ef5409faab0978f18c35eMEDIUMdetectFlax Typhoon renamed SoftEther client saved as conhost.exe (legitimate VPN software)CISA AA26-281A (3)2027-04-10
sha2568a592e22c51311d482272ec5aba0103c9cd0cfd78e5b5ba75dfa8f1c56926672MEDIUMdetectFlax Typhoon renamed SoftEther client saved as dllhost.exe (legitimate VPN software)CISA AA26-281A (3)2027-04-10
sha25686f1cfa6a2e0a8cb6fc1fbee28472308e6467932f8658a6a4885e29ed8c34a67MEDIUMdetectFlax Typhoon renamed SoftEther client saved as dllhost.exe, second build (legitimate VPN software)CISA AA26-281A (3)2027-04-10
sha2567b9efc7ef8957411cdd22582ce4bfb3a5f76d9c91cdb7e36bf85c9785a2480e9MEDIUMdetectFlax Typhoon fscan.exe scanner (public open-source tool)CISA AA26-281A (3)2027-04-10
sha256e7e727458f573dded05537baddac2867d2801db1c3c74410398d063dfd6f6575MEDIUMdetectFlax Typhoon JuicyPotato.exe privilege escalation (public open-source tool)CISA AA26-281A (3)2027-04-10
05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetry (plain terms, then platforms)PriorityGap risk
Windows Exchange Server (IIS, OWA/ECP/EWS)Process creation with parent name (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents); failed logon events (CrowdStrike: UserLogonFailed2. Defender: DeviceLogonEvents)HighIIS access logs and Exchange protocol logs are outside endpoint telemetry. A sensor on the server is required.
Linux servers running ProFTPD, ONLYOFFICE Docs, Strapi, Struts/Tomcat, BINDLinux process creation with parent name (same sources, Linux sensor)HighMany of these run on appliances, containers or hosts with no endpoint sensor. Script-language file writes (PHP, JSP) are not typed as file-write events. A BIND crash (CVE-2015-5477 is denial of service) is outside endpoint telemetry.
Windows endpoints (FishHub payload, SoftEther)Process creation with image path; outbound connection with owning process (CrowdStrike: NetworkConnectIP4. SentinelOne: IP Connect. Defender: DeviceNetworkEvents); DNS lookup with requesting process (CrowdStrike: DnsRequest. SentinelOne: DNS Resolved. Defender: DeviceEvents)MediumSpear-phishing email delivery and the XSS page are outside endpoint telemetry. Only the payload that lands is visible.
Domain controllersAuthentication failures and directory replication (CrowdStrike Falcon Identity Protection; Windows Security log 4625, 4662)MediumRequires the Identity Protection module or forwarded Security logs.
Microsoft 365 / EntraSign-in and audit logs (Entra ID, Unified Audit Log)HighEntirely outside endpoint telemetry. This pack gives native hunts only, no Falcon query.
Network perimeter, web proxies, DNS resolversFirewall, proxy and resolver logsMediumOutside endpoint telemetry. Required to see Microscan scanning of your external addresses.
06

ATT&CK Mapping

Technique IDs below are the ones AA26-281A cites, except T1190, T1566.002, T1505.003 and T1572, which are analyst mappings from the described behavior (marked *).

TacticTechniqueObserved behaviorQuery or control
ReconnaissanceT1595.002 Vulnerability ScanningMicroscan, Fscan, masscan, NMAP, dirsearch, wpscanQ3, Q14
Initial AccessT1190* Exploit Public-Facing ApplicationFive KEV CVEs plus Bash, Pulse Secure, GitLabQ5, Q6, Q7; Section 12 patching
Initial AccessT1566.002* Spearphishing LinkFishHub delivery domains (DOJ)Q1, Q10
Initial AccessT1189 Drive-by CompromiseXSS payload harvesting credentials and offering a zipSection 7 web log review
Credential AccessT1110.001 / T1110.003 Password Guessing / SprayingEBurst against ten Exchange interfacesQ8, Q9; Section 7
Credential AccessT1003.006 DCSyncDC.exe over RPC replicationQ11 (hash); Section 7
ExecutionT1059.001 / .004 / .006 / .007PowerShell SoftEther install, Unix shell office-cli, Python and Go exploit tools, JavaScript XSSQ4, Q5, Q6, Q13
PersistenceT1133 External Remote ServicesSoftEther VPN client with auto-reconnectQ2, Q10, Q12
PersistenceT1505.003* Web Shellb374.php, back.pl, error.jsp, file_back.aspx, gf.phtml, yaml-payload.jarQ4, Q6; Section 7
Defense EvasionT1036.003 Rename System Utilitiesconhost.exe, dllhost.exe, DiagTrack.exeQ10, Q12
Command and ControlT1572* Protocol TunnelingSoftEther tunnelQ12
CollectionT1114.002 Remote Email Collection; T1074.001 Local Data StagingCurlc4 (EWS API), office-cli (Outlook 365)Q13; Section 7 Entra hunts
ExfiltrationT1020 Automated Exfiltration; T1560.003 Archive via Custom MethodRC4 or AES-128-CBC archives uploaded to attacker serversQ2, Q3, Q13
07

Native Audit-Log Hunts

These checks use logs Falcon does not hold. Each is a plain-language recipe: translate it into your SIEM or run it in the product console.

#Log sourceWhat to look forWhy
N1Entra ID sign-in logsGroup failed sign-ins (error 50126 invalid credentials) by source IP address; flag any address with failures across ten or more distinct users in 24 hours, especially followed by a success from the same address.EBurst and password spraying against Microsoft 365 (T1110.003)
N2Microsoft 365 Unified Audit Log and Entra audit logNew app registrations or service principals, new client secrets, and mailbox access by an application using client credentials that you do not recognize.office-cli uses client_id, tenant_id and secret configuration files to read Outlook 365 mail
N3Exchange IIS logs (W3SVC)Many 401 responses from one client address across /owa, /ecp, /EWS, /Autodiscover, /Microsoft-Server-ActiveSync, /mapi, /rpc and /PowerShell. Also any new .aspx, .php, .jsp or .phtml file under the Exchange web directories.The advisory tells defenders to include all ten EBurst interfaces
N4Domain controller Security logEvent 4662 with directory-replication rights (DS-Replication-Get-Changes) from an account that is not a domain controller.DC.exe performs DCSync (T1003.006)
N5Web server and application logs (Struts, ONLYOFFICE, Strapi, ProFTPD)Struts requests containing method: parameters; ONLYOFFICE image-upload parameters containing a path-traversal sequence; Strapi admin-panel filter queries; ProFTPD SITE CPFR and SITE CPTO commands from external addresses.The five KEV CVEs; the exact request shapes are in the KEV descriptions
N6File-system search on Linux and web rootsFiles named curlc4.txt, b374.php, back.pl, error.jsp, gf.phtml, yaml-payload.jar; the file /var/tmp/.sess.zip; a storage/fm directory; files named 001.gif, Css.js, Include.png or M2k.js that are not images or scripts.Names from AA26-281A. Falcon does not type script-file writes, so this is a file-system check.
N7Email gatewayLinks to the lookalike domains outlook3650.com, youtubecard.com and linkedinns.net in delivered mail, retrospectively.FishHub delivery is by spear phishing. The domains are seized, so this finds past delivery.
N8Firewall and proxy logsInbound scanning of ports 21, 22, 53, 80, 443 and 1080 from many addresses; outbound connections to the Section 4 addresses.Microscan reconnaissance and retrospective contact
08

Hunt Queries: CrowdStrike CQL and SentinelOne PowerQuery

Show all queries in
Pick your tenant's cloud first: every "Open in Falcon" button below uses this selection.

Queries Q1 to Q3 and Q11 are retrospective. "Open in Falcon" opens a 7 day window; widen it in the Falcon time picker to 90 to 180 days before reading the result. Hits on seized domains mean contact before the takedown, not current C2.

Q1 · Retrospective DNS lookups of the seized Integrity Tech domains
CONF HIGHFP LOWCOST LOW

Looks for: DNS lookups, by any process, for the seven domains tied to Microscan, FishHub and the SoftEther hosting seen by the FBI. The domains were seized on 2026-10-08, so a hit means the endpoint talked to Integrity Tech infrastructure before the takedown. This is a historical-hit hunt, not live C2 detection. Set a 90 day or longer window in the Falcon time picker.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: If the tenant populates dns.request instead of event.dns.request, this hunt returns nothing until the field name is swapped.
  • PowerQuery assumes: On a DNS Resolved event the requesting process is src.process.*.
  • PowerQuery assumes: The queried name is held in event.dns.request; the vendor docs also name dns.request, so run the readiness test to see which is populated.
  • PowerQuery assumes: matches is case-insensitive by default, matching the CQL /i flag; [.] stands for a literal dot.
// HUNT: Retrospective DNS lookups of the seized Integrity Tech domains
// MITRE: T1566.002 | T1568 | T1071.004
// CONF: high  FP: low  COST: low | REQUIRES: DNS request telemetry with the requesting process (Falcon: DnsRequest)
// LOOKBACK: 90d or longer, set in the Falcon time picker. Seized 2026-10-08, so hits are HISTORICAL.
// FALSE POSITIVES: researchers, sandboxes or threat-intel feeds resolving the seized names
#event_simpleName=DnsRequest
| DomainName=/(^|\.)(c0cc\.cc|98aicai\.com|98aicode\.com|98aiblog\.com|outlook3650\.com|youtubecard\.com|linkedinns\.net)$/i
| groupBy([aid, ComputerName, DomainName, ContextBaseFileName], function=[count(as=lookups), min(@timestamp, as=firstSeen), max(@timestamp, as=lastSeen)], limit=max)
| sort(firstSeen, order=asc)
Q2 · Retrospective DNS lookups of CISA-listed C2 and SoftEther host domains
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: DNS lookups for the infrastructure domains named in AA26-281A: the Curlc4 mail-theft C2, the DiagTrack.exe C2 parent domain, and the SoftEther VPN hosts used for persistence. Domain-level match, so any subdomain hits.

FP: the advisory warns that some indicators date back to 2016 and should be vetted before action. Domains that expired and were re-registered by unrelated parties can match. Review hits by first-seen date and requesting process before escalating.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: If the tenant populates dns.request instead of event.dns.request, this hunt returns nothing until the field name is swapped.
  • PowerQuery assumes: On a DNS Resolved event the requesting process is src.process.*.
  • PowerQuery assumes: The queried name is held in event.dns.request; the vendor docs also name dns.request, so run the readiness test to see which is populated.
  • PowerQuery assumes: matches is case-insensitive by default, matching the CQL /i flag; [.] stands for a literal dot.
// HUNT: Retrospective DNS lookups of AA26-281A C2 and SoftEther host domains
// MITRE: T1071.001 | T1133 | T1568
// CONF: medium  FP: medium  COST: low | REQUIRES: DNS request telemetry with the requesting process (Falcon: DnsRequest)
// LOOKBACK: 180d or longer, set in the Falcon time picker. Treat hits as HISTORICAL leads.
// FALSE POSITIVES: re-registered or reused domains; AA26-281A says some indicators date to 2016
// TUNING: review each hit by firstSeen and ContextBaseFileName; a browser lookup of a lapsed domain is weaker than conhost.exe, dllhost.exe or a scripting host resolving it
#event_simpleName=DnsRequest
| DomainName=/(^|\.)(natcloudservice\.com|studiocloud\.xyz|96cee\.com|hmbcloud\.(com|net)|hmbiplc-01\.com|javacheck\.ooguy\.com|javaupdate\.giize\.com|sexytube0\.com|twimg\.co\.uk)$/i
| groupBy([aid, ComputerName, DomainName, ContextBaseFileName], function=[count(as=lookups), min(@timestamp, as=firstSeen), max(@timestamp, as=lastSeen)], limit=max)
| sort(firstSeen, order=asc)
Q3 · Retrospective connections to named Integrity Tech IP addresses
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Outbound IPv4 connections to the three addresses named in the sources: the Curlc4 download host (AA26-281A), the host that served Microscan, and the botnet database server (both from the Hacker News write-up of the court documents). Single-source addresses, so treat as leads.

FP: addresses on rented server space can be reassigned to unrelated tenants after the actor leaves. A hit is only meaningful if its timestamp falls inside the first/last-seen window the sources give.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Connections made through a proxy show the proxy address, not the named server.
  • PowerQuery assumes: On an IP Connect event the connecting process is src.process.*.
  • PowerQuery assumes: dst.ip.address and dst.port.number hold the remote endpoint of the connection.
// HUNT: Retrospective connections to named Integrity Tech IPv4 addresses
// MITRE: T1071.001 | T1105 | T1595.002
// CONF: medium  FP: medium  COST: low | REQUIRES: outbound IPv4 connection telemetry (Falcon: NetworkConnectIP4)
// LOOKBACK: 180d or longer, set in the Falcon time picker. Single-source addresses; treat as leads.
// FALSE POSITIVES: reassigned server addresses
// TUNING: compare firstSeen against the sourced activity windows (Curlc4 host: AA26-281A; the other two: court documents as reported on 2026-10-08) and drop hits outside them
#event_simpleName=NetworkConnectIP4
| RemoteAddressIP4=/^(149\.28\.132\.137|202\.182\.109\.151|198\.13\.53\.226)$/
| groupBy([aid, ComputerName, RemoteAddressIP4, RemotePort, ContextBaseFileName], function=[count(as=connections), min(@timestamp, as=firstSeen), max(@timestamp, as=lastSeen)], limit=max)
| sort(firstSeen, order=asc)
Q4 · Exchange IIS worker process (w3wp.exe) spawning shells or recon tools
CONF HIGHFP MEDIUMCOST LOW

Looks for: The PARENT is w3wp.exe, the IIS worker process that serves OWA, ECP, EWS and Autodiscover on an on-premises Exchange server. The CHILD is a shell, script host, download tool or recon binary. Flax Typhoon pairs XSS and EBurst password spraying against Exchange for its foothold, and webshells (b374.php, error.jsp, gf.phtml and others) are in its toolkit. Windows sensor only.

FP: other IIS applications on the same host, monitoring agents and health probes. Scope the hunt to Exchange servers and exclude the monitoring service account.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Non-Exchange IIS applications on the same host also match until the hunt is scoped by host.
  • PowerQuery assumes: On a Process Creation event src.process.* is the creator (w3wp.exe) and tgt.process.* is the new process.
  • PowerQuery assumes: The user column is src.process.user, the creator's account; the CQL UserName is the child's account, which for w3wp.exe children is normally the same application-pool identity.
  • PowerQuery assumes: in:anycase makes the name lists case-insensitive, matching the CQL /i flag.
// HUNT: Exchange IIS worker process spawning shells or recon tools
// MITRE: T1505.003 | T1190 | T1059
// CONF: high  FP: medium  COST: low | REQUIRES: process creation with parent name (Falcon: ProcessRollup2, Windows sensor on the Exchange server)
// PARENT: w3wp.exe (IIS worker process hosting OWA/ECP/EWS/Autodiscover). CHILD: the tools matched below.
// FALSE POSITIVES: non-Exchange IIS apps on the same host; monitoring agents and health probes
// TUNING: scope to Exchange hosts only (add a ComputerName filter for your Exchange servers), and exclude your monitoring service with UserName!=/^svc-monitor$/i
#event_simpleName=ProcessRollup2
| ParentBaseFileName=/^w3wp\.exe$/i
| FileName=/^(cmd|powershell|pwsh|wscript|cscript|mshta|rundll32|regsvr32|certutil|bitsadmin|curl|wget|whoami|net|net1|nltest|wmic|msiexec|tasklist|ipconfig|systeminfo)\.exe$/i
| groupBy([aid, ComputerName, UserName, FileName, CommandLine], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(hits, order=desc)
Q5 · Struts-hosting Java / Tomcat process spawning shells or downloaders
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: CVE-2016-3081 (Apache Struts, method:prefix with Dynamic Method Invocation enabled) gives command execution inside the servlet container. The PARENT is the java or Tomcat process that hosts the Struts application. The CHILD is a shell, downloader or recon command. Works on the Windows and Linux sensors.

FP: any Java application that legitimately shells out, including CI/build servers and application wrapper scripts. Restrict to hosts known to run Struts and exclude known wrapper commands.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Java applications and CI or build servers that legitimately run shell commands match until tuned.
  • PowerQuery assumes: On a Process Creation event src.process.* is the creator (the JVM) and tgt.process.* is the new process.
  • PowerQuery assumes: The user column is src.process.user, the creator's account.
  • PowerQuery assumes: matches is case-insensitive by default, matching the CQL /i flag; [.] stands for a literal dot.
// HUNT: Struts-hosting Java or Tomcat process spawning shells or downloaders
// MITRE: T1190 | T1059.004 | T1059.003 | T1105
// CONF: medium  FP: medium  COST: low | REQUIRES: process creation with parent name (Falcon: ProcessRollup2, Windows or Linux sensor)
// PARENT: java / javaw / tomcat (the JVM hosting the Struts app). CHILD: the tools matched below.
// FALSE POSITIVES: Java apps and CI/build servers that legitimately run shell commands
// TUNING: limit to hosts that run Struts; exclude known wrapper scripts with CommandLine!=/startup\.sh|catalina\.sh/i
#event_simpleName=ProcessRollup2
| ParentBaseFileName=/^(java|javaw|tomcat[0-9]*|tomcat[0-9]*w)(\.exe)?$/i
| FileName=/^(sh|bash|dash|cmd|powershell|pwsh|curl|wget|nc|ncat|python[0-9.]*|perl|php|whoami|id|uname|ifconfig|certutil|bitsadmin)(\.exe)?$/i
| groupBy([aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(hits, order=desc)
Q6 · Linux web and app tier (Apache, nginx, PHP, Node, ONLYOFFICE) spawning shells
CONF MEDIUMFP HIGHCOST LOW

Looks for: Linux web-shell and app-exploit execution. The PARENT is the web or application process: httpd/apache2/nginx/php-fpm for PHP webshells, node for Strapi (CVE-2023-22894, chained with CVE-2023-22621 for RCE per the KEV entry), and docservice/converter for ONLYOFFICE Docs (CVE-2021-3199). The CHILD is a shell, downloader or interpreter. The ONLYOFFICE process names are an assumption: ⚠ validate in tenant.

FP: high. node parents run npm scripts, and PHP apps shell out for legitimate reasons. Treat as a triage hunt, never an auto-action. Restrict to hosts that run the exposed products and baseline for a full release cycle first.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: High false-positive risk: npm scripts under node, PHP applications that call system utilities and deploy hooks match until baselined.
  • PowerQuery assumes: On a Process Creation event src.process.* is the creator (the web or app process) and tgt.process.* is the new process.
  • PowerQuery assumes: endpoint.os holds the lowercase value linux for Linux agents.
  • PowerQuery assumes: The user column is src.process.user, the creator's account.
  • PowerQuery assumes: matches is case-insensitive by default, matching the CQL /i flag.
// HUNT: Linux web and app tier spawning shells (Apache, nginx, PHP, Node/Strapi, ONLYOFFICE)
// MITRE: T1505.003 | T1190 | T1059.004
// CONF: medium  FP: high  COST: low | REQUIRES: Linux process creation with parent name (Falcon: ProcessRollup2, Linux sensor)
// PARENT: httpd, apache2, nginx, php-fpm, php-cgi, php, node (Strapi), docservice, converter (ONLYOFFICE; validate in tenant)
// FALSE POSITIVES: npm scripts under node; PHP applications that call system utilities; deploy hooks
// TUNING: baseline for one release cycle; exclude known deploy users with UserName!=/^(deploy|ci)$/i; run on hosts that carry the exposed products only
#event_simpleName=ProcessRollup2
| event_platform=Lin
| ParentBaseFileName=/^(httpd|apache2|nginx|php-fpm[0-9.]*|php-cgi|php|node|docservice|converter)$/i
| FileName=/^(sh|bash|dash|curl|wget|nc|ncat|python[0-9.]*|perl|whoami|id|uname|crontab|base64)$/i
| groupBy([aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(hits, order=desc)
Q7 · ProFTPD daemon as parent of shells or downloaders (Linux)
CONF LOWFP LOWCOST LOW

Looks for: The PARENT is proftpd. CVE-2015-3306 (mod_copy, SITE CPFR/CPTO) copies files inside the daemon, so the exploit itself spawns no process and this query will NOT see it. It catches only follow-on use where a ProFTPD process ends up running a shell or downloader. Do not read a quiet result as proof of no exploitation: see the Coverage Map gap for the file-write step.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: The CVE-2015-3306 copy primitive runs inside the daemon and creates no process, so it is invisible here.
  • PowerQuery assumes: On a Process Creation event src.process.* is the creator (proftpd) and tgt.process.* is the new process.
  • PowerQuery assumes: endpoint.os holds the lowercase value linux for Linux agents.
  • PowerQuery assumes: The user column is src.process.user, the creator's account.
  • PowerQuery assumes: matches and in:anycase are case-insensitive, matching the CQL /i flag.
// HUNT: ProFTPD daemon as parent of shells or downloaders
// MITRE: T1190 | T1059.004
// CONF: low  FP: low  COST: low | REQUIRES: Linux process creation with parent name (Falcon: ProcessRollup2, Linux sensor)
// PARENT: proftpd. NOTE: CVE-2015-3306 file copy happens inside the daemon and spawns no child; this is follow-on coverage only.
// FALSE POSITIVES: site-specific ProFTPD exec hooks (mod_exec) calling scripts
#event_simpleName=ProcessRollup2
| event_platform=Lin
| ParentBaseFileName=/^proftpd$/i
| FileName=/^(sh|bash|dash|curl|wget|nc|ncat|python[0-9.]*|perl|php|chmod)$/i
| groupBy([aid, ComputerName, UserName, FileName, CommandLine], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(hits, order=desc)
Q8 · Password spray fan-out against Exchange hosts (Windows failed logons)
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: EBurst sprays ten Exchange interfaces (ECP, EWS, OAB, OWA, RPC, API, MAPI, PowerShell, Autodiscover, ActiveSync). On an Exchange server the Windows sensor logs failed network and cleartext logons. This groups failures by source address and flags sources that touched many distinct accounts. Run it on Exchange servers only. ⚠ validate in tenant: confirm RemoteAddressIP4 is populated on UserLogonFailed2 in your sensor version.

FP: if clients reach Exchange through a load balancer or reverse proxy, every failure carries the proxy address and the fan-out collapses onto it, which both hides the real source and flags the proxy. Vulnerability scanners and misconfigured mobile clients also fan out.

Validation: static-reviewedEquivalence: approximate-analyticProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Load balancers or proxies that mask the client address collapse many clients into one source, and the agent must record failed network logons on the Exchange servers.
  • PowerQuery assumes: src.endpoint.ip.address holds the client address on network logons; it is documented but not attested, so verify it on the tenant.
  • PowerQuery assumes: event.login.type NETWORK and NETWORK_CLEAR_TEXT correspond to the CQL LogonType 3 and 8.
  • PowerQuery assumes: estimate_distinct is approximate; the 10-account threshold is far enough from the error band to be reliable.
// HUNT: Password spray fan-out against Exchange hosts (Windows failed logons)
// MITRE: T1110.003 | T1110.001
// CONF: medium  FP: medium  COST: medium | REQUIRES: failed logon telemetry (Falcon: UserLogonFailed2, Windows sensor on the Exchange server)
// VALIDATE IN TENANT: RemoteAddressIP4 on UserLogonFailed2
// FALSE POSITIVES: load balancers or proxies that mask the client address; scanners; misconfigured mobile clients
// TUNING: exclude your load balancer and scanner addresses with RemoteAddressIP4!=/^REPLACE_WITH_LB_IP$/; raise or lower the distinctAccounts threshold after one week of baseline
#event_simpleName=UserLogonFailed2
| LogonType=/^(3|8)$/
| UserName=*
| groupBy([RemoteAddressIP4], function=[count(as=failures), count(UserName, distinct=true, as=distinctAccounts), count(aid, distinct=true, as=targetHosts), min(@timestamp, as=firstSeen), max(@timestamp, as=lastSeen)], limit=max)
| test(distinctAccounts >= 10)
| sort(distinctAccounts, order=desc)
Q9 · Password spray fan-out against Active Directory (Falcon Identity)
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: The same spray shape seen from domain controllers by Falcon Identity Protection: authentication failures grouped by source endpoint, flagged when one source touches many distinct accounts. Needs the Identity Protection module; without it this query returns nothing. It does NOT see Microsoft 365 / Entra cloud sign-ins: use the native hunt in Section 7 for those.

FP: shared egress addresses, service desks resetting many accounts, and stale credentials on a scheduled job that fans out across accounts.

Validation: static-reviewedEquivalence: unsupported-without-redesignProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: SentinelOne cannot show Active Directory authentication failures as seen by an identity sensor from the endpoint schema alone.
// HUNT: Password spray fan-out against Active Directory (Falcon Identity)
// MITRE: T1110.003 | T1110.001
// CONF: medium  FP: medium  COST: medium | REQUIRES: Falcon Identity Protection (Falcon: ActiveDirectoryAuthenticationFailure)
// FALSE POSITIVES: shared NAT or VPN egress; service desk bulk resets; stale scheduled-job credentials
// TUNING: exclude known shared egress and the service desk workstation with SourceEndpointIp!=/^REPLACE_WITH_EGRESS_IP$/; baseline distinctAccounts for a week
#event_simpleName=ActiveDirectoryAuthenticationFailure
| groupBy([SourceEndpointIp], function=[count(as=failures), count(SamAccountName, distinct=true, as=distinctAccounts), min(@timestamp, as=firstSeen), max(@timestamp, as=lastSeen)], limit=max)
| test(distinctAccounts >= 10)
| sort(distinctAccounts, order=desc)
Q10 · FishHub payload and SoftEther masquerade: tool names running outside System32
CONF MEDIUMFP LOWCOST LOW

Looks for: Executable names the advisory ties to the XSS-delivered FishHub-style payload (live700_v1.exe, DiagTrack.exe) and to renamed SoftEther VPN clients (conhost.exe, dllhost.exe), running from anywhere other than the Windows system directories. The genuine conhost.exe and dllhost.exe live in System32 and SysWOW64. Windows sensor.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A masquerading binary that lives under a path containing the System32 folder name as a subfolder of an attacker directory is excluded by the path pattern.
  • PowerQuery assumes: On a Process Creation event tgt.process.* is the new process; src.process.user is the creator's account.
  • PowerQuery assumes: The path exclusion uses a dot for each path separator so no backslash escaping is needed; it also tolerates forward-slash paths.
  • PowerQuery assumes: endpoint.os holds the lowercase value windows for Windows agents.
  • PowerQuery assumes: in:anycase and matches are case-insensitive, matching the CQL /i flag.
// HUNT: FishHub payload and SoftEther masquerade, tool names running outside System32
// MITRE: T1036.003 | T1133 | T1204.002
// CONF: medium  FP: low  COST: low | REQUIRES: process creation with image path (Falcon: ProcessRollup2, Windows sensor)
// FALSE POSITIVES: servicing and side-by-side component copies; unusual but legitimate installer staging
#event_simpleName=ProcessRollup2
| event_platform=Win
| FileName=/^(live700_v1|DiagTrack|conhost|dllhost)\.exe$/i
| ImageFileName!=/\\Windows\\(System32|SysWOW64|WinSxS)\\/i
| groupBy([aid, ComputerName, UserName, FileName, ImageFileName, SHA256HashData], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(firstSeen, order=asc)
Q11 · Known tool hashes from AA26-281A (process start and file write)
CONF HIGHFP LOWCOST MEDIUM

Looks for: Sweeps process starts and executable writes for the nine SHA-256 values the advisory lists for dropped malware and tools: live700_v1.exe, DiagTrack.exe, office-cli (Linux ELF), dc.exe (DCSync), the renamed SoftEther conhost.exe and dllhost.exe copies, fscan.exe and JuicyPotato.exe. Hash matches are exact, but the list is a 2026 snapshot of one actor toolkit: a miss proves little.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A file written without a SHA-256 on the event is not matched, and the file branch is not limited to executables.
  • PowerQuery assumes: On a Process Creation event the started image hash is tgt.process.image.sha256; on file events the written file hash is tgt.file.sha256.
  • PowerQuery assumes: File-event SHA-256 population depends on the agent hashing the file at write time; confirm with the readiness test.
  • PowerQuery assumes: in:anycase makes the hash comparison case-insensitive, matching the CQL /i flag.
// HUNT: Known tool hashes from AA26-281A (process start and executable write)
// MITRE: T1105 | T1036.003 | T1003.006
// CONF: high  FP: low  COST: medium | REQUIRES: file hash on process start and executable write (Falcon: ProcessRollup2, PeFileWritten, NewExecutableWritten)
// LOOKBACK: 180d or longer, set in the Falcon time picker
// FALSE POSITIVES: fscan.exe and JuicyPotato.exe are public tools; SoftEther is legitimate VPN software. A hit on those is a lead, not a verdict.
#event_simpleName=/^(ProcessRollup2|PeFileWritten|NewExecutableWritten)$/
| SHA256HashData=/^(c4503db6ece93eddf4511e787607cb14606a1df9f526f1e39992497119437cec|804a53be802378a8ec4c94602fd3d6584e0d472d83148e8a42c731950fec415d|add7dd142e4f7e2873bc8f7b7fb6308063608e0b49a773dea93abad4047f1489|9dc85f9569a15eaf51c7d34254767ea30dd67b2178cec4cc7125288b9544fe00|b1552703ff0035f197c22cdb3a514bb6aa45ec98de3ef5409faab0978f18c35e|8a592e22c51311d482272ec5aba0103c9cd0cfd78e5b5ba75dfa8f1c56926672|86f1cfa6a2e0a8cb6fc1fbee28472308e6467932f8658a6a4885e29ed8c34a67|7b9efc7ef8957411cdd22582ce4bfb3a5f76d9c91cdb7e36bf85c9785a2480e9|e7e727458f573dded05537baddac2867d2801db1c3c74410398d063dfd6f6575)$/i
| groupBy([aid, ComputerName, #event_simpleName, FileName, SHA256HashData], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(firstSeen, order=asc)
Q12 · conhost.exe or dllhost.exe making external network connections
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Renamed SoftEther VPN clients keep a persistent tunnel to a hub outside the network. The genuine conhost.exe never makes external connections, and dllhost.exe (COM Surrogate) rarely does. This lists external IPv4 destinations for either name, with private ranges removed.

FP: dllhost.exe can hold connections for some COM-based software. Baseline first, then alert on conhost.exe immediately.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: COM-based software where dllhost.exe holds an external connection matches until baselined, and the hunt does not filter by connection direction.
  • PowerQuery assumes: On an IP Connect event the connecting process is src.process.*.
  • PowerQuery assumes: The five excluded subnets match the CQL cidr() list; IPv6 destinations are not excluded.
  • PowerQuery assumes: in:anycase makes the process names case-insensitive, matching the CQL /i flag.
// HUNT: conhost.exe or dllhost.exe making external network connections (SoftEther persistence)
// MITRE: T1133 | T1036.003 | T1572
// CONF: medium  FP: medium  COST: low | REQUIRES: outbound IPv4 connection telemetry (Falcon: NetworkConnectIP4, Windows sensor)
// FALSE POSITIVES: COM-based software where dllhost.exe holds an external connection
// TUNING: baseline dllhost.exe destinations for a week and exclude confirmed vendor ranges; conhost.exe should have no external destinations at all
#event_simpleName=NetworkConnectIP4
| ContextBaseFileName=/^(conhost|dllhost)\.exe$/i
| !cidr(RemoteAddressIP4, subnet=["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "127.0.0.0/8", "169.254.0.0/16"])
| groupBy([aid, ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort], function=[count(as=connections), min(@timestamp, as=firstSeen), max(@timestamp, as=lastSeen)], limit=max)
| sort(connections, order=desc)
Q13 · Curlc4 mail-theft bot artifacts on Linux hosts
CONF MEDIUMFP LOWCOST LOW

Looks for: Command lines that reference the Curlc4 PHP bot (curlc4), its staging file /var/tmp/.sess.zip or its storage/fm working directory, plus the child process the bot renames itself to (crypto) under a PHP parent. The advisory describes Curlc4 as a stand-alone script that talks to the Exchange Web Services API, so it can run from a host that is not itself a victim. Linux sensor.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Artifacts that never appear on a process command line, such as a file written by a process the agent did not observe, are not captured.
  • PowerQuery assumes: On a Process Creation event src.process.* is the creator (the php process) and tgt.process.* is the new process.
  • PowerQuery assumes: endpoint.os holds the lowercase value linux for Linux agents.
  • PowerQuery assumes: The user column is src.process.user, the creator's account.
  • PowerQuery assumes: The script artifact is matched as sess.zip without the CQL's leading dot, so a differently prefixed copy also matches; the AA26-281A path is /var/tmp/.sess.zip.
  • PowerQuery assumes: contains and matches are case-insensitive by default; the process-name equality is case-sensitive.
// HUNT: Curlc4 mail-theft bot artifacts on Linux hosts
// MITRE: T1114.002 | T1074.001 | T1020
// CONF: medium  FP: low  COST: low | REQUIRES: Linux process creation with command line (Falcon: ProcessRollup2, Linux sensor)
// ARTIFACTS: curlc4 script name, /var/tmp/.sess.zip, storage/fm, child process renamed crypto under a php parent (all from AA26-281A)
// FALSE POSITIVES: an unrelated binary legitimately named crypto launched by a PHP app
#event_simpleName=ProcessRollup2
| event_platform=Lin
| (CommandLine="*curlc4*" OR CommandLine="*.sess.zip*" OR CommandLine="*storage/fm*" OR (FileName="crypto" ParentBaseFileName=/^php/i))
| groupBy([aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(firstSeen, order=asc)
Q14 · Scanning and recon tool execution named in AA26-281A
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Execution of the open-source scanners and recon tools the advisory lists (fscan, nbtscan, ksubdomain, masscan, nmap, dirsearch, wpscan, sqlmap, OneForAll, ShuiZe and others) plus JuicyPotato, by binary name or by the Python script named on the command line. Most are dual-use, so this is a triage hunt on hosts that should never run them (servers, standard user workstations).

FP: authorized penetration testing and vulnerability management. Exclude scanner hosts and named red-team accounts.

Validation: static-reviewedEquivalence: equivalent-with-schema-assumptionsProfiles: sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Authorized penetration testing and vulnerability management scanners match by design.
  • PowerQuery assumes: On a Process Creation event tgt.process.* is the new process; src.process.user is the creator's account.
  • PowerQuery assumes: A non-word character class on each side of the script name stands in for the CQL word boundary.
  • PowerQuery assumes: matches is case-insensitive by default, matching the CQL /i flag.
// HUNT: Scanning and recon tool execution named in AA26-281A
// MITRE: T1595.002 | T1046 | T1068
// CONF: medium  FP: medium  COST: low | REQUIRES: process creation with command line (Falcon: ProcessRollup2, Windows and Linux sensors)
// FALSE POSITIVES: authorized penetration testing; vulnerability management scanners
// TUNING: exclude scanner hosts with ComputerName!=/^REPLACE_WITH_SCANNER_HOST$/i and red-team accounts with UserName!=/^REPLACE_WITH_REDTEAM_ACCOUNT$/i
#event_simpleName=ProcessRollup2
| FileName=/^(fscan|nbtscan|nbtscan_linux|ksubdomain|ksubdomain_linux|masscan|nmap|JuicyPotato|dirsearch|wpscan|sqlmap)(\.exe|\.py)?$/i OR CommandLine=/\b(dirsearch|BBScan|OneForAll|ShuiZe|PackerFuzzer|subDomainsBrute|dirmap)\.py\b/i
| groupBy([aid, ComputerName, UserName, FileName, CommandLine], function=[count(as=hits), min(@timestamp, as=firstSeen)], limit=max)
| sort(firstSeen, order=asc)
09

Detection Rules by Platform

Two queries are specific enough to promote to Custom IOAs. Both ship in detect-only (monitor) mode. No IOA in this pack uses a prevent action: the signals involve legitimate binary names and legitimate software, and nothing here has two independent sources behind a blocking decision.

CrowdStrike: Custom IOA

IOA nameSource queryPatternExclusionsDeployment path
Exchange IIS Worker Spawns Shell or Recon ToolPromote Q4Windows process creation: parent image w3wp.exe, child image matching cmd, powershell, wscript, cscript, mshta, rundll32, regsvr32, certutil, bitsadmin, whoami, net, nltest, wmicScope the rule to the Exchange host group; exclude the monitoring service accountFalcon console, Custom IOAs, Windows, Process Creation rule, host group = Exchange servers, action = Detect for 14 days, review hits, keep at Detect
System Binary Name Outside System DirectoriesPromote Q10Windows process creation: image file name live700_v1.exe, DiagTrack.exe, conhost.exe or dllhost.exe where the image path is not under the Windows System32, SysWOW64 or WinSxS directoriesNone known; confirm on a pilot group that no installer stages these namesFalcon console, Custom IOAs, Windows, Process Creation rule, pilot host group, action = Detect for 7 days, then all workstations and servers, keep at Detect

The other twelve queries stay investigate-only. Q1 to Q3 and Q11 are retrospective and belong in IOC Management and scheduled searches, not IOAs. Q5, Q6, Q8, Q9, Q12 and Q14 carry medium-or-higher FP sources that need a human reviewing hits.

SentinelOne: custom detection rules

RuleSource queryRun asNotes
Exchange IIS Worker Spawns Shell or Recon ToolQ4, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device"
System Binary Name Outside System DirectoriesQ10, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device". This pack's own text mentions a baseline or pilot; follow it as written

Create the rule with POST /web/api/v2.1/cloud-detection/rules, queryType: "scheduled" and queryLang: "2.0", with the query in data.scheduledParams.query. Use 2.0 operator spellings: a rule written with the 1.0 token ContainsCIS was accepted and never fired on a tenant. The API does not warn, so lint the body before deploying.

10

Machine-Readable IOC Appendix

Why every row is detect. Prevent or critical severity needs two independent saved sources. Almost every indicator here comes from one document (CISA AA26-281A), and the three that appear in the DOJ release plus the Hacker News are the domains, which are already seized and sinkholed, so blocking them protects nothing new. SoftEther, fscan and JuicyPotato hashes are legitimate or public software. The two IPs come from one secondary report. All 33 rows are detect with a 2027-04-10 expiry.

Falcon IOC Management CSVbulk import, detect only
type,value,action,severity,expiration,description,tags
domain,c0cc.cc,detect,medium,2027-04-10,Flax Typhoon Microscan access domain - seized 2026-10-08,campaign:FlaxTyphoon
domain,98aicai.com,detect,medium,2027-04-10,Flax Typhoon FishHub malware delivery domain - seized 2026-10-08,campaign:FlaxTyphoon
domain,98aicode.com,detect,medium,2027-04-10,Flax Typhoon FishHub malware delivery domain - seized 2026-10-08,campaign:FlaxTyphoon
domain,outlook3650.com,detect,medium,2027-04-10,Flax Typhoon FishHub delivery domain - Outlook/Microsoft 365 brand lookalike - seized 2026-10-08,campaign:FlaxTyphoon
domain,youtubecard.com,detect,medium,2027-04-10,Flax Typhoon FishHub delivery domain - YouTube brand lookalike - seized 2026-10-08,campaign:FlaxTyphoon
domain,linkedinns.net,detect,medium,2027-04-10,Flax Typhoon FishHub delivery domain - LinkedIn brand lookalike - seized 2026-10-08,campaign:FlaxTyphoon
domain,98aiblog.com,detect,medium,2027-04-10,Flax Typhoon SoftEther hosting domain - named in AA26-281A - reported as seventh seized domain by Hacker News only - not in DOJ release,campaign:FlaxTyphoon
domain,natcloudservice.com,detect,medium,2027-04-10,Flax Typhoon Curlc4 mail-theft bot main C2 domain,campaign:FlaxTyphoon
domain,upl.natcloudservice.com,detect,medium,2027-04-10,Flax Typhoon Curlc4 download and upload host,campaign:FlaxTyphoon
domain,dns.studiocloud.xyz,detect,medium,2027-04-10,Flax Typhoon DiagTrack.exe encrypted HTTP C2 attributed to Integrity Tech by the FBI,campaign:FlaxTyphoon
domain,studiocloud.xyz,detect,medium,2027-04-10,Flax Typhoon infrastructure parent domain - AA26-281A Table 12,campaign:FlaxTyphoon
domain,96cee.com,detect,low,2027-04-10,Flax Typhoon infrastructure domain - AA26-281A Table 12,campaign:FlaxTyphoon
domain,javacheck.ooguy.com,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN host,campaign:FlaxTyphoon
domain,javaupdate.giize.com,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN host,campaign:FlaxTyphoon
domain,pw.sexytube0.com,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN host,campaign:FlaxTyphoon
domain,ximmd.sexytube0.com,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN host,campaign:FlaxTyphoon
domain,hmbcloud.net,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN hosting domain,campaign:FlaxTyphoon
domain,hmbcloud.com,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN hosting domain,campaign:FlaxTyphoon
domain,hmbiplc-01.com,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN hosting domain,campaign:FlaxTyphoon
domain,asean.twimg.co.uk,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN host - twimg.co.uk is a lookalike - the legitimate CDN is twimg.com,campaign:FlaxTyphoon
domain,bsnl.twimg.co.uk,detect,medium,2027-04-10,Flax Typhoon SoftEther VPN host,campaign:FlaxTyphoon
ipv4,149.28.132.137,detect,medium,2027-04-10,Flax Typhoon Curlc4 download host - upl.natcloudservice.com,campaign:FlaxTyphoon
ipv4,202.182.109.151,detect,medium,2027-04-10,Flax Typhoon botnet database server - court documents as reported,campaign:FlaxTyphoon
ipv4,198.13.53.226,detect,medium,2027-04-10,Flax Typhoon Microscan original host - court documents as reported,campaign:FlaxTyphoon
sha256,c4503db6ece93eddf4511e787607cb14606a1df9f526f1e39992497119437cec,detect,high,2027-04-10,Flax Typhoon live700_v1.exe XSS-delivered payload,campaign:FlaxTyphoon
sha256,804a53be802378a8ec4c94602fd3d6584e0d472d83148e8a42c731950fec415d,detect,high,2027-04-10,Flax Typhoon DiagTrack.exe masquerading C2 implant,campaign:FlaxTyphoon
sha256,add7dd142e4f7e2873bc8f7b7fb6308063608e0b49a773dea93abad4047f1489,detect,high,2027-04-10,Flax Typhoon office-cli Linux Outlook 365 mail exfiltration tool,campaign:FlaxTyphoon
sha256,9dc85f9569a15eaf51c7d34254767ea30dd67b2178cec4cc7125288b9544fe00,detect,high,2027-04-10,Flax Typhoon dc.exe DCSync tool,campaign:FlaxTyphoon
sha256,b1552703ff0035f197c22cdb3a514bb6aa45ec98de3ef5409faab0978f18c35e,detect,medium,2027-04-10,Flax Typhoon renamed SoftEther client saved as conhost.exe - legitimate VPN software,campaign:FlaxTyphoon
sha256,8a592e22c51311d482272ec5aba0103c9cd0cfd78e5b5ba75dfa8f1c56926672,detect,medium,2027-04-10,Flax Typhoon renamed SoftEther client saved as dllhost.exe - legitimate VPN software,campaign:FlaxTyphoon
sha256,86f1cfa6a2e0a8cb6fc1fbee28472308e6467932f8658a6a4885e29ed8c34a67,detect,medium,2027-04-10,Flax Typhoon renamed SoftEther client saved as dllhost.exe - second build - legitimate VPN software,campaign:FlaxTyphoon
sha256,7b9efc7ef8957411cdd22582ce4bfb3a5f76d9c91cdb7e36bf85c9785a2480e9,detect,low,2027-04-10,Flax Typhoon fscan.exe scanner - public open-source tool,campaign:FlaxTyphoon
sha256,e7e727458f573dded05537baddac2867d2801db1c3c74410398d063dfd6f6575,detect,low,2027-04-10,Flax Typhoon JuicyPotato.exe privilege escalation - public open-source tool,campaign:FlaxTyphoon
SentinelOne IOC importnot included

This pack does not ship a SentinelOne import block: the import format could not be verified against SentinelOne's own documentation. Export a sample from your console and the block can be added with confidence.

Behavioral Signaturesprimary detection surface
# Behavioral signatures (durable detections; atomic indicators above are perishable)
w3wp.exe (IIS worker process) as parent of cmd, powershell, wscript, mshta, certutil or recon binaries on an Exchange server
conhost.exe or dllhost.exe running from outside the Windows System32, SysWOW64 or WinSxS directories, or holding an external network connection
Executable named DiagTrack.exe or live700_v1.exe on disk or in process lists
One source address with failed logons or sign-ins across ten or more distinct accounts (EBurst password spraying)
Ten EBurst interfaces on Exchange: ECP, EWS, OAB, OWA, RPC, API, MAPI, PowerShell, Autodiscover, Microsoft-Server-ActiveSync
Curlc4 artifacts: /var/tmp/.sess.zip, $dir/storage/fm/.run, $dir/.run, child process renamed crypto, HTTP header X-Id on requests to the EWS path
Staged archives renamed 001.gif, All_scanner_vXX.pl.gz, Css.js, Include.png, M2k.js, M2k_list.js, M2k_ui_adm.js
SoftEther installers pulled with PowerShell, curl or wget from attacker infrastructure and set to auto-reconnect on startup
Directory replication (DCSync) requests from a host that is not a domain controller
Named Malware / Toolingreference
# Named malware and tooling in AA26-281A (reference, mixed legitimate and malicious)
Microscan -- Python web application with 1,300+ scripts; seized 2026-10-08 (DOJ, CISA)
FishHub -- spear-phishing and malware delivery platform; seized 2026-10-08 (DOJ)
live700_v1.exe / DiagTrack.exe -- XSS-delivered payload and its masquerading implant (CISA)
Curlc4 (curlc4.txt) -- PHP bot using the Exchange Web Services API for mail theft (CISA)
office-cli -- Linux utility for continuous Outlook 365 mail collection with client credentials (CISA)
EBurst -- open-source Python password spraying and guessing tool for Exchange (CISA)
DC.exe -- DCSync tool (CISA)
SoftEther VPN client renamed conhost.exe or dllhost.exe -- persistence (legitimate software, detect only)
Open-source scanners: BBScan, dirsearch, Fscan, ksubdomain, masscan, NMAP, OneForAll, ShuiZe, wpscan, sqlmap, JuicyPotato (public tools, detect only)
Webshell names: b374.php, back.pl, error.jsp, file_back.aspx, gf.phtml, yaml-payload.jar (CISA Table 13; hashes in the advisory)
Patch / Exposure Auditoperator one-liners
# Patch and exposure audit (run on the relevant host type)
proftpd -vv | grep -i mod_copy              # CVE-2015-3306 needs mod_copy loaded; no output = not loaded
proftpd -v                                  # affected: 1.3.5 per AA26-281A; upgrade to a supported release
named -v                                    # CVE-2015-5477: affected before 9.9.7-P2 and 9.10.x before 9.10.2-P3
grep -rn "DynamicMethodInvocation" /path/to/struts.xml    # must be false; Struts 2.3.19 to 2.3.28 ranges affected
strapi --version   (or check package.json)  # CVE-2023-22894: affected up to 4.5.5
# ONLYOFFICE Docs / DocumentServer: affected 5.1.5 through 5.6.2 (CVE-2021-3199). Upgrade to a supported release.
# Exchange (PowerShell): list exposed protocol endpoints to restrict
Get-OwaVirtualDirectory | Format-List Server,ExternalUrl
Get-EcpVirtualDirectory | Format-List Server,ExternalUrl
Get-WebServicesVirtualDirectory | Format-List Server,ExternalUrl
11

Detection Validation Gates

GateRequirementStatus in this pack
Telemetry readyEndpoint sensor on every Exchange server, every Linux host running ProFTPD, ONLYOFFICE, Strapi or Struts, and on domain controllers (process creation with parent name, failed logons, DNS lookups, outbound connections). Identity Protection module for Q9. Entra sign-in logs in your SIEM for the native hunts.Verify per tenant: Linux server coverage is the usual gap
Benign baselineRun Q4, Q5, Q6, Q8, Q9, Q12 and Q14 in investigate mode for one full patch and release cycle. Record the legitimate parents and accounts for the exclusions marked TUNING.Required before any alerting
Positive testsQ4: start cmd.exe from a test IIS worker on a lab host. Q10: copy a harmless binary to a temp folder under the name conhost.exe and run it. Q8: generate failed network logons for ten test accounts from one lab address. Do not use real malware.Not yet performed: no lab run was done for this pack
Promotion criteriaZero unexplained hits across the baseline window before moving Q4 or Q10 from Detect to any stronger action. This pack recommends staying at Detect.Pending tenant validation
Field validationRemoteAddressIP4 on UserLogonFailed2 (Q8) and the ONLYOFFICE process names docservice and converter (Q6) are not confirmed in the references used.⚠ validate in tenant
12

Hardening: Tiered & Deployable

Immediate (this week)
  • Patch or isolate the five KEV products (federal due date 2026-10-11). ProFTPD, ONLYOFFICE Docs, Strapi, Apache Struts and ISC BIND. MITRE M1051 (Update Software). If a product is end-of-life, remove it from the internet (M1042). Verify with the version commands in the Section 10 audit block. Authority: CISA KEV required action (BOD 26-04).
  • Block legacy authentication and enforce MFA for Exchange Online and Microsoft 365. MITRE M1032 (Multi-factor Authentication), M1036 (Account Use Policies). CIS Microsoft 365 Foundations Benchmark covers blocking legacy authentication with Conditional Access. Verify: Entra sign-in logs show zero successful legacy-protocol sign-ins. See Playbook A.
  • Remove ECP and the Exchange admin surface from the internet. MITRE M1035 (Limit Access to Resource Over Network), M1030 (Network Segmentation). ⚠ best-practice, no formal benchmark for IIS address restriction on Exchange; cite Microsoft Exchange Server security guidance on Microsoft Learn. Verify: an external request to /ecp is refused. See Playbook A.
  • Disable ProFTPD mod_copy and Struts Dynamic Method Invocation. MITRE M1042 (Disable or Remove Feature or Program). Verify with the commands in Playbook B.
Near term (1 to 4 weeks)
  • Enable Microsoft Defender attack surface reduction rules in audit mode on Exchange servers ("Block Webshell creation for Servers" and the prevalence-based executable rule), then enforce after review. MITRE M1050 (Exploit Protection), M1038 (Execution Prevention). Requires Microsoft Defender Antivirus in active mode; not applicable where another AV holds that role. Verify: Get-MpPreference shows the rule IDs. See Playbook C.
  • Turn on Exchange Extended Protection and keep Exchange on a supported cumulative update. MITRE M1051, M1054 (Software Configuration). Authority: Microsoft Exchange Server security guidance. ⚠ no formal CIS benchmark for this control.
  • Constrain outbound traffic from servers. Servers rarely need arbitrary internet access; block conhost.exe and dllhost.exe external connections at the host firewall and allow-list required destinations. MITRE M1037 (Filter Network Traffic). CIS Controls v8, Control 13.
  • Monitor and restrict Entra app registrations and client secrets. MITRE M1018 (User Account Management), M1026 (Privileged Account Management). Verify: the app-secret audit in native hunt N2 returns only known applications.
  • Web application input handling. Sanitize user input to prevent XSS payload injection, as AA26-281A advises. MITRE M1021 (Restrict Web-Based Content). Authority: OWASP guidance; CISA AA26-281A mitigations.
Strategic (1 to 3 months)
  • Move off end-of-life or unsupported server software (the Strapi KEV entry is flagged end-of-life, the Struts and ProFTPD versions in scope are many years old). MITRE M1051. Authority: CISA KEV note on EoL products.
  • Put internet-facing Linux servers under an endpoint sensor and forward web, FTP and DNS logs to a central store, so Q5 to Q7 and N3 to N5 work. MITRE M1047 (Audit).
  • Segment Exchange, domain controllers and web tiers so a web foothold cannot reach directory replication. MITRE M1030. CIS Controls v8, Control 12. DISA STIGs exist for Apache Tomcat and ISC BIND 9.x and should be applied to those products.
  • Tiered administration and DCSync rights review. Only domain controllers and a short list of accounts hold directory replication rights. MITRE M1026. Verify with the ACL review in Playbook D.
13

Deployable Playbooks

Playbook A: Exchange and Microsoft 365 spray resistance

Playbook A: Exchange and Microsoft 365 password spray resistance
Prerequisites: Exchange Online admin and Conditional Access admin roles; change window for the on-premises IIS edit; a break-glass account excluded from the policy.
Reboot required: No (IIS restart of the Exchange front end site is not required for ipSecurity changes).
Rollback: delete the Conditional Access policy or set it to Report-only; remove the IIS restriction with the appcmd clear line below.

Step 1. Report-only first. In the Entra admin center create a Conditional Access policy:
  Users: all users, exclude the break-glass account
  Target resources: Office 365 Exchange Online
  Conditions, Client apps: Exchange ActiveSync clients and Other clients (legacy authentication)
  Grant: Block access
  Enable policy: Report-only for 7 days, review the sign-in logs, then On.
Step 2. Restrict the Exchange admin center on the on-premises front end to management networks (replace the example ranges):
  %windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ecp" -section:system.webServer/security/ipSecurity /allowUnlisted:false /commit:apphost
  %windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ecp" -section:system.webServer/security/ipSecurity /+"[ipAddress='192.0.2.0',subnetMask='255.255.255.0',allowed='true']" /commit:apphost
  (requires the IIS "IP and Domain Restrictions" feature, Web-IP-Security)
Step 3. Verify: from an address outside the allowed range, request https://<exchange-host>/ecp and expect HTTP 403.
Rollback for step 2:
  %windir%\system32\inetsrv\appcmd.exe clear config "Default Web Site/ecp" -section:system.webServer/security/ipSecurity /commit:apphost

Playbook B: Linux server software

Playbook B: Linux server software (ProFTPD, Struts, BIND, Strapi, ONLYOFFICE)
Prerequisites: root access; a maintenance window; a config backup (cp -a /etc/proftpd /etc/proftpd.bak).
Reboot required: No. Services restart only.
Rollback: restore the backed-up configuration and restart the service. For package upgrades, keep the previous package file for downgrade.

ProFTPD (CVE-2015-3306, mod_copy):
  1. Check:   proftpd -vv | grep -i mod_copy
  2. If present, comment out the module in the modules configuration (the file name varies by distribution, for example /etc/proftpd/modules.conf) by prefixing the LoadModule mod_copy.c line with #.
  3. Restart: systemctl restart proftpd
  4. Verify:  proftpd -vv | grep -i mod_copy    (no output)
  5. Upgrade to a supported ProFTPD release; AA26-281A lists 1.3.5 as affected.
  Rollback: remove the leading # and restart.

Apache Struts (CVE-2016-3081):
  1. In struts.xml set:  <constant name="struts.enable.DynamicMethodInvocation" value="false" />
  2. Redeploy or restart the servlet container.
  3. Upgrade to a supported Struts release; the affected ranges are 2.3.19 to 2.3.28 per AA26-281A.
  Rollback: restore the previous struts.xml and restart.

ISC BIND (CVE-2015-5477): upgrade to 9.9.7-P2 or later (9.10.x: 9.10.2-P3 or later) or, better, a currently supported branch. Verify: named -v.
  Rollback: reinstall the previous package; this vulnerability is denial of service only, so rollback is rarely wanted.

Strapi (CVE-2023-22894): upgrade past 4.5.5; do not expose the admin panel to the internet (restrict by firewall or reverse proxy allow-list). Rollback: redeploy the previous build.
ONLYOFFICE Docs (CVE-2021-3199): upgrade beyond 5.6.2 to a supported release; place the document server behind an authenticated reverse proxy. Rollback: redeploy the previous container or package.

Playbook C: Attack surface reduction on Exchange servers

Playbook C: Microsoft Defender attack surface reduction on Exchange servers (audit first)
Prerequisites: Microsoft Defender Antivirus is the active antivirus (not passive mode); Windows Server 2016 or later; test on one server.
Reboot required: No.
Rollback: set the rule action to Disabled with the same cmdlet, or remove the rule ID.

Step 1. Audit mode:
  Add-MpPreference -AttackSurfaceReductionRules_Ids a8f5898e-1dc8-49a9-9878-85004b8a61e6 -AttackSurfaceReductionRules_Actions AuditMode
  (Block Webshell creation for Servers)
  Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 -AttackSurfaceReductionRules_Actions AuditMode
  (Block executable files from running unless they meet prevalence, age or trusted list criteria)
Step 2. Review events for 14 days (Microsoft-Windows-Windows Defender/Operational, event 1122).
Step 3. Verify:  (Get-MpPreference).AttackSurfaceReductionRules_Ids
Step 4. Enforce one rule at a time after review:
  Set-MpPreference -AttackSurfaceReductionRules_Ids a8f5898e-1dc8-49a9-9878-85004b8a61e6 -AttackSurfaceReductionRules_Actions Enabled
Rollback:
  Set-MpPreference -AttackSurfaceReductionRules_Ids a8f5898e-1dc8-49a9-9878-85004b8a61e6 -AttackSurfaceReductionRules_Actions Disabled

Playbook D: DCSync exposure review

Playbook D: Review directory replication rights (DCSync exposure)
Prerequisites: Domain admin or delegated read access; the ActiveDirectory PowerShell module. This playbook only reads.
Reboot required: No.
Rollback: none required, read-only. Any permission removal you make afterwards must be reverted from your own ACL backup.

Step 1. List principals holding replication rights on the domain root:
  $dn = (Get-ADDomain).DistinguishedName
  (Get-Acl "AD:$dn").Access | Where-Object { $_.ObjectType -in '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2','1131f6ad-9c07-11d1-f79f-00c04fc2dcd2' } | Select-Object IdentityReference,ObjectType,AccessControlType
  (these GUIDs are DS-Replication-Get-Changes and DS-Replication-Get-Changes-All)
Step 2. Expect only domain controllers, Enterprise Domain Controllers and a short named list. Investigate anything else.
Step 3. Back up the ACL before any change:  (Get-Acl "AD:$dn").Sddl | Out-File dc-root-acl-backup.txt
14

Containment Runbook

PhaseActionsOwnerEvidence to preserve
IsolateNetwork-contain affected hosts in the endpoint console, keeping the sensor connection. For an exposed ProFTPD, ONLYOFFICE, Strapi or Struts server, remove it from the internet-facing path (firewall rule) before patching. Suspend, do not delete, suspect Entra app registrations and block the spraying source addresses at the edge.IR lead + Infra on-callProcess tree and network connection export for each host; Entra sign-in and audit log export for the exposure window
Isolate: by platformCrowdStrike: network-contain the host. SentinelOne: network quarantine (Disconnect from Network; confirm the label in your console version).IR lead + Infra on-callProcess tree and network connection export for each host; Entra sign-in and audit log export for the exposure window
EradicateRemove renamed SoftEther clients (conhost.exe or dllhost.exe outside the system directories), DiagTrack.exe and live700_v1.exe, web shells, Curlc4 files and any cron or scheduled task that launches them. Revoke unknown Entra app secrets and consented applications. Rebuild any host with confirmed code execution as the web service account.IR leadCopies of every removed file with SHA-256; list of removed secrets and consents
RecoverPatch the five KEV products. Reset passwords for every account that appeared in a spray with a success, enforce MFA, and if a DCSync indicator was confirmed, rotate the krbtgt password twice and reset service-account secrets. Restore only verified-clean data.Infra + Identity teamPost-change verification output (version commands, Conditional Access report, ACL review)
Report and learnReport to FBI IC3 or CISA (the advisory gives both). Use CISA's Eviction Strategies Tool as the advisory suggests. Add exclusions learned from the baseline to Q4, Q5, Q6, Q8, Q12 and Q14.IR lead + Legal/Privacy as applicableFinal timeline and scope statement
15

Detection Coverage Map

TechniqueBehaviorCQLIOACrowdStrike coverageSentinelOne
T1566.002 / T1568 Spearphishing Link, Dynamic ResolutionContact with FishHub and Microscan domainsQ1, Q2N/APartial: retrospective only; the domains are seized and resolution after seizure is not described in the sourcesPartial: same limit as CrowdStrike
T1071 Application Layer ProtocolContact with named IPsQ3N/APartial: two of three IPs are single-source; addresses can be reassignedPartial: same limit as CrowdStrike
T1505.003 / T1190 Web shell, Exploit Public-Facing App (Exchange)w3wp.exe child processesQ4Exchange IIS Worker Spawns Shell or Recon ToolGood: Windows sensor on the Exchange server requiredGood, with assumptions
T1190 Exploit Public-Facing App (Struts)Java or Tomcat child processesQ5N/APartial: only if exploitation spawns a process; assumes a sensor on the hostPartial: same limit as CrowdStrike
T1190 Exploit Public-Facing App (Strapi, ONLYOFFICE, PHP)Linux web and app tier child processesQ6N/APartial: ONLYOFFICE process names unverified; no endpoint sensor on appliances or containersPartial: same limit as CrowdStrike
T1190 Exploit Public-Facing App (ProFTPD CVE-2015-3306)SITE CPFR / CPTO file copyQ7N/AGAP: the copy happens inside the daemon and the planted file is usually a script; Falcon does not type script-file writes, so Q7 sees only follow-on child processes. Use FTP logs (N5) and file search (N6)GAP: same limit as CrowdStrike
CVE-2015-5477 ISC BINDTKEY query denial of serviceN/AN/AGAP: outside endpoint telemetry; denial of service only. Use BIND logs and patchingGAP
T1110.003 / T1110.001 Password Spraying (Exchange, AD)Failed logon fan-outQ8, Q9N/APartial: Windows and domain controller view only; behind a load balancer the source is maskedPartial: Q8 approximate, Q9 unavailable
T1110.003 Password Spraying (Microsoft 365 / Entra)Cloud sign-in sprayingN/AN/AGAP: outside endpoint telemetry; native hunt N1 and N3 onlyGAP
T1189 Drive-by (XSS credential harvest)Malicious page contentN/AN/AGAP: web page content is outside endpoint telemetryGAP
T1036.003 / T1204.002 Masquerading, User Executionlive700_v1.exe, DiagTrack.exe, conhost.exe, dllhost.exeQ10, Q11System Binary Name Outside System DirectoriesGood: FishHub payload details beyond these two names are not publicGood, with assumptions
T1133 / T1572 External Remote Services (SoftEther)Renamed VPN client and its tunnelQ2, Q10, Q11, Q12N/APartial: known copies by hash and by name; a differently named SoftEther copy is missedPartial: same limit as CrowdStrike
T1003.006 DCSyncdc.exe and replication requestsQ11N/APartial: hash only in CQL; behavioral DCSync detection is the Falcon Identity product and native hunt N4Partial: same limit as CrowdStrike
T1114.002 / T1074.001 / T1020 Mail collection and exfiltration (Curlc4, office-cli)Curlc4 artifacts, office-cli hash, C2 contactQ2, Q3, Q11, Q13N/APartial: Curlc4 can run on a host that is not a victim; mailbox-side access is visible only in Entra and Exchange audit logsPartial: same limit as CrowdStrike
T1595.002 Vulnerability ScanningScanner tool execution on a hostQ14N/APartial: inbound Microscan scanning of your external addresses is visible only in firewall and web logs (N8)Partial: same limit as CrowdStrike
T1566 Spear-phishing emailMessage deliveryN/AN/AGAP: email gateway telemetry, outside endpoint telemetry (N7)GAP

Honest summary. Good coverage exists only for Exchange IIS child processes and the masquerade names, both of which depend on a sensor being present on the server. Five rows are labelled gaps because the activity is outside endpoint telemetry. Retrospective rows prove contact, not compromise. Validation gate status is in Section 11.

16

Hunt Summary Ticket

TITLE: Flax Typhoon / Integrity Technology Group Microscan and FishHub Hunt
SEVERITY: High (state-sponsored, five KEV CVEs due 2026-10-11, mail theft and persistence)
SCOPE: Exchange servers, Microsoft 365 tenant, Linux servers running ProFTPD / ONLYOFFICE Docs / Strapi / Struts / BIND, Windows endpoints, domain controllers
HYPOTHESIS: Operators scanned with Microscan, got in through a KEV product or Exchange / Microsoft 365 password spraying, persisted with a renamed SoftEther client, and stole mail with Curlc4 or office-cli
QUERIES: Q1-Q14 (Section 8); IOAs recommended for Q4 and Q10, detect only (Section 9)
DO FIRST:
  1. Patch or isolate ProFTPD, ONLYOFFICE Docs, Strapi, Struts and BIND exposed to the internet (Section 12)
  2. Run Q1, Q2, Q3 and Q11 over 90 to 180 days of history (Section 8)
  3. Run native hunts N1 to N3 for password spraying and app-secret abuse (Section 7)
FINDINGS: [populate per engagement]
GAPS: Microsoft 365 / Entra sign-ins, Exchange IIS logs, spear-phishing email and BIND crashes are outside endpoint telemetry; script-file writes (PHP, JSP) are not typed by the endpoint sensor; Linux hosts without a sensor are blind; seized-domain hits are retrospective only
ACTIONS: Patch KEV products; block legacy authentication and enforce MFA; restrict ECP; deploy Q4 and Q10 as Detect-only IOAs; import the Section 10 CSV as detect only
OWNER: [assign per engagement]
VERSION: v0.1 (2026-10-10)
17

Changelog

v0.12026-10-10Initial release. Built from the DOJ release of 2026-10-08, CISA advisory AA26-281A, the CISA KEV feed, and four corroborating reports. 14 CQL queries, 2 detect-only IOA candidates, 33 atomic IOCs shipped as detect, 8 native hunts. Six domains confirmed by the DOJ release; a seventh (98aiblog.com) is reported by the Hacker News and listed in AA26-281A. SentinelOne PowerQuery tabs added to Q1-Q14: SIEM Query Rosetta release 0.1.0 (public-beta; static-reviewed translations).
18

References

TierSourceUsed forAccess date
1DOJ Office of Public Affairs, Justice Department and FBI Seize Vulnerability Scanning and Spear Phishing Tools (2026-10-08)Primary: tools, six seized domains, victims, attribution2026-10-10
1CISA / FBI / NSA joint advisory AA26-281APrimary: TTPs, IOC appendix, exploited CVEs, mitigations2026-10-10
1CISA Known Exploited Vulnerabilities catalog (JSON feed, release 2026.10.08)Five CVE entries, due date 2026-10-11, BOD 26-042026-10-10
2The Hacker News, Flax Typhoon Exploits Five Flaws as CISA Sets October 11 DeadlineCVE summary and CVSS2026-10-10
2The Hacker News, FBI Seizes 7 Domains, Disrupts Flax Typhoon ToolsSeventh domain, aliases, court-document IP addresses2026-10-10
2CyberScoop, DOJ, FBI seize Flax Typhoon-linked hacking toolsCorroboration2026-10-10
2The Record, International coalition seizes tools used by cyber firm behind Flax TyphoonCorroboration2026-10-10
3gblock.app, FBI Seizes FishHub as Advisory Exposes Flax Typhoon Mailbox TheftRestates the advisory; low independence2026-10-10
1MITRE ATT&CK EnterpriseTechnique naming2026-10-10

Saved page text for sources 1 to 8 of Section 2 is in FlaxTyphoon-IntegrityTech-Microscan-Hunt-sources/.