Fake Xeno Roblox Executor — Java RAT/Infostealer Hunt Pack

Trojanized "Xeno" script-executor loader (xeno.exe) drops an obfuscated Java RAT/infostealer (decompiler.exe / "Powercat") — active since Jan 2026, surged Mar 2026, still reported Aug 2026
Threat
Fake Xeno Executor / Powercat Java RAT
Severity
HIGH
Type
Trojanized Tool → RAT/Infostealer
Access
Social engineering (Discord / gaming forums) — no exploit required
Version
v0.1 · 2026-08-09
Author
HuntPack
Confidence
HIGH (2 corroborating Tier-1 vendor primaries, 90-day timeline overlap)
01

Executive Summary

Since the start of 2026, threat actors have distributed a trojanized version of Xeno, a popular third-party Roblox script-execution tool, through Discord servers, gaming forums, and compromised or impersonated accounts — advertised as an "undetected" build that bypasses Roblox's anti-cheat protections. Running the fake installer's xeno.exe quietly stages a Java Runtime Environment, launches an Allatori-obfuscated JAR disguised as decompiler.exe, and ultimately drops a full-featured Java-based RAT/infostealer into %LOCALAPPDATA%\Microsoft\GameDVR\ under a legitimate-sounding DLL name. Activity has been continuous since January 2026, surged sharply in the second half of March 2026, and was still being actively reported on by Bitdefender as recently as August 3, 2026.

The attacker's objective is broad, opportunistic account and asset theft — Discord, Roblox, Minecraft, and Microsoft Store credentials/payment tokens, plus cryptocurrency wallet data — monetized alongside full surveillance capability (keylogging, webcam access, live desktop streaming) and hands-on-keyboard remote access via an interactive PowerShell shell. Because the lure is a Roblox cheat tool, a meaningful share of victims are minors on shared family or BYOD computers, which raises both the privacy stakes and the odds that a compromised personal device also touches a managed or corporate environment.

The single highest-value defensive angle is upstream of any single stage: every step in the chain (the loader, the JRE, the obfuscated JAR, and the final payload) executes as an unsigned, low-prevalence binary from a user-writable AppData path. Blocking or alerting on that pattern (Hardening §12, Immediate tier) breaks the chain regardless of which filenames or hashes the operators rotate in next. The two confirmed C2 domain sets (solthere[.]net, powercat[.]dog) and the SHA-256-derived .xyz WebSocket root are also fully attributable and safe to block outright (IOC Appendix §10).

Defender priority: Run Q1 (hash match) and Q5 (Run-key value literally named "Display Calibration") first — both are exact-match, zero-known-FP queries, and either one alone confirms this campaign is present in your environment without the filename-collision ambiguity that Q2/Q3 carry against the genuine Xeno tool.
02

Source Review & Web Hunter Notes

Eight sources were fetched and saved verbatim for this pack (snapshot files in XenoExecutor-RAT-Hunt-sources/, fetched 2026-08-09). Two are Tier-1 vendor primaries that independently confirm the same C2 root domain across two different campaign snapshots five months apart — the strongest single piece of corroboration in this research.

#TierSourceUsed For
S01T2BleepingComputerCampaign overview, recency confirmation, capability summary; explicitly names Bitdefender as originating researcher
S02T1Bitdefender LabsPRIMARY technical writeup — full attack chain, C2 URLs/domain, 11 MD5 hashes, file paths, persistence mechanism, capability deep-dive
S03T1ThreatLocker Threat IntelligencePRIMARY earlier-variant technical writeup (Mar 2026) — original "Powercat" naming, SHA256 hashes, powercat[.]dog domain, confirms C2 root domain is stable across campaign lifetime
S04T2GBHackersCorroborating summary + re-published Bitdefender IOC table
S05T2GBHackersCorroborating summary, earlier publication date (Aug 4) for timeline cross-check
S06T2Cyber PressCorroborating summary; explicit defender guidance line ("hunt for suspicious Java execution from %LOCALAPPDATA%")
S07T2ThreatsEye JournalIndependent timeline reconstruction (Jan/Mar/Aug 2026 milestones) corroborating the campaign duration
S08T3MalwareTips ForumsCommunity discussion of the Bitdefender report; independently-written incident-response checklist used to inform the Containment Runbook (§14)

Suspicious-content check: every fetched source was reviewed for text that looked like it was trying to direct analyst/AI behavior (fake "system" instructions, requests to run commands, requests to fetch other URLs, claims of authority). None of the eight sources contained anything of that kind — all eight were straightforward threat-intelligence reporting, a vendor technical writeup, or a community forum discussion quoting that writeup.

Contradictions & gaps noted during research: the ThreatLocker page's raw text rendered one domain-list entry as ce9ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a[.]xyz (an extra "ce9" prefix) immediately followed by the correctly-formatted subdomain entries (alpha[.]ce953a0eb..., etc.) — almost certainly a page-rendering/extraction artifact rather than a second real domain, since the clean 63-character root is independently confirmed byte-for-byte in the Bitdefender writeup. This pack uses only the clean, corroborated value. No IOC in this pack depends on the malformed string.

03

Hunt Brief & Attack Chain

Hunt Hypotheses

  1. Q1/Q2 (high fidelity): If the current campaign is active in our environment, we should see a hash match against the published sample set, or a process named xeno.exe executing from %LOCALAPPDATA%\Xeno\workspace\cache\.
  2. Q3/Q4 (medium-high fidelity): We should see a javaw.exe/java.exe child process referencing decompiler.exe, preceded by a hidden PowerShell process silently extracting a JRE via ExtractToDirectory.
  3. Q5 (high fidelity): We should see a registry Run-key or StartupApproved value literally named "Display Calibration" — not a real Windows or common third-party setting.
  4. Q6 (high fidelity): We should see cmstp.exe spawned by a Java process — a UAC bypass attempt with no legitimate explanation in most fleets.
  5. Q7 (high fidelity): We should see DNS resolution of solthere[.]net, powercat[.]dog, or the ce953a0eb...[.]xyz C2 root and its NATO-phonetic subdomains.
  6. Q8 (high fidelity): We should see a process or file-write referencing one of the documented masquerading DLL names inside %LOCALAPPDATA%\Microsoft\GameDVR\ — a location none of those DLLs legitimately occupy.

Attack Chain

StepStageBehaviorTelemetry / Hunt Angle
1DeliveryAttacker promotes a fake "undetected" Xeno Roblox executor via Discord servers, gaming forums, or compromised/impersonated accounts. Victim downloads a ZIP/self-extracting archive mimicking a real Xeno install.No Falcon telemetry (browser/Discord-client download) — see Hardening §12 for the DNS/proxy angle.
2Stage 1 — LoaderVictim runs xeno.exe from %LOCALAPPDATA%\Xeno\workspace\cache\. It checks for a JRE, silently extracts one via hidden PowerShell if missing, reads C2 keys from XenoIcon.jpg.ProcessRollup2, SyntheticProcessRollup2 — Q2, Q4
3Stage 2 — Obfuscated Java Payloadxeno.exe launches javaw.exe against decompiler.exe (Allatori-obfuscated JAR). Stage 2 runs sandbox/debugger checks, registers the victim with the C2, and downloads stage 3.ProcessRollup2, SyntheticProcessRollup2, DnsRequest — Q3, Q7
4Stage 3 — Full RAT/InfostealerStage 2 writes a JAR masquerading as a legitimate DLL into %LOCALAPPDATA%\Microsoft\GameDVR\, attempts CMSTP UAC bypass, and establishes Run-key persistence as "Display Calibration".ProcessRollup2, JarFileWritten, AsepValueUpdate/RegGenericValueUpdate — Q5, Q6, Q8
5Command and ControlStage 3 opens a WebSocket connection to a SHA-256-derived .xyz C2 root; the server can push JAR self-updates and task the client.DnsRequest, NetworkConnectIP4 — Q7
6Collection / ImpactKeylogging, 500ms desktop streaming, webcam capture, browser/Discord/Roblox/Minecraft/crypto-wallet credential theft, arbitrary PowerShell execution, interactive remote shell.Largely NOT visible in standard Falcon telemetry — see Coverage Map §15 and Native Audit-Log Hunts §7
04

Consolidated IOC Table

