Cavern Manticore — Iran-Linked Cavern (Cav3rn) Modular C2 via SysAid / WinDirStat DLL Side-Loading

MOIS-affiliated espionage cluster deploying a modular .NET C2 (Cavern Agent = trojanized uxtheme.dll) against Israeli government & IT-services orgs · analysed by Check Point Research, July 2026
Threat
Cavern Manticore / Cav3rn C2
Severity
ACTIVE APT
Type
Nation-state modular C2 / espionage
Access
SysAid update abuse → DLL side-load
Version
v0.2 · 2026-07-07
Author
HuntPack
Confidence
High (vendor-attributed)
01

Executive Summary

Cavern Manticore is a threat cluster tracked by Check Point Research and affiliated with Iran's Ministry of Intelligence and Security (MOIS). It shares tactical overlaps with MuddyWater and Lyceum and is focused on Israeli government and IT-services organizations — IT providers being a deliberate choice, since their trusted access into downstream customers makes them a stepping stone to harder targets.

The actor operates a previously undocumented, modular command-and-control framework called Cavern (aka Cav3rn). The intrusion begins by abusing SysAid's software-update feature to kick off a DLL side-loading chain: a legitimate signed WinDirStat.exe is dropped (observed at C:\ProgramData\WinDir\WinDirStat.exe) alongside a trojanized uxtheme.dll — the Cavern Agent. The Agent is built on a shared .NET foundation but deliberately mixes compilation formats (.NET Framework, Mixed-Mode C++/CLI, and .NET Native AOT) to force reverse engineers across multiple toolchains, and isolates each module in its own AppDomain as an anti-forensics measure.

The Agent's module dispatcher treats components whose names start with n- as native DLLs loaded via LoadLibraryA, and the rest as managed .NET assemblies. Modules include n-HTCommp.dll (HTTPS/WebSocket comms), mhm.dll (file manager), db.dll (SQL enumeration/export), ode.dll (Active Directory recon + LDAP brute-force), n-ten.dll (network recon, port & SMB brute-force), and n-sws.dll (SOCKS5 proxy + WebSocket tunnel). An older variant used a CAV3RN_Http_Module with a webshell (cac.aspx) hosted on a separate IIS server.

Defender priority: The highest-value, lowest-FP angles are WinDirStat.exe running from C:\ProgramData\WinDir\, a trojanized uxtheme.dll written outside the Windows system directories, the distinctive Cavern module DLLs (n-HTCommp / n-ten / n-sws / mhm / db / ode), the Check Point-published SHA-256 hashes, and DNS to the Cavern C2 domains (hospitalinstallation[.]com and its subdomains, adserviceupdate[.]com, hygienehistory[.]com). Patch/monitor SysAid and constrain DLL search order to break the side-load primitive.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Fwd
1 · VendorCheck Point Research — "Cavern Manticore: Exposing Iran-Linked Modular C2 Framework" (2026-07-06)Primary technical analysis: Cav3rn Agent (trojanized uxtheme.dll), SysAid + WinDirStat DLL side-load, module set & dispatcher, mixed .NET compilation, AppDomain isolation, C2 domains, SHA-256 hashes, host artifacts, cac.aspx webshellyes
2 · PressThe Hacker News — "Iran-Linked Hackers Use New Cavern C2 Framework to Target Israeli Organizations" (2026-07-06)Corroborates MOIS attribution, SysAid update-feature abuse, uxtheme.dll side-load, module list, MuddyWater/Lyceum overlappartial
2 · PressCyber Security News / Infosecurity Magazine — Cavern Manticore SysAid & WinDirStat side-loadingConfirm WinDirStat.exe sideload vector, Israeli gov/IT targeting, IT-provider stepping-stone motivepartial

Every atomic IOC below (SHA-256 hashes, C2 domains, module DLL filenames, host artifacts, deployment path, webshell name) traces to the Check Point Research indicator set. The SHA-256 hashes, C2 domains, and module DLL names are durable indicators; the deployment path C:\ProgramData\WinDir\ and mutex strings are strong but may vary between intrusions — hunt on the behaviour (WinDirStat side-loading uxtheme.dll) as the primary, atomic values as confirmation.

03

Hunt Brief & Attack Chain

Hunt hypotheses (fidelity-ordered)

  1. H1 (high): WinDirStat.exe executed from C:\ProgramData\WinDir\ (or any user-writable path) — the Cavern side-load host in the wrong place. Covers T1574.002.
  2. H2 (high): A trojanized uxtheme.dll was written outside the Windows system directories — the Cavern Agent staged for side-load. Covers T1574.002.
  3. H3 (high): A distinctive Cavern module DLL (n-HTCommp / n-ten / n-sws / mhm / db / ode) was written to a staging path. Module drop.
  4. H4 (high): A file matching a Check Point-published Cavern SHA-256 executed or was written. Atomic.
  5. H5 (high): A host resolved a Cavern C2 domain (hospitalinstallation[.]com and subdomains, adserviceupdate[.]com, hygienehistory[.]com). Covers T1071.001.
  6. H6 (high): WinDirStat.exe spawned a shell or recon utility (cmd/powershell/rundll32/net/nltest/whoami) — the sideloaded Agent running commands. Covers module recon.
  7. H7 (medium): Cavern host artifacts appeared — steganographic .CvnC/.CvnA/.CvnR.png, config.txt, or inpt\/outpt\ working dirs. On-host tells.
  8. H8 (medium): A cac.aspx webshell was written to a web-server path, or w3wp.exe spawned a shell. Covers older CAV3RN_Http_Module / T1505.003.
  9. H9 (medium): The side-load host made SOCKS5 / WebSocket-style outbound connections (n-sws tunnel). Covers T1090 / T1571.

