Exodus Wallet Installer RAT

Trojanized Exodus cryptocurrency wallet MSI hiding a modular, memory-resident RAT with an Azure Table Storage dead-drop C2. Observed across four unrelated organizations, late July through mid-August 2026.
Threat
Exodus Wallet Installer RAT (unnamed actor)
Severity
HIGH / ACTIVE
Type
Trojanized installer · modular RAT · stealer
Access
TLP:CLEAR
Version
v0.1 (Draft) · 2026-09-15
Author
HuntPack
Confidence
High (single named primary source, two independent corroborating sources)
01

Executive Summary

A trojanized Exodus cryptocurrency wallet installer delivers a genuine, working copy of Exodus Wallet 24.33.4 with three files modified so the wallet window never displays. Behind that silent wallet sits a JavaScript-based reflective PE loader that AES-256-CBC-decrypts a roughly 10 MB, six-module RAT entirely in memory: remote command execution, file management, browser credential and cookie theft, a SOCKS proxy, hidden VNC, and a Lua scripting engine. The attacker's objective is full interactive access and a pivot point, not just wallet contents: the module set (hidden VNC plus SOCKS plus a browser stealer) is a hands-on-keyboard toolkit wearing a crypto-wallet disguise.

Delivery uses two confirmed vectors, a .pdf.js double-extension file opened via Windows Script Host, and a JavaScript file staged inside a ZIP presented as a software update, plus one documented-but-unobserved search-ms: WebDAV redirect capability. Both confirmed chains show a real decoy PDF opening from a legitimate CDN while msiexec silently installs the ~210 MB MSI to %APPDATA%\ExdBackupTool\, a path no legitimate Exodus install ever uses. Persistence is two scheduled tasks registered through the Task Scheduler COM API (no schtasks.exe command line to catch): ExdBackupTool relaunches the wallet hourly, and INetHealth repeatedly blanks the user's proxy settings to keep command-and-control traffic direct. C2 itself is a dead-drop pattern against Azure Table Storage, blending into infrastructure that sits on nobody's blocklist.

The highest-value defensive angle is not the atomic indicators, which the operator's own tooling proves rotate every rebuild, but the structural behaviors that survive a rebuild: a per-user Electron wallet launched through explorer.exe from %APPDATA% instead of %LOCALAPPDATA%\exodus, an hourly svchost.exe-parented relaunch, and a scheduled task quietly re-clearing proxy configuration. Those four shapes are what this pack hunts hardest.

Defender priority: any host that shows the %APPDATA%\ExdBackupTool\Exodus.exe path, the ExodusHelper mutex, or the hourly svchost.exe-launched relaunch pattern should be treated as a full interactive compromise, not a malware infection. Hidden VNC and a SOCKS module mean an operator may have had hands-on-keyboard access; the browser module means saved credentials and session cookies must be treated as stolen, so revoke active sessions and rotate credentials rather than only resetting passwords.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
Tier 1Huntress, "The Crypto Wallet That Never Opened"Primary vendor writeup with full technical teardown: delivery chains, MSI internals, obfuscation method, AES key/IV, six RAT modules, C2 dead-drop mechanics, all atomic IOCs, and mitigation guidance.Yes, full detail
Tier 2GBHackers, "Trojanized Exodus Wallet Installer Deploys RAT"Independent corroboration of the MSI SHA-256, the decrypted RAT SHA-256, the install path, and both scheduled task names.Partial, corroboration only
Tier 2Cyberpress, "Malicious Exodus Installer Steals Browser Credentials"Third independent corroboration of the MSI filename, MSI SHA-256, install path, and the search-ms: WebDAV delivery capability.Partial, corroboration only