37 indicators total: 14 file hashes, 3 domains/DGA-roots, 4 URLs, 15 host/registry artifacts, and 1 legitimate-but-abused service pair (never block). Every atomic value below traces to a saved source snapshot in XenoExecutor-RAT-Hunt-sources/ — see References (§18).

TypeValueConfidenceActionContextExpiry
MD54bdaf7792e908f163ebef137854c571dCONF HIGHDETECTFake Xeno installer archive [S02]2027-02-09
MD59930036e8f787674db39094e21413e77CONF HIGHDETECTFake Xeno installer archive [S02]2027-02-09
MD59699bd6a448d0662a1e9e353223263b6CONF HIGHDETECTFake Xeno installer archive [S02]2027-02-09
MD51a462c76efc4e73725b9e95c4a00fddbCONF HIGHDETECTFake Xeno installer archive [S02]2027-02-09
MD57b96170259a376ea79411c5713beb396CONF HIGHDETECTFake Xeno installer archive [S02]2027-02-09
MD52ead73ed62f1c2beb9043ce92e774e0bCONF HIGHDETECTMalicious xeno.exe loader (stage 1) [S02]2027-02-09
MD50aadd62b535e683a5a2fe31fde546d07CONF HIGHDETECTMalicious xeno.exe loader (stage 1) [S02]2027-02-09
MD526a94168fa25af0bcb46a18ede50af86CONF HIGHDETECTMalicious xeno.exe loader (stage 1) [S02]2027-02-09
MD50d03faf1764297c908158da77c8ffcaeCONF HIGHDETECTMalicious xeno.exe loader (stage 1) [S02]2027-02-09
MD5d123dbb5c5980bfeb22586197d2cc403CONF HIGHDETECTdecompiler.jar — stage 2 (Allatori-obfuscated) [S02]2027-02-09
MD5163c8d117ef5a4e4e9c3e92a726af0ebCONF HIGHDETECTGameDVR-dropped JAR — stage 3 [S02]2027-02-09
SHA256A9B4823A1B2C0702A1EB8A1BF18DB2D9C9604D2D2DD98A99F1D388BF7CFA71E3CONF HIGHDETECTSystem.EnterpriseServices.jar — earlier (Mar 2026) stage-3 variant [S03]2027-02-09
SHA256A33A96CBD92EEF15116C0C1DCAA8FEB6EEE28A818046AC9576054183E920EEB5CONF HIGHDETECTjd-gui.jar — earlier (Mar 2026) stage-2 variant [S03]2027-02-09
SHA256C0C3A0331B57D10D23A172A79BDF13AB066255DE41774E5A19DD8A8E8446E1FACONF HIGHDETECT3k3uklt.exe — earlier (Mar 2026) stage-1 variant [S03]2027-02-09
Domainsolthere.netCONF HIGHDETECTC2 — victim registration + payload redeem endpoint, Aug 2026 variant [S02]2027-02-09
Domainpowercat.dogCONF HIGHDETECTC2 — victim registration endpoint, Mar 2026 variant [S03]2027-02-09
Domaince953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a.xyz (+ subdomains)CONF HIGHDETECTWebSocket C2 root — SHA-256-derived hostname, confirmed identical across both Mar 2026 and Aug 2026 variants; NATO-phonetic session subdomains (alpha./beta./charlie./hotel./juliett./kilo./lima./oscar.) [S02][S03]2027-02-09
URLhxxps://solthere[.]net/justacoolkat10CONF HIGHDETECTVictim registration POST endpoint [S02]2027-02-09
URLhxxps://solthere[.]net/api/v1/redeemCONF HIGHDETECTAES+Base64 key redemption / payload retrieval endpoint [S02]2027-02-09
URLhxxps://powercat[.]dog/coolCONF MEDHUNTEarlier-variant registration endpoint (Mar 2026) [S03]2026-11-09
URLhxxps://powercat[.]dog/watermelon5CONF MEDHUNTEarlier-variant registration endpoint (Mar 2026) [S03]2026-11-09
File path%LOCALAPPDATA%\Xeno\workspace\cache\xeno.exeCONF HIGHHUNTStage-1 loader path, current variant [S02]2026-11-09
File path%LOCALAPPDATA%\Xeno\workspace\ (earlier variant root, no \cache\)CONF MEDHUNTStage-1 workspace root, Mar 2026 variant [S03]2026-11-09
File path%LOCALAPPDATA%\Java\jre\bin\javaw.exeCONF MEDHUNTSilently-staged JRE used to run every stage [S02]2026-11-09
File pathXenoIcon.jpgCONF MEDHUNTFile holding C2 validation keys, read by stage 1 [S02]2026-11-09
File pathinstance.exeCONF MEDHUNTArchive stage 1 extracts the bundled JRE from [S02]2026-11-09
File pathdecompiler.exeCONF HIGHHUNTStage-2 JAR disguised as a Windows EXE, current variant [S02]2026-11-09
File path3k3uklt.exe / jd-gui.jarCONF MEDHUNTStage-1/2 filenames, Mar 2026 variant [S03]2026-11-09
File path%LOCALAPPDATA%\Microsoft\GameDVR\{mscorlib.dll|System.IO.Compression.dll|System.Net.Http.dll|System.EnterpriseServices.dll|nvwgf2umx.dll|avcodec-58.dll|libcef.dll}CONF HIGHHUNTStage-3 JAR masquerading as legitimate Windows/NVIDIA/CEF DLL names inside the Xbox Game Bar cache directory [S02][S03]2026-11-09
File path-ntcache (user profile home root)CONF HIGHHUNTStage-3 execution log with timestamps [S02]2026-11-09
File pathSquirrelInteractive.bin (user profile home root)CONF HIGHHUNTExodus wallet runtime data log written by the injected app.asar JS [S02]2026-11-09
File pathapp.asar (inside Exodus Wallet v26.1.5 install)CONF HIGHHUNTExodus client file tampered via JS injection to weaken sandboxing [S02]2026-11-09
File pathRbxAnalytics.png (10-byte junk decoy in installer archive)CONF LOWHUNTDecoy filler file used to pad the fake-installer archive [S02]2026-09-09
RegistryHKCU\Software\Microsoft\Windows\CurrentVersion\Run, value "Display Calibration"CONF HIGHHUNTPersistence entry [S02]2026-11-09
RegistryHKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run, value "Display Calibration" = 2CONF HIGHHUNTToggle that enables the Run-key persistence entry [S02]2026-11-09
RegistryHKCU\Software\Beep\{Unique_ID}CONF MEDHUNTDevice-fingerprint key, Mar 2026 variant [S03]2026-11-09
Service (abused, legitimate)ipapi.co, ipwho.isCONF LOWPIVOTLegitimate third-party geolocation APIs queried by stage 3 for victim fingerprinting — never block; use only as corroborating context alongside another hit [S02]2026-09-09
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Windows endpoints (consumer + BYOD/employee-owned gaming devices)ProcessRollup2, SyntheticProcessRollup2, DnsRequest, AsepValueUpdate/RegGenericValueUpdate, JarFileWrittenHighLow — full process/registry/DNS telemetry covers the loader-through-persistence chain (Q1–Q6, Q8)
In-process JVM behavior (sandbox/debugger evasion, reflective class loading)None — occurs entirely inside the JVM's own memory spaceMediumHigh — no Falcon event type observes JVM-internal control flow; acknowledged gap, not a missing query
Surveillance subsystem (keylogging, screenshot streaming, webcam via DirectShow COM)None standard; Sensitive Process Access (if licensed) or Sysmon Event ID 10 as a partial substituteHigh (privacy/child-safety impact)High — COM/DirectShow interaction and raw Win32 hook installation are not modeled as Falcon events
Credential stores (browser cookie DBs, Discord leveldb, Exodus app.asar, Microsoft Store .tbres tokens)None standard; Sysmon FileCreate/ProcessAccess as a partial substituteHighHigh — read/modify access to these files is not a discrete Falcon event type; see Native Audit-Log Hunts §7
Network egress (C2 domains, DGA-style root)DnsRequest, NetworkConnectIP4HighLow — Q7 gives exact-match + suffix-regex coverage of every published domain
06

ATT&CK Mapping