Attack chain

StepBehaviorTelemetryHunt Angle
1 · Initial accessSysAid software-update feature abused to stage the side-load pairProcessRollup2, PeFileWrittenQ1, Q2, native hunts
2 · Side-loadSigned WinDirStat.exe (from C:\ProgramData\WinDir\) loads trojanized uxtheme.dll = Cavern AgentProcessRollup2, PeFileWrittenQ1, Q2
3 · Module loadDispatcher loads n-* as native DLLs (LoadLibraryA) and the rest as .NET assemblies in isolated AppDomainsPeFileWrittenQ3, Q4
4 · Reconode.dll (AD/LDAP), n-ten.dll (port/SMB), db.dll (SQL) enumerate the environmentProcessRollup2, NetworkConnectIP4Q6
5 · C2n-HTCommp.dll beacons over HTTPS/WebSocket to the Cavern domainsDnsRequest, NetworkConnectIP4Q5, Q9
6 · Tunnel / lateraln-sws.dll opens a SOCKS5 proxy / WebSocket tunnel; file exfil via mhm.dllNetworkConnectIP4Q9
7 · Alt. footholdOlder variant drops cac.aspx webshell (CAV3RN_Http_Module) on an IIS serverFileCreateInfo, ProcessRollup2Q8
04

Consolidated IOC Table

All values published by Check Point Research. SHA-256 hashes, C2 domains and module DLL names are durable; the deployment path and mutex strings are strong but may vary. uxtheme.dll is a legitimate Windows binary name — hunt on it only when it appears outside the system directories or is loaded by WinDirStat.exe from a staging path.

TypeValueConfActionContext
sha25637e123bd7998af4eae32718ce254776f36365a80ba56952593dab46f536d4066highdetectuxtheme.dll — Cavern Agent (build 02)
sha25692cae0ad7f98f51a14bcc0ee05e372ebdc29ea96ea7bd161bd3f55198767603bhighdetectuxtheme.dll — Cavern Agent (build 04)
sha2565dc08bda6919a57a85e5f38b857985fa71529ca39c8299868d5a49a987e19b18highdetectuxtheme.dll — Cavern Agent (oldest)
sha256a4aa217def4c38f4ecacdf47b1cd687f60cc74c18ab75195be3c4357a790bf41highdetectn-HTCommp.dll — comms module
sha256b630c96d3763182533d4fb9b614134382bd644cb02c6c1c3ade848b6ecc31e86highdetectn-HTCommp.dll — comms module
sha2568e9425c0b46eeb516610ae913d13f2b3f44a023043cb099277031d4ec38a6134highdetectmhm.dll — file manager
sha2560a3663648a46771a5a5423ad01e91a4e7ba825595e99fa934cb35cbb4848adc8highdetectmhm.dll — file manager (older)
sha2565394d3b220de4695f731647e3a70545f951a8912ceb0c6585efab8d6842e8b42highdetectdb.dll — SQL browser
sha25630cb4679c4b8599eeb3d63a551716475c6332bdc4d4b4e3de0964aadb3092a10highdetectode.dll — LDAP/AD module
sha2562cb1ad3b22db8e3666ea138fee88034a87a87cf43db3d3265a675ebf221379b0highdetectn-ten.dll — network recon
sha2567d586fb7f94182a8e2a0e53c7e4deb898066da029da5cd9972a94a59ca6d255ahighdetectn-sws.dll — SOCKS5 / tunnel
sha256541b1f417b9e42078c3355693a8a492b6a76048850f6549a429e0be99e6819cbhighdetectOlder Cav3rn agent
sha256cbc9485db715e1b8cc384fe94b4bceadca4006cda8a5e28adc8848529cfafc93highdetectOlder Cav3rn agent
sha256ccf218189c3aadb1c761da14bfda3bae686769031e1e1b10007648bd72e34748highdetectOlder Cav3rn HTTP module
domainhospitalinstallation[.]com (+ auth. / google.com. subdomains)highblockCavern C2 (parent + newer/older agent hosts)
domainadserviceupdate[.]comhighblockOlder Cav3rn C2
domainhygienehistory[.]comhighblockOlder Cav3rn C2 / cac.aspx webshell host
filenameuxtheme.dll (outside System32/WinSxS) · n-HTCommp / mhm / db / ode / n-ten / n-sws .dllhighhuntCavern Agent + modules
pathC:\ProgramData\WinDir\WinDirStat.exehighhuntside-load host deployment path
artifact.CvnC.png / .CvnA.png / .CvnR.png · config.txt · inpt\ · outpt\medhuntstego payloads / config / working dirs
mutexMYMUTEX123HELLP / MYMUTEX123HELLP02 / MYMUTEX123HELLP04medhuntAgent single-instance mutexes (native hunt)
webshellcac.aspxmedhuntolder CAV3RN_Http_Module (IIS)
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Windows endpoints / servers (SysAid, IT-mgmt hosts)ProcessRollup2 / SyntheticProcessRollup2CriticalLow — default Falcon coverage
File writes (Agent + module DLLs, stego artifacts)PeFileWritten / FileCreateInfoHighLow
DNS / egress (C2 beacon, SOCKS/WebSocket tunnel)DnsRequest, NetworkConnectIP4HighMed — scope to the side-load host to keep it tight
IIS web servers (older webshell variant)FileCreateInfo, ProcessRollup2 (w3wp children)MedMed — needs server-role coverage
Active Directory (ode.dll LDAP recon / brute-force)UserLogonFailed, LDAP/DC audit logsMedHigh — LDAP-query visibility often thin (§7)
06

