Threat Command

REVSTEALER ramps up: analysis of up-and-coming infostealer

REVSTEALER's credential harvesting reaches 225 browser extensions and 51 crypto wallets, its gaming session theft needs no password, and its backup C2 address sits on the Polygon blockchain waiting for the primary server to fail.

Elastic Security Labs is tracking an emerging infostealer, REVSTEALER, under REF2859. This family has gained momentum in recent months, with higher distribution volume, and has emerged as a formidable threat, featuring a comprehensive credential harvester, an embedded sandbox scoring system, and a Polygon blockchain-based dead drop for resilience. Beyond credential theft, REVSTEALER targets gaming platforms for additional monetization; the developer clearly understands that victim accounts on these platforms hold real monetary value in resale markets.

Gen Threat Labs first covered REVSTEALER earlier this summer, detailing its core features. In this research publication, we will walk through how it’s distributed, cover its main features, and share observed infrastructure. For readers who prefer more in-depth technical details on the malware, we are also releasing a whitepaper covering the family. We are also releasing an IDAPython string decryption script for anyone working with samples directly.

The white paper is located here and contains an in-depth analysis of REVSTEALER and REF2859.

Key takeaways

  • Large volume of samples (~4700) on VirusTotal over the past year, with varied submission context
  • Comprehensive stealer component targeting browsers, VPN/chat applications, password managers, gaming platforms. Includes ABE debugger-based bypass.
  • Weighted anti-analysis checks (sandbox scoring system)
  • EtherHiding - Polygon-based dead drop for resilient infra swapping
  • Tasking delivers four modules, not previously documented publicly
  • Widespread use of VMProtect packer in most REVSTEALER samples; unpacked samples display a verification prompt similar to LummaStealer and AuraStealer

Attack vector

Gen Threat Labs documented REVSTEALER reaching victims through a social-engineering path targeting gamers by advertising free cheats and mod menus. Building on this reporting, we identified at least 17 YouTube channels promoting the two related domains elitecheatsx[.]live and resight-cheats[.]net.

Malicious link in a YouTube video description

In the campaigns we observed, this took the form of YouTube account takeovers. Existing channels with established subscriber bases were hijacked and used to post short (1–2 minute) AI-generated videos demonstrating the "cheats" and linking viewers to the malicious sites.

Compromised YouTube account

The game-cheat campaign is only one observed presentation. Related VirusTotal submissions used names and file metadata that impersonated unrelated, recognizable software, including Slack, qBittorrent, Steel Series GG, Blender, and many more. This breadth suggests the builds are packaged for multiple lure themes, not just gaming-focused campaigns. We also ran a Retrohunt with our YARA rule, which returned about 4,700 matching samples across VirusTotal’s database over the past year.

Retrohunt matches visualized by submission first seen date

Many of the samples we analyzed were packed with VMProtect, but the malware code was mostly recoverable through memory dumping.

Features

Development

Across its design, REVSTEALER reflects a developer building for long-term operational use. The malware incorporates features such as self-deletion, indirect syscalls, API hashing, string encryption, mechanisms to avoid user-mode hooks, and custom exception handling.

An indirect syscall dispatcher

Unlike most commodity stealers, REVSTEALER seems to put more effort into validating its targets; this is evident in its cryptocurrency wallet harvester, which uses a multi-layer architecture with a discovery engine followed by a collector that applies wallet-specific extension filters to extract only relevant files.

CIS exclusion checks

Before REVSTEALER qualifies the victim machine, it first checks the machine's default/system languages and keyboard layout using a custom FNV-1a hash lookup. It retrieves each value from the machine, hashes it, and compares it against an embedded table of precomputed values representing the Commonwealth of Independent States (CIS) locales. If any of these three checks match, the malware terminates.

Exclusion checks based on language and keyboard layout

Sandbox scoring system

To determine whether the malware is running in a genuine environment, REVSTEALER integrates a custom sandbox scoring system using ten checks. Each check assigns a specific number of points based on sandbox characteristics such as low total physical RAM or CPU core counts.

If the total score is 7 or higher, the malware determines the machine is likely running in a sandbox environment and then self-terminates.

Sandbox threshold comparison

The following checks are used in this feature:

  • Process Blocklist (Type 0)
  • CPU Core Count (Type 1)
  • RAM Threshold (Type 2)
  • GPU / PCI Vendor Check (Type 3)
  • Username / Computer Name Blocklist (Type 4)
  • System Uptime (Type 5)
  • Sleep / Timing Check (Type 6)
  • Media Foundation Check (Type 7)
  • CPUID Check (Type 8)
  • Virtualization Check (Type 9)

Several of these checks hash values such as process names or usernames using a custom FNV-1a hash algorithm and compare the result against an embedded table. This method ensures no plaintext strings appear in the binary and prevents static analysis tools from seeing them.

Credential harvesting