TacticTechniqueTechnique NameObserved BehaviorQuery / Control
ExecutionT1204.002User Execution: Malicious FileVictim manually runs xeno.exe believing it is the legitimate Xeno Roblox script executor.Q1, Q2
ExecutionT1059.001Command and Scripting Interpreter: PowerShellHidden PowerShell silently extracts the bundled JRE; later abused for attacker-issued Base64 PowerShell commands and an interactive remote shell.Q4 (extraction only — GAP for arbitrary C2-issued commands)
Defense EvasionT1027Obfuscated Files or InformationStage-2 JAR obfuscated with the demo version of Allatori, a legitimate commercial obfuscator.Q1, Q3 (contextual)
Defense EvasionT1036.008Masquerading: Masquerade File TypeJAR renamed with a .exe extension (decompiler.exe) and stage-3 JARs written under real Windows/NVIDIA/CEF DLL names.Q3, Q8
Defense EvasionT1497.001Virtualization/Sandbox Evasion: System ChecksDisk-size, MAC-address, registry/WMI VM-artifact checks, and monitoring-tool process enumeration before running.GAP — in-process JVM behavior, no Falcon telemetry
Defense EvasionT1622Debugger EvasionJVM debug-flag and stack-trace inspection (-Xdebug, suspend=, jdwp, IntelliJ/Eclipse/NetBeans/BytecodeViewer strings).GAP — in-process JVM behavior
Defense EvasionT1548.002Abuse Elevation Control Mechanism: Bypass User Account ControlCMSTP-based UAC bypass attempt immediately after stage 3 lands.Q6
Defense EvasionT1112Modify RegistryStartupApproved\Run value toggled to 2 to enable the persistence entry.Q5
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run Keys"Display Calibration" value under CurrentVersion\Run.Q5
Command and ControlT1071.001Application Layer Protocol: Web ProtocolsHTTPS POST registration/redeem endpoints and a WebSocket C2 channel.Q7
Command and ControlT1568.002Dynamic Resolution: Domain Generation AlgorithmsRuntime SHA-256-derived C2 root domain with NATO-phonetic session subdomains, identical across both observed campaign variants.Q7
Command and ControlT1105Ingress Tool TransferStage 2 downloads stage 3; the C2 pushes self-update JARs over the WebSocket channel.Q7 (partial — comms only, not payload content)
Command and ControlT1620Reflective Code LoadingStage 2 loads the retrieved payload class in-memory via loadClass()/method.invoke() rather than writing and executing a new process.GAP — in-process JVM behavior
CollectionT1056.001Input Capture: KeyloggingJava Native Access hooks on User32 for keyboard and mouse events.GAP — no Falcon event for Win32 hook installation via JNA
CollectionT1113 / T1125Screen Capture / Video CapturePeriodic and 500ms-interval streaming screenshots; webcam access via DirectShow COM objects.GAP — COM/DirectShow access is not a standard Falcon event
Credential AccessT1555.003Credentials from Password Stores: Credentials from Web BrowsersChrome/Edge/Brave/Opera/Opera GX/Vivaldi cookie and DPAPI-decrypted credential theft.GAP — see Native Audit-Log Hunts §7
Credential AccessT1528Steal Application Access TokenDiscord token theft plus Discord API account/payment-method interrogation.GAP — see Native Audit-Log Hunts §7
CollectionT1005Data from Local SystemRoblox/Minecraft account and session data, Microsoft Store .tbres tokens, crypto-wallet data.GAP — see Native Audit-Log Hunts §7
CollectionT1554Compromise Client Software BinaryExodus Wallet v26.1.5 app.asar tampered via injected JavaScript to weaken sandboxing and log runtime wallet data.GAP — .asar modification is not a monitored Falcon file-write event type
07

Native Audit-Log Hunts

Falcon's standard process/file/registry/network event model does not observe in-JVM behavior (sandbox checks, reflective class loading), COM/DirectShow interaction (webcam), raw Win32 keyboard hooks, or read/modify access to browser and application credential stores. The six checks below are the best available substitutes and are the honest complement to the Coverage Map gaps in §15 — they are not CQL and must be run through RTR, Sysmon, a licensed Falcon module, or your proxy/firewall layer instead.

RTR / OSQuery file-existence sweep

Falcon Real Time Response (or an OSQuery-based EDR) can directly check for artifact presence without a continuous detection: %LOCALAPPDATA%\Xeno\workspace\cache\, %LOCALAPPDATA%\Microsoft\GameDVR\, and a file named -ntcache or SquirrelInteractive.bin directly in the user profile root. None of these three names appear in a clean Windows profile.

Sysmon Event ID 11 (FileCreate) — companion telemetry

Where Sysmon runs alongside Falcon, filter FileCreate events for TargetFilename matching -ntcache, SquirrelInteractive.bin, or a modification timestamp on app.asar inside any installed Exodus Wallet directory — Falcon's canonical event list (crowdstrike-logscale-v3) has no generic file-create event for non-PE/non-archive file types, so this is a genuine telemetry gap Sysmon can close.

Sensitive Process Access (if licensed) / Sysmon Event ID 10 — credential-store and browser-process handle access

If the CrowdStrike Identity Protection / Sensitive Process Access module is licensed, or Sysmon ProcessAccess auditing is enabled, hunt for a javaw.exe/java.exe process opening a handle into chrome.exe, msedge.exe, brave.exe, opera.exe, vivaldi.exe, or Discord.exe — the browser-cookie and Discord-token theft T1555.003/T1528 gap flagged in the Coverage Map.

Windows Security Event 4688 — redundant process-creation cross-check

In estates where process-creation auditing with command-line logging is enabled (GPO: Audit Process Creation + Include command line in process creation events), Event 4688 gives a redundant, Falcon-independent copy of the Q2/Q3/Q4/Q6 process chains — useful for environments correlating into a separate SIEM.

DNS/proxy-layer DGA heuristic

At the firewall or web proxy (not endpoint telemetry), alert on outbound HTTPS/WebSocket connections to newly-registered .xyz domains whose hostname label is a 63–64 character lowercase hex string — a generic heuristic that would also have caught this campaign's C2 root before Bitdefender/ThreatLocker published it by name.

Unmanaged per-user JRE inventory sweep

Query your software-inventory/RMM tooling for a Java Runtime Environment present under any user's %LOCALAPPDATA% that did not arrive via a managed software-deployment channel (Ninja, SCCM, Intune). An unexpected per-user JRE is a weak but cheap signal worth a periodic sweep, since every stage of this malware depends on one being present.

08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Known Sample Execution — Hash Match (Xeno/Powercat Family)
CONF HIGH FP LOW COST LOW

Looks for: Process execution matching MD5/SHA256 hashes published by Bitdefender (Aug 2026, current xeno.exe/decompiler.exe/GameDVR-stage variant) and ThreatLocker (Mar 2026, earlier 3k3uklt.exe/jd-gui.jar variant).

// HUNT: Known Xeno/Powercat Sample Execution (MD5/SHA256 Hash Match)
// MITRE: T1204.002 (User Execution: Malicious File)
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: none expected -- exact hash match against Bitdefender (2026-08-03) and
//   ThreatLocker (2026-03-25) published samples. A hit is a confirmed detonation, not a heuristic.
// LOOKBACK: 180d (hashes are durable IOCs; widen if hunting historical dwell time)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| MD5HashData=/^(4bdaf7792e908f163ebef137854c571d|9930036e8f787674db39094e21413e77|9699bd6a448d0662a1e9e353223263b6|1a462c76efc4e73725b9e95c4a00fddb|7b96170259a376ea79411c5713beb396|2ead73ed62f1c2beb9043ce92e774e0b|0aadd62b535e683a5a2fe31fde546d07|26a94168fa25af0bcb46a18ede50af86|0d03faf1764297c908158da77c8ffcae|d123dbb5c5980bfeb22586197d2cc403|163c8d117ef5a4e4e9c3e92a726af0eb)$/i or SHA256HashData=/^(a9b4823a1b2c0702a1eb8a1bf18db2d9c9604d2d2dd98a99f1d388bf7cfa71e3|a33a96cbd92eef15116c0c1dcaa8feb6eee28a818046ac9576054183e920eeb5|c0c3a0331b57d10d23a172a79bdf13ab066255de41774e5a19dd8a8e8446e1fa)$/i
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, MD5HashData, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q2 · Fake Xeno Loader — Execution from AppData Xeno Workspace Cache
CONF MED FP LOW COST MED