ATT&CK Mapping

TacticTechniqueObserved BehaviorCoverage
Initial Access / PersistenceT1195 / T1574.002 DLL Side-LoadingSysAid update abuse → WinDirStat.exe loads trojanized uxtheme.dllQ1, Q2
Defense EvasionT1574.002 DLL Side-LoadingSigned host + malicious companion DLL; mixed .NET compilation; AppDomain isolationQ1, Q2, Q3
ExecutionT1129 Shared ModulesDispatcher loads n-* natives via LoadLibraryA; managed modules as .NET assembliesQ3, Q4, Q6
DiscoveryT1087 Account Discovery / T1046 Network Service Discoveryode.dll LDAP/AD recon; n-ten.dll port + SMB scanQ6
CollectionT1005 Data from Local System / T1213 Data from Repositoriesmhm.dll file transfer; db.dll SQL enumeration/exportQ6, native hunts
Command & ControlT1071.001 Web Protocolsn-HTCommp.dll HTTPS/WebSocket beacon to Cavern domainsQ5, Q9
Command & ControlT1090 Proxy / T1571 Non-Standard Portn-sws.dll SOCKS5 proxy + WebSocket tunnelQ9
PersistenceT1505.003 Web ShellOlder CAV3RN_Http_Module drops cac.aspx on IISQ8
Defense EvasionT1027.003 Steganography.CvnC/.CvnA/.CvnR.png carrier filesQ7
07

Native Audit-Log Hunts (non-CQL)

  • SysAid server review: On any SysAid on-prem host, review the update/patch feature's activity and outbound history around the intrusion window, and confirm the server is fully patched. Cavern Manticore's initial access rides the SysAid software-update feature.
  • Mutex sweep (RTR): On suspect hosts, enumerate named kernel objects for MYMUTEX123HELLP, MYMUTEX123HELLP02, and MYMUTEX123HELLP04 — the Cavern Agent's single-instance mutexes (not reliably in EDR telemetry, so check live).
  • File-system sweep: Look for a C:\ProgramData\WinDir\ directory, an out-of-place uxtheme.dll, config.txt, inpt\/outpt\ working dirs, and stego files named .CvnC.png / .CvnA.png / .CvnR.png.
  • Active Directory audit: Hunt for LDAP brute-force / heavy enumeration bursts (Event ID 4771/4625 spikes and abnormal LDAP query volume from a single workstation) consistent with ode.dll.
  • IIS log review: On internet-facing IIS, search web logs and content for cac.aspx and for w3wp.exe spawning cmd.exe/powershell.exe — the older CAV3RN_Http_Module foothold.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · WinDirStat.exe side-load host from ProgramData\WinDir
CONF HIGHFP LOWCOST LOW

Looks for: the legitimate WinDirStat.exe running from C:\ProgramData\WinDir\ (or any ProgramData/Users/Temp staging path) — the Cavern side-load host in an illegitimate location. WinDirStat normally lives in Program Files, so this is near-zero FP.

// HUNT: Cavern side-load host — WinDirStat.exe from a staging path
// MITRE: T1574.002
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: none expected — WinDirStat normally runs from Program Files
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^WinDirStat\.exe$/i
| FilePath=/\\(ProgramData|Users|Temp)\\/i
| table([@timestamp, aid, ComputerName, UserName, FileName, FilePath, CommandLine, ParentBaseFileName], limit=200)
Q2 · Trojanized uxtheme.dll (Cavern Agent) written outside system dirs
CONF HIGHFP LOWCOST LOW

Looks for: a uxtheme.dll written to ProgramData, a user profile, or Temp — the Cavern Agent staged for side-load. The genuine uxtheme.dll only lives in System32/SysWOW64/WinSxS, so a copy anywhere else is the tell.

// HUNT: Cavern Agent — uxtheme.dll staged outside Windows system dirs
// MITRE: T1574.002
// CONF: high  FP: low  COST: low | REQUIRES: PeFileWritten
// FALSE POSITIVES: rare — some app installers bundle a private uxtheme.dll; confirm signer/path
// TUNING: exclude known-good vendor install dirs if any legitimately ship uxtheme.dll
#event_simpleName=/PeFileWritten|NewExecutableWritten/
| TargetFileName=/\\uxtheme\.dll$/i
| TargetFileName=/\\(ProgramData|Users|Temp)\\/i
| table([@timestamp, aid, ComputerName, TargetFileName, SHA256HashData], limit=200)
Q3 · Cavern module DLLs written to a staging path
CONF HIGHFP MEDCOST LOW

