MovieReaper — Torrent-Delivered Loader with Solana Blockchain C2 Resolution
Executive Summary
MovieReaper is a previously unknown, modular, multi-stage Windows malware framework disclosed by Kaspersky's GReAT team on 17 September 2026. It is distributed by way of a supply-chain-style compromise of itorrents[.]org, a public torrent-file repository that many independent tracker sites rely on to serve .torrent files. Rather than compromising trackers one at a time, the attackers compromised the shared repository itself: when a victim follows a legitimate magnet link, the repository silently returns a malicious torrent file instead of the requested one. The lure observed most often is a fake release of the film "The Odyssey" (filename pattern: the odyssey (2026) [1080p] [webrip] [5.1].exe), though the same loader hash has shipped under many different movie-themed filenames.
The infection chain runs four stages: (1) a loader with anti-sandbox evasion that downloads shellcode over plain HTTP from deadhub[.]org (IP fallback 193.23.118[.]155) at URI paths disguised as image assets; (2) shellcode that queries the Solana blockchain's getAccountInfo RPC endpoint for a specific account to retrieve a base64-encoded, XOR-encrypted second-stage C2 address — using a public blockchain as takedown-resistant dead-drop storage; (3) a module that performs a UAC bypass and persists by masquerading as %ProgramData%\Microsoft\Windows\Telemetry\msedge.exe; and (4) a final "file manager" implant exposing 21 commands for filesystem read/write/enumerate plus thumbnail/preview generation so operators can triage valuable files before exfiltration. Kaspersky reports several hundred victims — individuals and organizations — across Europe, Asia, and Africa, spanning enterprise, government, IT, consulting, retail, transportation, and agriculture sectors, with activity from the same actor traced back to October 2025.
Novel durable signal: the Solana blockchain dead-drop resolution step is the most distinctive and hardest-to-evade behavioral signature in this pack — legitimate business processes essentially never call public Solana RPC endpoints (getAccountInfo and similar) from a non-browser, non-wallet, non-dev-tooling process. That behavioral pattern survives IP/domain rotation and is the centerpiece hunt in §8 (Q9).
Source Review & Web Hunter Notes
Both sources below were fetched directly during this pipeline run (raw HTML retrieved, tags stripped, article text extracted verbatim) and saved to MovieReaper-Torrent-Solana-Hunt-sources/ for provenance tracing. Neither snapshot contained any text directed at the researching agent (no embedded instructions, no claimed authorization, no request to fetch a different "real" IOC source) — both were reviewed specifically for prompt-injection content and found clean.
| # | Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|---|
| 01 | Tier 1 — vendor primary (GReAT) | Kaspersky Securelist, "MovieReaper: Trojan attack via movie torrents, including The Odyssey" (Konstantin Isakov, Pavel Cheremushkin, 17 Sep 2026) | Full four-stage chain, complete IOC appendix (hashes, mutexes, file path, domains/IPs, Solana account + program address), victim geography/sectors | Yes — primary technical & IOC source |
| 02 | Tier 2 — reputable tech press | IT-Connect, "iTorrents.org Compromised to Spread a Windows Malware Loader Instead of Movies" (Florian Burnel, 17 Sep 2026) | Independently confirms the itorrents.org compromise mechanism, the four-stage chain, deadhub[.]org/193.23.118[.]155, the Telemetry-folder msedge.exe masquerade, the 21-command file manager, and victim country/sector breakdown | Yes — independent corroboration |
4334BBAEA8DE33BF9D45E9B4E4E3BC2, that is only 31 hex characters — not a valid 32-character MD5 (confirmed by direct count against the saved snapshot, not just the initial fetch). It is excluded from every IOC table, the CQL hash query, and the machine-readable appendix in this pack. The remaining seven hashes are full-length 32-hex MD5s and are shipped normally.Hunt Brief & Attack Chain
| Step | Behavior | Telemetry | Hunt Angle |
|---|---|---|---|
| 0. Resource Development | Compromise of the shared itorrents[.]org torrent-file repository, allowing malicious .torrent files to be served in place of legitimate ones across multiple independent tracker sites | Outside endpoint telemetry — third-party infrastructure | Not endpoint-detectable; user-awareness/policy control only (see §13) |
| 1. Initial Access / Execution | Victim follows a magnet link, receives a malicious torrent, and manually executes a long-filenamed, movie-themed .exe (e.g. the odyssey (2026) [1080p] [webrip] [5.1].exe, MD5 A0B13781EDD7CFDAB13D79AFFF3C83C1) from a torrent client's download folder | ProcessRollup2, NewExecutableWritten/PeFileWritten | Torrent-client process writing/spawning an executable; hash match on the confirmed loader set |
| 2. Stage 1 — Loader | Anti-sandbox checks (PEB/Ldr traversal instead of LoadLibrary/GetProcAddress) then an HTTP download of shellcode from deadhub[.]org (IP fallback 193.23.118[.]155) at randomized URI paths disguised as image assets (e.g. /cloud/v192.4/ui/sync-status-icons.png); shellcode is mapped RWX and executed via a vectored-exception-handler trick calling the undocumented EtwpCreateEtwThread | DnsRequest, NetworkConnectIP4, ProcessRollup2 | DNS/network to the confirmed domain/IP; process establishing the named mutex (no native Falcon telemetry — see §7 gap) |
| 3. Stage 2 — Shellcode / Blockchain C2 Resolution | HTTPS request to the Solana blockchain getAccountInfo RPC endpoint for account 6pnDGAiHgyPdmckM5Qt1YbanGzrX43WLEU159nRaNLDm (data written via program CSiY8bQLBYPdfPWkwipBzH6sijTVQVVsA279JQdvwHtL); response's base64 data field is XOR-decrypted to yield the second-stage C2 address; further C2 traffic uses TLS-pinned HTTPS with nanopb protobuf framing | DnsRequest (RPC hostname), NetworkConnectIP4 | Novel signal — non-browser/non-wallet process resolving a public Solana RPC hostname (§8 Q9) |
| 4. Stage 3 — UAC Bypass & Persistence | UAC bypass via "public techniques" (specific technique not detailed in either source); binary copies/masquerades itself as C:\ProgramData\Microsoft\Windows\Telemetry\msedge.exe and restarts | ProcessRollup2, PeFileWritten/NewExecutableWritten | Exact-path IOC match on the masquerade location; msedge.exe running outside Program Files generally (§8 Q4-Q6) |
| 5. Stage 4 — Final Implant | "File manager" module exposing 21 commands: read/upload/download/list/enumerate/create/copy/rename/move/delete/chmod/symlink, plus preview/thumbnail generation to triage files before exfiltration | ProcessRollup2 (module load via same process), NetworkConnectIP4 | Sustained C2 beaconing from the masquerade process; large/unusual file-enumeration volume from the Telemetry-folder binary |
| 6. Impact / Scope | Several hundred victims (individuals and organizations) across Europe, Asia, and Africa; sectors include enterprise, government, IT, consulting, retail, transportation, and agriculture; actor activity traced back to October 2025 | N/A (context) | Prioritize this hunt organization-wide, not just for users with an obvious torrent-client footprint — victims include organizations, implying corporate assets were also affected |
Consolidated IOC Table
| Type | Value | Confidence | Nature | Action | Source(s) |
|---|---|---|---|---|---|
| MD5 | A0B13781EDD7CFDAB13D79AFFF3C83C1 | High | Atomic — Stage 1 loader (confirmed identical across many filenames) | Detect (single-sourced — see §2) | 01 |
| MD5 | 4843F9FAFCAE492F11E2D4D33DBB4CDD | High | Atomic — loader/implant sample | Detect (single-sourced) | 01 |
| MD5 | 5310CABAE3FBE6DB8742849B588093F9 | High | Atomic — loader/implant sample | Detect (single-sourced) | 01 |
| MD5 | 70060341CAF3338697A7DDFE0FB62875 | High | Atomic — loader/implant sample | Detect (single-sourced) | 01 |
| MD5 | AD4643EEA15AC286FA47D1131F9EF756 | High | Atomic — loader/implant sample | Detect (single-sourced) | 01 |
| MD5 | D0B967571AC8A3863C7F324BF5BDE99C | High | Atomic — loader/implant sample | Detect (single-sourced) | 01 |
| MD5 | D88D550D0FB8E60CFFFF3EA61FF7A067 | High | Atomic — loader/implant sample | Detect (single-sourced) | 01 |
| MD5 (excluded) | 4334BBAEA8DE33BF9D45E9B4E4E3BC2 | N/A | Malformed in source (31 hex chars, not a valid MD5) | Not shipped — do not fabricate the missing character | 01 (as-published defect) |
| File path (masquerade) | %ProgramData%\Microsoft\Windows\Telemetry\msedge.exe | High | Atomic — Stage 3 persistence location, confirmed by both sources | Detect/Hunt — exact-path CQL (§8 Q4) + custom IOA candidate | 01, 02 |
| Mutex | Global\E4AyDKzvEhe2hgAr | High | Atomic — no native Falcon CQL telemetry for mutex creation (see §7 gap) | Context/hunt via non-CQL tooling only | 01 |
| Mutex | Global\fnulSktzSqvVLXHU | High | Atomic — no native Falcon CQL telemetry for mutex creation (see §7 gap) | Context/hunt via non-CQL tooling only | 01 |
| Domain | deadhub[.]org | High | Atomic — Stage 1 C2 (shellcode delivery) | Detect — DNS hunt (§8 Q7); network/DNS block recommended (§13) | 01, 02 |
| IPv4 | 193.23.118[.]155 | High | Atomic — Stage 1 C2 IP fallback | Detect (§8 Q8) | 01, 02 |
| IPv4 | 208.64.33[.]90 | High | Atomic — Stage 2 C2 | Detect (§8 Q8) | 01 |
| IPv4 | 208.94.246[.]53 | High | Atomic — Stage 2 C2 | Detect (§8 Q8) | 01 |
| URI path (sample) | /cloud/v192.4/ui/sync-status-icons.png | Medium | Atomic — one observed masquerade path; malware randomizes segments | Context — supports Stage 1 network hunt, not independently queryable in Falcon EDR telemetry (needs proxy/NGFW logs, see §7) | 01 |
| Solana account | 6pnDGAiHgyPdmckM5Qt1YbanGzrX43WLEU159nRaNLDm | High | Atomic — encrypted C2 dead-drop, novel infrastructure type | Context/monitoring — not a Falcon-blockable IOC type; supports the behavioral RPC hunt (§8 Q9) | 01 |
| Solana program | CSiY8bQLBYPdfPWkwipBzH6sijTVQVVsA279JQdvwHtL | High | Atomic — custom on-chain program used to write the encrypted C2 data | Context/monitoring only | 01 |
MovieReaper-Torrent-Solana-Hunt-sources/. The malformed 31-character hash is intentionally excluded rather than padded or guessed. All hash/mutex/Solana-address values are single-sourced to Securelist (01) — this pack ships them at Detect, not Prevent, consistent with the two-independent-source bar for Prevent-tier action.Affected Surfaces & Telemetry Matrix
| Platform / Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Windows endpoints & servers (any host where torrent clients or personal downloads are possible) | Falcon EDR: ProcessRollup2/SyntheticProcessRollup2, PeFileWritten, NewExecutableWritten, DnsRequest, NetworkConnectIP4 | High | Low — core Falcon sensor coverage |
| Torrent-client software / P2P usage on managed endpoints | Process execution telemetry; no dedicated "torrent" event type — inferred from known client process names | High | Medium — depends on whether torrent clients are already blocked/allowlisted |
| Outbound blockchain RPC egress (Solana and similar public chains) | DnsRequest / NetworkConnectIP4 correlated to the originating process — most orgs do not currently baseline this traffic class | High | Gap — novel telemetry category; few environments have an existing baseline of "normal" blockchain RPC callers to compare against |
| Named-object (mutex) creation | Not exposed as a first-class Falcon CQL field/event in the current data model | Medium | Gap — flagged explicitly rather than shipping a hallucinated field; see §7 |
| Web proxy / NGFW logs (for URI-path-level detection of image-extension URLs serving executable content) | Proxy/NGFW HTTP log fields (url, http.uri) — outside native Falcon EDR telemetry | Medium | Medium — only relevant if a web-proxy log source is ingested into the same LogScale/NG-SIEM instance |
| Third-party dependency (itorrents.org repository compromise) | N/A — outside the org's telemetry entirely | Low (org cannot instrument it) | Gap by design — mitigated only through policy/user-awareness controls (§13) |
ATT&CK Mapping
| Tactic | Technique ID | Technique | Observed Behavior | Confidence |
|---|---|---|---|---|
| Resource Development | T1584 | Compromise Infrastructure | Compromise of the shared itorrents[.]org torrent-file repository to distribute malicious .torrent files across many independent trackers | High |
| Initial Access / Execution | T1204.002 | User Execution: Malicious File | Victim manually runs a movie-themed, long-filenamed .exe delivered via a poisoned torrent | High |
| Defense Evasion | T1497 | Virtualization/Sandbox Evasion | Loader performs multiple anti-sandbox / anti-AV checks before proceeding to network activity | High |
| Defense Evasion | T1027 | Obfuscated Files or Information | Strings encrypted with a custom stream cipher; second-stage C2 address is XOR-encrypted in the Solana account data | High |
| Defense Evasion | T1106 | Native API | Avoids LoadLibrary/GetProcAddress; walks the PEB Ldr double-linked list and manually parses loaded DLLs to resolve function addresses | High |
| Defense Evasion / Execution | T1620 | Reflective Code Loading | Shellcode mapped into RWX memory and executed via a vectored exception handler abusing a manually-located syscall instruction and the undocumented EtwpCreateEtwThread | High |
| Command and Control | T1102.001 | Web Service: Dead Drop Resolver | Stage 2 queries the Solana blockchain getAccountInfo RPC endpoint to retrieve an encrypted second-stage C2 address — a public blockchain used as takedown-resistant dead-drop storage | High |
| Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | Stage 1 shellcode retrieval over plain HTTP; Stage 2+ C2 over TLS-pinned HTTPS with nanopb protobuf framing | High |
| Privilege Escalation / Defense Evasion | T1548.002 | Abuse Elevation Control Mechanism: Bypass User Account Control | Stage 3 module performs a UAC bypass using "public techniques" — the specific method is not named in either source | Medium (technique confirmed, exact method undocumented — gap) |
| Defense Evasion | T1036.005 | Masquerading: Match Legitimate Name or Location | Persistence binary renamed msedge.exe and placed in %ProgramData%\Microsoft\Windows\Telemetry, outside the legitimate Edge install path | High |
| Persistence | T1547 (sub-technique unconfirmed) | Boot or Logon Autostart Execution (inferred) | Both sources describe "achieves persistence" via the respawned Telemetry-folder binary without naming the specific autostart mechanism (Run key, scheduled task, service) | Low — explicit gap, flagged rather than guessed (see §16 coverage map) |
| Discovery / Collection | T1083 | File and Directory Discovery | Final "file manager" implant lists and enumerates directories on the victim host | High |
| Collection | T1005 | Data from Local System | File manager reads, copies, and generates previews/thumbnails of files prior to operator-directed exfiltration (analyst inference for the preview/thumbnail step — no exact ATT&CK sub-technique names this specifically) | Medium |
| Exfiltration | T1041 | Exfiltration Over C2 Channel | File manager's upload/download commands operate over the already-established, TLS-pinned C2 channel | Medium (inferred from the command set; exact exfil volume/pattern undocumented) |
Native Audit-Log & Non-CQL Hunts
Checks that rely on tooling or telemetry outside native Falcon CQL — either because the signal isn't a first-class Falcon data-model field, or because it needs a different log source entirely.
| Check | How | Why |
|---|---|---|
Mutex presence (Global\E4AyDKzvEhe2hgAr, Global\fnulSktzSqvVLXHU) | Sysinternals Handle.exe / Process Explorer named-object search on a suspect host, or a Falcon Real Time Response (RTR) script enumerating open handles — not expressible as a Falcon CQL field/event in the documented v3 data model | Named mutexes are a strong, low-noise IOC, but this pack deliberately does not ship a CQL query claiming to detect mutex creation — no such event exists in the reference model, and inventing one would fail the field-name linter for good reason |
| Direct file-listing check for the masquerade path | RTR / endpoint script: Get-ChildItem "$env:ProgramData\Microsoft\Windows\Telemetry\msedge.exe" -ErrorAction SilentlyContinue | Confirms Stage 3 drop even if the process has already exited and left no live ProcessRollup2 event in the retained window |
| AV/EDR detection-name sweep | Search AV/EDR console for detections named HEUR:Trojan.Win64.Agent.gen (Kaspersky's generic name for this family) if a secondary AV product is deployed alongside Falcon | Corroborating signal if another engine independently flagged the same binaries |
| Torrent-client / browser download-history review | Review torrent-client download history and browser download logs for filenames containing "odyssey" or other current movie titles paired with a long, extension-obscuring filename | Directly targets the observed lure pattern; useful for retrospective triage of hosts without live telemetry retention |
| Image-extension URI paths serving executable content | Query web-proxy/NGFW logs (Zscaler, Bluecoat, Squid, etc. — if ingested into LogScale/NG-SIEM) for GET requests to deadhub[.]org paths ending in .png/.jpg that returned an executable/binary content-type | This is genuinely observable, but requires a web-proxy log source — it is not native Falcon EDR telemetry, so no field name for it is claimed in §8 |
CrowdStrike LogScale CQL Hunt Queries
Looks for: execution of any of the seven confirmed 32-hex MD5 hashes for the MovieReaper loader/implant family. The eighth published hash is excluded as malformed (see §2/§4).
// HUNT: MovieReaper — Confirmed Loader/Implant Hash Execution // MITRE: T1204.002 (User Execution: Malicious File) // CONF: high // FP: low // COST: low // REQUIRES: ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: none expected — these are specific malware sample hashes, not a behavioral pattern. // LOOKBACK: 30d (set via the Falcon time picker, not an in-query filter) #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i | in(field=MD5HashData, values=["A0B13781EDD7CFDAB13D79AFFF3C83C1","4843F9FAFCAE492F11E2D4D33DBB4CDD","5310CABAE3FBE6DB8742849B588093F9","70060341CAF3338697A7DDFE0FB62875","AD4643EEA15AC286FA47D1131F9EF756","D0B967571AC8A3863C7F324BF5BDE99C","D88D550D0FB8E60CFFFF3EA61FF7A067"]) | table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, ParentBaseFileName, CommandLine, MD5HashData]) | sort(@timestamp, order=desc)
Looks for: a known torrent-client process spawning a child executable that is not itself another instance of a torrent-client/updater binary — the generic Stage 1 execution pattern regardless of the specific lure filename. FP: torrent clients legitimately launch the OS default handler (browser, media player, archive tool) to open a completed download.
// HUNT: MovieReaper — Torrent Client Spawns/Writes New Executable // MITRE: T1204.002 (User Execution: Malicious File) // CONF: medium // FP: medium // COST: low // REQUIRES: ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: torrent client opening a completed download with its associated default application (browser, media player, archive utility) — legitimate "open on complete" behavior. // TUNING: exclude known media-player and archive-utility ParentBaseFileName targets (vlc.exe, wmplayer.exe, 7zAdvancement, winrar.exe) launched as children; escalate only on unsigned or newly-first-seen child binaries. // LOOKBACK: 30d #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i | in(field=ParentBaseFileName, values=["qbittorrent.exe","utorrent.exe","bittorrent.exe","transmission-qt.exe","transmission-daemon.exe","transmission-gtk.exe","deluge.exe","deluged.exe"], ignoreCase=true) | FileName!=/^(qbittorrent|utorrent|bittorrent|transmission.*|deluge.*)(\.exe)?$/i | table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName]) | sort(@timestamp, order=desc)
Looks for: any PE/executable file written into the Telemetry subfolder — catches the Stage 3 persistence drop at write time, before the masquerading process even runs. Legitimate Windows Telemetry components do not write executables to this path.
// HUNT: MovieReaper — Executable Written to ProgramData\Microsoft\Windows\Telemetry // MITRE: T1036.005 (Masquerading: Match Legitimate Name or Location) // CONF: high // FP: low // COST: low // REQUIRES: PeFileWritten, NewExecutableWritten // FALSE POSITIVES: none expected in a standard build — this path is not a legitimate drop location for any Microsoft Telemetry component. // LOOKBACK: 30d #event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/i | TargetFileName=/^C:\\ProgramData\\Microsoft\\Windows\\Telemetry\\/i | table([@timestamp, aid, ComputerName, UserName, TargetFileName, SHA256HashData, MD5HashData]) | sort(@timestamp, order=desc)
Looks for: execution of the exact confirmed masquerade path — the single most distinctive, highest-confidence host indicator in this pack, corroborated by both saved sources.
// HUNT: MovieReaper — Exact-Path Execution: %ProgramData%\Microsoft\Windows\Telemetry\msedge.exe // MITRE: T1036.005 (Masquerading: Match Legitimate Name or Location) // CONF: high // FP: low // COST: low // REQUIRES: ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: none expected — this is not a legitimate Microsoft Edge install or update-helper location. // LOOKBACK: 30d #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i | FileName=/^msedge(\.exe)?$/i | ImageFileName=/^C:\\ProgramData\\Microsoft\\Windows\\Telemetry\\msedge\.exe$/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName]) | sort(@timestamp, order=desc)
Looks for: the broader masquerade pattern — a process named msedge.exe running from any location other than a legitimate Program Files install, catching path variants beyond the one confirmed Telemetry-folder drop. FP: Edge WebView2 runtime and Edge Update helper processes occasionally run from per-user AppData paths.
// HUNT: MovieReaper — msedge.exe Outside Program Files (Masquerade Variant Catch) // MITRE: T1036.005 (Masquerading: Match Legitimate Name or Location) // CONF: medium // FP: medium // COST: low // REQUIRES: ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: Microsoft Edge WebView2 runtime and Edge Update helper processes can legitimately run from per-user AppData\Local\Microsoft\EdgeWebView or EdgeUpdate paths — exclude those specific subpaths before escalating. // TUNING: exclude ImageFileName paths containing "\AppData\Local\Microsoft\EdgeWebView\" or "\AppData\Local\Microsoft\EdgeUpdate\"; prioritize hits from ProgramData, Temp, and user Downloads paths. // LOOKBACK: 30d #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i | FileName=/^msedge(\.exe)?$/i | ImageFileName!=/^C:\\Program Files\\/i | ImageFileName!=/^C:\\Program Files \(x86\)\\/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName]) | sort(@timestamp, order=desc)
Looks for: execution of any binary — not just msedge.exe — from the Telemetry subfolder, in case future MovieReaper variants rename the persistence binary. FP: none commonly expected; this is a narrow, non-standard execution path.
// HUNT: MovieReaper — Execution from ProgramData\Microsoft\Windows\Telemetry (Any Binary) // MITRE: T1036.005 (Masquerading), T1547 (Boot or Logon Autostart Execution — inferred, mechanism undocumented) // CONF: medium // FP: low // COST: low // REQUIRES: ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: none commonly expected — this is not a standard execution path for any Microsoft Telemetry component. // LOOKBACK: 30d #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i | ImageFileName=/^C:\\ProgramData\\Microsoft\\Windows\\Telemetry\\/i | table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName]) | sort(@timestamp, order=desc)
Looks for: DNS resolution of the confirmed Stage 1 C2 domain (and any subdomain) — the report itself notes this single domain/IP pair is the campaign's clearest takedown/detection opportunity.
// HUNT: MovieReaper — DNS Request to deadhub[.]org (Stage 1 C2) // MITRE: T1071.001 (Application Layer Protocol: Web Protocols) // CONF: high // FP: low // COST: low // REQUIRES: DnsRequest // FALSE POSITIVES: none expected — this is a dedicated malicious domain, not shared/CDN infrastructure. // LOOKBACK: 30d #event_simpleName=/^DnsRequest$/i | DomainName=/^(deadhub\.org|.+\.deadhub\.org)$/i | table([@timestamp, aid, ComputerName, UserName, DomainName, ContextProcessId_decimal]) | sort(@timestamp, order=desc)
Looks for: outbound connections to the Stage 1 IP fallback and both confirmed Stage 2 C2 IPs, correlated back to the initiating process for triage.
// HUNT: MovieReaper — Network Connection to Confirmed C2 IPs (Stage 1 fallback + Stage 2) // MITRE: T1071.001 (Application Layer Protocol: Web Protocols) // CONF: high // FP: low // COST: medium // REQUIRES: NetworkConnectIP4, ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: none expected — these IPs are not shared/CDN hosting as far as either source documents. // LOOKBACK: 30d #event_simpleName=NetworkConnectIP4 | in(field=RemoteAddressIP4, values=["193.23.118.155","208.64.33.90","208.94.246.53"]) | rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal) | join(query={#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i}, field=TargetProcessId_decimal) | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine, RemoteAddressIP4, RemotePort]) | sort(@timestamp, order=desc)
Looks for: the durable, IP/domain-rotation-resistant signal at the heart of this campaign — a non-browser, non-crypto-wallet process resolving a public Solana RPC hostname. Securelist's own text cites api.mainnet.solana.com specifically; this query also covers the well-known public mainnet-beta endpoint and several third-party public RPC providers, since the technique (querying any public Solana RPC for getAccountInfo) is what's durable, not any one hostname. FP: legitimate Solana developer tooling (Solana CLI, Anchor), crypto trading/monitoring bots, and browser-based wallet extensions (which resolve DNS from inside the browser process, not a standalone exe) can also generate this traffic.
// HUNT: MovieReaper — Non-Browser Process Querying Public Solana RPC (Blockchain Dead-Drop C2 Resolution) // MITRE: T1102.001 (Web Service: Dead Drop Resolver) // CONF: medium // FP: medium // COST: medium // REQUIRES: DnsRequest, ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: legitimate Solana developer tooling (solana-cli, anchor, test validators) on developer workstations; crypto trading/monitoring bots; any approved internal blockchain-integration service. // TUNING: baseline and exclude your organization's approved developer/finance workstations and any known crypto-integration service account before treating this as high-priority; the value of this query is catching a NEW/unexpected process on a host with no prior blockchain-dev baseline. // LOOKBACK: 30d #event_simpleName=/^DnsRequest$/i | DomainName=/^(api\.mainnet\.solana\.com|api\.mainnet-beta\.solana\.com|.+\.helius-rpc\.com|.+\.quiknode\.pro|rpc\.ankr\.com|solana-mainnet\.g\.alchemy\.com)$/i | rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal) | join(query={#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i}, field=TargetProcessId_decimal) | FileName!=/^(chrome|firefox|msedge|brave|opera|vivaldi|iexplore|solana|anchor|test-validator)(\.exe)?$/i | table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, CommandLine, DomainName]) | groupBy([ComputerName, FileName], function=[count(as=Hits), collect(CommandLine)], limit=500) | sort(Hits, order=desc)
Looks for: the family of well-known UAC-bypass LOLBins (fodhelper, computerdefaults, eventvwr, sdclt, slui, wsreset) spawning a child process outside C:\Windows\. Neither source names the exact UAC-bypass method MovieReaper uses ("public techniques" only), so this is a generic proxy hunt for the technique class rather than a MovieReaper-specific signature — flagged as lower confidence accordingly. FP: very high in environments with unusual but legitimate auto-elevation configurations or third-party admin tooling that hooks these binaries.
// HUNT: MovieReaper — UAC-Bypass LOLBin Parent/Child Anomaly (Generic Proxy Hunt) // MITRE: T1548.002 (Abuse Elevation Control Mechanism: Bypass User Account Control) // CONF: low-medium — exact MovieReaper UAC-bypass method is undocumented; this proxies the general technique class // FP: high // COST: low // REQUIRES: ProcessRollup2, SyntheticProcessRollup2 // FALSE POSITIVES: legitimate auto-elevation via these binaries is rare but not impossible; some third-party admin/deployment tooling hooks fodhelper.exe-style bypasses for its own (non-malicious) elevation. // TUNING: correlate with Q3/Q4/Q6 firing on the same host within a short window before escalating — this query alone is not MovieReaper-specific and will be noisy standalone. // LOOKBACK: 30d #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i | in(field=ParentBaseFileName, values=["fodhelper.exe","computerdefaults.exe","eventvwr.exe","sdclt.exe","slui.exe","wsreset.exe"], ignoreCase=true) | ImageFileName!=/^C:\\Windows\\/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName]) | sort(@timestamp, order=desc)
CrowdStrike Custom IOA Recommendations
Queries promoted to Custom IOA candidates are high-confidence, low-FP, and stable enough for always-on detection. All are recommended in Detect mode first, per the standard 14-day FP-measurement rollout before any promotion to Prevent.
| Query | Rationale | Suggested Severity |
|---|---|---|
| Q1 — Confirmed hash execution | Exact sample match, zero ambiguity | High |
| Q3 — PE write to Telemetry folder | Catches the drop before execution; narrow path with no legitimate use | High |
| Q4 — Exact msedge.exe masquerade path | Single-purpose exact-path match, corroborated by two independent sources | High |
| Q7 — DNS to deadhub[.]org | Dedicated malicious domain; the report itself calls this the campaign's single clearest disruption point | High |
Q2, Q5, Q6, Q8, Q9, and Q10 remain investigate-only hunt queries pending environment-specific tuning (medium/high FP as noted in their comment blocks). Q9 in particular deserves early operational attention despite its FP-medium rating: it is the only query in this pack built on a signal the actor cannot rotate away from without abandoning the blockchain-C2 technique entirely.
Alert Package — Scheduled Search & Analyst Alert
Packaged alert content for the two highest-value scheduled searches in this pack: the exact-path Stage 3 masquerade (Q4) and the novel Solana-RPC behavioral signal (Q9).
Scheduled Search 1 — Exact-Path Masquerade (Q4)
NAME:
HUNT: MovieReaper Masquerade - Telemetry Folder msedge.exe Execution
DESCRIPTION:
Detects execution of a binary at the exact path %ProgramData%\Microsoft\Windows\
Telemetry\msedge.exe, the confirmed Stage 3 persistence masquerade used by the
MovieReaper torrent-delivered loader framework. This is not a legitimate Edge
install or update-helper location under any documented Microsoft deployment
pattern. Used to catch the respawned, UAC-bypassed persistence stage after
initial infection from a poisoned torrent download.
MITRE: T1036.005 (Masquerading: Match Legitimate Name or Location), T1548.002 (Bypass User Account Control)
Tactics: Defense Evasion, Privilege Escalation
Priority: HIGH (escalate immediately - no legitimate explanation for this exact path)
FP Sources: none expected; if triggered, treat as a true positive pending investigation
═══════════════════════════════════════════════════════════
ALERT PACKAGE
═══════════════════════════════════════════════════════════
SUBJECT:
🚨 HUNT ALERT 🚨 — MovieReaper Masquerade Detected (Possible Persistence)
BODY:
A process named msedge.exe was observed executing from
%ProgramData%\Microsoft\Windows\Telemetry — a path with no legitimate Microsoft
Edge installation or update purpose. This is the confirmed Stage 3 persistence
mechanism for the MovieReaper torrent-delivered loader framework: a UAC-bypassed
respawn of the original loader, masquerading under a trusted-sounding filename.
This alert fires on execution (ProcessRollup2/SyntheticProcessRollup2), not on a
blocked attempt, so if you see this the process very likely ran. Check the parent
process, the original loader's arrival vector (torrent client / browser download
history), and pivot immediately to network telemetry for Stage 1/Stage 2 C2
contact (deadhub[.]org, 193.23.118[.]155, 208.64.33[.]90, 208.94.246[.]53) and to
DNS telemetry for Solana RPC lookups from the same host.
INVESTIGATION CHECKLIST:
1. Confirm execution vs. write-only: check #event_simpleName — ProcessRollup2/
SyntheticProcessRollup2 means it ran; a PeFileWritten-only hit with no matching
process event means the drop occurred but may not have executed yet.
2. Inspect ParentBaseFileName — a UAC-bypass LOLBin (fodhelper.exe, eventvwr.exe,
computerdefaults.exe, sdclt.exe) or the original long-filename loader as parent
is a strong confirmation.
3. Check CommandLine for any special respawn argument — Securelist notes the
respawned process carries a flag that lets it skip anti-sandbox checks.
4. Pivot to DnsRequest/NetworkConnectIP4 on the same aid for deadhub[.]org,
193.23.118[.]155, 208.64.33[.]90, 208.94.246[.]53, and any Solana RPC hostname
(api.mainnet.solana.com or similar) in the surrounding time window.
5. Check UserName and browser/torrent-client download history for a recent
movie-themed .exe download (e.g., referencing "the odyssey" or another
current release).
6. Isolate the host if: execution confirmed AND any C2 contact (network or
Solana RPC) is also present in the same window.
PIVOT QUERIES:
--- Pivot 1: All process activity from the confirmed masquerade path, this host ---
>> YOU NEED: ComputerName (hostname from the alert)
Alert timestamp (from the alert — set LogScale window to +/-30 min)
>> FILL IN: ComputerName="REPLACE_WITH_HOSTNAME"
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i
| ComputerName="REPLACE_WITH_HOSTNAME"
| ImageFileName=/^C:\\ProgramData\\Microsoft\\Windows\\Telemetry\\/i
| table([@timestamp, UserName, ImageFileName, CommandLine, ParentBaseFileName])
| sort(@timestamp, order=desc)
--- Pivot 2: Environment-wide frequency (single host = targeted; many = wider incident) ---
(no variables to fill in — runs as-is)
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/i
| ImageFileName=/^C:\\ProgramData\\Microsoft\\Windows\\Telemetry\\msedge\.exe$/i
| groupBy([ComputerName], function=count(as=TotalHits), limit=500)
| sort(TotalHits, order=desc)
Scheduled Search 2 — Non-Browser Solana RPC Query (Q9)
NAME:
HUNT: MovieReaper C2 Resolution - Non-Browser Solana RPC Query
DESCRIPTION:
Detects a non-browser, non-wallet process resolving a public Solana blockchain
RPC hostname (api.mainnet.solana.com and equivalents). MovieReaper's Stage 2
shellcode uses the Solana getAccountInfo RPC call as a takedown-resistant dead
drop for its encrypted second-stage C2 address. Legitimate business processes
essentially never make this call outside approved developer/blockchain tooling,
which makes this one of the most durable behavioral signals in the pack — it
survives full C2 domain/IP rotation.
MITRE: T1102.001 (Web Service: Dead Drop Resolver)
Tactics: Command and Control
Priority: MEDIUM (escalate to HIGH if the host has no prior blockchain-dev baseline)
FP Sources: Solana CLI / Anchor developer tooling, crypto trading or monitoring bots, approved blockchain-integration services
═══════════════════════════════════════════════════════════
ALERT PACKAGE
═══════════════════════════════════════════════════════════
SUBJECT:
⚠️ HUNT ALERT ⚠️ — Non-Browser Solana RPC Query Detected (Possible Blockchain C2 Resolution)
BODY:
A process that is not a recognized browser or Solana developer tool resolved a
public Solana RPC hostname. This is the signature behavior of MovieReaper's
Stage 2 shellcode retrieving its encrypted second-stage C2 address from the
Solana blockchain. This alert fires on the DNS lookup, which may precede actual
C2 contact by only seconds — treat it with urgency comparable to a live C2 beacon
until proven otherwise. The two most important things to check are (1) whether
this host has any legitimate reason to touch Solana infrastructure, and (2)
whether the same process shows any of the other MovieReaper indicators (Q1, Q4,
Q7, Q8) in the same window.
INVESTIGATION CHECKLIST:
1. Check FileName/ImageFileName of the resolving process — a browser or a known
Solana CLI/Anchor binary lowers priority sharply; anything else is a red flag.
2. Check whether this host or user has ANY documented blockchain-development or
trading responsibility — if not, this is very likely malicious.
3. Pivot to NetworkConnectIP4 for the same process immediately after the DNS
lookup — an actual TLS connection following the RPC query is the C2 handoff.
4. Cross-check the same aid for Q1 (hash), Q4 (masquerade path), and Q7/Q8
(Stage 1/2 C2) in the preceding hours — MovieReaper's chain means these often
cluster together.
5. Isolate if: no legitimate blockchain-dev justification AND any correlated
MovieReaper indicator is also present.
PIVOT QUERIES:
--- Pivot 1: Full DNS + correlated process detail for this host ---
>> YOU NEED: ComputerName (hostname from the alert)
Alert timestamp (from the alert — set LogScale window to +/-30 min)
>> FILL IN: ComputerName="REPLACE_WITH_HOSTNAME"
#event_simpleName=/^DnsRequest$/i
| ComputerName="REPLACE_WITH_HOSTNAME"
| DomainName=/^(api\.mainnet\.solana\.com|api\.mainnet-beta\.solana\.com|.+\.helius-rpc\.com|.+\.quiknode\.pro|rpc\.ankr\.com|solana-mainnet\.g\.alchemy\.com)$/i
| table([@timestamp, UserName, DomainName, ContextProcessId_decimal])
| sort(@timestamp, order=desc)
--- Pivot 2: Environment-wide frequency, grouped by resolving process ---
(no variables to fill in — runs as-is)
#event_simpleName=/^DnsRequest$/i
| DomainName=/^(api\.mainnet\.solana\.com|api\.mainnet-beta\.solana\.com|.+\.helius-rpc\.com|.+\.quiknode\.pro|rpc\.ankr\.com|solana-mainnet\.g\.alchemy\.com)$/i
| groupBy([ComputerName], function=count(as=TotalHits), limit=500)
| sort(TotalHits, order=desc)
Machine-Readable IOC Appendix
A0B13781EDD7CFDAB13D79AFFF3C83C1 (Stage 1 loader - confirmed identical across many movie-themed filenames) 4843F9FAFCAE492F11E2D4D33DBB4CDD 5310CABAE3FBE6DB8742849B588093F9 70060341CAF3338697A7DDFE0FB62875 AD4643EEA15AC286FA47D1131F9EF756 D0B967571AC8A3863C7F324BF5BDE99C D88D550D0FB8E60CFFFF3EA61FF7A067 # Excluded: 4334BBAEA8DE33BF9D45E9B4E4E3BC2 is only 31 hex chars in the source (malformed) - not shipped
deadhub[.]org (Stage 1 C2 - shellcode delivery) 193.23.118[.]155 (Stage 1 C2 IP fallback) 208.64.33[.]90 (Stage 2 C2) 208.94.246[.]53 (Stage 2 C2) /cloud/v192.4/ui/sync-status-icons.png (one observed masquerade URI path on deadhub[.]org - malware randomizes path segments)
%ProgramData%\Microsoft\Windows\Telemetry\msedge.exe (Stage 3 persistence masquerade path - detect/block via Q3/Q4/Q6) Global\E4AyDKzvEhe2hgAr (mutex - no native Falcon CQL telemetry, see Sec.7) Global\fnulSktzSqvVLXHU (mutex - no native Falcon CQL telemetry, see Sec.7)
6pnDGAiHgyPdmckM5Qt1YbanGzrX43WLEU159nRaNLDm (Solana account holding the encrypted stage-2 C2 address) CSiY8bQLBYPdfPWkwipBzH6sijTVQVVsA279JQdvwHtL (custom Solana program used to write the encrypted C2 data) api.mainnet.solana.com (public Solana RPC endpoint used for getAccountInfo resolution - not a blockable IOC, supports the behavioral hunt in Q9)
[ ] deadhub[.]org and the three confirmed C2 IPs blocked/sinkholed at DNS or firewall - verified [ ] WDAC/AppLocker denies unsigned executable launch from %ProgramData% and torrent-client download folders - verified [ ] UAC set to highest notification level; auto-elevation of fodhelper/eventvwr/computerdefaults/sdclt not silently permitted - verified [ ] Falcon Custom IOA deployed (Detect mode) for the confirmed hash set and the exact msedge.exe masquerade path - verified [ ] Torrent/P2P client installation blocked or allowlisted on managed endpoints - verified [ ] Outbound egress policy reviewed for direct process-level HTTPS to public blockchain RPC endpoints from non-approved hosts - verified
Falcon IOC Management Import (CSV)
type,value,action,severity,expiration,description,tags md5,A0B13781EDD7CFDAB13D79AFFF3C83C1,detect,critical,2027-09-21,MovieReaper Stage 1 loader,campaign:MovieReaper md5,4843F9FAFCAE492F11E2D4D33DBB4CDD,detect,critical,2027-09-21,MovieReaper loader/implant,campaign:MovieReaper md5,5310CABAE3FBE6DB8742849B588093F9,detect,critical,2027-09-21,MovieReaper loader/implant,campaign:MovieReaper md5,70060341CAF3338697A7DDFE0FB62875,detect,critical,2027-09-21,MovieReaper loader/implant,campaign:MovieReaper md5,AD4643EEA15AC286FA47D1131F9EF756,detect,critical,2027-09-21,MovieReaper loader/implant,campaign:MovieReaper md5,D0B967571AC8A3863C7F324BF5BDE99C,detect,critical,2027-09-21,MovieReaper loader/implant,campaign:MovieReaper md5,D88D550D0FB8E60CFFFF3EA61FF7A067,detect,critical,2027-09-21,MovieReaper loader/implant,campaign:MovieReaper domain,deadhub.org,detect,high,2026-12-20,MovieReaper Stage 1 C2 - shellcode delivery,campaign:MovieReaper ipv4,193.23.118.155,detect,high,2026-10-21,MovieReaper Stage 1 C2 IP fallback,campaign:MovieReaper ipv4,208.64.33.90,detect,high,2026-10-21,MovieReaper Stage 2 C2,campaign:MovieReaper ipv4,208.94.246.53,detect,high,2026-10-21,MovieReaper Stage 2 C2,campaign:MovieReaper
JSON (machine-readable)
{
"threat": "MovieReaper",
"pack_version": "2026-09-21",
"generated": "2026-09-21",
"hashes": [
{ "algo": "md5", "value": "A0B13781EDD7CFDAB13D79AFFF3C83C1", "role": "stage1_loader", "confidence": "high", "sources": ["01"] },
{ "algo": "md5", "value": "4843F9FAFCAE492F11E2D4D33DBB4CDD", "confidence": "high", "sources": ["01"] },
{ "algo": "md5", "value": "5310CABAE3FBE6DB8742849B588093F9", "confidence": "high", "sources": ["01"] },
{ "algo": "md5", "value": "70060341CAF3338697A7DDFE0FB62875", "confidence": "high", "sources": ["01"] },
{ "algo": "md5", "value": "AD4643EEA15AC286FA47D1131F9EF756", "confidence": "high", "sources": ["01"] },
{ "algo": "md5", "value": "D0B967571AC8A3863C7F324BF5BDE99C", "confidence": "high", "sources": ["01"] },
{ "algo": "md5", "value": "D88D550D0FB8E60CFFFF3EA61FF7A067", "confidence": "high", "sources": ["01"] }
],
"c2_infrastructure": [
{ "type": "domain", "value": "deadhub.org", "role": "stage1_c2", "sources": ["01", "02"] },
{ "type": "ipv4", "value": "193.23.118.155", "role": "stage1_c2_fallback", "sources": ["01", "02"] },
{ "type": "ipv4", "value": "208.64.33.90", "role": "stage2_c2", "sources": ["01"] },
{ "type": "ipv4", "value": "208.94.246.53", "role": "stage2_c2", "sources": ["01"] }
],
"host_indicators": [
{ "type": "file_path", "value": "%ProgramData%\\Microsoft\\Windows\\Telemetry\\msedge.exe", "role": "stage3_persistence_masquerade", "sources": ["01", "02"] },
{ "type": "mutex", "value": "Global\\E4AyDKzvEhe2hgAr", "sources": ["01"] },
{ "type": "mutex", "value": "Global\\fnulSktzSqvVLXHU", "sources": ["01"] }
],
"blockchain_indicators": [
{ "type": "solana_account", "value": "6pnDGAiHgyPdmckM5Qt1YbanGzrX43WLEU159nRaNLDm", "role": "encrypted_c2_dead_drop", "sources": ["01"] },
{ "type": "solana_program", "value": "CSiY8bQLBYPdfPWkwipBzH6sijTVQVVsA279JQdvwHtL", "role": "custom_write_program", "sources": ["01"] }
],
"excluded": [
{ "type": "md5", "value": "4334BBAEA8DE33BF9D45E9B4E4E3BC2", "reason": "malformed in source - 31 hex characters, not shipped" }
]
}
Detection Validation Gates
| Gate | Check | Status |
|---|---|---|
| Source provenance | Both cited sources (2/2) were fetched this run as raw HTML, extracted verbatim, and saved to MovieReaper-Torrent-Solana-Hunt-sources/. | PASS |
| IOC traceability | Every atomic indicator shipped in §4/§11 traces to at least one saved snapshot; none were invented. | PASS |
| No fabricated/padded hash | The malformed 31-character hash from the source is explicitly excluded rather than padded or guessed to 32 characters. | PASS |
| Prompt-injection screening | Both fetched sources reviewed for embedded instructions directed at the researching agent; none found. One candidate third source (gbhackers.com) was dropped rather than cited from a non-verbatim summary. | PASS |
| Prevent-tier two-source rule | No CSV row is marked prevent — every atomic indicator is single-sourced to Securelist, so all rows ship at detect per this pack's own bar. | PASS |
| Field-name sanity pass | CQL queries use standard Falcon event types (ProcessRollup2/SyntheticProcessRollup2, PeFileWritten, NewExecutableWritten, DnsRequest, NetworkConnectIP4) and documented fields. Validate against your tenant's schema before production deployment. | PASS |
| No hallucinated mutex field | No CQL query claims a mutex-creation event/field; the mutex IOCs are explicitly routed to non-CQL tooling in §7 instead. | PASS |
| Regex hygiene | Every CQL regex matches basenames via FileName/ImageFileName with escaped backslashes; no unescaped path slash appears inside any /.../ regex delimiter. | PASS |
| HTML escaping | No bare angle-bracket characters appear unescaped inside any <pre> block in a way that forms an unintended tag; placeholder tokens use <pre>-safe >> markers, not angle brackets. | PASS |
| No in-query time expressions | No query uses now() - N on the right of a comparison; all queries carry a // LOOKBACK: comment instead and rely on the Falcon time picker. | PASS |
| Tuning coverage | Every FP-medium-or-higher query (Q2, Q5, Q9, Q10) carries an in-card // TUNING: line with a specific exclusion, not just prose above the card. | PASS |
Hardening — Tiered & Deployable
Controls are scoped to the platforms MovieReaper actually touches: Windows endpoints (execution, persistence, UAC), network egress (C2 domain/IP and blockchain RPC), and user/policy controls around torrent usage. Each control cites a MITRE mitigation plus a platform benchmark or vendor guidance.
| Control | MITRE Mitigation | Authority | Verify |
|---|---|---|---|
Block/sinkhole deadhub.org and the three confirmed C2 IPs at DNS resolver and perimeter firewall | M1037 Filter Network Traffic | CIS Controls v8 §9.2 (DNS Filtering); standard perimeter-firewall blocklist practice | Attempt DNS resolution / outbound connection to the blocked indicators from a test host inside the network — expect failure/sinkhole response |
WDAC or AppLocker: deny execution of unsigned binaries from %ProgramData% and common torrent-client download folders | M1038 Execution Prevention | CIS Microsoft Windows Benchmark §18.9.x (Device Guard/Application Control); Microsoft WDAC design guide | Get-AppLockerPolicy -Effective or Get-CIPolicy — confirm the rule is enforced (not audit-only) on a pilot host |
| Raise UAC to "Always notify" and disable silent auto-elevation for the common UAC-bypass LOLBins (fodhelper, eventvwr, computerdefaults, sdclt) | M1052 User Account Control | CIS Microsoft Windows Benchmark §2.3.17.x (User Account Control settings); MS Security Baseline "User Account Control" section | reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin — expect value 2 |
| Control | MITRE Mitigation | Authority | Verify |
|---|---|---|---|
| Deploy Falcon Custom IOA rules (Detect mode) for the confirmed hash set and the exact msedge.exe masquerade path | M1040 Behavior Prevention on Endpoint | CrowdStrike Falcon Custom IOA documentation | Review Falcon detection console after 14 days for TP/FP rate before considering promotion to Prevent |
| Egress-filtering policy flagging or blocking direct process-level HTTPS to public blockchain RPC endpoints from hosts with no approved blockchain-development role | M1037 Filter Network Traffic | ⚠ best-practice, no formal benchmark — this is a novel egress-control category; no CIS/DISA item yet covers "public blockchain RPC as C2 dead-drop" | Confirm the proxy/firewall rule logs or blocks a test getAccountInfo call from a non-approved host |
| Block or tightly allowlist torrent/P2P client installation on managed endpoints via application control | M1042 Disable or Remove Feature or Program | CIS Controls v8 §2.3 (Address Unauthorized Software) | Attempt to install a common torrent client on a pilot-ring managed endpoint — expect denial or SOC alert |
| Control | MITRE Mitigation | Authority | Verify |
|---|---|---|---|
| Fleet-wide enforced (not audit-only) application control (WDAC) as the default execution posture, not just a targeted ProgramData/Telemetry rule | M1038 Execution Prevention | CIS Microsoft Windows Benchmark full application-control section; NIST SP 800-53 CM-7 | Sample audit of managed endpoints confirming WDAC is in enforced mode fleet-wide, not just the pilot ring |
| User-awareness training specifically covering torrent/piracy-based malware delivery, including the "install guides tell you to disable AV" social-engineering pattern Kaspersky notes as a repeat tactic | M1017 User Training | NIST SP 800-50 (Security Awareness Program); CIS Controls v8 §14 | Post-training phishing/social-engineering simulation measuring click-through on a torrent-themed lure |
| Baseline "normal" blockchain-RPC-calling processes/hosts organization-wide so future anomalies (like Q9) are cheap to triage rather than a cold start each time | M1047 Audit (indirectly, via a maintained baseline) | ⚠ best-practice, no formal benchmark — novel telemetry category; document the baseline internally | Confirm a documented, reviewed list of approved blockchain-RPC-calling hosts/services exists and is used to scope Q9's tuning |
Deployable Playbooks
Playbook A — Block Confirmed MovieReaper Network Indicators
Prerequisites: Admin access to internal DNS resolver / DNS filtering service and perimeter firewall change rights. Reboot required: No. # Step 1 - Add the confirmed domain to your DNS sinkhole/filtering policy # (example shown for a generic RPZ-style DNS firewall zone file entry) deadhub.org CNAME sinkhole.internal. # Step 2 - Add the confirmed IPs to your perimeter firewall deny list # (example shown as generic iptables syntax - adapt to your platform) iptables -A OUTPUT -d 193.23.118.155 -j DROP iptables -A OUTPUT -d 208.64.33.90 -j DROP iptables -A OUTPUT -d 208.94.246.53 -j DROP # Step 3 - Verify nslookup deadhub.org # expect sinkhole/NXDOMAIN response # attempt an outbound connection test to each blocked IP - expect timeout/refusal Rollback: Remove the RPZ/sinkhole entry and the three iptables DROP rules; no other state change to undo.
Playbook B — WDAC Deny Rule for ProgramData\Microsoft\Windows\Telemetry Execution
Prerequisites: Windows 10 1903+/Windows 11, WDAC policy authoring rights, a pilot
ring identified for compatibility testing.
Reboot required: Yes - policy refresh/enforcement typically requires a restart
or a policy-refresh cycle depending on deployment method.
# Step 1 - Confirm current WDAC policy mode (audit vs enforced)
Get-CIPolicy -All | Select-Object PolicyID, PolicyOptions
# Step 2 - Add an explicit deny rule for any executable in the Telemetry subfolder
New-CIPolicyRule -FilePathRule "C:\ProgramData\Microsoft\Windows\Telemetry\*" -Deny
# Step 3 - Merge into your baseline policy, sign, and deploy to the pilot ring first
Merge-CIPolicy -PolicyPaths @("Base.xml","TelemetryDeny.xml") -OutputFilePath "Merged.xml"
# Step 4 - Verify
# Attempt to run a benign renamed .exe from the Telemetry folder on a pilot host -
# expect a WDAC block event (CodeIntegrity Event ID 3077 in Enforced mode, 3076 in Audit)
Rollback: Remove the TelemetryDeny rule from the merged policy, re-sign, and
redeploy the prior policy version (keep the pre-change signed policy backed up
before deployment).
Playbook C — Harden UAC Against Silent Bypass
Prerequisites: GPO or Intune deployment rights; pilot ring for testing impact on any legacy software that relies on silent elevation. Reboot required: No (policy refresh/gpupdate is sufficient). # Step 1 - Set UAC to "Always notify" and require the secure desktop reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 2 /f reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop /t REG_DWORD /d 1 /f # Step 2 - Ensure the built-in Administrator account also requires UAC prompts reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v FilterAdministratorToken /t REG_DWORD /d 1 /f # Step 3 - Verify reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin # expect value 2 # Step 4 - Spot-check with Q10 in this pack post-deployment - expect no successful # silent elevation via fodhelper.exe/eventvwr.exe/computerdefaults.exe/sdclt.exe Rollback: reg add the same keys back to their prior values (commonly ConsentPromptBehaviorAdmin=5, PromptOnSecureDesktop=1, FilterAdministratorToken=1 is the Windows default - confirm your pre-change baseline before rolling back).
Playbook D — Falcon Custom IOA for Confirmed Hashes and Masquerade Path (Detect Mode)
Prerequisites: Falcon Custom IOA rule authoring rights. Reboot required: No. # Falcon Console -> Endpoint Security -> Custom IOA Rules -> New Rule Group # "MovieReaper Defense" (Detect severity: High) # Rule 1 - Confirmed hash execution # Rule Type: Process Creation # Field: MD5 Hash Operator: matches any of the 7 confirmed hashes (see Sec.11) # Action: Detect (do not enable Block until 14-day FP review is clean) # Rule 2 - Exact masquerade path # Rule Type: Process Creation # Field: Image Filename Operator: matches (regex) # Pattern: .*\\ProgramData\\Microsoft\\Windows\\Telemetry\\msedge\.exe$ # Action: Detect Rollback: Disable or remove the rule group in the Falcon console; no endpoint state change to undo.
Containment Runbook
Phase 1 — Isolate
- Network-isolate (Falcon Network Containment) any host firing Q1 (confirmed hash), Q3/Q4 (Telemetry-folder drop/execution), or Q7/Q8 (confirmed C2 contact).
- Treat any Q9 (Solana RPC) hit on a host with no documented blockchain-development role as presumptively malicious pending investigation.
- Preserve current process/network/DNS Falcon telemetry for affected hosts before further remediation.
Phase 2 — Eradicate
- Remove the persistence binary at
%ProgramData%\Microsoft\Windows\Telemetry\msedge.exeand confirm no autostart entry (Run key/scheduled task/service) still references it — the exact autostart mechanism is undocumented by either source, so check all three categories. - Terminate any remaining loader/implant processes matching the confirmed hash set.
- Because the final-stage implant is a 21-command file manager with file read/copy/preview capability, treat any host that reached Stage 4 as a potential data-exposure incident, not just a malware infection — inventory what files were accessible to the compromised user account.
- Rotate credentials for any account active on an affected host during the suspected dwell window, prioritizing accounts with access to sensitive file shares (the file-manager implant's core capability is file access and exfiltration staging).
Phase 3 — Recover
- Validate backup integrity from a copy predating the earliest suspected compromise indicator on the host.
- Re-image affected endpoints where the persistence/UAC-bypass chain fully completed, rather than relying on in-place remediation of an undocumented autostart mechanism.
- Re-verify Playbooks B and C (WDAC Telemetry-folder deny, UAC hardening) are in effect on rebuilt hosts before returning them to production.
- Monitor for renewed activity from the same actor — Kaspersky traces this group's activity back to October 2025 with an evolving toolset, so recurrence with a modified loader/path is plausible.
Detection Coverage Map
| Attack Chain Step | Covering Query / Control | Status |
|---|---|---|
| Resource Development (itorrents.org compromise) | None — outside org telemetry; policy/awareness only (§13) | Gap — not endpoint-detectable by design |
| Initial Access / Execution (torrent download + run) | Q1 (hash), Q2 (torrent-client child process) | Covered |
| Stage 1 Loader / C2 | Q7 (DNS), Q8 (network) — both IOA candidates | Covered |
| Stage 2 Shellcode / Solana C2 Resolution | Q9 (behavioral — durable, medium FP) | Partial — behavioral only, requires org-specific baseline tuning |
| Stage 3 UAC Bypass | Q10 (generic LOLBin proxy hunt — exact method undocumented) | Partial — low-medium confidence, high FP without correlation |
| Stage 3 Persistence (Telemetry masquerade) | Q3 (write-time), Q4 (exact path, IOA), Q5/Q6 (variant catch) | Covered |
| Persistence autostart mechanism | None — mechanism not named in either source | Gap — flagged rather than guessed; re-check sources for future disclosure |
| Named mutexes | Non-CQL only (§7) — no native Falcon field | Gap — mechanically cannot be a CQL field; routed to RTR/Handle.exe instead |
| Stage 4 File Manager / Collection | No dedicated query — covered indirectly by sustained C2 beaconing from the masquerade process (Q4 correlated with ongoing network activity) | Partial — command-level telemetry for the 21-command protocol is not documented |
| Exfiltration | None dedicated — implant uses the established C2 channel; no distinct exfil-protocol signature published | Gap — monitor Q7/Q8 network volume as the best available proxy |
Hunt Summary Ticket
TICKET: HUNT-MOVIEREAPER-2026-09-21
THREAT: MovieReaper (torrent-delivered, modular, multi-stage loader with
Solana-blockchain C2 resolution)
VERSION: 2026-09-21
STATUS: Ready for tenant validation
PRIORITY: High
OWNER: ai@hutzley.com
SUMMARY:
MovieReaper is a previously unknown crimeware framework disclosed by
Kaspersky on Securelist on 2026-09-17 (pack built 2026-09-21), distributed
via a compromise of the shared itorrents.org torrent-file repository. The
four-stage chain (loader -> shellcode -> UAC-bypass persistence -> file
manager) is notable for using the Solana blockchain's getAccountInfo RPC
as takedown-resistant storage for its second-stage C2 address - a novel,
durable behavioral signal independent of any single domain/IP. Several
hundred victims (individuals and organizations) identified across
Europe, Asia, and Africa.
SCOPE:
10 CQL hunt queries (4 IOA candidates: Q1, Q3, Q4, Q7), 5 native/non-CQL
checks (including an explicit mutex-telemetry gap), packaged alert
content for 2 scheduled searches, tiered hardening (3 immediate / 3
near-term / 3 strategic controls), 4 deployable playbooks, 3-phase
containment runbook.
NEXT ACTIONS:
1. Validate all field names against your Falcon tenant's schema before
enabling any Custom IOA in Prevent mode.
2. Deploy Playbook A (network block) and Playbook B (WDAC Telemetry-folder
deny) immediately - lowest friction, highest leverage.
3. Stand up or confirm a baseline of approved blockchain-RPC-calling
hosts so Q9 is actionable rather than noisy from day one.
4. Re-check Securelist and IT-Connect for hash/C2 updates or the missing
31st-hash correction - none exists as of 2026-09-21.
5. Treat any host that reached Stage 4 (file manager) as a potential
data-exposure incident, not just a malware infection - see Sec.15.
Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| T1 | Kaspersky Securelist — MovieReaper: Trojan attack via movie torrents, including The Odyssey | Primary technical and IOC source: full attack chain, hashes, mutexes, file path, domains/IPs, Solana account/program address | 2026-09-21 |
| T2 | IT-Connect — iTorrents.org Compromised to Spread a Windows Malware Loader Instead of Movies | Independent corroboration: compromise mechanism, chain shape, domain/IP, masquerade path, 21-command capability, victim geography | 2026-09-21 |
MovieReaper-Torrent-Solana-Hunt-sources/ alongside this file for provenance validation. A third candidate source (gbhackers.com) was deliberately excluded — see §2.