Looks for: A process named xeno.exe running from the exact staged path Bitdefender documented (%LOCALAPPDATA%\Xeno\workspace\cache\), which is where the trojanized loader hides while imitating a real Xeno installation. FP: The genuine, non-trojanized Xeno Roblox executor also creates a %LOCALAPPDATA%\Xeno\ tree and ships a file literally named xeno.exe — filename and parent directory alone cannot distinguish trojan from legitimate tool. Treat a bare hit here as INVESTIGATE, not confirmed-malicious.

// HUNT: Fake Xeno Roblox Loader — xeno.exe from Staged AppData Workspace
// MITRE: T1204.002 (User Execution: Malicious File), T1036.005 (Masquerading: Match Legitimate Name or Location)
// CONF: medium
// FP: low
// COST: medium
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: the LEGITIMATE (non-trojanized) Xeno Roblox script executor also installs to
//   %LOCALAPPDATA%\Xeno\ and ships a real xeno.exe -- filename + path alone cannot fully separate
//   trojan from genuine tool. Both are third-party Roblox anti-cheat-evasion software your AUP may
//   already prohibit; treat any hit as at minimum a policy violation worth investigating.
// TUNING: prioritize hits that also match Q1 (hash), or that spawn a child javaw.exe/java.exe within
//   seconds (Q3) -- the genuine Xeno build does not bundle or invoke a JRE. A xeno.exe process with
//   no such child chain and no hash match is lower priority; still log it for the AUP/software-inventory
//   angle described in the Hardening section.
// LOOKBACK: 30d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^xeno(\.exe)?$/i
| ImageFileName=/\\Xeno\\workspace\\cache\\/i
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData, MD5HashData, aid])
| sort(@timestamp, order=desc)
Q3 · JAR Masquerading as EXE — decompiler.exe Stage-2 Execution
CONF MED FP MED COST MED

Looks for: javaw.exe/java.exe invoked with a command line referencing decompiler.exe -- the Allatori-obfuscated JAR that stage 1 launches disguised as a Windows binary. FP: Legitimate Java decompiler tools (JD-GUI, CFR, Procyon, IntelliJ's built-in decompiler) can also produce a command line containing the word "decompiler". A single hit with no Xeno/GameDVR path context and no hash match may be a developer running a real decompiler tool.

// HUNT: JAR Masquerading as Windows EXE — decompiler.exe Stage-2 Payload
// MITRE: T1036.008 (Masquerading: Masquerade File Type), T1027 (Obfuscated Files or Information), T1204.002 (User Execution: Malicious File)
// CONF: medium
// FP: medium
// COST: medium
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: developers running legitimate Java decompiler tooling (JD-GUI, CFR, Procyon,
//   IntelliJ's bundled decompiler, bytecode-viewer) can produce a CommandLine containing "decompiler".
// TUNING: prioritize hits where ParentBaseFileName = xeno.exe, or where ImageFileName/CommandLine
//   also references \Xeno\ or \Microsoft\GameDVR\ (see Q2/Q8), or where SHA256HashData/MD5HashData
//   matches Q1. Exclude known internal dev workstations with an approved decompiler tool in their
//   software inventory baseline if this becomes a recurring low-value hit there.
// LOOKBACK: 30d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^javaw?(\.exe)?$/i
| CommandLine=/decompiler(\.exe)?/i
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, ParentProcessId_decimal, SHA256HashData, MD5HashData, aid])
| sort(@timestamp, order=desc)
Q4 · Hidden PowerShell JRE Extraction (Stage-1 Loader Behavior)
CONF HIGH FP MED COST LOW

Looks for: A hidden, execution-policy-bypassed PowerShell process using .NET's ZipFile::ExtractToDirectory to silently unpack a bundled JRE -- the exact technique Bitdefender documented for xeno.exe's first-run Java staging. FP: Some legitimate installers (game launchers, IDE bootstrappers, internal deployment scripts) use the same hidden-window + ExecutionPolicy Bypass + ExtractToDirectory pattern to silently unpack bundled runtimes.

// HUNT: Hidden PowerShell JRE Extraction — Fake Xeno Loader Stage-1 Behavior
// MITRE: T1059.001 (Command and Scripting Interpreter: PowerShell), T1027 (Obfuscated Files or Information)
// CONF: high
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: some legitimate installers and internal deployment scripts silently unpack a
//   bundled Java/other runtime with the same -WindowStyle Hidden -ExecutionPolicy Bypass +
//   ExtractToDirectory pattern (e.g., in-house app bootstrappers, some game launchers).
// TUNING: prioritize hits where ParentBaseFileName is xeno.exe or instance.exe (undocumented/
//   unmanaged parent), and de-prioritize hits from known, inventoried software-deployment parents
//   (RMM agent, approved installer executables) if this becomes a recurring benign source.
// LOOKBACK: 30d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^powershell(\.exe)?$/i
| CommandLine=/-windowstyle\s+hidden/i
| CommandLine=/extracttodirectory/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine, ImageFileName, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q5 · Persistence via Run Key Named "Display Calibration"
CONF HIGH FP LOW COST LOW

Looks for: A registry value named exactly "Display Calibration" written under either the CurrentVersion\Run autostart key (the persistence entry itself) or the Explorer\StartupApproved\Run key (the toggle that enables it) -- both steps Bitdefender documented for stage-3.

// HUNT: Persistence via Run Key Named "Display Calibration"
// MITRE: T1547.001 (Boot or Logon Autostart Execution: Registry Run Keys), T1112 (Modify Registry)
// CONF: high
// FP: low
// COST: low
// REQUIRES: AsepValueUpdate, RegGenericValueUpdate
// FALSE POSITIVES: none expected -- "Display Calibration" is not a real Windows autostart entry
//   name shipped by Microsoft or any common commercial software observed in this research.
// LOOKBACK: 30d
#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate/
| RegValueName="Display Calibration"
| table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, aid])
| sort(@timestamp, order=desc)
Q6 · CMSTP Spawned by a Java Process (UAC Bypass Attempt)
CONF HIGH FP LOW COST LOW

Looks for: cmstp.exe launched with a parent process of javaw.exe/java.exe -- the elevation attempt stage-3 makes immediately after landing in %LOCALAPPDATA%\Microsoft\GameDVR\.

// HUNT: CMSTP Spawned by a Java Process — Possible UAC Bypass
// MITRE: T1548.002 (Abuse Elevation Control Mechanism: Bypass User Account Control)
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: none expected in typical fleets -- cmstp.exe (the Connection Manager Profile
//   Installer) is rarely used at all in modern Windows estates, and a Java process is never a
//   legitimate parent for it. Verify against any internal VPN-profile tooling before treating a
//   fleet-wide hit set as pure noise.
// LOOKBACK: 30d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^cmstp(\.exe)?$/i
| ParentBaseFileName=/^javaw?(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, ParentProcessId_decimal, aid])
| sort(@timestamp, order=desc)
Q7 · DNS Requests to Known Xeno/Powercat C2 Infrastructure
CONF HIGH FP LOW COST MED

Looks for: DNS resolution of the two registration/redeem domains (solthere[.]net, powercat[.]dog) or the dynamically-generated WebSocket C2 root (a SHA-256-derived 63-character .xyz hostname and its NATO-phonetic session subdomains), joined back to the requesting process for triage.