Looks for: the distinctive Cavern module DLLs (n-HTCommp, n-ten, n-sws, mhm, db, ode) written to a user-writable path. FP: db.dll / mhm.dll are somewhat generic names — scoping to staging paths and pairing with Q1/Q2 keeps this tight.

// HUNT: Cavern C2 module DLLs staged on disk
// MITRE: T1129, T1574.002
// CONF: high  FP: medium  COST: low | REQUIRES: PeFileWritten
// FALSE POSITIVES: db.dll / mhm.dll are generic names in some SDKs
// TUNING: require the staging-path filter below and correlate with Q1/Q2 on the same aid
#event_simpleName=/PeFileWritten|NewExecutableWritten/
| TargetFileName=/\\(n-HTCommp|n-ten|n-sws|mhm|db|ode)\.dll$/i
| TargetFileName=/\\(ProgramData|Users|Temp|WinDir)\\/i
| table([@timestamp, aid, ComputerName, TargetFileName, SHA256HashData], limit=200)
Q4 · Check Point-published Cavern SHA-256 hashes
CONF HIGHFP LOWCOST LOW

Looks for: execution or write of any Check Point-listed Cavern Agent / module SHA-256. Atomic — promote straight to a Custom IOC block (see §10).

// HUNT: Cavern Agent / module known-bad SHA-256 hashes (Check Point)
// MITRE: T1574.002, T1129
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2 / PeFileWritten
#event_simpleName=/ProcessRollup2|PeFileWritten|NewExecutableWritten/
| in(SHA256HashData, values=["37e123bd7998af4eae32718ce254776f36365a80ba56952593dab46f536d4066", "92cae0ad7f98f51a14bcc0ee05e372ebdc29ea96ea7bd161bd3f55198767603b", "5dc08bda6919a57a85e5f38b857985fa71529ca39c8299868d5a49a987e19b18", "a4aa217def4c38f4ecacdf47b1cd687f60cc74c18ab75195be3c4357a790bf41", "b630c96d3763182533d4fb9b614134382bd644cb02c6c1c3ade848b6ecc31e86", "8e9425c0b46eeb516610ae913d13f2b3f44a023043cb099277031d4ec38a6134", "0a3663648a46771a5a5423ad01e91a4e7ba825595e99fa934cb35cbb4848adc8", "5394d3b220de4695f731647e3a70545f951a8912ceb0c6585efab8d6842e8b42", "30cb4679c4b8599eeb3d63a551716475c6332bdc4d4b4e3de0964aadb3092a10", "2cb1ad3b22db8e3666ea138fee88034a87a87cf43db3d3265a675ebf221379b0", "7d586fb7f94182a8e2a0e53c7e4deb898066da029da5cd9972a94a59ca6d255a", "541b1f417b9e42078c3355693a8a492b6a76048850f6549a429e0be99e6819cb", "cbc9485db715e1b8cc384fe94b4bceadca4006cda8a5e28adc8848529cfafc93", "ccf218189c3aadb1c761da14bfda3bae686769031e1e1b10007648bd72e34748"])
| table([@timestamp, aid, ComputerName, UserName, FileName, FilePath, SHA256HashData], limit=max)
Q5 · DNS to Cavern C2 domains
CONF HIGHFP LOWCOST LOW

Looks for: resolution of any Cavern C2 domain — the parent hospitalinstallation[.]com (matches auth. and google.com. subdomains), adserviceupdate[.]com, and hygienehistory[.]com. Atomic C2 indicator — any hit is high-signal.

// HUNT: Cavern C2 domain resolution
// MITRE: T1071.001
// CONF: high  FP: low  COST: low | REQUIRES: DnsRequest
#event_simpleName=/DnsRequest/
| DomainName=/(^|\.)(hospitalinstallation|adserviceupdate|hygienehistory)\.com$/i
| table([@timestamp, aid, ComputerName, DomainName, ContextBaseFileName], limit=200)
Q6 · WinDirStat.exe spawning a shell or recon utility
CONF HIGHFP LOWCOST LOW

Looks for: WinDirStat.exe as the parent of a shell or discovery tool (cmd/powershell/rundll32/net/nltest/whoami/ipconfig/systeminfo/dsquery). WinDirStat is a disk-usage GUI that never spawns these — so a hit means the sideloaded Cavern Agent is running commands. Very low FP.

// HUNT: Cavern Agent recon — WinDirStat.exe spawns shell/discovery tools
// MITRE: T1059, T1087, T1046
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^WinDirStat\.exe$/i
| FileName=/^(cmd|powershell|pwsh|rundll32|regsvr32|net|net1|whoami|nltest|ipconfig|systeminfo|dsquery|ldifde|arp|route)\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Q7 · Cavern host artifacts — stego PNGs / config / working dirs
CONF MEDFP LOWCOST LOW

