OXLOADER → CastleStealer — Node.js Malvertising Loader (REF8372)

Russian-speaking, financially-motivated malvertising crew loads a heavily-obfuscated Windows loader (OXLOADER) via fake Node.js installers, dropping the CastleStealer .NET infostealer.
Threat
OXLOADER / CastleStealer
Severity
ACTIVE ITW
Type
Loader / Infostealer
Initial Access
Malvertising (Google Ads)
Version
v0.2 · 2026-06-24
Author
HuntPack
Confidence
High (vendor-attributed)
01

Executive Summary

OXLOADER (Elastic Security Labs campaign REF8372) is a previously-unreported Windows loader distributed through malicious Google Ads that impersonate the Node.js installer. Victims in the US searching for legitimate Node.js are redirected to a lookalike landing page, download a batch package (BATPackageBuilderSetup.bat) that renders a fake install wizard, and silently fetch a Storj-hosted next-stage executable. That executable — OXLOADER — elevates via a Start-Process -Verb RunAs UAC prompt, runs an array of anti-analysis checks, then reflectively loads CastleStealer, a .NET information stealer that harvests browser, wallet, and credential data.

The loader is built for stealth: control-flow flattening, opaque predicates, mixed Boolean-Arithmetic (MBA) obfuscation, self-modifying decryption stubs, abuse of the PE .reloc section to stage shellcode, a DonutLoader wrapper for in-memory .NET execution, and Chaskey-LTS payload encryption. The actor is assessed Russian-speaking and financially motivated — it explicitly skips machines in the CIS region and with Russian locale (LANGID 0x419).

The best defensive angle is the delivery seam: a fake-installer batch script spawning powershell.exe that downloads from link.storjshare.io and re-launches a freshly-dropped EXE with -Verb RunAs. That process lineage is rare in benign software installs and gives a high-fidelity, low-FP catch before the stealer ever runs.

Defender priority: Hunt for powershell.exe downloading from *.storjshare.io and any process re-launching a just-written EXE with -Verb RunAs. Block the published C2 IPs (89.124.95.161, 89.124.115.82) and the malvertising domains, and load the OXLOADER/CastleStealer hashes as prevent IOCs.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
1Elastic Security Labs — OXLOADER deep-diveCampaign REF8372; full IOC set (hashes, Storj URLs, C2 IPs), anti-VM checks, obfuscation chain, DonutLoader + Chaskey-LTSYes
1The Hacker News — OXLOADER coverage (2026-06-22)Node.js malvertising lure, Russian-speaking financially-motivated actor, CastleStealer linkage to CastleLoader / BackgroundFixYes
2Cyberpress — "Fake Node.js Ads Spread OXLOADER and CASTLESTEALER"Corroborates Node.js installer impersonation and Google Ads deliveryPartial

Atomic IOCs in this pack (hashes, domains, C2 IPs) are carried directly from the Elastic Security Labs appendix. No IOC here is inferred or fabricated — see §18 References for source mapping.

03

Hunt Brief & Attack Chain

Hunt Hypotheses (fidelity-ordered)

  1. H1 (high): A fake-installer batch/PowerShell chain downloads a payload from *.storjshare.io — visible in ProcessRollup2 command lines. Very low FP.
  2. H2 (high): A process re-launches a freshly-dropped EXE with Start-Process -Verb RunAs to force a UAC elevation — rare outside installers.
  3. H3 (high): Known OXLOADER / CastleStealer SHA256 hashes execute or are written to disk.
  4. H4 (high): Beacon to CastleStealer C2 IPs 89.124.95.161 / 89.124.115.82.
  5. H5 (medium): DNS / connection to the malvertising landing + redirector domains (prentiva99.info, miloyannopoulos.com).
  6. H6 (medium): DLL side-loading — dui70.dll copied to a random .ocx and loaded from a user-writable path.
  7. H7 (medium): Binaries masquerading as node-v*-x64-86.exe / apimonitor-x64.exe launched from a browser download directory.

Attack Chain

