Physical Address
Lesya Kurbasa 7B
03194 Kyiv, Kyivska obl, Ukraine
Physical Address
Lesya Kurbasa 7B
03194 Kyiv, Kyivska obl, Ukraine
TROX Stealer is a sophisticated information-stealing malware first identified in December 2024, distributed as a Malware-as-a-Service (MaaS) offering. This multi-stage threat employs complex evasion techniques, including WebAssembly (Wasm) and multiple programming languages, to steal sensitive data ranging from browser credentials to credit card information. Deployed through urgency-based phishing campaigns, TROX targets a wide range of sectors including security companies, universities, and energy corporations. This analysis examines the malware’s technical capabilities, distribution methods, and provides protection strategies to defend against this emergent threat.
TROX Stealer emerged in late 2024 as an information-stealing malware distributed through the Malware-as-a-Service (MaaS) model. What distinguishes this malware is its technical sophistication, leveraging multiple programming languages and obfuscation techniques to evade detection while harvesting sensitive user data.
This malware represents a significant threat due to its comprehensiveness in targeting almost all forms of valuable user data – from stored browser credentials and payment information to cryptocurrency wallets and application session files. TROX Stealer is designed to maximize data exfiltration in a short time period, with MaaS operators reportedly offering the malware for weekly licensing, indicating rapid attack campaigns.
The malware’s architecture incorporates sophisticated components, including WebAssembly (Wasm) modules, extensive obfuscation, and multi-stage execution paths that make analysis and detection particularly challenging. These characteristics point to development by experienced threat actors with a deep understanding of modern security mechanisms and how to bypass them.
TROX Stealer employs several advanced technical features that enhance its stealth, persistence, and data exfiltration capabilities:
The combination of these features indicates significant planning and development investment, likely from experienced malware authors who understand both technical security controls and human psychology.
Source: Analysis of TROX Stealer attack chain based on Sublime Security research, 2025
TROX Stealer is distributed primarily through targeted phishing campaigns that leverage psychological manipulation to increase success rates:
The malware’s distribution relies heavily on creating a sense of urgency to bypass recipients’ critical thinking. Observed campaign subjects include:
These urgency-themed emails pressure victims into taking immediate action without proper security considerations.
According to the research, TROX Stealer campaigns have specifically targeted:
This sector targeting suggests the attackers are seeking both high-value data and potentially access to critical infrastructure.
The full distribution chain follows a sophisticated multi-stage process:
The installation process includes the creation of embedded files that install the stealer while showing a decoy PDF document to distract the victim.
Analysis of the TROX Stealer codebase reveals sophisticated techniques across multiple programming languages:
The initial dropper component is a Nuitka-compiled Python script designed to install and execute the core malware components:
def install_files(user_profile, target_dir, source_dir, exe_pattern, pdf_pattern, exe_files, pdf_files, exe_file, target_file, e, pdf_file): """ Copies the EXE files matching 'node*.exe' and all PDF files to the target directory in the user's AppData. """ <unrecoverable malware code here> def run_files(user_profile, target_dir, exe_pattern, pdf_pattern, exe_files, pdf_files, pdf_file, e, exe_file): """ Opens the PDF(s) and runs the EXE(s) from the target directory """ <unrecoverable malware code here> def main(): <unrecoverable malware code here> |
This code shows the malware’s ability to drop and execute both executable components (with naming patterns like “node*.exe”) and decoy PDF documents to distract the victim while infection occurs.
The JavaScript component uses advanced obfuscation techniques and CommonJS module constructs to hide its true functionality:
"use strict" ; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for ( var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; // ... more obfuscated code ... var require_wasm = __commonJS({ "lib/wasm.js" (exports2, module2) { "use strict" ; var imports = {}; imports[ "__wbindgen_placeholder__" ] = module2.exports; // ... WebAssembly loading code ... var bytes = Buffer.from( "AGFzbQEAAAABvwRHYAJ/fwF/YAF/AX9gAA..." /* truncated base64 */ ); var wasmModule = new WebAssembly.Module(bytes); var wasmInstance = new WebAssembly.Instance(wasmModule, imports); wasm = wasmInstance.exports; module2.exports.__wasm = wasm; } }); |
This code demonstrates how TROX Stealer leverages Node.js and WebAssembly to execute its core functionality. The use of WebAssembly provides cross-platform capabilities while making reverse engineering more difficult.
The malware contains specific SQL queries designed to target stored credit card information in browser databases:
\Web Data \cards db SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted, date_modified FROM credit_cards Card Name : Card Number: card number Card Expiration: SELECT * FROM webappsstore2 WHERE key LIKE '%cc_number%' |
These SQL queries target browser databases that store encrypted credit card information, demonstrating the malware’s focus on financial data theft. The queries specifically look for standard database formats used by common web browsers to store payment information.
TROX Stealer is designed to exfiltrate a comprehensive range of sensitive user data, focusing particularly on:
The breadth of targeted data suggests the operators are gathering information either for direct financial fraud or for sale on underground markets to specialized threat actors.
Source: Data targeting analysis of TROX Stealer based on extracted SQL queries and code functionality, 2025
Organizations should monitor for the following indicators that may suggest a TROX Stealer infection:
# Initial Dropper Filename: DebtCollectionCase#######.exe SHA256: c404baad60fa3e6bb54a38ab2d736238ccaa06af877da6794e0e4387f8f5f0c6 SHA1: ae5166a8e17771d438d2d5e6496bee948fce80a4 MD5: c568b578da49cfcdb37d1e15a358b34a # Node.js Interpreter Component Filename: node700.exe SHA256: 12069e203234812b15803648160cc6ad1a56ec0e9cebaf12bad249f05dc782ef SHA1: 29a13e190b6dd63e227a7e1561de8edbdeba034b MD5: f5f75c9d71a891cd48b1ae9c7cc9f80d # TROX Stealer Core Component SHA256: 5d7ed7b8300c94e44488fb21302a348c7893bdaeef80d36b78b0e7f0f20135df SHA1: 6deea67690f90455280bc7dfed3c69d262bf24f6 MD5: fedb7287bcccc256a8dad8aeace799f7 # Decoy Document Filename: client_pdf_case_388.pdf |
# Malicious Domains debt-collection-experts[.]com documents[.]debt-collection-experts[.]com debt-collection-experts[.]online download.debt-collection-experts[.]online downloads.debt-collection-experts[.]online docs.debt-collection-experts[.]online # C2 Infrastructure IP Addresses 89.185.82.34 - Central to campaign operations 172.22.117.177 - Receives system profiles from malware # Email Addresses vpn@esystematics[.]de vpn@contactcorporate[.]de vpn@evirtual-provider[.]de |
The following system behaviors may indicate TROX Stealer infection:
The following YARA rules can be used to detect various components of TROX Stealer in memory dumps or file systems. These rules target specific characteristics of the malware based on code patterns and capabilities.
rule TROX_Stealer_Generic { meta: description = "Detects TROX Stealer based on common code patterns" author = "Gridinsoft Research Team" reference = "https://trojan-killer.net/trox-stealer-analysis/" date = "2025-06-20" hash = "5d7ed7b8300c94e44488fb21302a348c7893bdaeef80d36b78b0e7f0f20135df" severity = "High" strings: // Filenames associated with the malware $filename1 = "DebtCollectionCase" ascii wide nocase $filename2 = "node700.exe" ascii wide $filename3 = "client_pdf_case_388.pdf" ascii wide // Credential theft SQL queries $sql1 = "SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted" ascii wide $sql2 = "FROM credit_cards" ascii wide $sql3 = "SELECT * FROM webappsstore2 WHERE key LIKE '%cc_number%'" ascii wide // Communication endpoints $url1 = "https://api.ipify.org" ascii wide $url2 = "https://geolocation-db.com/jsonp/" ascii wide $url3 = "https://api.gofile.io/servers" ascii wide $url4 = "https://u.gofile.io/uploadFile" ascii wide // Malicious domains $domain1 = "debt-collection-experts" ascii wide condition: uint16(0) == 0x5A4D and // PE file header ( (1 of ($filename*) and 1 of ($sql*)) or (2 of ($sql*)) or (1 of ($filename*) and 1 of ($url*)) or (1 of ($sql*) and 1 of ($url*) and $domain1) ) } |
rule TROX_WebAssembly_Component { meta: description = "Detects WebAssembly components used by TROX Stealer" author = "Gridinsoft Research Team" reference = "https://trojan-killer.net/trox-stealer-analysis/" date = "2025-06-20" hash = "5d7ed7b8300c94e44488fb21302a348c7893bdaeef80d36b78b0e7f0f20135df" severity = "High" strings: // WebAssembly signatures $wasm_header = { 00 61 73 6D } // \0asm // TROX-specific WebAssembly related strings $wasm_str1 = "WebAssembly.Module" ascii wide $wasm_str2 = "WebAssembly.Instance" ascii wide $wasm_str3 = "__wbindgen_placeholder__" ascii wide $wasm_str4 = "lib/wasm.js" ascii wide // Base64 encoded WASM indicators $base64_wasm = "AGFzbQEAAAAB" ascii wide // Base64 encoded WebAssembly module header // CommonJS pattern used in TROX $commonjs = "__commonJS" ascii condition: ($wasm_header at 0) or // Pure WebAssembly file ( uint16(0) == 0x5A4D and // PE file ( 2 of ($wasm_str*) or ($base64_wasm and $commonjs) ) ) or ( uint32(0) == 0x4464c457f /* ELF header */ and 2 of ($wasm_str*) ) } |
rule TROX_NodeJS_Dropper { meta: description = "Detects Node.js dropper component of TROX Stealer" author = "Gridinsoft Research Team" reference = "https://trojan-killer.net/trox-stealer-analysis/" date = "2025-06-20" hash = "12069e203234812b15803648160cc6ad1a56ec0e9cebaf12bad249f05dc782ef" severity = "High" strings: // Node.js related strings $node1 = "node700.exe" ascii wide $node2 = "require" ascii wide $node3 = "exports" ascii wide $node4 = "module.exports" ascii wide // Obfuscated JavaScript patterns seen in TROX $js_obf1 = "__getOwnPropNames" ascii wide $js_obf2 = "__defProp" ascii wide $js_obf3 = "__getProtoOf" ascii wide $js_obf4 = "__hasOwnProp" ascii wide $js_obf5 = "__commonJS" ascii wide $js_obf6 = "__export" ascii wide // Function patterns $func1 = "install_files" ascii wide $func2 = "run_files" ascii wide $func3 = "user_profile" ascii wide $func4 = "target_dir" ascii wide $func5 = "exe_pattern" ascii wide condition: uint16(0) == 0x5A4D and // PE file ( (2 of ($node*) and 2 of ($js_obf*)) or (3 of ($js_obf*)) or (2 of ($node*) and 2 of ($func*)) or (3 of ($func*)) ) } |
rule TROX_Network_Indicators { meta: description = "Detects network indicators associated with TROX Stealer" author = "Gridinsoft Research Team" reference = "https://trojan-killer.net/trox-stealer-analysis/" date = "2025-06-20" hash = "5d7ed7b8300c94e44488fb21302a348c7893bdaeef80d36b78b0e7f0f20135df" severity = "High" strings: // C2 domains $domain1 = "debt-collection-experts.com" ascii wide nocase $domain2 = "documents.debt-collection-experts.com" ascii wide nocase $domain3 = "debt-collection-experts.online" ascii wide nocase $domain4 = "download.debt-collection-experts.online" ascii wide nocase $domain5 = "downloads.debt-collection-experts.online" ascii wide nocase $domain6 = "docs.debt-collection-experts.online" ascii wide nocase // URL patterns $url1 = "download?token=" ascii wide // IP addresses (in various formats) $ip1 = "89.185.82.34" ascii wide $ip2 = "172.22.117.177" ascii wide // Email addresses $email1 = "vpn@esystematics.de" ascii wide nocase $email2 = "vpn@contactcorporate.de" ascii wide nocase $email3 = "vpn@evirtual-provider.de" ascii wide nocase condition: any of them } |
rule TROX_Python_Nuitka_Component { meta: description = "Detects Python Nuitka-compiled components of TROX Stealer" author = "Gridinsoft Research Team" reference = "https://trojan-killer.net/trox-stealer-analysis/" date = "2025-06-20" hash = "c404baad60fa3e6bb54a38ab2d736238ccaa06af877da6794e0e4387f8f5f0c6" severity = "High" strings: // Nuitka compilation artifacts $nuitka1 = "Nuitka" ascii wide $nuitka2 = "__compiled__" ascii wide // Python function patterns from TROX $py_func1 = "install_files" ascii wide $py_func2 = "run_files" ascii wide $py_func3 = "exe_pattern" ascii wide $py_func4 = "pdf_pattern" ascii wide // Python string patterns $py_str1 = "exe_files" ascii wide $py_str2 = "pdf_files" ascii wide $py_str3 = "node*.exe" ascii wide $py_str4 = "target_file" ascii wide // "DebtCollectionCase" patterns with varying numbers $debt1 = "DebtCollectionCase" ascii wide condition: uint16(0) == 0x5A4D and // PE file header ( (1 of ($nuitka*) and 2 of ($py_func*)) or (2 of ($py_func*) and 2 of ($py_str*)) or ($debt1 and 2 of ($py_str*)) or (1 of ($nuitka*) and $debt1) ) } |
These YARA rules target different aspects of the TROX Stealer malware, from its initial dropper to its core functionality. Security teams can implement these rules in endpoint detection systems, memory scanners, and network monitoring tools to identify potential infections. As with all signature-based detection, these rules should be regularly updated as the malware evolves.
TROX Stealer operates on the increasingly common Malware-as-a-Service model, which has significant implications for defenders. The malware is actively being sold on dark web marketplaces, including a listing found on the Russian-language forum DarkMarket in December 2024, where it was advertised as a “revolutionary stealer designed to steal data and transfer securely and seamlessly.”
The DarkMarket listing for TROX Stealer highlights several capabilities that align with our technical analysis:
This marketing aligns with our technical findings and confirms the intentional development of TROX Stealer as a commercial product specifically designed for data theft. The presence of Russian-language marketing also suggests possible connections to Russian-speaking cybercriminal communities.
The MaaS model significantly lowers barriers to entry for cybercriminals, enabling those with minimal technical skills to deploy sophisticated attacks. This democratization of advanced malware leads to:
Organizations must adapt their security postures to address the broad availability of these sophisticated tools to less skilled attackers.
Protecting against TROX Stealer requires a multi-layered defense approach. Organizations should implement the following protective measures:
Organizations should also develop specific incident response plans for information stealer infections. As noted in our comprehensive malware removal guide, responding quickly to data theft incidents is critical to minimizing damage.
If a system has been infected with TROX Stealer, follow these steps to remove the malware and mitigate potential damage:
For a more thorough cleanup, Trojan Killer can automatically detect and remove all components of TROX Stealer in a single scan, including obfuscated WebAssembly modules and Node.js components.
Due to the comprehensive nature of data theft, compromised systems should ideally be rebuilt from clean sources rather than simply cleaned, especially in high-security environments.
The emergence of TROX Stealer indicates several important trends in the malware landscape:
Based on these trends, we anticipate that future iterations of TROX Stealer and similar malware will continue to incorporate cutting-edge web technologies, increasingly sophisticated obfuscation, and more targeted distribution tactics to evade detection.
TROX Stealer represents a significant evolution in information-stealing malware, combining technical sophistication with psychological manipulation tactics. Its multi-stage, multi-language architecture—incorporating Python, Node.js, and WebAssembly—demonstrates the increasing complexity of modern malware and the blurring lines between web and native application attack vectors.
Key characteristics that define TROX Stealer include:
The emergence of TROX Stealer serves as a reminder that the democratization of advanced malware through MaaS platforms continues to lower barriers to entry for cybercriminals. This trend necessitates a shift toward more behavior-based detection mechanisms and comprehensive security awareness training that specifically addresses psychological manipulation tactics.
Organizations must remain vigilant against these evolving threats by implementing multi-layered defense strategies, maintaining regular security awareness training focused on recognizing manipulation tactics, and developing incident response plans specifically designed to address data theft scenarios.