Decisions and exclusions

  • No prompt-injection attempts were found in any fetched source. All three pages returned straightforward technical reporting with no embedded instructions directed at an automated reader.
  • Huntress explicitly lists 45 domains (pattern api./cdn./static./app./auth. prefixed on small-business domains) that were configured in the binary but never contacted during detonation, and cautions that the domain owners "may themselves be victims." None of those 45 domains are shipped as indicators in this pack; they are documented in the source snapshot only, as unconfirmed capability rather than confirmed infrastructure.
  • Huntress explicitly instructs readers not to treat api.blockchain.info, api.moonpay.com, api.rampnetwork.com, api.segment.io, and www.googleapis.com as indicators, since those are genuine Exodus API endpoints sitting in the same region of the decrypted file. Excluded from this pack on the same basis.
  • A social-media summary post (DFIR Radar on X) surfaced in search results but was not fetched or cited; its content is a paraphrase of the same Huntress writeup and adds no independently verifiable detail, so it is excluded rather than treated as a fourth source.
  • Several additional syndication sites (Substack, cybersecuritynews.com, cryptika.com, hendryadrian.com, cyberpress's sister OffSeq radar page) appeared in search results and were not fetched; they were not needed once three independent fetches corroborated the atomic indicators used at prevent/critical severity.
  • The dll4_browser.dll SHA-256 required correction against the raw source HTML: an early text-extraction pass dropped two characters from the hash. The value shipped in this pack (7e74f6e2eb7a17a8d25bb322a14c392c9d92c6ab29fc66b50221da134a1bdba8) was re-verified directly against the raw <code> span in the Huntress page and is a full, valid 64-character SHA-256.
03

Hunt Brief & Attack Chain

Hunt hypotheses

  1. H1 (high): A user opens a .pdf.js double-extension file or a JavaScript file staged out of a ZIP, and Windows Script Host executes it as a child of chrome.exe or explorer.exe. Falcon telemetry: ProcessRollup2.
  2. H2 (high): The dropper silently installs an unsigned, oversized MSI via msiexec /i ... /quiet /norestart from %TEMP%, using a two-letter-plus-four-digit filename convention. Falcon telemetry: ProcessRollup2.
  3. H3 (high): The trojanized wallet runs from %APPDATA%\ExdBackupTool\Exodus.exe, launched through explorer.exe so the process tree looks like a manual double-click, instead of the legitimate %LOCALAPPDATA%\exodus path. Falcon telemetry: ProcessRollup2.
  4. H4 (high): Persistence is registered as two scheduled tasks, ExdBackupTool and INetHealth, created via the Task Scheduler COM API rather than schtasks.exe. Falcon telemetry: ScheduledTaskRegistered.
  5. H5 (high): Every hour, at roughly the same minute, svchost.exe relaunches Exodus.exe out of the trojanized path as the Task Scheduler fires. Falcon telemetry: ProcessRollup2.
  6. H6 (medium): The INetHealth payload runs as a hidden-window PowerShell command (conhost.exe --headless parenting powershell.exe -e <base64>) that clears ProxyEnable, ProxyServer, and AutoConfigURL. Falcon telemetry: ProcessRollup2 plus RegGenericValueUpdate.
  7. H7 (medium): The koffi FFI module the reflective loader depends on extracts a native .tmp.node module into %TEMP% at runtime. Falcon telemetry: PeFileWritten.
  8. H8 (high): The RAT beacons to an Azure Table Storage dead drop (lgapistorage123.table.core.windows.net, secondarily winapi.table.core.windows.net) from the trojanized wallet process rather than a browser. Falcon telemetry: DnsRequest.

Attack chain

StepTelemetryHunt Angle
1. Lure execution: .pdf.js double extension or ZIP-staged .jsProcessRollup2 (wscript.exe/cscript.exe)Q1, Q2
2. Decoy PDF fetched from Storyblok / law.georgetown.edu while MSI downloads to %TEMP%ProcessRollup2, NetworkConnectIP4Q3 (installer execution); decoy-CDN traffic itself is not a hunt signal, both hosts are legitimate
3. Silent MSI install: msiexec /i "%TEMP%\<name>.msi" /quiet /norestartProcessRollup2Q3
4. Install lands in %APPDATA%\ExdBackupTool\, wrong path for genuine ExodusProcessRollup2, FileOpenInfoQ4
5. LaunchExodus MSI custom action starts the wallet through explorer.exeProcessRollup2Q4
6. exodus_patch.js overrides BrowserWindow.show/focus/center, wallet never displaysNo direct Falcon event, in-process JS behaviorGap, covered indirectly by Q4/Q5 process-tree signal
7. keystorage.js reflective PE loader extracts koffi .tmp.node, decrypts and maps the RAT in memoryPeFileWrittenQ9
8. Named mutex ExodusHelper created as a single-instance guardNo Falcon mutex-creation event existsGap, documented in Coverage Map
9. Six RAT modules load in memory: cmd, fileman, browser, socks, vnc, scriptNo direct in-memory-module eventGap, hunt the resulting network/registry/process behavior instead
10. C2 dead drop against Azure Table StorageDnsRequestQ10
11. Persistence: ExdBackupTool task relaunches wallet hourly via svchost.exeScheduledTaskRegistered, ProcessRollup2Q5, Q6
12. Persistence: INetHealth task clears proxy settings on a scheduleScheduledTaskRegistered, ProcessRollup2, RegGenericValueUpdateQ5, Q7, Q8
13. Host recon: systeminfo run from inside the wallet processProcessRollup2Q12
14. Browser credential, cookie, and autofill theft; cookie wiper forces re-loginNo direct Falcon event for DPAPI access; hunt via dll4_browser hash and downstream account-abuse telemetryGap, IOC-based only (Section 10)
15. Known-bad infrastructure contact: us05[.]org / 35.212.159.20DnsRequest, NetworkConnectIP4Q11
04

Consolidated IOC Table

TypeValueConfidenceActionContextExpiry
sha256c513a7346484ee69a2931c4a89956ee50aa63e4366ef989315e669d8f10d7485highdetectTrojanized MSI (jn0101.msi label), 210,767,872 bytes, unsigned, 0/76 on VirusTotal. Corroborated by 3 sources.2027-03-15
sha2568c3b41ea5a85778145a6e5772bfee2eb0f8b027d0af199fb71a76dfb8bb29e5ahighdetectDecrypted modular RAT payload, memory-resident, never touches disk, not on VirusTotal. Corroborated by 2 sources.2027-03-15
sha256fdd376562aac4be64fb635546a61e1912ff2c353360db73d2c553dcbb5a44f54highdetectdll4_fileman.dll, remote file manager module. Single-source (Huntress).2027-03-15
sha2562f47cfbb13f7a8a2d30d287f4ddd974fabea6762ad9781d438eb53da41b4582dhighdetectdll4_socks.dll, SOCKS proxy module. Single-source (Huntress).2027-03-15
sha25684437d4239d2a3d90c4faad0a3c0630b2f61a40f7bbd12109bef74d7613b8756highdetectdll4_cmd.dll, remote shell module. Single-source (Huntress).2027-03-15
sha2565274e93e35586a341d14b50cdf8413d59c51fd94f32bdc70bfdfb77198367603highdetectdll4_script.dll, Lua execution engine module. Single-source (Huntress).2027-03-15
sha2567e74f6e2eb7a17a8d25bb322a14c392c9d92c6ab29fc66b50221da134a1bdba8highdetectdll4_browser.dll, Chrome/Edge/Firefox credential, cookie, and autofill theft plus cookie wiper. Single-source (Huntress); re-verified against raw source.2027-03-15
sha2565fe753945da0eaac2c2ef3845cba603dea6c3e8529fa581d7e0192f8af60391ahighdetectdll4_vnc.dll, hidden VNC on an invisible desktop. Single-source (Huntress).2027-03-15
domainus05.orgmediumdetect302-redirects to a search-ms: WebDAV URI; offline at Huntress's last check, so treat as perishable.2026-10-15
ipv435.212.159.20mediumdetectHosts jn0101.msi and resolves us05.org. Same infrastructure lifespan caveat as the domain.2026-10-15
domainlgapistorage123.table.core.windows.nethighhuntAzure Table Storage C2 dead drop, primary. Shared cloud infrastructure, hunt rather than blanket-block.2026-12-15
domainwinapi.table.core.windows.netmediumhuntAzure Table Storage C2 dead drop, secondary or staging. Only one table-creation request observed.2026-12-15
filenamejn0101.msimediumpivotTrojanized installer filename. Huntress explicitly notes this is a per-build label, not a stable indicator.2026-10-15
filenamejg0384.msimediumpivotTrojanized installer filename, second campaign variant. Same per-build-label caveat.2026-10-15
filenameExdBackupToolhighhuntInstall directory name and scheduled task name. Behavioral, not perishable.2027-03-15
filenameINetHealthhighhuntSecond scheduled task name, clears proxy settings. Behavioral, not perishable.2027-03-15
filenameExodusHelperhighhuntNamed mutex, single-instance guard for the in-memory RAT. No direct Falcon telemetry for mutex creation; hunt via the process-tree proxy in Q4/Q6.2027-03-15
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Windows endpoints, process executionProcessRollup2 / SyntheticProcessRollup2CriticalLow, core Falcon sensor telemetry
Windows endpoints, DNS resolutionDnsRequestHighLow, standard sensor telemetry
Windows endpoints, task schedulingScheduledTaskRegisteredHighMedium, COM-API-registered tasks bypass command-line-based detections; confirm this event fires for COM registrations in your tenant
Windows endpoints, registryRegGenericValueUpdate / AsepValueUpdateMediumMedium, proxy-key writes can be noisy; needs the TUNING exclusion in Q8
Windows endpoints, file writesPeFileWritten / NewExecutableWrittenMediumMedium, in-memory RAT modules themselves never touch disk; only the koffi native module does
Windows endpoints, network connectionsNetworkConnectIP4MediumLow, standard telemetry, but infrastructure IOCs are short-lived
Windows endpoints, named-object creation (mutex)No corresponding Falcon eventHighGap, cannot hunt ExodusHelper creation directly; use process-tree and relaunch-cadence proxies
Browser credential stores (Chrome/Edge/Firefox)No direct Falcon telemetry for DPAPI/credential-store accessHighGap, covered only by the dll4_browser hash and downstream account-abuse hunting, not by behavior
06

ATT&CK Mapping

TacticTechniqueNameObserved Behavior
Initial Access / ExecutionT1204.002User Execution: Malicious FileUser opens a .pdf.js file or a JS file staged out of a ZIP, believing it to be a document or update.
Defense EvasionT1036.007Masquerading: Double File Extension.pdf.js filename exploits Windows' default hidden-extensions setting.
ExecutionT1059.007Command and Scripting Interpreter: JavaScriptWindows Script Host executes the dropper JS directly.
Defense EvasionT1036.005Masquerading: Match Legitimate Name or LocationGenuine Exodus binary and UI files re-packaged and installed under a decoy directory name.
ExecutionT1218.007System Binary Proxy Execution: MsiexecPayload installed via msiexec /i ... /quiet /norestart.
Defense EvasionT1027Obfuscated Files or InformationString-splitting and hexadecimal-arithmetic obfuscation across exodus_patch.js, index.js, and keystorage.js.
Defense EvasionT1140Deobfuscate/Decode Files or InformationHardcoded AES-256-CBC key and IV decrypt the embedded RAT at runtime.
Defense EvasionT1620Reflective Code LoadingJavaScript-driven manual PE loader (VirtualAlloc, WriteProcessMemory, CreateThread via koffi FFI) maps and runs the RAT entirely in memory.
Defense EvasionT1564.003Hide Artifacts: Hidden WindowBrowserWindow.show/focus/center overridden so the wallet never renders; conhost.exe --headless hides the proxy-clearing PowerShell console.
PersistenceT1053.005Scheduled Task/Job: Scheduled TaskExdBackupTool and INetHealth tasks registered post-install.
Defense EvasionT1106Native APITasks registered via the Task Scheduler COM API rather than schtasks.exe, leaving no task-creation command line.
Defense EvasionT1112Modify RegistryProxyEnable, ProxyServer, and AutoConfigURL blanked under HKCU\...\Internet Settings.
DiscoveryT1016System Network Configuration DiscoveryC2 module calls WinHttpGetIEProxyConfigForCurrentUser before beaconing.
DiscoveryT1082System Information Discoverycmd.exe /c chcp 65001 >nul 2>&1 & systeminfo run from inside the wallet process.
Command and ControlT1102.002Web Service: Bidirectional CommunicationAzure Table Storage dead drop (tasking rows T_, result rows R_) instead of a direct beacon.
Command and ControlT1071.001Application Layer Protocol: Web ProtocolsC2 transport rides WinHTTP WebSockets over HTTPS to table.core.windows.net.
Command and ControlT1090.002Proxy: External Proxydll4_socks.dll turns the compromised host into a SOCKS relay.
Command and ControlT1219Remote Access Softwaredll4_vnc.dll creates a hidden, invisible desktop for interactive VNC access.
Credential AccessT1555.003Credentials from Password Stores: Credentials from Web Browsersdll4_browser.dll harvests Chrome, Edge, and Firefox saved credentials and autofill data.
Credential AccessT1539Steal Web Session CookieSame module steals session cookies and includes a cookie wiper to force re-authentication.
07

Native Audit-Log Hunts

These checks are useful redundancy where Sysmon, Windows auditing, or PowerShell logging run alongside Falcon, or as a fallback where CQL coverage has a documented gap (Section 5).

Task Scheduler operational log

Microsoft-Windows-TaskScheduler/Operational, Event ID 106 (task registered). Filter TaskName for ExdBackupTool or INetHealth. This log captures COM-API task registration even when no schtasks.exe process ever runs, which is the exact gap the actor is exploiting.

PowerShell Script Block Logging

Windows Event ID 4104. Even with an -EncodedCommand base64 blob, script block logging records the decoded content, which will surface the literal InternetSetOption P/Invoke definition and the ProxyEnable/ProxyServer/AutoConfigURL registry writes that make up the INetHealth payload.

Registry auditing on Internet Settings

Windows Security Event ID 4657 (or 4663 with an object-access SACL configured) on HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings, watching ProxyEnable, ProxyServer, and AutoConfigURL. Requires a SACL to be present; verify one is configured before relying on this as a detection source.

MSI installer event log

Application log, source MsiInstaller, Event IDs 1040/1042 (install start/end) and 11707 (success). Cross-reference the install directory captured in these events against %LOCALAPPDATA%\exodus; anything installing Exodus-branded content to %APPDATA% instead is the same signal as Q4, from a different log source.

Sysmon fallback (environments without full Falcon coverage)

Sysmon Event ID 1 (process create) reproduces Q1, Q2, Q4, Q6, and Q12 using Image, ParentImage, and CommandLine in place of the Falcon field names. Sysmon Event ID 11 (file create) reproduces Q9 for the .tmp.node koffi module.

08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Double-extension .pdf.js executed by Windows Script Host
CONF HIGHFP LOWCOST LOW

Looks for: wscript.exe or cscript.exe launched against a filename containing the .pdf.js double extension, the confirmed initial-access chain. IOA candidate: yes.

// HUNT: Double-extension .pdf.js executed by Windows Script Host
// MITRE: T1204.002, T1036.007, T1059.007
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: rare; legitimate files almost never carry a .pdf.js double extension
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
FileName=/^(wscript|cscript)\.exe$/i
CommandLine=/\.pdf\.js/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
Q2 · ZIP-staged JS executed from Explorer's compressed-folder view
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: wscript.exe or cscript.exe, parented by explorer.exe, run against a path containing Explorer's .zip.<n>\ staging fragment, the fingerprint left when a user opens a file inside a ZIP without extracting it first. FP: legitimate ZIP-hosted install scripts (rare but real) can trigger this; correlate with the file's parent archive name before escalating. IOA candidate: no, investigate-only.

// HUNT: ZIP-staged JS executed from Explorer's compressed-folder view
// MITRE: T1204.002, T1059.007
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: legitimate vendor-distributed install scripts occasionally ship as a .js inside a .zip
// TUNING: exclude known internal software-distribution ZIPs by SHA256 of the parent archive once identified
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
FileName=/^(wscript|cscript)\.exe$/i
CommandLine=/\.zip\.\d+\\/i
ParentBaseFileName=/^explorer\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
Q3 · Silent MSI install matching the campaign naming and flag pattern
CONF HIGHFP MEDIUMCOST LOW

Looks for: msiexec.exe run from a two-letter-plus-four-digit-named MSI under a Temp path with the /quiet /norestart flag combination. FP: some legitimate enterprise software also silently installs from Temp with these flags; the naming-pattern regex narrows this considerably. IOA candidate: yes.

// HUNT: Silent MSI install matching the campaign naming and flag pattern
// MITRE: T1218.007
// CONF: high
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: some legitimate installers use /quiet /norestart from Temp; the [a-z]{2}\d{4}.msi naming narrows this to the observed campaign pattern
// TUNING: exclude known-good silent installers by publisher/hash once your baseline (Section 11) identifies them
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
FileName=/^msiexec\.exe$/i
CommandLine=/\\Temp\\[a-z]{2}\d{4}\.msi/i
CommandLine=/\/quiet\s+\/norestart/i
| table([@timestamp, aid, ComputerName, UserName, FileName, CommandLine])
Q4 · Trojanized Exodus install path, wrong location and re-parented launch
CONF HIGHFP LOWCOST LOW

Looks for: Exodus.exe running from %APPDATA%\ExdBackupTool\ instead of the genuine %LOCALAPPDATA%\exodus path, parented by explorer.exe. This is the single highest-confidence, lowest-noise signal in the pack. IOA candidate: yes, strong promotion candidate to prevent-mode.

// HUNT: Trojanized Exodus install path, wrong location and re-parented launch
// MITRE: T1036.005
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: none expected; legitimate Exodus never installs to %APPDATA%\ExdBackupTool\
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
ImageFileName=/\\AppData\\Roaming\\ExdBackupTool\\Exodus\.exe$/i
ParentBaseFileName=/^explorer\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, ImageFileName, ParentBaseFileName, CommandLine])
Q5 · Suspicious scheduled task registration, ExdBackupTool or INetHealth
CONF HIGHFP LOWCOST LOW