StepBehaviorTelemetryHunt Angle
1 · MalvertisingMalicious Google Ad for "Node.js" → redirector → lookalike landing pageDnsRequest, NetworkConnectIP4Q5
2 · DeliveryUser downloads BATPackageBuilderSetup.bat (fake wizard)PeFileWritten, ProcessRollup2Q1, Q7
3 · DownloadBatch spawns PowerShell to fetch Storj-hosted OXLOADER EXEProcessRollup2 CommandLineQ1
4 · ElevationStart-Process -Verb RunAs forces UAC promptProcessRollup2 CommandLineQ2
5 · EvasionAnti-VM / locale checks; CIS + Russian exclusion; DLL side-load via random .ocxPeFileWrittenQ6
6 · PayloadDonutLoader reflectively loads CastleStealer (.NET) in memoryProcessRollup2 (hash)Q3
7 · C2 / exfilCastleStealer beacons to hardcoded C2 IPsNetworkConnectIP4Q4
04

Consolidated IOC Table

TypeValueConfidenceActionContext
sha256fdfc7831e5c24cfa80152860dfe8c056ba079f7df1393bf6bb7b18ed974eda37highdetectBATPackageBuilderSetup.bat (OXLOADER downloader)
sha256de4f51649ec1a33071854aefe93ffb3fc225e19f802d8dd914676dd5dfef2615highdetectBATPackageBulderSetup.bat (OXLOADER downloader)
sha2569a9939dff297997732aaade9b243d695632cbd64033c5fbcb9de3d09b7e6c28dhighdetectapimonitor-x64.exe (OXLOADER variant)
sha256c85f2765a6c3c3f3907c17e57df12f8f68826f74bff3bbfd272af50666d065fehighdetectnode-v24.15.0-x64-86.exe (OXLOADER variant)
sha2564ec9d9d4d10ad78fc6d7bda7cb17d52984878ccd2dd4302fd1cef152313b9741highdetectCastleStealer payload
sha25639019279686c820c3af5684012a0085a7e2109f612c9fab886dd0577ace5b5c6highdetectCastleStealer payload
ipv489.124.95.161highdetectCastleStealer C2
ipv489.124.115.82highdetectCastleStealer C2
domainnode-js.prentiva99.infohighdetectMalvertising landing (Node.js impersonation)
domainapp.miloyannopoulos.commediumhuntRedirector (download?subid1=download)
urllink.storjshare.io/raw/…/BATPackageBuilderSetup.batmediumhuntStorj payload hosting (path rotates)
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Windows endpoints (developer workstations especially)ProcessRollup2 / SyntheticProcessRollup2HighLow — default Falcon coverage
Endpoint → internet egressNetworkConnectIP4, DnsRequestHighLow
File writes to user download/temp dirsPeFileWritten, NewExecutableWrittenMediumMedium — module-load side-load is partial
Browser credential / wallet storesProcessRollup2 (CastleStealer access)MediumMedium — read access not always logged
06

ATT&CK Mapping

TacticTechniqueObserved BehaviorQuery / Control
Resource DevelopmentT1583.008 MalvertisingMalicious Google Ads for Node.jsQ5 / web filtering
Initial Access / ExecutionT1204.002 Malicious FileFake installer batch packageQ1, Q7
ExecutionT1059.001 PowerShellBatch spawns PowerShell downloaderQ1
Privilege Escalation / Defense EvasionT1548.002 Bypass UACStart-Process -Verb RunAsQ2 / M1052
Defense EvasionT1574.002 DLL Side-Loadingdui70.dll copied to random .ocxQ6 / M1052
Defense EvasionT1027.009 Embedded Payloads / T1027.013 Encrypted.reloc shellcode staging; Chaskey-LTSQ3 / M1040
Defense EvasionT1620 Reflective Code LoadingDonutLoader in-memory .NETQ3
Defense EvasionT1497.001 Virtualization/Sandbox EvasionCPU/RAM/refresh checks; locale exclusion— / behavioral
Collection / ExfiltrationT1555 / T1041 (CastleStealer)Browser, wallet, credential theft → C2Q4
07