Looks for: creation of Cavern's steganographic carrier files (.CvnC.png, .CvnA.png, .CvnR.png) or a config.txt under an inpt\/outpt\ working directory. Distinctive names → low FP; medium confidence because file names may vary between intrusions.

// HUNT: Cavern stego payloads / config / working directories
// MITRE: T1027.003
// CONF: medium  FP: low  COST: low | REQUIRES: FileCreateInfo / PeFileWritten
#event_simpleName=/FileCreateInfo|PeFileWritten|NewExecutableWritten/
| TargetFileName=/(\\\.Cvn[CAR]\.png|\\(inpt|outpt)\\config\.txt)$/i
| table([@timestamp, aid, ComputerName, TargetFileName, ContextBaseFileName], limit=200)
Q8 · cac.aspx webshell write / w3wp child process
CONF MEDFP MEDCOST MED

Looks for: creation of a cac.aspx file — the older CAV3RN_Http_Module webshell. Pair this on the same host with the native IIS hunt for w3wp.exe spawning a shell (§7). FP: a legitimately-named cac.aspx is unlikely but confirm the web app before acting.

// HUNT: Cavern (older) cac.aspx webshell write
// MITRE: T1505.003
// CONF: medium  FP: medium  COST: medium | REQUIRES: FileCreateInfo
// FALSE POSITIVES: verify no legitimate app ships a file named cac.aspx
// TUNING: scope to IIS content roots (inetpub\wwwroot) and pair with w3wp child-spawn (native hunt)
#event_simpleName=/FileCreateInfo|PeFileWritten|NewExecutableWritten/
| TargetFileName=/\\cac\.aspx$/i
| table([@timestamp, aid, ComputerName, TargetFileName, FilePath, ContextBaseFileName], limit=200)
Q9 · SOCKS5 / tunnel egress from the side-load host
CONF MEDFP MEDCOST MED

Looks for: outbound network connections whose owning process is WinDirStat.exe — a disk-usage tool that has no business making network connections. Any egress here is the Cavern Agent's n-HTCommp beacon or n-sws SOCKS5/WebSocket tunnel. FP: scope to the abused host; review the remote address/port.

// HUNT: Cavern C2 / tunnel egress owned by the side-load host
// MITRE: T1071.001, T1090, T1571
// CONF: medium  FP: medium  COST: medium | REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: none expected — WinDirStat does not make network connections
// TUNING: enrich RemoteAddressIP4 against threat intel; alert on any non-RFC1918 destination
#event_simpleName=/NetworkConnectIP4/
| ContextBaseFileName=/^WinDirStat\.exe$/i
| table([@timestamp, aid, ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort], limit=200)
09

CrowdStrike Custom IOA Recommendations

IOA NamePatternActionExclusions
Cavern — Side-load Host in Staging PathWinDirStat.exe from ProgramData/Users/Temp (Q1)Detect → Block (after baseline)None expected — abnormal location
Cavern — Agent DLL Stageduxtheme.dll written outside system dirs (Q2)Detect (high)Vendor installers bundling a private uxtheme.dll
Cavern — Host Spawns ReconWinDirStat.exe parent of cmd/powershell/net/nltest (Q6)Detect → BlockNone expected
Cavern — C2 DomainDNS to hospitalinstallation / adserviceupdate / hygienehistory (Q5)Detect (high)None — dedicated actor infra

Promotion path: validate the high-CONF/low-FP queries (Q1, Q2, Q5, Q6) against 7–14 days of baseline, confirm zero benign hits, then promote to Custom IOAs in detect mode; escalate Q1/Q6 to block once clean. Q4 hashes and Q5 domains → Custom IOC Management (block).

10

Machine-Readable IOC Appendix