Looks for: scheduled task registration with either campaign task name. Catches the persistence step even when it is registered through the Task Scheduler COM API with no visible command line. IOA candidate: yes.

// HUNT: Suspicious scheduled task registration, ExdBackupTool or INetHealth
// MITRE: T1053.005, T1106
// CONF: high
// FP: low
// COST: low
// REQUIRES: ScheduledTaskRegistered
// FALSE POSITIVES: none expected; both task names are campaign-specific
// ⚠ validate in tenant: confirm ScheduledTaskRegistered fires for tasks created via the Task Scheduler COM API (not just schtasks.exe) on your sensor version
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/^ScheduledTaskRegistered$/
TaskName=/^(ExdBackupTool|INetHealth)$/i
| table([@timestamp, aid, ComputerName, UserName, TaskName, TaskExecutable])
Q6 · Hourly svchost-parented relaunch of the trojanized wallet
CONF HIGHFP LOWCOST LOW

Looks for: svchost.exe (the Task Scheduler service host) launching Exodus.exe out of the trojanized path, the telemetry signature of the ExdBackupTool task firing. IOA candidate: yes.

// HUNT: Hourly svchost-parented relaunch of the trojanized wallet
// MITRE: T1053.005
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: none expected; the install path itself is the malicious signal
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
ImageFileName=/\\AppData\\Roaming\\ExdBackupTool\\Exodus\.exe$/i
ParentBaseFileName=/^svchost\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, ImageFileName, ParentBaseFileName])
Q7 · Hidden-window PowerShell launched via conhost --headless
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: conhost.exe with --headless hosting an encoded PowerShell command. FP: Huntress explicitly notes conhost.exe --headless is a legitimate developer pattern for suppressing a console window, not inherently malicious on its own; this query is deliberately broad and needs the pivot to Q8 (proxy registry change) to raise confidence. IOA candidate: no, investigate-only.