Native Audit-Log Hunts

  • Secure web gateway / proxy: Block and alert on any download from *.storjshare.io by an interactive browser session, and on the malvertising domains. Storj raw-object hosting is rare in enterprise traffic.
  • Google Ads / DNS: Hunt newly-registered lookalike domains containing node/nodejs resolved shortly before a binary download.
  • Windows Sysmon (if deployed): Event ID 1 — powershell.exe with -Verb RunAs and a URL in the command line; Event ID 7 — module load of a .ocx from a user profile path.
  • EDR quarantine review: Cross-check any blocked node-v*-x64-86.exe or apimonitor-x64.exe detection against the hash list in §4.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · PowerShell downloading from Storj (fake Node.js installer)
CONF HIGHFP LOWCOST LOW

Looks for: powershell.exe whose command line references Storj raw-object hosting — the OXLOADER download step.

// HUNT: PowerShell downloading OXLOADER payload from Storj (REF8372)
// MITRE: T1059.001, T1204.002
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ImageFileName=/\\(powershell|pwsh)\.exe$/i
| CommandLine=/storjshare\.io/i
| table([ComputerName, UserName, ParentBaseFileName, CommandLine, SHA256HashData], limit=200)
Q2 · Forced UAC elevation via Start-Process -Verb RunAs
CONF HIGHFP MEDCOST LOW

Looks for: Start-Process … -Verb RunAs spawned from a script interpreter — OXLOADER's UAC elevation. FP: some legitimate admin install scripts self-elevate; scope to PowerShell parented by cmd.exe/wscript.exe or to download dirs.

// HUNT: Self-elevation via Start-Process -Verb RunAs from interpreter (REF8372)
// MITRE: T1548.002
// CONF: high  FP: medium  COST: low | REQUIRES: ProcessRollup2
// TUNING: exclude known software-deployment tooling (SCCM/Intune agents)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ImageFileName=/\\(powershell|pwsh)\.exe$/i
| CommandLine=/Start-Process.*-Verb\s+RunAs/i
| ParentBaseFileName=/^(cmd|wscript|cscript|explorer)\.exe$/i
| table([ComputerName, UserName, ParentBaseFileName, CommandLine], limit=200)
Q3 · Known OXLOADER / CastleStealer hashes
CONF HIGHFP LOWCOST LOW

Looks for: Execution of any known REF8372 sample by SHA256. Direct, atomic, near-zero FP.

// HUNT: Known OXLOADER/CastleStealer SHA256 execution (REF8372)
// MITRE: T1204.002, T1620
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| SHA256HashData=/^(fdfc7831e5c24cfa80152860dfe8c056ba079f7df1393bf6bb7b18ed974eda37|de4f51649ec1a33071854aefe93ffb3fc225e19f802d8dd914676dd5dfef2615|9a9939dff297997732aaade9b243d695632cbd64033c5fbcb9de3d09b7e6c28d|c85f2765a6c3c3f3907c17e57df12f8f68826f74bff3bbfd272af50666d065fe|4ec9d9d4d10ad78fc6d7bda7cb17d52984878ccd2dd4302fd1cef152313b9741|39019279686c820c3af5684012a0085a7e2109f612c9fab886dd0577ace5b5c6)$/i
| table([ComputerName, UserName, ImageFileName, ParentBaseFileName, SHA256HashData], limit=max)
Q4 · CastleStealer C2 beacon
CONF HIGHFP LOWCOST LOW

Looks for: Outbound connections to the hardcoded CastleStealer C2 IPs.

// HUNT: CastleStealer C2 connection (REF8372)
// MITRE: T1041
// CONF: high  FP: low  COST: low | REQUIRES: NetworkConnectIP4
#event_simpleName=/NetworkConnectIP4/
| RemoteAddressIP4=/^89\.124\.(95\.161|115\.82)$/
| table([ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort], limit=200)
Q5 · Malvertising landing / redirector DNS
CONF HIGHFP MEDCOST LOW