// HUNT: DNS Requests to Known Xeno/Powercat C2 Infrastructure
// MITRE: T1071.001 (Application Layer Protocol: Web Protocols), T1568.002 (Dynamic Resolution: Domain Generation Algorithms)
// CONF: high
// FP: low
// COST: medium
// REQUIRES: DnsRequest, ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: none expected -- these are attacker-registered, campaign-specific domains, not
//   shared cloud/CDN infrastructure. The .xyz root is a runtime SHA-256-derived hostname unique to
//   this malware family's C2 protocol.
// LOOKBACK: 30d
#event_simpleName=DnsRequest
| DomainName="solthere.net" or DomainName=/\.solthere\.net$/i or DomainName="powercat.dog" or DomainName=/\.powercat\.dog$/i or DomainName=/(^|\.)ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a\.xyz$/i
| rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal)
| join(query={#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/}, field=TargetProcessId_decimal, include=[FileName, CommandLine, ParentBaseFileName])
| table([@timestamp, ComputerName, UserName, DomainName, FileName, CommandLine, ParentBaseFileName, aid])
| sort(@timestamp, order=desc)
Q8 · Stage-3 JAR in GameDVR Masquerading as a Legitimate Windows DLL
CONF HIGH FP LOW COST MED

Looks for: A process command line or written file referencing one of the exact masquerading filenames Bitdefender/ThreatLocker documented (mscorlib.dll, System.IO.Compression.dll, System.Net.Http.dll, System.EnterpriseServices.dll, nvwgf2umx.dll, avcodec-58.dll, libcef.dll) sitting inside the user-writable %LOCALAPPDATA%\Microsoft\GameDVR\ path -- none of these DLLs legitimately live there.

// HUNT: Stage-3 JAR in GameDVR Masquerading as a Legitimate Windows DLL
// MITRE: T1036.008 (Masquerading: Masquerade File Type), T1620 (Reflective Code Loading), T1204.002 (User Execution: Malicious File)
// CONF: high
// FP: low
// COST: medium
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2, JarFileWritten
// FALSE POSITIVES: none expected -- mscorlib.dll, System.IO.Compression.dll, System.Net.Http.dll,
//   System.EnterpriseServices.dll, nvwgf2umx.dll, avcodec-58.dll and libcef.dll are real Windows/
//   NVIDIA/Chromium-Embedded-Framework component names, but none of them legitimately ship inside
//   a user-writable %LOCALAPPDATA%\Microsoft\GameDVR\ path -- their genuine copies live under
//   System32, WinSxS, or an application's own Program Files install directory. A hit here is the
//   file NAME being real but the file LOCATION being wrong, which is the masquerade itself.
// LOOKBACK: 30d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2|JarFileWritten/
| CommandLine=/\\Microsoft\\GameDVR\\(mscorlib|System\.IO\.Compression|System\.Net\.Http|System\.EnterpriseServices|nvwgf2umx|avcodec-58|libcef)\.dll/i or TargetFileName=/\\Microsoft\\GameDVR\\(mscorlib|System\.IO\.Compression|System\.Net\.Http|System\.EnterpriseServices|nvwgf2umx|avcodec-58|libcef)\.dll/i
| table([@timestamp, ComputerName, UserName, #event_simpleName, FileName, ImageFileName, TargetFileName, CommandLine, ParentBaseFileName, SHA256HashData, aid])
| sort(@timestamp, order=desc)
09

CrowdStrike Custom IOA Recommendations

IOA-1 — Run Key Persistence Named "Display Calibration"
Registry OperationHigh

Based on: Q5   MITRE: T1547.001, T1112   Action: Detect (promote to Block after a 14-day clean canary run)

Detection logic:

  • Registry Value Name: .*Display Calibration$
  • Registry Value Type/Path: any Run or StartupApproved\Run key under HKCU or HKLM

Why: Catches the exact persistence mechanism Bitdefender documented; the value name is not a real Windows setting.

FP tuning: None expected. Confirm no internal tooling coincidentally reuses this literal string before promoting to Block.

Validation: On an isolated canary endpoint, write a test value literally named "Display Calibration" under HKCU\...\Run, confirm the rule fires, then delete the test value.

IOA-2 — Fake Xeno Loader Execution Path
Process CreationMedium

Based on: Q2   MITRE: T1204.002, T1036.005   Action: Detect only — do not promote to Block

Detection logic:

  • Image Filename: .*\\Xeno\\workspace\\cache\\xeno\.exe$
  • Command Line: (leave unset — filename/path match is sufficient for Detect)

Why: Surfaces every Xeno-branded executor launch (legitimate or trojanized) for AUP/software-inventory review and as an early pivot into the rest of the chain.

FP tuning: High collision risk with the genuine, non-trojanized Xeno tool — see Q2 FP notes. This is why the rule stays in Detect mode indefinitely rather than being promoted.

Validation: Not applicable for Block promotion; review Detect-mode hits weekly against Q1 hash matches and Q3 child-process hits to separate real detonations from legitimate-tool AUP violations.

IOA-3 — CMSTP Spawned by a Java Process
Process CreationHigh

Based on: Q6   MITRE: T1548.002   Action: Detect (promote to Block after a 14-day clean canary run)

Detection logic:

  • Image Filename: .*\\cmstp\.exe$
  • Parent Image Filename: .*\\java(w)?\.exe$

Why: A Java process spawning the Connection Manager Profile Installer is a coherent, rarely-legitimate elevation attempt.

FP tuning: None expected outside of niche internal VPN-profile automation — verify none exists before promoting to Block.

Validation: On an isolated canary VM, launch cmstp.exe with a benign .inf profile from a test Java wrapper process; confirm the rule fires; clean up the test profile afterward.

IOA-4 — DNS Resolution of Confirmed Campaign C2 Domains
DNS RequestHigh

Based on: Q7   MITRE: T1071.001, T1568.002   Action: Detect first — promote to Block once your DNS/proxy layer's own blocklist coverage is confirmed

Detection logic:

  • Domain Name: .*\.solthere\.net$|^solthere\.net$
  • Domain Name: .*\.powercat\.dog$|^powercat\.dog$
  • Domain Name: (^|.*\.)ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a\.xyz$

Why: Direct coverage for both observed C2 domain sets and the stable DGA-style WebSocket root shared by both campaign variants.

FP tuning: None expected — attacker-registered, campaign-specific infrastructure.

Validation: From an isolated canary endpoint, perform an nslookup for solthere.net (safe — resolves to attacker infrastructure but issues no malicious payload on a bare DNS query); confirm the rule fires.

Alert Package — Primary Detection (Q2 → Q3 Loader Chain)

alert-builder-v2 output for the highest-signal composite detection. Folded into this section per the standard 18-section layout, since Custom IOA Recommendations is the closest operational home for scheduled-search + alert-email content.

Scheduled Search Configuration (LogScale UI)

NAME:
HUNT: Fake Xeno Roblox Loader - Java RAT Stage 1/2 Execution Chain

DESCRIPTION:
Detects the fake Xeno Roblox script-executor loader chain: a process named xeno.exe running from a staged AppData workspace directory, followed within seconds by a javaw.exe/java.exe child process whose command line references a JAR disguised as decompiler.exe. This is the stage-1-to-stage-2 handoff of a Java-based RAT/infostealer distributed as a trojanized "undetected" Roblox cheat tool via Discord and gaming forums, active since early 2026.

MITRE: T1204.002 (User Execution: Malicious File), T1036.008 (Masquerading: Masquerade File Type), T1027 (Obfuscated Files or Information)
Tactics: Execution, Defense Evasion
Priority: HIGH (escalate immediately if the chain reaches stage 3 — a file write or execution referencing %LOCALAPPDATA%\Microsoft\GameDVR\ — or if a Run-key value named "Display Calibration" appears)
FP Sources: the genuine, non-trojanized Xeno Roblox executor (filename/path collision — see Q2 FP notes); legitimate Java decompiler tooling on developer workstations (JD-GUI, CFR, Procyon — see Q3 FP notes)

Alert Package (sent when the scheduled search fires)

SUBJECT:
🚨 HUNT ALERT 🚨 — Fake Xeno Roblox Loader Detected (Possible RAT/Infostealer Staging)

BODY:
A process named xeno.exe executed from %LOCALAPPDATA%\Xeno\workspace\cache\ and was followed by a javaw.exe/java.exe child process referencing decompiler.exe — the documented stage-1-to-stage-2 handoff of a Java-based RAT/infostealer masquerading as an "undetected" Roblox cheat tool (Bitdefender, Aug 2026; ThreatLocker, Mar 2026). This alert fires on execution, not just a blocked attempt — treat it as active unless #event_simpleName confirms otherwise. Check first: whether SHA256HashData/MD5HashData matches the known-bad hash list (Q1 — if yes, this is a confirmed detonation, not a legitimate-tool collision), the full ImageFileName path of both stage-1 and stage-2 processes, and whether a follow-on write/exec referencing %LOCALAPPDATA%\Microsoft\GameDVR\ has already occurred (stage 3 — full RAT capability is live).

Investigation Checklist

  1. Blocked or executed? Check #event_simpleName — ProcessBlocked means Falcon stopped it, ProcessRollup2/SyntheticProcessRollup2 means it ran.
  2. Check SHA256HashData/MD5HashData against the Q1 known-sample list — a match means this is a confirmed detonation and skips the legitimate-tool ambiguity entirely.
  3. Confirm the child-process chain: does the xeno.exe hit have a javaw.exe/java.exe child within seconds? No child chain + no hash match = likely just the genuine Xeno tool (AUP matter, not RAT).
  4. Search the same aid/host for any hit on Q5 (Run key "Display Calibration"), Q6 (CMSTP from Java), or Q8 (GameDVR masquerade) in the following 5 minutes — any of these confirms stage 3 has landed and full RAT capability (keylogging, webcam, remote shell) is live.
  5. Search the same aid/host on Q7 for DNS/network activity to solthere[.]net, powercat[.]dog, or the *.ce953a0eb...xyz C2 root — confirms live C2 contact.
  6. Check the logged-on UserName and whether this is a managed corporate asset or a BYOD/personal device — shapes the containment and user-notification path.
  7. Check frequency environment-wide (groupBy ComputerName): a single host is a targeted/opportunistic infection; many hosts lighting up in a short window suggests a shared-download source (e.g., a compromised Discord server link) worth a broader user-comms push.
  8. Isolate if: execution confirmed (not just blocked) AND (hash match OR the stage-3/persistence/C2 chain above is present). Do not wait for webcam/keylogger confirmation — by the time that's visible the RAT is already fully live.

Pivot Queries

Query 1 — Confirm the full stage-1/stage-2 process chain on this host

>> YOU NEED:  ComputerName (from the alert)
              Alert timestamp (from the alert — set LogScale window to ±10 min)
>> FILL IN:   ComputerName="REPLACE_WITH_HOSTNAME"

Host-scoped

#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ComputerName="REPLACE_WITH_HOSTNAME"
| FileName=/^(xeno|javaw?|cmstp)(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData, aid])
| sort(@timestamp, order=asc)

Environment-wide

#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^(xeno|javaw?|cmstp)(\.exe)?$/i
| CommandLine=/decompiler|GameDVR/i
| groupBy([ComputerName], function=[count(as=Hits), collect(CommandLine)])
| sort(Hits, order=desc, limit=200)

Query 2 — Check for stage-3 persistence ("Display Calibration") on this host

>> YOU NEED:  ComputerName (from the alert)
>> FILL IN:   ComputerName="REPLACE_WITH_HOSTNAME"

Host-scoped

#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate/
| ComputerName="REPLACE_WITH_HOSTNAME"
| RegValueName="Display Calibration"
| table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, aid])

Environment-wide

#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate/
| RegValueName="Display Calibration"
| groupBy([ComputerName], function=count(as=Hits), limit=200)
| sort(Hits, order=desc)

Query 3 — Check for live C2 contact on this host

>> YOU NEED:  ComputerName (from the alert)
              Alert timestamp (from the alert — set LogScale window to ±10 min)
>> FILL IN:   ComputerName="REPLACE_WITH_HOSTNAME"

Host-scoped

#event_simpleName=DnsRequest
| ComputerName="REPLACE_WITH_HOSTNAME"
| DomainName="solthere.net" or DomainName=/\.solthere\.net$/i or DomainName="powercat.dog" or DomainName=/\.powercat\.dog$/i or DomainName=/(^|\.)ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a\.xyz$/i
| table([@timestamp, ComputerName, UserName, DomainName, aid])

Environment-wide

#event_simpleName=DnsRequest
| DomainName="solthere.net" or DomainName=/\.solthere\.net$/i or DomainName="powercat.dog" or DomainName=/\.powercat\.dog$/i or DomainName=/(^|\.)ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a\.xyz$/i
| groupBy([ComputerName], function=count(as=Hits), limit=200)
| sort(Hits, order=desc)

Query 4 — Environment-wide frequency (single host vs. broad spread)

Environment-wide

#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^xeno(\.exe)?$/i
| ImageFileName=/\\Xeno\\workspace\\cache\\/i
| groupBy([ComputerName], function=count(as=TotalHits), limit=500)
| sort(TotalHits, order=desc)
10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import — 14 hashes + 3 domains, all sourced
type,value,action,severity,expiration,description,tags
md5,4bdaf7792e908f163ebef137854c571d,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,9930036e8f787674db39094e21413e77,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,9699bd6a448d0662a1e9e353223263b6,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,1a462c76efc4e73725b9e95c4a00fddb,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,7b96170259a376ea79411c5713beb396,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,2ead73ed62f1c2beb9043ce92e774e0b,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,0aadd62b535e683a5a2fe31fde546d07,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,26a94168fa25af0bcb46a18ede50af86,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,0d03faf1764297c908158da77c8ffcae,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,d123dbb5c5980bfeb22586197d2cc403,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
md5,163c8d117ef5a4e4e9c3e92a726af0eb,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
sha256,A9B4823A1B2C0702A1EB8A1BF18DB2D9C9604D2D2DD98A99F1D388BF7CFA71E3,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
sha256,A33A96CBD92EEF15116C0C1DCAA8FEB6EEE28A818046AC9576054183E920EEB5,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
sha256,C0C3A0331B57D10D23A172A79BDF13AB066255DE41774E5A19DD8A8E8446E1FA,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
domain,solthere.net,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
domain,powercat.dog,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer,campaign:FakeXenoExecutor
domain,ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a.xyz,detect,critical,2027-02-09,Fake Xeno / Powercat RAT-infostealer (base C2 root; NATO-phonetic subdomains also observed),campaign:FakeXenoExecutor
Behavioral Signaturesfor Custom IOA / EDR rule authoring
# Process chain: xeno.exe (from %LOCALAPPDATA%\Xeno\workspace\cache\) -> javaw.exe/java.exe
#   referencing decompiler.exe within seconds of the parent's start
# Registry: Run or StartupApproved\Run value named exactly "Display Calibration"
# Process: cmstp.exe spawned with parent javaw.exe or java.exe
# File path: %LOCALAPPDATA%\Microsoft\GameDVR\{mscorlib|System.IO.Compression|System.Net.Http|
#   System.EnterpriseServices|nvwgf2umx|avcodec-58|libcef}.dll (none legitimately live here)
# File names (host artifacts, not to be auto-blocked): -ntcache, SquirrelInteractive.bin, XenoIcon.jpg,
#   instance.exe, RbxAnalytics.png (10-byte junk decoy)
Named Malware / Toolingcampaign attribution reference
Malware family / aliases : Fake Xeno Executor loader -> Java RAT/infostealer, tracked as "Powercat" (ThreatLocker, Mar 2026)
Obfuscator abused        : Allatori (demo/commercial JAR obfuscator)
Lure vector              : Trojanized build of the legitimate "Xeno" Roblox script executor
Distribution channels    : Discord servers, gaming forums, compromised/impersonated accounts
Targeted platforms       : Discord, Roblox, Minecraft (Feather/Lunar/Meteor/Modrinth/Prism/official),
                            Microsoft Store tokens, Exodus Wallet v26.1.5 (+ Atomic/Cake/SafePal/
                            TronWallet/Monero Wallet inventory checks)
Targeted browsers        : Chrome, Edge, Brave, Opera, Opera GX, Vivaldi
Hardening / ASR Audit Checklistpost-deployment verification
# Software-inventory / ASR audit checklist (see Hardening §12 for full deployment steps)
1. Get-MpPreference | Select -Expand AttackSurfaceReductionRules_Ids
   -> confirm rule 01443614-cd74-433a-b99e-2ecdc07bfc25 is present and its matching
     AttackSurfaceReductionRules_Actions entry is 1 (Block) or 2 (Audit)
2. reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
   -> confirm EnableScriptBlockLogging = 1
3. Software-inventory sweep: flag any %LOCALAPPDATA%\Xeno\ or per-user JRE not sourced from a
   managed deployment channel (Ninja/SCCM/Intune)
11

Detection Validation Gates

Telemetry Ready

Confirm ProcessRollup2/SyntheticProcessRollup2, DnsRequest, AsepValueUpdate/RegGenericValueUpdate, and JarFileWritten are enabled in the sensor policy for the target host groups. Identity Protection licensing is not required for this pack.

Benign Baseline

Run Q2, Q3, Q4, and Q8 once with a wide time window and no expectation of hits, to confirm zero baseline noise in your environment before relying on them operationally. Flag Q3 specifically if your fleet has developers who legitimately run Java decompiler tooling — that is the one query most likely to have a non-zero benign baseline.

Positive Tests (isolated/canary endpoint only, benign payloads only)

  • Q5: write a registry value literally named Display Calibration under HKCU\Software\Microsoft\Windows\CurrentVersion\Run on a test endpoint, confirm the query fires, then delete the test value.
  • Q6: from a test Java wrapper process on an isolated VM, launch cmstp.exe against a benign .inf profile, confirm the query fires, then remove the test profile.
  • Q7: from a test endpoint, run nslookup solthere.net or nslookup powercat.dog — a bare DNS lookup is safe and does not require running any malicious code, and it should surface in the query within minutes.
  • Q1/Q2/Q3/Q8: do NOT detonate the real sample to validate these. Substitute the SHA256 of a known-benign test binary into Q1's hash list temporarily, or rely on the Q5/Q6/Q7 tests above as sufficient end-to-end validation of the detection pipeline.

Promotion

Q5 and Q6 are safe Detect→Block Custom IOA promotion candidates after a 14-day clean canary run. Q7 promotes to Block once you've confirmed your DNS/proxy layer doesn't already own domain blocking upstream. Q2 and Q3 stay in Detect-only mode indefinitely — both carry a documented legitimate-tool collision risk (see their FP notes) that makes Block mode inappropriate regardless of canary results.

12

Hardening — Tiered & Deployable

TTP: Fake Xeno Roblox Executor → Java RAT/Infostealer ("Powercat")   Primary Mitigations: M1038, M1040, M1042, M1047, M1021, M1043, M1017

Immediate — deploy this week

Block unknown/unsigned executables launched from user-writable AppData paths

This single control breaks the entire chain at its weakest point — every stage (xeno.exe, the JRE, decompiler.exe, the GameDVR JAR) runs from a user-writable AppData directory with no admin action required.

Framework: MITRE M1038 (Execution Prevention); Microsoft Defender Attack Surface Reduction rule 01443614-cd74-433a-b99e-2ecdc07bfc25 — "Block executable files from running unless they meet a prevalence, age, or trusted list criterion" (vendor guidance, Microsoft Learn ASR rules reference).

Immediate — deploy this week

Verify/enable CrowdStrike Falcon "Suspicious Registry Operations" and Cloud Anti-Malware — Extra Aggressive in the sensor's prevention policy

Directly targets the AsepValueUpdate/RegGenericValueUpdate persistence write (Q5) and raises the ML bar against the obfuscated JAR payloads (Q1/Q3/Q8) at prevention time, not just detection time.

Framework: MITRE M1040 (Behavior Prevention on Endpoint).

Immediate — deploy this week

Enable PowerShell Script Block Logging + Module Logging for standard (non-admin) users

Gives retroactive visibility into the hidden JRE-extraction command (Q4) and any attacker-issued Base64 PowerShell sent over the C2 channel — the single biggest telemetry gap flagged in the Coverage Map (T1059.001 attacker-issued commands).

Framework: MITRE M1042 (Disable/Remove Feature or Program) + M1047 (Audit); CIS Microsoft Windows 11 Benchmark §18.9.100 (Windows PowerShell); MS Security Baseline "Turn on PowerShell Script Block Logging".

Short-term — 1-4 weeks (canary ring first)

Deploy DNS/web-proxy filtering with a newly-observed-domain / low-reputation category block, tuned to catch high-entropy hex-labeled .xyz-class infrastructure

Generic protective-DNS coverage would have caught this campaign's C2 root domain the moment it was registered, before any vendor published it by name — closes the gap for the *next* unnamed campaign, not just this one.

Framework: MITRE M1021 (Restrict Web-Based Content); ⚠ best-practice, no single formal benchmark item — cite CISA Protective DNS guidance.

Short-term — 1-4 weeks (canary ring first)

Pilot Credential Guard + browser App-Bound Encryption enforcement (Chrome/Edge) on a canary ring

Raises the cost of the browser-cookie and DPAPI-credential theft this RAT performs (T1555.003); piloted first because Credential Guard can break legacy software hooking LSASS.

Framework: MITRE M1043 (Credential Access Protection); MS Security Baseline "Turn On Virtualization Based Security" / Credential Guard.

Long-term / Strategic — 1-3 months

Deploy default-deny application allowlisting (WDAC/AppLocker) fleet-wide for endpoints without a legitimate need for unmanaged software installs

Closes the "any unsigned EXE from AppData can run" gap structurally, rather than relying on ASR heuristics alone; the durable fix for the entire attack-chain family, not just this campaign.

Framework: MITRE M1038 (Execution Prevention); CIS Windows Benchmark §18.x Application Control.

Long-term / Strategic — 1-3 months

Stand up a recurring user-awareness track addressing gaming-related social-engineering lures (fake "undetected" cheat tools), specifically for BYOD/remote-work households with shared family devices

The lure works because it targets curiosity and a desire to bypass anti-cheat detection; a significant share of victims are minors on shared family computers per all three primary/secondary sources — awareness is the only control that reaches devices outside your management boundary entirely.

Framework: MITRE M1017 (User Training); ⚠ best-practice, no formal benchmark.

13

Deployable Playbooks

Step 1 — Block unsigned, low-prevalence executables from user-writable AppData paths (ASR rule)

What it does: Enables the Microsoft Defender Attack Surface Reduction rule that blocks execution of unsigned/low-prevalence executables — the exact category xeno.exe, the staged JRE launcher, and the GameDVR-dropped payload fall into.

Why it works: MITRE M1038 — this is prevention at the single weakest, earliest, and most consistent point in the entire attack chain.

Prerequisites: Windows 10 1709+ / Windows 11; Microsoft Defender Antivirus present and active (can run in passive/EDR-block mode alongside Falcon as primary AV — confirm your environment's AV-arbitration policy before enabling).   Reboot required: No.

Stage 1: enable in Audit mode, confirm no legitimate business software gets flagged over 1-2 weeks, then flip to Block.

# Stage 1 — Audit mode (observe only, no blocking)
Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 `
  -AttackSurfaceReductionRules_Actions AuditMode

# Stage 2 — after reviewing Windows Defender ASR audit events (Event ID 1122) for 1-2 weeks
# with no legitimate business software flagged, promote to enforcement:
Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 `
  -AttackSurfaceReductionRules_Actions Enabled

GPO path (if applicable):
Computer Configuration > Administrative Templates > Windows Components > Microsoft Defender Antivirus > Microsoft Defender Exploit Guard > Attack Surface Reduction > Configure Attack Surface Reduction rules

Verify:

Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids

Rollback: Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 -AttackSurfaceReductionRules_Actions Disabled

Step 2 — Enable PowerShell Script Block Logging + Module Logging

What it does: Turns on Event ID 4104 (script block) and 4103 (module) logging so hidden/obfuscated PowerShell — including the JRE-extraction command this loader runs and any attacker-issued Base64 command sent later over the C2 channel — is captured in full, decoded text.

Why it works: MITRE M1042 + M1047 — directly closes the T1059.001 telemetry gap flagged in the Coverage Map for attacker-issued PowerShell.

Prerequisites: Windows PowerShell 5.0+ / PowerShell 7.x; delivered via GPO or direct registry push through your RMM tooling.   Reboot required: No — new PowerShell sessions pick up the policy immediately; already-open sessions are unaffected until restarted.

Registry push (RMM/local) equivalent to the GPO below.

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

GPO path (if applicable):
Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > "Turn on PowerShell Script Block Logging" = Enabled; "Turn on Module Logging" = Enabled (Module Names = *)

Verify:

Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" -MaxEvents 5   # confirm 4104 events are populating

Rollback: reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v EnableScriptBlockLogging /f (repeat for the ModuleLogging key), or set the corresponding GPO back to Not Configured.

Deploying via your RMM

The scripts above are raw PowerShell/registry. To wrap them for RMM fleet deployment (admin check, error handling, custom-field writeback for compliance tracking), hand them to your RMM deployment tooling and ask for a deployable package.

14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the endpoint via Falcon Host Management the moment a Q1 hash match or a high-confidence behavioral hit (Q2+Q3 chain, Q5, Q6) fires.SOC / IR leadFalcon detection ID, contained-host timestamp
IsolateRTR-collect the suspect artifacts (xeno.exe, decompiler.exe, the GameDVR-masquerading JAR, -ntcache, SquirrelInteractive.bin) before any deletion. Do not power off the host if broader spread across the environment is suspected.IR analystRTR collection archive, file hashes
EradicateKill the identified javaw.exe/java process tree; remove the "Display Calibration" value from both CurrentVersion\Run and Explorer\StartupApproved\Run.IR analystBefore/after registry export
EradicateDelete dropped artifacts: %LOCALAPPDATA%\Xeno\, %LOCALAPPDATA%\Microsoft\GameDVR\<masquerading name>, -ntcache, SquirrelInteractive.bin. Remove %LOCALAPPDATA%\Java\jre\ only after confirming it is not a pre-existing legitimate install.IR analystDeleted-file inventory, timestamps
EradicateIf Exodus Wallet v26.1.5 is present, treat app.asar as tampered — do not trust it. Block C2 indicators (§10 IOC CSV) at DNS/proxy/firewall.IR analyst + network teamFirewall/DNS block-rule change ticket
RecoverFrom a clean device, rotate credentials for: Windows/AD (if reused), Discord (log out all devices, reset password, re-verify MFA), Roblox, Minecraft/Mojang, Microsoft account, all browser-saved logins, and any cryptocurrency wallets (move funds to a newly created wallet — treat the old seed as burned).Affected user + identity teamCredential-rotation checklist, MFA re-enrollment log
RecoverFor confirmed compromises involving keylogging, webcam access, or wallet tampering, the most reliable remediation is a clean OS reinstall after backing up only personal documents — not surgical cleanup.Endpoint/desktop teamRe-image ticket, asset tag
RecoverRe-image or re-issue managed corporate assets. For BYOD, document the guidance given to the user and confirm whether corporate credentials were ever cached on the device during the exposure window.IT asset managementBYOD exposure assessment note
RecoverFlag the affected identities for 30 days of anomalous-logon monitoring following credential rotation.SOCWatchlist entry, 30-day review date
15

Detection Coverage Map

TechniqueBehaviorCQLCustom IOACoverage
T1204.002Fake loader / known-sample executionQ1, Q2IOA-2 (Detect only)Good
T1036.008JAR-as-EXE / JAR-as-DLL masqueradeQ3, Q8Good
T1059.001Hidden PowerShell JRE stagingQ4Partial
T1059.001Attacker-issued PowerShell / interactive shell over C2GAP
T1547.001 / T1112Run-key persistence "Display Calibration"Q5IOA-1 (Block candidate)Good
T1548.002CMSTP UAC bypass from a Java parentQ6IOA-3 (Block candidate)Good
T1071.001 / T1568.002C2 domains and DGA-style WebSocket rootQ7IOA-4 (Detect first)Good
T1105 / T1620Payload transfer / reflective in-memory loadQ7 (partial)Partial
T1497.001 / T1622Sandbox and debugger evasion checksGAP
T1056.001 / T1113 / T1125Keylogging, screenshot streaming, webcam captureGAP
T1555.003 / T1528 / T1005Browser, Discord, Roblox/Minecraft, Microsoft Store credential theftGAP
T1554Exodus wallet app.asar tamperingGAP

Coverage summary: 5 of 12 mapped technique rows have Good coverage, 2 Partial, 5 GAP. The GAP rows are concentrated entirely in the RAT's surveillance and credential-theft subsystem (keylogging, screenshot/webcam capture, browser/Discord/Roblox/Minecraft/wallet credential theft) and in-process JVM behavior (sandbox evasion, reflective class loading) — none of which standard Falcon process/file/registry/network telemetry observes directly. This is an honest capability boundary, not a missing query: §7 (Native Audit-Log Hunts) documents the best available partial mitigations (Sysmon, Sensitive Process Access if licensed, DNS-layer DGA heuristics), and §12 (Hardening) closes the loader-execution gap upstream of all of it.

Priority gap: T1555.003/T1528/T1005 (credential and account theft) is the highest-impact GAP — it is the actual monetization step for the attacker and the actual harm to the victim, and it has no direct CQL detection surface in a standard Falcon deployment.

16

Hunt Summary Ticket

TITLE:      Fake Xeno Roblox Executor — Java RAT/Infostealer ("Powercat")
SEVERITY:   High (active, ongoing campaign since Jan 2026; full remote-access + surveillance
            capability; disproportionately impacts minors on shared family/BYOD devices)
SCOPE:      Windows endpoints — consumer, BYOD, and employee-owned gaming devices; any host
            where third-party Roblox script executors are used or tolerated under AUP
HYPOTHESIS: If this campaign is active in our environment, we should see a process named
            xeno.exe launched from a staged AppData workspace, followed by a javaw.exe/java.exe
            child referencing decompiler.exe, a Run-key value literally named "Display
            Calibration", and/or DNS resolution of solthere[.]net, powercat[.]dog, or the
            ce953a0eb...[.]xyz C2 root.
QUERIES:    Q1 (hash match) -> Q2 (loader path) -> Q3 (decompiler.exe) -> Q4 (hidden PS JRE
            extraction) -> Q5 (Display Calibration persistence) -> Q6 (CMSTP UAC bypass) ->
            Q7 (C2 domains) -> Q8 (GameDVR DLL masquerade)
DO FIRST:   Run Q1 (hash, zero FP) and Q5 (registry value name, zero FP) across the full 180d/
            30d window — both are exact-match, low-noise, and either alone confirms the campaign
            is present without needing the ambiguous Q2/Q3 filename-collision queries.
FINDINGS:   [Populate after running the queries in your tenant — Claude cannot execute CQL.
            Expected positive result: any Q1 or Q5 hit; or a Q2 hit corroborated by a same-host
            Q3/Q4 hit within seconds.]
GAPS:       Sandbox/debugger evasion (T1497.001/T1622), reflective in-memory payload loading
            (T1620), keylogging/screenshot/webcam capture (T1056.001/T1113/T1125), and browser/
            Discord/Roblox/Minecraft/wallet credential theft (T1555.003/T1528/T1005/T1554) have
            NO standard Falcon telemetry coverage — see Coverage Map (S15) and Native Audit-Log
            Hunts (S7) for partial mitigations (Sysmon, Sensitive Process Access, DNS-layer DGA
            heuristics).
ACTIONS:    Deploy Q1/Q5 as Custom IOA rules in Block mode after a 14-day clean canary run
            (IOA-1); deploy Q6 similarly (IOA-3); deploy Q7 in Detect mode, promote to Block
            once DNS/proxy-layer coverage is confirmed (IOA-4); keep Q2/Q3 in Detect-only
            indefinitely due to legitimate-tool collision.
OWNER:      HuntPack
VERSION:    v0.1 — 2026-08-09
17

Changelog

v0.12026-08-09Initial release. 8 CQL hunt queries, 4 Custom IOA recommendations, 30 IOC rows (14 hashes, 3 domains/DGA-root, 4 URLs, 15 host/registry indicators, 1 pivot-only pair), full hardening/playbook/containment package. Built from 8 sources (2 Tier-1 vendor primaries, 5 Tier-2 press, 1 Tier-3 community discussion).
18

References

TierSourceUsed ForAccess Date
T2BleepingComputerCampaign overview, recency confirmation, capability summary; explicitly names Bitdefender as originating researcher2026-08-09
T1Bitdefender LabsPRIMARY technical writeup — full attack chain, C2 URLs/domain, 11 MD5 hashes, file paths, persistence mechanism, capability deep-dive2026-08-09
T1ThreatLocker Threat IntelligencePRIMARY earlier-variant technical writeup (Mar 2026) — original "Powercat" naming, SHA256 hashes, powercat[.]dog domain, confirms C2 root domain is stable across campaign lifetime2026-08-09
T2GBHackersCorroborating summary + re-published Bitdefender IOC table2026-08-09
T2GBHackersCorroborating summary, earlier publication date (Aug 4) for timeline cross-check2026-08-09
T2Cyber PressCorroborating summary; explicit defender guidance line ("hunt for suspicious Java execution from %LOCALAPPDATA%")2026-08-09
T2ThreatsEye JournalIndependent timeline reconstruction (Jan/Mar/Aug 2026 milestones) corroborating the campaign duration2026-08-09
T3MalwareTips ForumsCommunity discussion of the Bitdefender report; independently-written incident-response checklist used to inform the Containment Runbook (§14)2026-08-09

All sources fetched and saved verbatim to XenoExecutor-RAT-Hunt-sources/ on 2026-08-09 for provenance. No prompt-injection or instruction-like content was observed in any fetched source.