// HUNT: Hidden-window PowerShell launched via conhost --headless
// MITRE: T1564.003, T1059.001, T1027
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: conhost.exe --headless is a legitimate developer technique for hiding a console window and is used outside this campaign
// TUNING: exclude known build/CI tooling that legitimately uses conhost --headless in your environment; escalate only when paired with a Q8 hit on the same host
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
FileName=/^conhost\.exe$/i
CommandLine=/--headless/i
CommandLine=/powershell/i
CommandLine=/-e(ncodedcommand)?\s/i
| table([@timestamp, aid, ComputerName, UserName, FileName, CommandLine])
Q8 · Proxy configuration tamper, ProxyEnable / ProxyServer / AutoConfigURL cleared
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: writes to the three Internet Settings proxy values that INetHealth blanks to force direct C2 egress. FP: legitimate GPO and SCCM proxy management also writes these values; scope by process context and correlate with Q7. IOA candidate: no, investigate-only.

// HUNT: Proxy configuration tamper, ProxyEnable / ProxyServer / AutoConfigURL cleared
// MITRE: T1112, T1016
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: RegGenericValueUpdate or AsepValueUpdate
// FALSE POSITIVES: Group Policy and SCCM proxy management legitimately write these same values on a change-control schedule
// TUNING: exclude writes from gpupdate.exe, gpscript.exe, and your SCCM client process; escalate only when the writing process is powershell.exe or conhost.exe outside a change window
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/RegGenericValueUpdate|AsepValueUpdate/
RegObjectName=/Internet Settings/i
RegValueName=/^(ProxyEnable|ProxyServer|AutoConfigURL)$/i
| table([@timestamp, aid, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue])
Q9 · koffi native module extracted to Temp (.tmp.node)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: a PE-format file written with the koffi extraction naming pattern, a GUID followed by .tmp.node. FP: other legitimate Node.js native-addon software (Electron apps using FFI libraries) can produce similarly named temp files; treat as a pivot signal rather than a standalone detection. IOA candidate: no, investigate-only.

// HUNT: koffi native module extracted to Temp (.tmp.node)
// MITRE: T1620, T1027
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: PeFileWritten or NewExecutableWritten
// FALSE POSITIVES: other Electron applications bundling native FFI addons can produce similarly named .tmp.node files
// TUNING: correlate the writing process against Q4's trojanized install path before escalating; on its own this is a pivot, not a verdict
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/PeFileWritten|NewExecutableWritten/
TargetFileName=/\.tmp\.node$/i
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, TargetFileName])
Q10 · C2 beacon to the Azure Table Storage dead drop
CONF HIGHFP LOWCOST LOW

Looks for: DNS resolution of either Azure Table Storage dead-drop hostname. FP: low; these are specific subdomains, not the parent table.core.windows.net service that many legitimate Azure customers use, so collision with unrelated Azure Storage usage is unlikely. IOA candidate: yes.

// HUNT: C2 beacon to the Azure Table Storage dead drop
// MITRE: T1102.002, T1071.001
// CONF: high
// FP: low
// COST: low
// REQUIRES: DnsRequest
// FALSE POSITIVES: none expected; these are specific storage-account subdomains, not the shared table.core.windows.net parent domain
// ⚠ validate in tenant: ContextBaseFileName population on DnsRequest events can vary by sensor version; confirm it is populated before relying on it for process attribution
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/^DnsRequest$/
DomainName=/^(lgapistorage123|winapi)\.table\.core\.windows\.net$/i
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, DomainName])
Q11 · Known delivery infrastructure contact (IP / domain)
CONF HIGHFP LOWCOST LOW