Looks for: DNS resolution of the OXLOADER malvertising infrastructure. FP: redirector domains can be reused; treat prentiva99.info as the high-confidence anchor.

// HUNT: OXLOADER malvertising domain resolution (REF8372)
// MITRE: T1583.008
// CONF: high  FP: medium  COST: low | REQUIRES: DnsRequest
// TUNING: prentiva99.info is the high-confidence anchor; miloyannopoulos.com can be reused — enrich, don't alert alone
#event_simpleName=/DnsRequest/
| DomainName=/(prentiva99\.info|miloyannopoulos\.com)/i
| table([ComputerName, DomainName, ContextBaseFileName], limit=200)
Q6 · OCX side-load staging (dui70.dll clone)
CONF MEDFP MEDCOST LOW

Looks for: A PE written with an .ocx extension into a user-writable path — the DLL side-load staging step. FP: legacy ActiveX installers also drop .ocx; pair with a recent Storj download on the same host.

// HUNT: OCX PE staging for DLL side-loading (REF8372)
// MITRE: T1574.002
// CONF: medium  FP: medium  COST: low | REQUIRES: PeFileWritten
// TUNING: exclude C:\Windows\ and trusted vendor install paths
#event_simpleName=/PeFileWritten|NewExecutableWritten/
| TargetFileName=/\\(Users|ProgramData|Temp)\\.*\.ocx$/i
| table([ComputerName, ContextBaseFileName, TargetFileName], limit=200)
Q7 · Fake Node.js / apimonitor binary from download dir
CONF MEDFP MEDCOST LOW

Looks for: OXLOADER variants masquerading as a Node.js or apimonitor installer launched from a user download path. FP: genuine Node.js installers are named node-v<ver>-x64.msi, not -x64-86.exe; the malformed suffix is the tell.

// HUNT: OXLOADER masquerading binary execution (REF8372)
// MITRE: T1036.005, T1204.002
// CONF: medium  FP: medium  COST: low | REQUIRES: ProcessRollup2
// TUNING: confirm hash against the §4 list; benign Node is *-x64.msi
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ImageFileName=/\\(node-v[\d.]+-x64-86|apimonitor-x64)\.exe$/i
| table([ComputerName, UserName, ImageFileName, ParentBaseFileName, SHA256HashData], limit=200)
09

CrowdStrike Custom IOA Recommendations

IOA NamePatternExclusionsAction
OXLOADER — Storj PowerShell DownloadProcess powershell.exe, CommandLine contains storjshare.ioNone needed (Storj raw-hosting rare)Block
OXLOADER — Script Self-ElevationPowerShell CommandLine matches -Verb RunAs, parent in cmd/wscript/cscriptSCCM/Intune deployment agentsDetect (high)
OXLOADER — Masquerading InstallerImage name matches node-v*-x64-86.exe from a user download dirNoneDetect (high)

Q1 and Q7 are strong Custom IOA promotion candidates. Q2 should run as Investigate-only until the deployment-agent exclusions are validated in-tenant.