One-click blocks for SOC tooling. Hashes and domains are Check Point-published; swap expirations to fit your policy. Note WinDirStat.exe and uxtheme.dll are legitimate signed binaries — hunt on location/behaviour, do not blanket-block by name.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,37e123bd7998af4eae32718ce254776f36365a80ba56952593dab46f536d4066,prevent,critical,2026-12-31,Cavern Agent uxtheme.dll b02,actor:CavernManticore;tool:Cavern
sha256,92cae0ad7f98f51a14bcc0ee05e372ebdc29ea96ea7bd161bd3f55198767603b,prevent,critical,2026-12-31,Cavern Agent uxtheme.dll b04,actor:CavernManticore;tool:Cavern
sha256,5dc08bda6919a57a85e5f38b857985fa71529ca39c8299868d5a49a987e19b18,prevent,critical,2026-12-31,Cavern Agent uxtheme.dll old,actor:CavernManticore;tool:Cavern
sha256,a4aa217def4c38f4ecacdf47b1cd687f60cc74c18ab75195be3c4357a790bf41,prevent,critical,2026-12-31,n-HTCommp.dll comms,actor:CavernManticore;tool:Cavern
sha256,b630c96d3763182533d4fb9b614134382bd644cb02c6c1c3ade848b6ecc31e86,prevent,critical,2026-12-31,n-HTCommp.dll comms,actor:CavernManticore;tool:Cavern
sha256,8e9425c0b46eeb516610ae913d13f2b3f44a023043cb099277031d4ec38a6134,prevent,critical,2026-12-31,mhm.dll file manager,actor:CavernManticore;tool:Cavern
sha256,0a3663648a46771a5a5423ad01e91a4e7ba825595e99fa934cb35cbb4848adc8,prevent,critical,2026-12-31,mhm.dll file manager old,actor:CavernManticore;tool:Cavern
sha256,5394d3b220de4695f731647e3a70545f951a8912ceb0c6585efab8d6842e8b42,prevent,critical,2026-12-31,db.dll SQL browser,actor:CavernManticore;tool:Cavern
sha256,30cb4679c4b8599eeb3d63a551716475c6332bdc4d4b4e3de0964aadb3092a10,prevent,critical,2026-12-31,ode.dll LDAP AD,actor:CavernManticore;tool:Cavern
sha256,2cb1ad3b22db8e3666ea138fee88034a87a87cf43db3d3265a675ebf221379b0,prevent,critical,2026-12-31,n-ten.dll network recon,actor:CavernManticore;tool:Cavern
sha256,7d586fb7f94182a8e2a0e53c7e4deb898066da029da5cd9972a94a59ca6d255a,prevent,critical,2026-12-31,n-sws.dll SOCKS5 tunnel,actor:CavernManticore;tool:Cavern
sha256,541b1f417b9e42078c3355693a8a492b6a76048850f6549a429e0be99e6819cb,prevent,critical,2026-12-31,Cav3rn agent old,actor:CavernManticore;tool:Cavern
sha256,cbc9485db715e1b8cc384fe94b4bceadca4006cda8a5e28adc8848529cfafc93,prevent,critical,2026-12-31,Cav3rn agent old,actor:CavernManticore;tool:Cavern
sha256,ccf218189c3aadb1c761da14bfda3bae686769031e1e1b10007648bd72e34748,prevent,critical,2026-12-31,Cav3rn HTTP module old,actor:CavernManticore;tool:Cavern
domain,hospitalinstallation.com,block,critical,2026-12-31,Cavern C2 parent,actor:CavernManticore;tool:Cavern
domain,adserviceupdate.com,block,critical,2026-12-31,Cavern C2 old,actor:CavernManticore;tool:Cavern
domain,hygienehistory.com,block,critical,2026-12-31,Cavern C2 old / cac.aspx host,actor:CavernManticore;tool:Cavern
Behavioral Signatureshunt logic
[ Cavern Manticore / Cav3rn behaviors ]
- WinDirStat.exe running from C:\ProgramData\WinDir\ (or Users/Temp)
- uxtheme.dll written/loaded outside System32/SysWOW64/WinSxS
- Module DLLs: n-HTCommp / n-ten / n-sws / mhm / db / ode (.dll)
- WinDirStat.exe as parent of cmd/powershell/net/nltest/whoami
- DNS to hospitalinstallation[.]com (+ auth./google.com. subs),
  adserviceupdate[.]com, hygienehistory[.]com
- Outbound network connections owned by WinDirStat.exe (n-sws tunnel)
- Stego files .CvnC.png / .CvnA.png / .CvnR.png; config.txt; inpt\ outpt\
- Mutexes MYMUTEX123HELLP / ...02 / ...04
- cac.aspx webshell; w3wp.exe spawning cmd/powershell (older variant)
Named Actor / Toolingattribution
Actor:     Cavern Manticore (Iran / MOIS-affiliated espionage)
           Overlaps: MuddyWater, Lyceum
Framework: Cavern (aka Cav3rn) - modular .NET C2
Agent:     trojanized uxtheme.dll (side-loaded by WinDirStat.exe)
Compile:   .NET Framework + Mixed-Mode C++/CLI + .NET Native AOT
           per-module AppDomain isolation (anti-forensics)
Modules:   n-HTCommp (comms), mhm (files), db (SQL),
           ode (AD/LDAP), n-ten (net recon), n-sws (SOCKS5/tunnel)
Access:    SysAid software-update feature abuse
Older:     CAV3RN_Http_Module -> cac.aspx webshell (IIS)
Targets:   Israeli government & IT-services organizations
Hardening / Audit Checklistprevent checklist
[ ] SysAid on-prem fully patched; update feature monitored
[ ] WDAC/AppLocker deny EXEs under C:\ProgramData, \Users\Public, \Windows\Temp
[ ] Block/alert DNS to hospitalinstallation / adserviceupdate / hygienehistory .com
[ ] Enable CFG / Safe DLL search order; audit side-loading of uxtheme.dll
[ ] IIS content roots reviewed for cac.aspx; w3wp child-spawn alerting on
[ ] AD: LDAP query/logon-failure baselining for ode.dll brute-force
[ ] RTR sweep for MYMUTEX123HELLP mutexes + C:\ProgramData\WinDir\
[ ] Egress filtering: block/inspect non-browser processes making WebSocket/SOCKS
11