Looks for: DNS or network-connect activity to the confirmed delivery IP and domain. Perishable: Huntress confirmed this domain was already offline at time of publication; treat any hit as historical unless corroborated by a fresh source. IOA candidate: no, investigate-only, atomic and short-lived.

// HUNT: Known delivery infrastructure contact (IP / domain)
// MITRE: T1071.001
// CONF: high
// FP: low
// COST: low
// REQUIRES: DnsRequest, NetworkConnectIP4
// FALSE POSITIVES: none expected while active; the domain was already offline at publication, so a hit is likely historical
// LOOKBACK: 30d (this indicator is perishable; widen the window once to sweep for historical hits, then narrow back to 7d)
#event_simpleName=/DnsRequest|NetworkConnectIP4/
(DomainName = "us05.org" or RemoteAddressIP4 = "35.212.159.20")
| table([@timestamp, aid, ComputerName, UserName, DomainName, RemoteAddressIP4])
Q12 · Host recon spawned from the trojanized wallet process
CONF HIGHFP LOWCOST LOW

Looks for: cmd.exe or systeminfo.exe parented directly by Exodus.exe, the recon step the RAT runs after establishing C2. Legitimate Exodus never spawns child processes of this kind. IOA candidate: yes.

// HUNT: Host recon spawned from the trojanized wallet process
// MITRE: T1082
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2 / SyntheticProcessRollup2
// FALSE POSITIVES: none expected; the genuine Exodus wallet does not spawn cmd.exe or systeminfo.exe as children
// LOOKBACK: 7d (set via console time picker)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
ParentBaseFileName=/^Exodus\.exe$/i
FileName=/^(cmd|systeminfo)\.exe$/i
CommandLine=/chcp 65001/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
09

CrowdStrike Custom IOA Recommendations

Seven of the twelve hunt queries are strong Custom IOA candidates: stable behavioral patterns with low expected false-positive rates that do not depend on perishable atomic indicators.

QueryIOA NamePatternExclusionsDeployment Path
Q1DETECT: PDF.JS Double-Extension WSH Execution (Exodus RAT)wscript.exe/cscript.exe with CommandLine containing .pdf.jsNone identifiedInvestigate 14 days, then promote to Detect
Q3DETECT: Silent MSI From Temp Matching Campaign Naming (Exodus RAT)msiexec.exe, Temp-path MSI matching [a-z]{2}\d{4}.msi, /quiet /norestartKnown internal silent-install tooling, once baselinedInvestigate 14 days, then promote to Detect
Q4PREVENT: Exodus Wallet Wrong Install Path (ExdBackupTool)Exodus.exe running from %APPDATA%\ExdBackupTool\None identifiedInvestigate 7 days, then promote directly to Prevent; this pattern cannot legitimately fire
Q5DETECT: ExdBackupTool / INetHealth Scheduled Task RegistrationScheduledTaskRegistered, TaskName in {ExdBackupTool, INetHealth}None identifiedInvestigate 7 days, then promote to Detect
Q6DETECT: Hourly svchost-Launched ExdBackupTool Relaunchsvchost.exe launching Exodus.exe from the trojanized pathNone identifiedInvestigate 14 days, then promote to Detect
Q10DETECT: Azure Table Storage Dead-Drop Resolution (Exodus RAT)DnsRequest to lgapistorage123 or winapi table.core.windows.net subdomainsNone identifiedInvestigate 14 days, then promote to Detect
Q12DETECT: Recon Child Process From Exodus.execmd.exe/systeminfo.exe parented by Exodus.exe with chcp 65001None identifiedInvestigate 14 days, then promote to Detect

Alert & triage package (representative: Q4, the highest-confidence detection)

Scheduled Search name: DETECT: Exodus Wallet Wrong Install Path (ExdBackupTool)

Scheduled Search description: Fires when Exodus.exe runs from %APPDATA%\ExdBackupTool\ instead of the genuine %LOCALAPPDATA%\exodus path. This path is exclusive to the trojanized installer; there is no legitimate reason for it to exist on a host.

Alert email subject: [CRITICAL] Detection: Exodus Wallet Installer RAT, trojanized wallet path observed

Alert email body: A host has executed Exodus.exe from %APPDATA%\ExdBackupTool\, the install path used exclusively by the trojanized Exodus wallet installer that hides a six-module remote access trojan (hidden VNC, SOCKS proxy, browser credential theft, file management, remote shell, and Lua scripting). Treat this host as a full interactive compromise, not a malware infection: the module set implies an operator may have had hands-on-keyboard access, and any credentials or session cookies in the affected user's browsers should be considered stolen. Immediate actions: network-isolate the host in Falcon, do not power off (preserve volatile memory for potential RAT-module analysis), and open an incident. Escalate to IR on confirmed hit; this query has no known false-positive path.

Triage checklist

  1. Confirm the alerting process image path is exactly %APPDATA%\ExdBackupTool\Exodus.exe, not a legitimate Exodus path.
  2. Pull the host's process tree for the prior 30 days; look for the Q1/Q2 delivery pattern (wscript.exe/cscript.exe with a .pdf.js or .zip.<n>\ commandline) as patient zero.
  3. Check for the Q5 scheduled tasks (ExdBackupTool, INetHealth) and the Q6 hourly svchost relaunch pattern to establish persistence duration.
  4. Check for Q10/Q11 network activity to confirm active C2 versus a stale, uncommunicating install.
  5. Network-isolate the host in Falcon Console immediately; do not allow further C2 traffic.
  6. Identify every browser profile on the host and treat all stored credentials, cookies, and autofill data as compromised.
  7. Pull a full process listing and network-connection snapshot before remediation, in case hidden VNC or SOCKS activity needs later reconstruction.
  8. Escalate to IR for scoping across other hosts using Q4 and Q6 environment-wide (see pivot queries below).

Pivot queries

Host-scoped, confirm persistence:

#event_simpleName=/^ScheduledTaskRegistered$/
aid = "<affected-aid>"
TaskName=/^(ExdBackupTool|INetHealth)$/i
| table([@timestamp, TaskName, TaskExecutable])

Environment-wide, scope the campaign:

#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
ImageFileName=/\\AppData\\Roaming\\ExdBackupTool\\Exodus\.exe$/i
| groupBy([aid, ComputerName], function=count(as=Hits), limit=1000)
| sort(Hits, order=desc)

Environment-wide, confirm active C2:

#event_simpleName=/^DnsRequest$/
DomainName=/^(lgapistorage123|winapi)\.table\.core\.windows\.net$/i
| groupBy([aid, ComputerName], function=[count(as=Hits), selectFromMax(field=@timestamp, include=[DomainName])], limit=1000)

Investigate-only queries (Q2, Q7, Q8, Q9, Q11)

These stay as hunt/investigate queries rather than IOA candidates: Q2 and Q7 rely on patterns with legitimate-use overlap (ZIP-staged scripts, conhost --headless), Q8 overlaps with routine GPO/SCCM proxy management, Q9's .tmp.node pattern is a pivot signal shared with other Electron/FFI software, and Q11's atomic indicators are explicitly confirmed short-lived by the source. Run these on a schedule and hand hits to an analyst for correlation rather than auto-alerting.