10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,fdfc7831e5c24cfa80152860dfe8c056ba079f7df1393bf6bb7b18ed974eda37,prevent,critical,2026-12-24,OXLOADER batch downloader,campaign:REF8372
sha256,de4f51649ec1a33071854aefe93ffb3fc225e19f802d8dd914676dd5dfef2615,prevent,critical,2026-12-24,OXLOADER batch downloader,campaign:REF8372
sha256,9a9939dff297997732aaade9b243d695632cbd64033c5fbcb9de3d09b7e6c28d,prevent,critical,2026-12-24,OXLOADER variant,campaign:REF8372
sha256,c85f2765a6c3c3f3907c17e57df12f8f68826f74bff3bbfd272af50666d065fe,prevent,critical,2026-12-24,OXLOADER variant,campaign:REF8372
sha256,4ec9d9d4d10ad78fc6d7bda7cb17d52984878ccd2dd4302fd1cef152313b9741,prevent,critical,2026-12-24,CastleStealer payload,campaign:REF8372
sha256,39019279686c820c3af5684012a0085a7e2109f612c9fab886dd0577ace5b5c6,prevent,critical,2026-12-24,CastleStealer payload,campaign:REF8372
ipv4,89.124.95.161,detect,high,2026-09-24,CastleStealer C2,campaign:REF8372
ipv4,89.124.115.82,detect,high,2026-09-24,CastleStealer C2,campaign:REF8372
domain,node-js.prentiva99.info,detect,high,2026-09-24,Malvertising landing,campaign:REF8372
domain,app.miloyannopoulos.com,detect,medium,2026-07-24,Redirector,campaign:REF8372
Behavioral Signatureshunt logic
powershell.exe CommandLine ~ storjshare.io
powershell.exe CommandLine ~ "Start-Process .* -Verb RunAs" parent in (cmd,wscript,cscript)
PE written with .ocx extension under \Users\ or \ProgramData\
process image name ~ node-v*-x64-86.exe  (benign Node is *-x64.msi)
NetworkConnectIP4 RemoteAddressIP4 in (89.124.95.161, 89.124.115.82)
Named Toolingcontext
Campaign: REF8372 (Elastic Security Labs)
Loader: OXLOADER (control-flow flattening, MBA, opaque predicates, .reloc shellcode staging)
Wrapper: DonutLoader (in-memory .NET)
Crypto: Chaskey-LTS (key 6E0A1F8F77F7011561F6F9CA96B71B8F)
Payload: CastleStealer (.NET infostealer; CastleLoader / BackgroundFix lineage)
Hosting: link.storjshare.io (raw object store)
Actor: Russian-speaking, financially motivated; CIS + LANGID 0x419 exclusions
Browser / SWG Block Listproxy audit
block  *.prentiva99.info
block  *.miloyannopoulos.com
alert  download of .bat/.exe from *.storjshare.io by browser session
audit  Google Ads click-through to non-nodejs.org "Node.js" downloads
11

Detection Validation Gates

GateCheckPass Criteria
Telemetry readyProcessRollup2, NetworkConnectIP4, DnsRequest, PeFileWritten flowingAll four event types present in last 24h
Benign baselineRun Q2 over 7 days in audit modeDeployment-agent self-elevation excluded; residual hits triaged
Positive testIn a lab, run powershell -c "Start-Process notepad -Verb RunAs" and a benign Storj fetchQ1/Q2 fire as expected
PromotionQ1, Q7 promoted to Custom IOA after baselineZero FP across pilot ring
12

Hardening — Tiered & Deployable

Immediate (this week)
  • Block the IOCs — load §10 hashes as prevent, C2 IPs + domains as detect/block (M1040, M1031).
  • SWG rule — block executable downloads from *.storjshare.io initiated by browsers; rare in legitimate enterprise use.
  • ASR rule — enable "Block executable content from email/web that don't meet a prevalence/age/trust criterion" and "Block process creations from PSExec/WMI" where compatible (M1042).
Near term (1–4 weeks)
  • Constrained Language Mode + script-block logging for PowerShell (M1038, M1049) to surface download cradles.
  • Restrict software-install ad surface — push internal package sources (winget private repo / artifactory) so developers fetch Node.js from a vetted channel, not search ads (M1018).
Strategic (1–3 months)
  • Application control (WDAC / AppLocker) — allow-list signed installers and block execution from user download/temp paths (M1038).
  • UAC to "Always notify" + admin-approval mode so a -Verb RunAs elevation is a conscious user action, not a silent install step (M1052).
13

Deployable Playbooks

1 · Enable PowerShell script-block + module logging (GPO/registry)

REG ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f
REG ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging" /v EnableModuleLogging /t REG_DWORD /d 1 /f
REG ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging\ModuleNames" /v "*" /t REG_SZ /d "*" /f

2 · Block executable content from web (ASR, Defender)

Add-MpPreference -AttackSurfaceReductionRules_Ids 3B576869-A4EC-4529-8536-B80A7769E899 -AttackSurfaceReductionRules_Actions Enabled
Add-MpPreference -AttackSurfaceReductionRules_Ids D4F940AB-401B-4EFC-AADC-AD5F3C50688A -AttackSurfaceReductionRules_Actions Enabled