REVSTEALER targets browser credentials and cookies, cryptocurrency wallets, and browser extensions. This includes 225 Chromium extension identifiers spanning cryptocurrency wallets and password managers, alongside 51 standalone wallet applications. It also collects data from messaging clients, gaming platforms, VPNs, FTP clients, OBS Studio, Windows Sticky Notes, and 2FA applications, along with selected documents and configuration files from user directories and non-system drives.

REVSTEALER’s Chromium support includes an implementation for bypassing App-Bound Encryption. To obtain the App-Bound key, it launches a browser process under debugger control, locates code associated with App-Bound decryption, and sets a nearby hardware breakpoint. When the breakpoint triggers, the malware reads the decrypted key directly from the browser’s memory. The implementation was likely influenced by the public ElevationKatz project (under ChromeKatz).

Example of decrypted App-Bound key in memory

Payload watermarking

The developer places a 16-byte watermark at the end of raw payloads and validates it at runtime. Packed builds do not trigger the check because the watermark is no longer located at EOF. When a watermarked raw copy is launched, a verification window requires the user to enter a random six-character token in order to proceed with execution. This discourages distribution of unprotected payloads while also hindering sandbox analyses. Similar techniques have been observed in Lumma Stealer and AuraStealer.

Polygon dead drops as fallback

Each REVSTEALER build contains a primary C2 address and a Polygon smart-contract address. If the primary server is unavailable, REVSTEALER queries up to 5 public Polygon JSON-RPC endpoints, reads data from the contract, and decrypts a fallback C2 address using an embedded AES key.

Below are examples of extracted C2 hosts and Polygon dead drop configurations from three REVSTEALER samples with different themes.

Sample sha-256: 8b33e0f32c42a317e3d9cd67d5a6dc68e91a6cf9dd44742162858e7d83cf2073
File Name: SteelSeriesGG.exe
Configuration(c2=b'polygon.iwmukj[.]xyz:443', polygon_contract_address=b'0x7e4126ADFE6679B3613F629CD49162Fb08fc53Bd', contract_function_selector=b'0xdbefdad6', contract_return_aes_key='f07666ac22dfa1a361b8a8576baf69eadaf15431db9f3c34e93334d8d2f8d691')

Sample sha-256: bd97d5cab2d09b001d1b9e08890bce1a2b2cf8542a4b31c86b2def59328cafb2
File Name: slack.exe
Configuration(c2=b'polygon.mnyhgxda[.]xyz:443', polygon_contract_address=b'0x0EC6a6D31b36271eBD06450EA98c84eBa8a191d5', contract_function_selector=b'0xd21368b4', contract_return_aes_key='5c30efd5b9ff75023c3813705f5c47feccc496f439b24b3e572db4c3b08dffe3')

Sample sha-256: 1617552169df805405b1bb70f742d6eac5af342f31c6e39ff6b9613bd2392354
File Name: qBittorrent.exe
Configuration(c2=b'static4.livelab[.]one:443', polygon_contract_address=b'0x49cE5712164755ed212209bc71539bBc6fCFF541', contract_function_selector=b'0x071258c6', contract_return_aes_key='83f5b4ca629681abab2b9680472a304572a8c91b4a8ccc1189fbf58c6186db09')

Looking up one of the contract addresses on OKLink, there is an initial transaction to create a Polygon contract (bytecode prefix 0x60806040), initialized with an encrypted fallback C2 endpoint.

Polygon C2 transaction

Victim profiling

Before any stealing components are launched, REVSTEALER profiles the victim machine, collecting the following data:

NameNote
System/OS infoCurrent timestamp, machine fingerprint, system locale, CPU info, RAM, Windows OS version, GPU name, host name, username, token integrity of user, timezone, keyboard layout, screen resolution
Environment variable dumpUses GetEnvironmentStringsW to dump full environment block that can commonly hold sensitive material
Process listingCollects all running processes
Installed applicationsCollects all installed applications via Windows uninstall registry key path (SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
Windows clipboardCollects the latest clipboard data using OpenClipboard / GetClipboardData
Screenshot captureCaptures a full screenshot of the victim machine

Gaming platforms

REVSTEALER has a deliberate focus on gaming platforms, harvesting sensitive materials, authentication tokens, and session cookies from popular platforms such as Blizzard’s Battle.net, EA Desktop, and Steam, along with targeting specific games such as Roblox and Minecraft. Instead of broadly sweeping the entire victim machine, the malware targets file paths, looking for configuration/settings files for each platform/game. For some of these targets, such as Roblox, REVSTEALER uses CryptUnprotectData to decrypt the user’s session cookie, enabling full account takeover without the user’s password.

Polygon transaction creating the REVSTEALER dead drop contract holding an encrypted fallback C2 address

The following table lists the gaming targets and their paths:

Platform/GameFile path
Battle.net (Blizzard)%LOCALAPPDATA%\Battle.net\Battle.net.config
Battlestate Games%APPDATA%\Battlestate Games\BsgLauncher\settings
Electronic Arts%LOCALAPPDATA%\Electronic Arts\EA Desktop\*.ini
Roblox%LOCALAPPDATA%\Roblox\LocalStorage\RobloxCookies.dat
Steam%LOCALAPPDATA%\Steam\local.vdf, %LOCALAPPDATA%\Steam\loginusers.vdf
Minecraft%USERPROFILE%\intentlauncher\launcherconfig
%USERPROFILE%\.lunarclient\settings\game\accounts.json
%APPDATA%\.minecraft\TlauncherProfiles.json
%APPDATA%\.feather\accounts.json
%APPDATA%\.minecraft\meteor-client\accounts.nbt
%APPDATA%\.minecraft\Impact\alts.json
%APPDATA%\Badlion Client\accounts.json
%APPDATA%\.minecraft\launcher_accounts.json
%APPDATA%\.minecraft\launcher_profiles_microsoft_store.json

Four follow-on modules delivered by C2 tasking

REVSTEALER can receive additional executable content through C2 tasks. We recovered four related, self-contained payloads that extend its capabilities beyond credential theft.

ModuleCapability
ProManagerWallet-file and browser-extension theft, phishing overlays, password-aware input capture, and payload delivery
WinUpdateCryptocurrency-address replacement and mnemonic-shaped clipboard theft
SoftManagerReverse SOCKS5 proxy and backconnect access over an encrypted WebSocket protocol
LockAppHostXMRig deployment, competitor suspension, and persistence

Despite their distinct roles, all four REVSTEALER modules follow a common design pattern: obfuscated configuration, VMProtect-style protection, and Polygon smart contracts used as dead drops for replaceable settings, including C2 endpoints and XMRig’s command line.

REVSTEALER technical white paper

Elastic Security Labs presents a comprehensive technical analysis of REVSTEALER, covering its full capabilities, network communications, anti-analysis, sandbox scoring system, EtherHiding techniques, and follow-on modules.

You can find the technical white paper here.

String decryption script for REVSTEALER in IDA Pro

Using the nightMARE framework, our team is releasing an IDAPython script available for download here. This tool can place decrypted strings in the IDA Pro decompiler to help analysts pinpoint the malware’s functionality.

REVSTEALER and MITRE ATT&CK

Elastic uses the MITRE ATT&CK framework to document common tactics, techniques, and procedures that threats use against enterprise networks.

Tactics

Tactics represent the why of a technique or sub-technique. It is the adversary’s tactical goal: the reason for performing an action.

Techniques

Techniques represent how an adversary achieves a tactical goal by performing an action.

Detecting and preventing REVSTEALER

Detection rules for REVSTEALER

Prevention rules for REVSTEALER

YARA rules for REVSTEALER

Elastic Security has created YARA rules to identify this activity.

Observables and indicators of compromise

This research discusses the following observables.

All observables are also available for download.

ObservableTypeNameReference
4c897108e8e793d6904110928c996815c302d6975c9bc61162149e855a963d50SHA-256resightloader.exeREVSTEALER Loader
adc4aa652965396b52e79435ca54987ae9eb21bf5e67de5e9461b09655165ee4SHA-256REVSTEALER
14b2ac356ed75d10ef40bbaaa48e7dd9fff7de9719c2a43ad123fe843dd4e4e2SHA-256SoftManager72fb40.exeSoftManager
7c08cf409194056a8517865e5d3433d1499bb8262263b55b49b8b07d9d182fcbSHA-256WinUpdate60e3a3.exeWinUpdate
13d7237d7289e67c2d806a65d52580b453ce4987acbe2c4c4d04833f55ebccfaSHA-256ProManagerServicedc894.exeProManager
c66d2b77b9e85c53391891212413ad9a99eb66f4b11c6a431e78884a5b2651e5SHA-256LockAppHost14a02b.exeLockAppHost
monitor5.roast-core85[.]clickdomain-nameREVSTEALER C2 server
config.hubdisplay[.]loldomain-nameProManager C2 domain
health.journal-metric[.]loldomain-nameWinUpdate C2 domain
metric.gardenpark[.]clickdomain-nameSoftManager C2 domain
0x98FF8e7cdC13AE46b83B7590B986F25f1560DF03Wallet addressProManager Polygon contract address
0x0cF1Ec8B9551103de729c3b02D77221Da9d81AccWallet addressWinUpdate Polygon contract address
0x0E04c59f31E382D2B8A1637f4B9A5f04165EC48dWallet addressSoftManager Polygon contract address
0xC4eC9B7be1c2A0B39Eca678673DcB9164CA5df53Wallet addressLockAppHost Polygon contract address

References

The following were referenced throughout the above research:

Related Content

Linux Detection Engineering - Fileless Execution

Ruben Groenewoud

From 88 lines to 1: Detecting DLL hijacking with Elastic Defend

Ian Garratt

Exploring the Hugging Face Breach: mapping AI agent tactics to Elastic Defend

Elastic Security Labs

Detecting Tycoon 2FA AiTM attacks across Entra ID and Google Workspace

Samir Bousseaden

CI/CD pipeline abuse: the problem no one is watching

Mika Ayenson