10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,c513a7346484ee69a2931c4a89956ee50aa63e4366ef989315e669d8f10d7485,prevent,critical,2027-03-15,Trojanized Exodus Backup Tool MSI installer (jn0101.msi / jg0384.msi label variants); corroborated by 3 independent sources,campaign:ExodusWalletRAT
sha256,8c3b41ea5a85778145a6e5772bfee2eb0f8b027d0af199fb71a76dfb8bb29e5a,prevent,critical,2027-03-15,Decrypted modular RAT payload; memory-resident; corroborated by 2 independent sources,campaign:ExodusWalletRAT
sha256,fdd376562aac4be64fb635546a61e1912ff2c353360db73d2c553dcbb5a44f54,detect,high,2027-03-15,dll4_fileman.dll RAT file-manager module; single-source (Huntress),campaign:ExodusWalletRAT
sha256,2f47cfbb13f7a8a2d30d287f4ddd974fabea6762ad9781d438eb53da41b4582d,detect,high,2027-03-15,dll4_socks.dll RAT SOCKS proxy module; single-source (Huntress),campaign:ExodusWalletRAT
sha256,84437d4239d2a3d90c4faad0a3c0630b2f61a40f7bbd12109bef74d7613b8756,detect,high,2027-03-15,dll4_cmd.dll RAT remote command module; single-source (Huntress),campaign:ExodusWalletRAT
sha256,5274e93e35586a341d14b50cdf8413d59c51fd94f32bdc70bfdfb77198367603,detect,high,2027-03-15,dll4_script.dll RAT Lua execution module; single-source (Huntress),campaign:ExodusWalletRAT
sha256,7e74f6e2eb7a17a8d25bb322a14c392c9d92c6ab29fc66b50221da134a1bdba8,detect,high,2027-03-15,dll4_browser.dll RAT browser-credential theft module; single-source (Huntress),campaign:ExodusWalletRAT
sha256,5fe753945da0eaac2c2ef3845cba603dea6c3e8529fa581d7e0192f8af60391a,detect,high,2027-03-15,dll4_vnc.dll RAT hidden-VNC module; single-source (Huntress),campaign:ExodusWalletRAT
domain,us05.org,detect,high,2026-10-15,Delivery redirector; 302 to search-ms: WebDAV URI; offline at last vendor check,campaign:ExodusWalletRAT
ipv4,35.212.159.20,detect,high,2026-10-15,Hosts jn0101.msi and resolves us05.org,campaign:ExodusWalletRAT
domain,lgapistorage123.table.core.windows.net,detect,high,2026-12-15,Azure Table Storage C2 dead drop; primary,campaign:ExodusWalletRAT
domain,winapi.table.core.windows.net,detect,medium,2026-12-15,Azure Table Storage C2 dead drop; secondary or staging,campaign:ExodusWalletRAT
Behavioral Signaturesno atomic value required
Install path:      %APPDATA%\ExdBackupTool\Exodus.exe   (genuine Exodus uses %LOCALAPPDATA%\exodus)
Parent process:     explorer.exe -> Exodus.exe (initial launch), svchost.exe -> Exodus.exe (hourly relaunch)
Scheduled tasks:    ExdBackupTool (hourly relaunch), INetHealth (proxy-clearing)
Named mutex:        ExodusHelper (single-instance guard; no direct Falcon telemetry, hunt via process pattern)
Temp artifact:      %TEMP%\<guid>.tmp.node (koffi native module)
MSI metadata:       Manufacturer "Apple Inc", ProductName "Background Service" (both false)
MSI ProductCode:    {4046AD2B-3831-4011-AEAD-D98C5C9FD1EF}
MSI UpgradeCode:    {C4A1D8F2-3E5B-4C72-9A6D-1B8F0E27A3C9}
Registry remnant:   C:\Windows\Installer\SourceHash{4046AD2B-3831-4011-AEAD-D98C5C9FD1EF} (survives directory removal)
Recon command:      cmd.exe /c chcp 65001 >nul 2>&1 & systeminfo   (spawned from inside Exodus.exe)
Named Malware / Toolingreference only
jn0101.msi          Trojanized installer, campaign A (filename is a per-build label, not stable)
jg0384.msi          Trojanized installer, campaign B (filename is a per-build label, not stable)
exodus_patch.js     Suppresses the Electron window (BrowserWindow.show/focus/center override)
keystorage.js       Reflective PE loader; AES-256-CBC decrypts the RAT in memory
dll4_cmd.dll        Remote command execution, STDIN/STDOUT over pipes
dll4_fileman.dll    File browse / upload / download / delete / mkdir
dll4_browser.dll    Chrome/Edge/Firefox credential, cookie, autofill theft + cookie wiper
dll4_socks.dll      SOCKS proxy relay
dll4_vnc.dll        Hidden VNC on an invisible Windows desktop
dll4_script.dll     Lua scripting engine: injection, registry CRUD, DPAPI, raw sockets
@intelcorp/wmi-native-module   npm scope impersonating Intel; used for COM/WMI host recon
Hardening / Audit ChecklistPowerShell one-liners
\# Check whether known file extensions are hidden (1 = hidden, the risky default)
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name HideFileExt

\# Check WebClient (WebDAV) service state
Get-Service -Name WebClient | Select-Object Status, StartType

\# Check current proxy configuration for tamper
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | Select-Object ProxyEnable, ProxyServer, AutoConfigURL

\# Check Defender ASR rule state for the obfuscated-script rule
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids

\# Look for the trojanized install path directly
Test-Path "$env:APPDATA\ExdBackupTool\Exodus.exe"

\# Look for the two campaign scheduled tasks
Get-ScheduledTask | Where-Object { $_.TaskName -in @('ExdBackupTool','INetHealth') }

JSON indicator array

[
  {"type":"sha256","value":"c513a7346484ee69a2931c4a89956ee50aa63e4366ef989315e669d8f10d7485","desc":"Trojanized Exodus Backup Tool MSI"},
  {"type":"sha256","value":"8c3b41ea5a85778145a6e5772bfee2eb0f8b027d0af199fb71a76dfb8bb29e5a","desc":"Decrypted modular RAT payload"},
  {"type":"sha256","value":"fdd376562aac4be64fb635546a61e1912ff2c353360db73d2c553dcbb5a44f54","desc":"dll4_fileman.dll"},
  {"type":"sha256","value":"2f47cfbb13f7a8a2d30d287f4ddd974fabea6762ad9781d438eb53da41b4582d","desc":"dll4_socks.dll"},
  {"type":"sha256","value":"84437d4239d2a3d90c4faad0a3c0630b2f61a40f7bbd12109bef74d7613b8756","desc":"dll4_cmd.dll"},
  {"type":"sha256","value":"5274e93e35586a341d14b50cdf8413d59c51fd94f32bdc70bfdfb77198367603","desc":"dll4_script.dll"},
  {"type":"sha256","value":"7e74f6e2eb7a17a8d25bb322a14c392c9d92c6ab29fc66b50221da134a1bdba8","desc":"dll4_browser.dll"},
  {"type":"sha256","value":"5fe753945da0eaac2c2ef3845cba603dea6c3e8529fa581d7e0192f8af60391a","desc":"dll4_vnc.dll"},
  {"type":"domain","value":"us05.org","desc":"Delivery redirector, offline at last check"},
  {"type":"ipv4","value":"35.212.159.20","desc":"Delivery / resolver IP"},
  {"type":"domain","value":"lgapistorage123.table.core.windows.net","desc":"Azure Table Storage C2 dead drop, primary"},
  {"type":"domain","value":"winapi.table.core.windows.net","desc":"Azure Table Storage C2 dead drop, secondary"}
]
11