3 · Hunt residual fake installers on disk

Get-ChildItem "$env:USERPROFILE\Downloads","$env:TEMP" -Recurse -Include *.bat,*.exe -ErrorAction SilentlyContinue |
  Where-Object { $_.Name -match 'node-v.*-x64-86|apimonitor-x64|BATPackage' } |
  Select-Object FullName,Length,LastWriteTime

Test ASR rules in audit mode (-AttackSurfaceReductionRules_Actions AuditMode) on a pilot ring before enforcing.

14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the host in Falcon; preserve memory if CastleStealer is suspected residentSOC L2Containment timestamp, host AID
EradicateKill OXLOADER/PowerShell tree; remove dropped .bat/.exe/.ocx; clear Run keys / scheduled tasks created post-infectionSOC L2File hashes, process tree export
CredentialsForce-reset browser-saved + SSO creds and any crypto wallet seeds on the host (CastleStealer is a credential/wallet thief)IAMReset audit log
RecoverReimage if side-load persistence confirmed; re-issue Node.js from vetted internal sourceEndpoint EngRebuild ticket
LessonsPromote Q1/Q7 to IOA; brief developers on malvertising risk for dev-tool downloadsDetection EngThis pack, updated
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1583.008Malvertising domainsQ5Good
T1059.001PowerShell Storj downloadQ1YesGood
T1548.002UAC self-elevationQ2CandidatePartial
T1204.002Known sample executionQ3, Q7YesGood
T1574.002OCX side-load stagingQ6Partial
T1041CastleStealer C2Q4Good
T1497.001Sandbox/locale evasionGap
T1555Browser/wallet credential accessGap

Two gaps remain: in-memory sandbox-evasion logic (T1497.001) and CastleStealer's local credential/wallet read (T1555) are not directly observable in standard Falcon process telemetry — rely on the hash/C2/behavioral catches upstream and downstream of those steps. Validation gates (§11) must pass before promoting Q1/Q7 to Custom IOAs.

16

Hunt Summary Ticket

TITLE: OXLOADER → CastleStealer (REF8372) — Node.js malvertising loader hunt
SEVERITY: High — active in-the-wild loader + infostealer
SCOPE: All Windows endpoints; prioritize developer workstations
HYPOTHESIS: Fake Node.js installer drops OXLOADER via Storj, self-elevates, loads CastleStealer
QUERIES: Q1 Storj PS download · Q2 RunAs elevation · Q3 known hashes · Q4 C2 · Q5 malvert DNS · Q6 OCX side-load · Q7 masquerade
DO FIRST: Run Q1, Q3, Q4 across the fleet; load §10 hashes as prevent IOCs
FINDINGS: ____________________________________________
GAPS: T1497.001 sandbox evasion, T1555 local cred/wallet read — not in process telemetry
ACTIONS: Block C2 IPs + malvert domains; SWG-block storjshare.io browser downloads; promote Q1/Q7 to IOA
OWNER: ____________________   VERSION: v0.2 (2026-06-24)
17

Changelog

v0.22026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.12026-06-24Initial HuntPack — REF8372 OXLOADER/CastleStealer. 7 CQL queries, full IOC set from Elastic Security Labs, tiered hardening + containment.
18

References

TierSourceUsed ForAccess Date
1Elastic Security Labs — OXLOADER deep-dive (REF8372)All atomic IOCs (hashes, Storj URLs, C2 IPs), obfuscation chain, anti-VM checks, ATT&CK mapping2026-06-24
1The Hacker News — New OXLOADER Loader Uses Malicious Google Ads (2026-06-22)Node.js lure, actor attribution, CastleStealer lineage2026-06-24
2Cyberpress — Fake Node.js Ads Spread OXLOADER and CASTLESTEALERCorroboration of delivery vector2026-06-24
RMITRE ATT&CKTechnique IDs and mitigation (M-number) mapping2026-06-24