Detection Validation Gates

  • Telemetry ready: Confirm ProcessRollup2, PeFileWritten, FileCreateInfo, DnsRequest, and NetworkConnectIP4 are flowing from in-scope Windows endpoints and servers (including any SysAid and IIS hosts).
  • Benign baseline: Run Q2 and Q3 (DLL writes) over 7–14 days; record any vendor installer that legitimately ships a private uxtheme.dll or a generically-named db.dll/mhm.dll, and exclude those paths before alerting.
  • Positive test: In a lab, copy WinDirStat.exe to C:\ProgramData\WinDir\ and launch it, then have it spawn cmd.exe; confirm Q1 and Q6 fire. Write a dummy uxtheme.dll to C:\ProgramData\WinDir\ and confirm Q2 fires. Add a sinkholed DNS entry for one C2 domain and confirm Q5 fires.
  • Promotion: Only promote Q1/Q2/Q5/Q6 to detect/block after zero benign hits across the baseline window.
12

Hardening — Tiered & Deployable

Immediate (this week — low risk)
  • Patch and lock down SysAid on-prem — apply the latest fixes, restrict the admin/update interface to trusted networks, and monitor the software-update feature. This is Cavern Manticore's initial-access vector. (MITRE M1051 Update Software / M1030 Network Segmentation.)
  • Block/alert on the Cavern C2 domains (hospitalinstallation[.]com + subdomains, adserviceupdate[.]com, hygienehistory[.]com) at DNS/proxy. (M1031 Network Intrusion Prevention.)
  • Sweep + alert on C:\ProgramData\WinDir\ and out-of-place uxtheme.dll across the fleet. (M1047 Audit.)
Near term (1–4 weeks — pilot first)
  • WDAC/AppLocker: block execution of binaries under C:\ProgramData, C:\Users\Public, and C:\Windows\Temp (deny-by-path). (M1038 Execution Prevention.)
  • Constrain DLL search order: enable Safe DLL Search Mode and set CWDIllegalInDllSearch, and audit side-loading by signed binaries (uxtheme.dll loaded from a non-system path). (M1038 / M1052 User Account Control.)
  • Egress controls: restrict which processes/hosts may make arbitrary outbound HTTPS/WebSocket, and inspect for SOCKS-style tunneling from workstation processes. (M1037 Filter Network Traffic.)
Strategic (1–3 months — architectural)
  • Segment IT-management infrastructure (SysAid/RMM) from crown-jewel systems, and treat provider-managed hosts as a distinct trust zone — Cavern targets IT providers precisely to pivot downstream. (M1030 Network Segmentation.)
  • Tiered administration / LAPS and LDAP hardening (signing + channel binding, query rate-limiting) to blunt ode.dll AD recon and brute-force. (M1026 Privileged Account Management / M1015 Active Directory Configuration.)
  • Application allow-listing for server roles (deny unsigned/unexpected .NET modules and webshell writes to IIS content roots). (M1045 Code Signing / M1038.)
13

Deployable Playbooks

P1 · Sweep for the Cavern side-load staging (WinDir + out-of-place uxtheme.dll)