Detection Validation Gates

GateActionPass Criteria
Telemetry readyConfirm ProcessRollup2, DnsRequest, RegGenericValueUpdate, and ScheduledTaskRegistered are flowing for the target host population.All four event types present for the last 24h across >=95% of in-scope hosts.
Benign baselineRun Q1, Q2, Q3, and Q7 over a trailing 30-day window before enabling any prevent-mode IOA.Document every legitimate hit (build tooling, internal installers) as a named exclusion.
Positive testIn an isolated lab, reproduce each Q1-Q12 pattern with a benign stand-in (e.g. spawn wscript.exe against a dummy test.pdf.js; run msiexec against a harmless MSI with matching flags and naming).Every query fires against its lab reproduction.
Promotion criteriaMove a query from Investigate to Custom IOA prevent-mode.Zero false positives over a 14-day observation window (7 days for Q4, given near-zero legitimate-overlap risk).
12

Hardening, Tiered

Immediate (this week)
  • Enable file-extension visibility fleet-wide. Defeats the .pdf.js double-extension trick outright. MITRE M1038 (Execution Prevention). No formal CIS Benchmark item covers this specific registry key by name, but it is a standard Microsoft security guidance recommendation. ⚠ best-practice, no formal benchmark citation for this exact key.
  • Enable the Defender Attack Surface Reduction rule "Block execution of potentially obfuscated scripts" (GUID 5beb7efe-fd9a-4556-801d-275e5ffc04cc), in audit mode first. MITRE M1038, Microsoft Defender ASR reference documentation.
  • Disable the WebClient (WebDAV Client) service on hosts that do not need WebDAV, closing the documented search-ms: 302-redirect delivery path. MITRE M1042 (Disable or Remove Feature or Program).
  • Import the prevent/critical hashes (MSI, decrypted RAT payload) into Falcon IOC Management and the detect/high hashes (six DLL modules) for visibility. MITRE M1040 (Behavior Prevention on Endpoint).
Near term (1-4 weeks)
  • Deploy AppLocker or WDAC policy requiring signed MSI packages for interactive install, or at minimum alert on unsigned MSI execution. MITRE M1045 (Code Signing). This is a broad, threat-agnostic control that also blunts the next unsigned-installer campaign.
  • Restrict local scheduled-task creation to administrators via GPO and forward the Task Scheduler operational log (Event ID 106/140/141/200/201) to your SIEM, closing the COM-API blind spot that schtasks.exe-focused detections miss. MITRE M1047 (Audit) / M1028 (Operating System Configuration).
  • Enforce proxy configuration via GPO with a short refresh interval and alert on out-of-window changes to ProxyEnable/ProxyServer/AutoConfigURL. MITRE M1024 (Restrict Registry Permissions).
  • Roll out browser credential-store hardening (Chrome/Edge App-Bound Encryption, equivalent Firefox OS-level protection) to blunt dll4_browser-class theft even on an already-compromised host. MITRE M1041 (Encrypt Sensitive Information).
Strategic (1-3 months)
  • Coordinate with the cloud/network team on an egress-monitoring rule for *.table.core.windows.net that flags unsanctioned endpoint-originated traffic rather than blocking the shared Azure Storage service outright. MITRE M1037 (Filter Network Traffic).
  • Roll out Credential Guard and HVCI on managed Windows endpoints to raise the cost of in-memory reflective loading and credential harvesting generally. MITRE M1040, Microsoft Security Baseline guidance.
  • Require cryptocurrency wallet and other sensitive financial software to be installed only via managed software deployment (Intune/SCCM) from an internal, vetted repository rather than ad hoc downloads. MITRE M1038 / M1033 (Limit Software Installation). This is the structural fix for the initial-access vector, not just this campaign.
13

Deployable Playbooks

Playbook A: Enable file-extension visibility fleet-wide

Prerequisites: GPO management access; a test OU to pilot on before fleet-wide push.
Reboot required: No; takes effect on next Explorer restart or user logon.
Rollback: Set the value back to 1 (or remove the GPO) and restart Explorer; no data loss risk.
\# Deploy via GPO Preference or login script; per-user HKCU value
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name HideFileExt -Value 0
Stop-Process -Name explorer -Force   \# restarts Explorer to apply immediately for the interactive session

Playbook B: Enable the obfuscated-script ASR rule (audit mode first)

Prerequisites: Microsoft Defender Antivirus active on the endpoint; Intune or GPO for fleet deployment; a 7-14 day audit-mode observation window before switching to block.
Reboot required: No.
Rollback: Set the rule action back to Disabled (0); takes effect immediately, no persistent state changed.
\# Audit mode first
Set-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc -AttackSurfaceReductionRules_Actions AuditMode
\# After a clean audit window, switch to enforced
Set-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc -AttackSurfaceReductionRules_Actions Enabled
\# Rollback
Set-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc -AttackSurfaceReductionRules_Actions Disabled

Playbook C: Disable the WebClient (WebDAV) service

Prerequisites: Confirm no line-of-business application on the target hosts depends on WebDAV (mapped WebDAV drives, some SharePoint-via-Explorer workflows). Pilot on a non-critical OU first.
Reboot required: No; service restart is sufficient.
Rollback: Re-enable and start the service; no persistent state is lost since WebDAV mounts are re-established on demand.
\# Disable
Set-Service -Name WebClient -StartupType Disabled
Stop-Service -Name WebClient -Force
\# Rollback
Set-Service -Name WebClient -StartupType Manual
Start-Service -Name WebClient

Playbook D: Eradication script, confirmed-compromised host

Prerequisites: Host already network-isolated in Falcon; run only after evidence collection per the Containment Runbook (Section 14). Run as SYSTEM or an account with rights over the affected user profile.
Reboot required: Recommended after cleanup to clear any in-memory RAT modules still resident in a running Exodus.exe process.
Rollback: None required; this script only removes attacker-installed artifacts. If the user legitimately wants Exodus Wallet, reinstall it fresh from the vendor's official site to the standard %LOCALAPPDATA%\exodus path afterward.
\# Stop the trojanized wallet process
Get-Process -Name Exodus -ErrorAction SilentlyContinue | Stop-Process -Force

