Elastic Security Labs identified OXLOADER, a previously undocumented Windows loader, delivering CASTLESTEALER through malicious Google Ads and Storj-hosted staging files. The campaign uses heavy obfuscation, anti-VM checks, and .reloc-based shellcode staging, while targeting users with Node.js-themed lures and low-detection payloads. #OXLOADER #CASTLESTEALER #GoogleAds #Storj
Keypoints
- Elastic Security Labs discovered a new Windows loader family named OXLOADER with no prior public reporting.
- OXLOADER was delivered through malicious Google Ads impersonating Node.js downloads and redirecting victims to Storj-hosted scripts and executables.
- The final payload delivered by the loader was CASTLESTEALER, a newly discovered infostealer.
- The campaign showed signs of a financially motivated, Russian-speaking threat actor, including CIS-region exclusions and Russian language checks.
- OXLOADER used multiple obfuscation layers, including control-flow flattening, opaque predicates, mixed Boolean-Arithmetic, and self-modifying decryption stubs.
- The loader evaded analysis with anti-sandbox and anti-VM checks such as CPU, RAM, display refresh rate, geographic region, and language validation.
- Elastic Defend detected malicious behavior and prevented the full attack chain in the observed customer environment.
MITRE Techniques
- [T1027 ] Obfuscated Files or Information â OXLOADER hid its logic with layered packing and code-hiding methods, making static analysis difficult (âthe loader uses several obfuscation layers⌠and low detection rates across static engines and sandbox detonationsâ).
- [T1027.010 ] Obfuscated Files or Information: Command Obfuscation â The malware used mixed Boolean-Arithmetic, opaque predicates, and function chunking to distort code structure (âcontrol-flow flattening (CFF), mixed Boolean-Arithmetic (MBA), opaque predicates, and function chunkingâ).
- [T1027.016 ] Obfuscated Files or Information: Junk Code Insertion â The sample included dummy CMake-related strings and misleading code to disguise its purpose (âDummy CMake-related strings appear to be passed as argumentsâ).
- [T1027.013 ] Obfuscated Files or Information: Embedded Payloads â The loader decrypted embedded regions and unpacked the next stage from within itself (âdecrypts a 28,233-byte regionâ and âdecrypts the loaderâs embedded configuration and execution contextâ).
- [T1055 ] Process Injection â The payload was bootstrapped for in-memory execution through DonutLoader and RunPE, indicating injected execution flow (âbootstrapped through DonutLoaderâs RunPE() functionâ).
- [T1140 ] Deobfuscate/Decode Files or Information â OXLOADER decrypted strings and code at runtime using XOR-based routines and Chaskey-LTS decryption (âdecrypts various strings at runtimeâ and âThe payload is configured from DonutLoader⌠decrypts⌠using the Chaskey-LTS block cipherâ).
- [T1068 ] Exploitation for Privilege Escalation â The batch script launched the next stage with elevated execution intent by using PowerShell and -Verb RunAs (âlaunches it with -Verb RunAs to trigger a UAC elevation promptâ).
- [T1204.002 ] User Execution: Malicious File â The infection chain depended on the victim clicking a sponsored result and executing downloaded files (âclicked a sponsored resultâ and âdownloads and executes OXLOADERâ).
- [T1566.002 ] Phishing: Spearphishing Link â The lure used malicious Google Ads and redirector links to drive users to the payload (âsearches for an lts version of node.js and clicked a sponsored resultâ).
- [T1082 ] System Information Discovery â The loader checked CPU count, RAM, display refresh rate, geography, and language to decide whether to continue (âat least 3 CPUsâ, âat least 3 GBâ, and âconfigured for the Russian languageâ).
- [T1497.001 ] Virtualization/Sandbox Evasion: System Checks â OXLOADER performed environment validation to avoid analysis platforms (âavoid execution in sandbox environmentsâ and âvalues below 20 cause the loader to abortâ).
- [T1622 ] Debugger Evasion â The malware attempted to defeat emulation and hooking by validating a specific network error result (âdefeat emulation/sandboxes that may hook or return a successful connection unconditionallyâ).
- [T1106 ] Native API â The loader used Windows APIs such as WNetAddConnection2W, GlobalMemoryStatusEx, GetUserGeoID, and GetUserDefaultUILanguage (âuses⌠WNetAddConnection2Wâ and âGetUserGeoIDâ).
Indicators of Compromise
- [Domain names ] Malicious landing and redirect infrastructure â node-js[.]prentiva99[.]info, app[.]miloyannopoulos[.]com
- [URLs ] Payload staging and delivery â link[.]storjshare[.]io/raw/jux4e4ky5mruo4jkxsssp42sau4q/ruslan/BATPackageBuilderSetup.bat, link[.]storjshare[.]io/raw/jwwvr4oskkkjsgevt774ta62ehya/ruslan/aBsvwbdas.exe
- [File names ] Loader and payload artifacts â BATPackageBuilderSetup.bat, aBsvwbdas.exe, apimonitor-x64.exe, node-v24.15.0-x64-86.exe
- [SHA-256 hashes ] Observed samples â fdfc7831e5c24cfa80152860dfe8c056ba079f7df1393bf6bb7b18ed974eda37, de4f51649ec1a33071854aefe93ffb3fc225e19f802d8dd914676dd5dfef2615, and 5 more hashes
- [IPv4 addresses ] CASTLESTEALER C2 servers â 89.124.95[.]161, 89.124.115[.]82
- [Registry/installer context ] Malicious installer chain used a fake Node.js lure and a Storj-hosted batch-to-EXE sequence â BATPackageBulderSetup.bat, PFHemkxVk.ocx
Read more: https://www.elastic.co/security-labs/oxloader-malware-loader-infostealer