$hits = @()
$dirs = 'C:\ProgramData\WinDir','C:\Users\Public','C:\Windows\Temp'
foreach ($d in $dirs) {
  if (Test-Path $d) {
    $hits += Get-ChildItem -Path $d -Recurse -Include 'WinDirStat.exe','uxtheme.dll',
      'n-HTCommp.dll','n-ten.dll','n-sws.dll','mhm.dll','db.dll','ode.dll','config.txt' `
      -ErrorAction SilentlyContinue | Select-Object FullName, Length, LastWriteTime
  }
}
# Any uxtheme.dll NOT under System32/SysWOW64/WinSxS is suspect:
$hits += Get-ChildItem 'C:\' -Recurse -Filter 'uxtheme.dll' -ErrorAction SilentlyContinue |
  Where-Object { $_.FullName -notmatch '\\Windows\\(System32|SysWOW64|WinSxS)\\' } |
  Select-Object FullName, Length, LastWriteTime
$hits

P2 · Enforce Safe DLL search order + deny-by-path execution (WDAC/AppLocker prep)

# Safe DLL search mode (reduces side-load surface)
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' `
  -Name 'SafeDllSearchMode' -Type DWord -Value 1
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' `
  -Name 'CWDIllegalInDllSearch' -Type DWord -Value 0xFFFFFFFF
# Then author an AppLocker/WDAC deny rule for %ProgramData%, %Public%, %Windir%\Temp EXEs.
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' -Name SafeDllSearchMode

P3 · Hunt IIS content roots for the cac.aspx webshell

$roots = Get-ChildItem 'C:\inetpub\wwwroot' -Directory -ErrorAction SilentlyContinue
Get-ChildItem 'C:\inetpub\wwwroot' -Recurse -Filter 'cac.aspx' -ErrorAction SilentlyContinue |
  Select-Object FullName, Length, LastWriteTime, @{n='SHA256';e={(Get-FileHash $_.FullName -Algorithm SHA256).Hash}}

P4 · Block the Cavern C2 domains via local DNS sinkhole (stopgap)

$hostsFile = "$env:WINDIR\System32\drivers\etc\hosts"
$block = 'hospitalinstallation.com','adserviceupdate.com','hygienehistory.com'
foreach ($d in $block) {
  if (-not (Select-String -Path $hostsFile -Pattern ([regex]::Escape($d)) -Quiet)) {
    Add-Content -Path $hostsFile -Value "0.0.0.0 $d"
    Add-Content -Path $hostsFile -Value "0.0.0.0 www.$d"
  }
}
# Prefer an enterprise DNS/proxy block; the hosts file is a per-host stopgap only.
14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the host in Falcon; preserve memory, the C:\ProgramData\WinDir\ directory, and any inpt\/outpt\ working dirs; do NOT reboot (lose volatile module/AppDomain and tunnel state).SOCRTR capture, process tree, netconns
EradicateKill WinDirStat.exe / the sideloaded Agent; delete the WinDirStat + uxtheme.dll pair, module DLLs, stego PNGs and config; remove any cac.aspx webshell; block Cavern hashes (Q4) and domains (Q5).IRDeleted-file hashes, task/service diff
Identity recoveryReset credentials exposed to ode.dll AD recon (especially any brute-forced or privileged accounts); rotate service accounts on affected SQL servers (db.dll enumeration); review for new/altered AD objects.IR + IdPAD change log, password-reset record
Hunt-backSweep the fleet with Q1–Q9; pivot on the module SHA-256 and C2 domains; because Cavern targets IT providers to pivot, review trust relationships and downstream/managed hosts for the same side-load pattern.Threat HuntFleet query results, SysAid/IIS logs
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1574.002WinDirStat side-load host in staging pathQ1YesGood
T1574.002Cavern Agent uxtheme.dll stagedQ2YesGood
T1129Cavern module DLLs on diskQ3Partial (FP-tuned)
Atomic hashesKnown-bad Agent / module filesQ4IOCGood
T1071.001C2 domain resolutionQ5YesGood
T1059 / T1087 / T1046Sideloaded host runs shell/reconQ6YesGood
T1027.003Stego payloads / config / working dirsQ7Partial
T1505.003cac.aspx webshell (older variant)Q8Partial (pair with §7)
T1090 / T1571SOCKS5 / WebSocket tunnel egressQ9Partial (scoped)
AD / SQL recon (deep)ode.dll LDAP brute-force, db.dll SQL exportGap — LDAP/SQL query visibility via native audit (§7)

Detection is strongest at the side-load primitive (WinDirStat from a staging path, out-of-place uxtheme.dll), the atomic hashes, the C2 domains, and the sideloaded-host-spawns-recon behaviour — all low-FP. Module-DLL and stego hunts need environment tuning. The deepest recon (LDAP/SQL enumeration inside the module code) is a partial gap best closed with directory/database audit logging (§7).

16

Hunt Summary Ticket

TITLE:      Cavern Manticore / Cav3rn modular C2 hunt
SEVERITY:   Critical - active Iran/MOIS espionage (IT-provider targeting)
SCOPE:      Windows endpoints/servers (SysAid, IT-mgmt, IIS);
            DNS/egress; Active Directory audit
HYPOTHESIS: Cavern Manticore abused SysAid's update feature to side-load
            a trojanized uxtheme.dll (Cavern Agent) via WinDirStat.exe,
            then loaded modules for AD/SQL recon, C2 and SOCKS tunneling.
QUERIES:    Q1 WinDirStat staging | Q2 uxtheme.dll stage | Q3 module DLLs
            Q4 hashes | Q5 C2 domains | Q6 host-spawns-recon
            Q7 stego/config | Q8 cac.aspx webshell | Q9 tunnel egress
DO FIRST:   Q1, Q2, Q5, Q6 (lowest FP, structural) then Q4, Q3.
FINDINGS:   <record hosts / hashes / domains / SysAid + IIS findings here>
GAPS:       Deep LDAP/SQL recon inside modules (use §7 native audit).
ACTIONS:    Patch/monitor SysAid; block C2 domains; deny-by-path exec;
            Safe DLL search order; block Q4 hashes; isolate + IR;
            hunt downstream/managed hosts (provider pivot).
OWNER:      HuntPack
VERSION:    v0.2 · 2026-07-07
17

Changelog

v0.22026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.12026-07-07Initial HuntPack from Check Point Research Cavern Manticore analysis — 9 CQL queries, 4 Custom IOA recs, IOC appendix (14 SHA-256 hashes + 3 C2 domains + module/host artifacts), tiered hardening, playbooks, containment runbook.
18

References

TierSourceUsed ForAccess Date
1 · VendorCheck Point Research — Cavern Manticore: Exposing Iran-Linked Modular C2 FrameworkPrimary analysis, module set, side-load chain, C2 domains, SHA-256 hashes, host artifacts, cac.aspx webshell2026-07-07
2 · PressThe Hacker News — Iran-Linked Hackers Use New Cavern C2 Framework to Target Israeli OrganizationsMOIS attribution, SysAid abuse, module list, MuddyWater/Lyceum overlap2026-07-07
2 · PressCyber Security News — Cavern Manticore Abuses SysAid RMM and WinDirStat DLL SideloadingWinDirStat side-load vector, deployment path corroboration2026-07-07
RefMITRE ATT&CK — T1574.002 DLL Side-LoadingTechnique mapping, mitigations2026-07-07