\# Remove both campaign scheduled tasks
Unregister-ScheduledTask -TaskName 'ExdBackupTool' -Confirm:$false -ErrorAction SilentlyContinue
Unregister-ScheduledTask -TaskName 'INetHealth' -Confirm:$false -ErrorAction SilentlyContinue

\# Remove the install directory (per-user path; run once per affected profile)
Remove-Item -Path "$env:APPDATA\ExdBackupTool" -Recurse -Force -ErrorAction SilentlyContinue

\# Restore proxy settings per your organization's standard GPO-managed values, then force re-apply
gpupdate /target:user /force

\# Note: the MSI SourceHash registry remnant under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer
\# survives directory removal per the source reporting; verify it no longer resolves to a live install
\# before considering the MSI uninstall registration fully cleaned.
14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the host in Falcon immediately. Do not power off; preserve volatile memory. Block the confirmed delivery IP/domain and the Azure Table Storage dead-drop hostnames at the proxy/firewall where feasible (note: the Azure hostnames are shared infrastructure, prefer alert-and-review over blanket block per Section 12).SOC / IR on-callFalcon isolation confirmation, network-connection snapshot pre-isolation
EradicateRun Playbook D: kill the Exodus.exe process tree, remove both scheduled tasks, delete the %APPDATA%\ExdBackupTool\ directory, verify the MSI SourceHash registry remnant, and force a GPO refresh to restore proxy settings.IR / endpoint engineeringPlaybook D execution log, before/after Get-ScheduledTask and Test-Path output
RecoverRotate all credentials and revoke active sessions for every account used in a browser on the affected host; do not rely on a password reset alone, since stolen session cookies survive it. Reissue any API keys or secrets found in browser-stored autofill or extensions. Reimage the host if hidden-VNC or SOCKS-proxy activity is confirmed in the investigation. Monitor the host and the affected user's accounts for 30 days using Q4, Q6, and Q10.IR / identity team / affected user's managerCredential-rotation confirmation, 30-day monitoring log, closure report
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1204.002 / T1036.007Double-extension .pdf.js lure executionQ1YesGood
T1204.002ZIP-staged JS executionQ2NoPartial
T1218.007Silent MSI installQ3YesGood
T1036.005Wrong-path trojanized installQ4YesGood
T1620In-process reflective PE loading of the RATNone (in-process JS behavior, no discrete Falcon event)NoGap
T1027Named mutex ExodusHelper (single-instance guard)None (no Falcon mutex-creation event)NoGap
T1620 (koffi artifact).tmp.node native module extractionQ9NoPartial
T1053.005 / T1106ExdBackupTool / INetHealth task registrationQ5YesGood
T1053.005Hourly svchost-launched relaunchQ6YesGood
T1564.003 / T1059.001Hidden-window PowerShell (INetHealth payload)Q7NoPartial
T1112 / T1016Proxy configuration tamperQ8NoPartial
T1102.002 / T1071.001Azure Table Storage C2 dead dropQ10YesGood
T1071.001 (delivery infra)Known IP/domain contactQ11NoPartial (atomic, perishable)
T1082Recon command from wallet processQ12YesGood
T1555.003 / T1539Browser credential, cookie, autofill theftNone (no Falcon telemetry for DPAPI/credential-store access)NoGap, IOC-hash-based coverage only (Section 10)
T1090.002SOCKS proxy relay module in useNone (would surface as anomalous outbound connection volume, not a discrete event)NoGap
T1219Hidden VNC module in useNone (invisible-desktop VNC has no discrete Falcon event)NoGap

Validation-gate summary: telemetry readiness, benign baselining, positive lab testing, and promotion criteria are detailed in Section 11. Do not enable prevent-mode on any IOA candidate before its 14-day (7-day for Q4) clean observation window completes.

16

Hunt Summary Ticket

TITLE:      Hunt for Exodus Wallet Installer RAT (trojanized MSI, modular in-memory RAT)
SEVERITY:   High / Active
SCOPE:      Windows endpoints; crypto-wallet users and general user population (delivery does not require crypto interest, only opening a lure file)
HYPOTHESIS: A trojanized Exodus wallet installer is running on one or more hosts, installed via a
            .pdf.js or ZIP-staged JS lure, hiding a six-module memory-resident RAT with hidden VNC,
            SOCKS proxy, and browser credential theft, persisting via two scheduled tasks and
            beaconing to an Azure Table Storage dead drop.
QUERIES:    Q1-Q12 (Section 8); IOA candidates Q1, Q3, Q4, Q5, Q6, Q10, Q12 (Section 9)
DO FIRST:   Run Q4 and Q6 environment-wide. Both are near-zero-FP and directly confirm or rule out
            the trojanized install path. Then run Q10 to check for active C2.
FINDINGS:   [populate after hunt execution]
GAPS:       No Falcon telemetry for named-mutex creation (ExodusHelper), in-process reflective PE
            loading, or browser DPAPI/credential-store access. Covered indirectly via process-tree
            proxies and IOC-hash matching; see Section 15.
ACTIONS:    Deploy Q4 and Q6 to prevent-mode after a 7-day clean baseline (Section 11). Deploy the
            remaining IOA candidates after a 14-day clean baseline. Roll out Immediate-tier hardening
            (Section 12) this week regardless of hunt findings.
OWNER:      HuntPack
VERSION:    v0.1 · 2026-09-15
17

Changelog

v0.12026-09-15Initial gold-build via the huntpack-agent-v2 six-stage pipeline (web-hunter-v2 → threat-hunter-v2 → crowdstrike-logscale-v3 → alert-builder-v2 → threat-hardening-v2 → review-v2). 12 CQL hunt queries, 7 Custom IOA candidates, tiered hardening across 3 tiers, 4 deployable playbooks, and a phased containment runbook. Sources: Huntress (primary) plus GBHackers and Cyberpress (independent corroboration). One hash (dll4_browser.dll) corrected against raw source HTML during authoring.
18

References

TierSourceUsed ForAccess Date
Tier 1 (Primary)Huntress: "The Crypto Wallet That Never Opened: Tampered Exodus Installer Hides a Modular RAT" (published 2026-09-01)Full technical detail: delivery chains, MSI internals, obfuscation and decryption method, all six RAT modules, C2 mechanics, complete IOC set, mitigation guidance2026-09-15
Tier 2 (Corroborating)GBHackers: "Trojanized Exodus Wallet Installer Deploys RAT to Steal Browser Credentials and Cookies"Second-source confirmation of MSI SHA-256, RAT payload SHA-256, install path, and scheduled task names2026-09-15
Tier 2 (Corroborating)Cyberpress: "Malicious Exodus Installer Steals Browser Credentials and Turns PCs Into SOCKS Proxies"Third-source confirmation of MSI filename, MSI SHA-256, install path, and the search-ms: WebDAV delivery capability2026-09-15