BRITTLE COMPASS
A fake-indie-game delivery cluster that swapped one stealer kit for another behind the same download button.
Assessment. One password-gated fake-game site served three different malware builds, and the newest replaced an older one under the same download label without the page changing. One operator is the best explanation for who runs it (moderate confidence). The two Java payloads come from commercial kits rather than from that operator (moderate confidence); where the first build came from is unresolved.
Note Source summary. My own static analysis of all three installers and lab execution of the second and third (reliability A; findings within each build checked by more than one method, credibility 2), plus public reporting from Acronis, ANY.RUN, BleepingComputer victims and Steam and Reddit users, graded individually under References. Grades and confidence terms are explained in How I rate things. The main gap: I can’t see who controls the infrastructure or how many people were hit.
01 / the discovery
The label stayed the same.
The payload changed.
One fake-game delivery path. Three sampled builds. A different investigation depending on which installer reached the machine.
Earlier retrieval / UTC
Download label 1.2.6
MICROSTEALER
Discord bot control; Worker exfiltration relay
Installer SHA-256 prefix: dc6967987e47… Full hash
Later retrieval / UTC
Download label 1.2.6
EXASTEALER
HTTP and WebSocket panel; TCP 3001 and 3002
Installer SHA-256 prefix: 1bc0ba40c16e… Full hash
Detection focused on the original Discord bot channel would miss the replacement's HTTP and WebSocket panel traffic. The same download label now requires different network and host leads.
A download label cannot establish which payload a machine received. Confirm the build from its hashes and host evidence.
Observed retrievals, not release times. The original 1.2.5 installer was also retrieved on 14 October. Acquisition record and full hashes.
02 / follow the delivery
From a game invitation to a foothold
- Reported by victims
A game invitation
A Discord contact asks someone to try a game.
Read the reports and their limits - Observed delivery
A password gate
A fake-game site requests an installer through a Worker and returns a Dropbox download.
Inspect the delivery mechanism - Found in the samples
The installer runs
There is no game in the samples. Electron launches the payload: JavaScript bytecode in 1.2.5, or a private Java runtime and JAR in the other two.
Follow each build below
Collection comes next
All three target browser and Discord data and modify the Discord client. Wallet collection depends on the build: 1.2.5 has wallet targets in code; EXASTEALER took the 11 wallets planted in the lab. MICROSTEALER has no wallet collector.
Collection findings and their limitsAccess can outlast the installer
MICROSTEALER and EXASTEALER provide remote shells. Their code establishes logon persistence through a scheduled task or a Run key and Startup shortcut, respectively. Removing the download alone cannot establish a clean machine.
Why the response differs by buildObserved: delivery continuity across the sampled builds.
Assessment: one operator is the best explanation, with moderate confidence. Shared delivery or a handover also fits.
Alternatives and what would change the judgment03 / distinguish the builds
Follow the sample to the host
Read down each lane: what was retrieved, what it runs, how it communicates, and which artifacts to investigate. These are separate implementations, not an established development lineage.
The replacement changes the hunt
- Delivery
- The site and download label stayed the same in the observed acquisitions.
- Control channel
- Discord bot and Worker relay → HTTP and WebSocket panel.
- Persistence leads
- Scheduled task and
javafolder → Run value, Startup shortcut andemrefolder.
These changes compare MICROSTEALER with EXASTEALER. They do not describe a proven development lineage.
Label 1.2.5
Electron stealer
Static analysis- Retrieved / UTC
- Installer SHA-256
6a1f7c820fcc93c156a05102b604837ca11c45aecb1e177d00ce85ada7c5ba07- Electron package version
3.0.3- What executes
- Electron / V8 bytecode
- Control / data transfer
- Discord webhooks; Gofile and Catbox uploads
- Host leads to investigate
Modified Discord client; no separate autostart established- Response implication
- Investigate credential theft and the modified Discord client. No remote shell identified in this sample.
Label 1.2.6
MICROSTEALER
Static analysis + lab execution- Retrieved / UTC
- Installer SHA-256
dc6967987e47d05e936615203365033f6e6dfdc063f64d6627c86c0d4cbdcad4- Electron package version
1.0.0- What executes
- Electron / Java 17 / services.jar
- Control / data transfer
- Discord bot control; Worker exfiltration relay
- Host leads to investigate
%LOCALAPPDATA%\java\; scheduled task App_<username>- Response implication
- Remote shell observed in lab. Rebuild an infected host; removing the original payload cannot establish it is clean.
Label 1.2.6 replacement
EXASTEALER
Static analysis + lab execution- Retrieved / UTC
- Installer SHA-256
1bc0ba40c16e50c38a6d532e2297dcbfb29398ac8b6d19a81df3c5b790c29d16- Electron package version
2.0.0- What executes
- Electron / Java 21 / native elevation DLL
- Control / data transfer
- HTTP and WebSocket panel; TCP 3001 and 3002
- Host leads to investigate
%LOCALAPPDATA%\emre\; Run value emre; Startup shortcut- Response implication
- Remote shell observed in lab. Rebuild an infected host; investigate wallet theft and account exposure.
Paths, tasks and Run values are leads, not proof of infection or build identity. All three modify Discord. Confirm against hashes and process evidence; missing artifacts do not rule out an earlier infection.
04 / act on the finding
Contain first. Identify the build. Restore trust.
If the download ran, isolate the machine. Use a separate, clean device for account recovery. The full guidance below covers session revocation, Discord, wallets and rebuilding.
The same download label led to different payloads. Identify what ran before choosing build-specific hunts and cleanup steps.
A remote shell in a sample establishes capability. Whether an operator used it on a particular host requires host or network evidence.
The full research record
The analysis, related names, evidence limits and victim guidance follow in full. The build dossiers retain their detection rules, indicators and ATT&CK mappings.
- Type
- threat-actor
- Status
- active
- Confidence
- moderate
- First seen
- 2026-10-14
- Last seen
- 2026-10-15
- Related names
- Dev7 Gang (kit branding; may name the kit, its author or its community rather than this cluster)
contents
What I observed #

| Retrieved (UTC) | Download label | App version (package.json) |
SHA-256 | Family |
|---|---|---|---|---|
| 2026-10-14 | 1.2.5 | 3.0.3 | 6a1f7c820fcc93c156a05102b604837ca11c45aecb1e177d00ce85ada7c5ba07 |
Unnamed Electron stealer |
| 2026-10-14 | 1.2.6 | 1.0.0 | dc6967987e47d05e936615203365033f6e6dfdc063f64d6627c86c0d4cbdcad4 |
MICROSTEALER |
| 2026-10-15 | 1.2.6 | 2.0.0 | 1bc0ba40c16e50c38a6d532e2297dcbfb29398ac8b6d19a81df3c5b790c29d16 |
EXASTEALER, on the Palenkova panel |
Two things in that table are the core of this page. First, the version numbers on the site don’t match the builds. The app version column is the version field in each installer’s Electron package.json (the Windows file version agrees for the first two): “1.2.5” says 3.0.3 and “1.2.6” says 1.0.0, so the site’s numbering is presentation. Those values aren’t a release sequence either; three distinct implementations, three unrelated numbers. Second, a day after the first two were retrieved, the “1.2.6” download returned a different installer with a different payload, a different command-and-control design and a different kit. The page, the password and the download gate didn’t change. I use the site’s labels on this page because that’s what a victim saw; the build pages say which is which.
Key judgments #

- Probably one operator. One operator running the site, the gate and all three builds is the best explanation (moderate confidence). The same delivery path also fits a shared lure, a distributor reselling access, or a handover, and I can’t see who controls the infrastructure. (What I observed, Alternatives)
- Bought or licensed tooling. I assess with moderate confidence that the two Java payloads (1.2.6 and 2.0.0) come from commercial kits rather than from whoever runs the lure. I have no comparable evidence either way for the 1.2.5 build. The 1.2.6 build carries a licence identifier that its own exfiltration relay uses as a routing key, and a builder watermark stamped into third-party library classes; the 2.0.0 build authenticates to its panel with a customer-style licence key. That evidence supports the commercial-tooling assessment. A licence string or panel key alone doesn’t identify a supplier or prove a purchase. (How it changed)
- More fake games coming. The cluster is likely (55–80%) to relaunch under a new fake game name. I hold that with low confidence, because the precedent comes from public reports of earlier lure names that I haven’t tied to these samples myself. (Who this is)
- Turkish-speaking tooling, maybe. I assess with low confidence that the people building at least the 1.2.6 and 2.0.0 kits work in Turkish, based on Turkish command names, resource names and status strings. That’s language context, not attribution; a kit sold internationally would look the same.
Who this is #

There’s no established vendor name for this cluster, so BRITTLE COMPASS is my provisional tracking name. It names the delivery cluster, not the malware: one password-gated website, the download service behind it, and the builds delivered through them. The malware families already have names, and this cluster has used more than one.
| Name | Used by | What it refers to | Relationship |
|---|---|---|---|
| BRITTLE COMPASS | gib.bz | The delivery cluster: lure site, download gate and the builds served through them | This page |
| “Dev7 Gang” | The 1.2.6 payload’s own strings; victims on BleepingComputer [3] | Branding inside the 1.2.6 kit, and the name victims report seeing in a pop-up | Kit branding. Low confidence that it names this cluster rather than the kit, its author, or everyone using the kit |
| “Micro Stealer” / MICROSTEALER | The 1.2.6 payload’s own branding; ANY.RUN [2] | The 1.2.6 Java stealer and RAT | A family this cluster delivered |
| “Exastealer” / EXASTEALER | The 2.0.0 payload’s own manifest | The 2.0.0 Java stealer and RAT | A family this cluster delivered |
| “Palenkova” | The 2.0.0 payload’s stolen-data archive names | The commercial command-and-control panel behind EXASTEALER | A kit this cluster licenses (moderate confidence) |
| Lucid Stealer | Public reporting [4] | A commercial stealer sold through Telegram | Possibly shares a panel or protocol with Palenkova (low confidence; three matching endpoint paths); see the EXASTEALER page |
| Earlier lure names | Public reports [5, 6, 7] | Sikimoris (later Dekunomis), Lunaferies, oblivionPath, Fukoras, Osmiko Studios | Possibly related. Same site template per public records; not tied by me to these samples |
The first activity I observed directly is 14 October 2026, when I retrieved the first two builds. Some of the infrastructure is older: the 1.2.6 build’s Discord bot account was created on 14 September, the 1.2.5 build’s Discord server on 15 September, and the lure domain was registered on 25 September. Those are creation dates. They show the pieces existed, not that the campaign was running then. Public records show an earlier lure, sikimoris[.]com, on GitHub Pages with the same site template from July 2026 [7]. That’s possible related activity, not established history.
The lure #

According to victim reports, it starts with a stranger on Discord who made a game and would really like you to try it [3, 5, 6]. The game has a website, a trailer and a download button. The download is password-protected, which sounds like a closed beta; keeping scanners and sandboxes out is a plausible second purpose.
The lure site was registered on 25 September 2026 and served from GitHub Pages. Its download form talks to a Cloudflare Worker, kanegrocerys.colemankathryn2692.workers[.]dev, in two JSON POSTs taken from the page’s own script: one checks the password, the other asks for the file.
POST hxxps://kanegrocerys.colemankathryn2692.workers[.]dev
{"check": true, "password": "<password>"} -> {"ok": true}
{"password": "<password>", "inviter": "<referrer>",
"user": "<chosen name>", "version": "<build>"} -> {"downloadUrl": "<Dropbox link>"}
(formatted for readability)
The installers are 110–135 MB and contain no game at all. The form also sends a chosen name and a referrer along with the password, which fits tracking which recruiter brought in which victim; I can’t see what the Worker does with them.
How it changed #

| 1.2.5 | 1.2.6 | 1.2.6 replacement (2.0.0) | |
|---|---|---|---|
| Family | Unnamed Electron stealer (“@neverlose” marker) | MICROSTEALER (“Micro Stealer”, “Dev7 Gang”) | EXASTEALER, on the Palenkova panel |
| Payload | Obfuscated JavaScript in V8 bytecode | Obfuscated Kotlin/Java JAR, private Java 17 runtime | Obfuscated Kotlin/Java JAR, private Java 21 runtime, native elevation DLL |
| Command and control | Discord webhooks; Gofile and Catbox uploads | Discord bot account and per-victim channels, plus a Cloudflare Worker relay | Self-hosted panel on an Azure IP address over plain WebSocket and HTTP |
| Persistence | Discord-client modification; no separate autostart established | Scheduled task at each logon | Run key and Startup shortcut |
| Elevation | Asks for admin at launch | UAC-bypass routines in the code | UAC bypass through a custom DLL; no prompt for the administrator account on the tested host (lab) |
| Remote shell | None found | Yes (lab) | Yes (lab) |
| Wallet targets configured | 83 extensions, 26 desktop wallets (static) | None (static and lab) | 52 extensions, 48 desktop wallets (static); all 11 planted taken (lab) |
| Ransomware | No | .cryptedmicro, operator-triggered (static) |
.locked, operator-triggered (static) |
| How analyzed | Static only | Static and lab | Static and lab |
| Details | 1.2.5 | 1.2.6 | 2.0.0 |
The changes look like switching tooling rather than developing one tool. The first two builds were packaged on Electron versions about twenty months apart, with the later build on the older stack. The 1.2.6 build’s relay is keyed by a licence string, and its builder watermark (MicroFlow 4.0) is stamped into 3,108 of its 3,112 class files, third-party libraries included. The 2.0.0 build has neither; it authenticates to its panel with a key of the form PANEL-XXXX-XXXX-XXXX and tags every stolen-data archive “Palenkova”.
The 2.0.0 build’s command channel is a self-hosted panel, not Discord. Detection built only around the Discord bot traffic of 1.2.6 would miss it entirely.
What a victim loses #

Which build ran changes the answer, so each item says where it comes from:
- Browser data. Saved passwords, cookies, autofill and history from 20 to 45 browsers depending on the build (static, all three). Chrome’s App-Bound Encryption is targeted in all three builds by borrowing a SYSTEM token (static). Success depends on the browser and the build; a Firefox Primary Password defeats the 2.0.0 build’s Firefox decryption (static).
- Discord. Tokens from the client and browsers (all three). The 1.2.5 and 1.2.6 builds also modify the Discord desktop client to capture logins and TOTP setup secrets, and to block logout and session management (static); the 2.0.0 build modifies it to capture login, two-factor and billing flows (static). Victims report accounts taken over with the two-factor setting changed [3, 5] (reported). The modification lives in Discord’s own files and survives removal of the malware.
- Cryptocurrency wallets, if 1.2.5 or 2.0.0 ran. Both carry long lists of wallet targets (static); 2.0.0 took all 11 wallets planted in the lab, out of 100 configured targets. 1.2.6 has no wallet collector.
- Steam account data, if 2.0.0 ran and Steam was installed. It targets Steam login files and tokens (static); in the lab it collected the account name, and I haven’t seen the token theft work (lab).
- Files. 1.2.5 takes documents, keys and source code automatically (static). 1.2.6 automatically took only
.txtfiles in the lab, and 2.0.0 took no loose documents automatically (lab), but both give the operator a shell that can retrieve files accessible under the payload’s privileges. - The machine. 1.2.6 and 2.0.0 give the operator a remote shell, keylogging and screenshots (lab). 2.0.0 also makes the machine a SOCKS proxy for the operator and carries a flood module for attacking third parties (static).
- Files, encrypted, if the operator chose to run the ransomware command in 1.2.6 or 2.0.0 (static; neither runs on its own).
Alternatives, assumptions and what would change this #

- Alternative: several operators sharing one lure. Someone could be renting out the site and gate. Different licence identifiers or panel keys served through the same gate at the same time would support this.
- Alternative: one developer, not a customer. The builds could come from one person moving between toolchains. I don’t favor it: a licence-keyed relay, a customer-style panel key and a watermark stamped into unrelated libraries all fit kits sold to many customers. The same watermark or key format turning up only in this cluster’s samples would be weak support for it, unless the comparison covered a broad set of samples.
- Key assumption: the earlier lure names belong to the same cluster. If that’s wrong, the cluster’s directly observed history starts on 14 October 2026, and judgment 3 has no precedent behind it.
- What would change judgment 1: builds for independently controlled customers served through the current gate at the same time. A later build turning up behind a different gate wouldn’t; that’s a change of infrastructure, not of operator.
What to do #

If someone ran a “game” from one of these sites, in this order:
- Isolate the machine. Take it off the network before doing anything on it, and keep it powered on if the operator may have encrypted files.
- From a different, clean device, revoke sessions first, then change passwords: email, then Discord, then Google, then anything saved in the browser. A password change doesn’t reliably end existing sessions, so sign out every session with each provider’s own controls first.
- Fix Discord from that clean device: sign out every session, change the password, remove and re-enroll two-factor so a new secret is issued, and regenerate backup codes. Don’t sign in to Discord on the infected machine again.
- Move cryptocurrency to new wallets created on a clean device if the build was 1.2.5 or the 2.0.0 replacement.
- Work out which build ran. Start from the leads on the build pages:
%LOCALAPPDATA%\java\and a scheduled taskApp_<username>point to 1.2.6;%LOCALAPPDATA%\emre\and a Run valueemrepoint to 2.0.0. Those are leads to investigate, not proof. Confirm with the installer or payload hashes. All three builds modify the Discord client, so a modified client alone doesn’t identify one, and a failed install or a cleanup attempt can remove the other artifacts. - Rebuild machines infected with either Java build (1.2.6 or 2.0.0). Both support remote commands and running additional payloads, so removing the original malware can’t establish that the machine is clean. That’s a response posture; whether the operator actually used the shell on a given machine is a separate question that only host or network evidence answers. For 1.2.5, for which no remote-shell capability was identified in the analyzed sample, removing the modified Discord client and the application is a reasonable minimum, but rebuilding is still safer.
- Uninstall and reinstall Discord with its application data deleted, on the rebuilt or cleaned machine.
For organizations: hunt for Electron applications that ship a private Java runtime next to a JAR. That combination is unusual, and both of this cluster’s Java builds have it. Treat a hit as a lead and confirm it against hashes and process activity.
Infrastructure #

| Type | Indicator | Context | First seen (UTC) |
|---|---|---|---|
| Hostname | kanegrocerys.colemankathryn2692.workers[.]dev |
Download gate (Cloudflare Worker) for all three builds | 2026-10-14 |
| Hostname | sa.microdenmem.workers[.]dev |
1.2.6 exfiltration relay (Cloudflare Worker) | 2026-10-14 |
| IPv4 | 20.55.17[.]20 |
2.0.0 command and control, TCP 3001 and 3002 (Microsoft Azure) | 2026-10-15 |
File hashes, host artifacts and detection rules are on the build pages: 1.2.5, 1.2.6, 2.0.0.
Related reporting, not linked to this cluster #

| Type | Indicator | Context | Source |
|---|---|---|---|
| Domain | sikimoris[.]com |
Earlier fake-game lure on the same site template, July 2026 | Public record [7] |
| Domain | swordfull[.]info |
Call-home domain reported for the MicroStealer / Dev7 family. Not present in my samples | Public reporting [2, 3] |
References #

- Acronis Threat Research Unit, “Threat actors go gaming: Electron-based stealers in disguise”, July 2025. acronis.com (opens in a new tab) (B2: fake-game Electron stealers using similar packaging; a technique comparison, not this cluster)
- ANY.RUN, “MicroStealer” malware trends page. any.run (opens in a new tab) (B2 for the family label; not a match to these samples)
- BleepingComputer forums, “Stealer Ransomware Plugin-Dev7 Gang (.cryptedmicro) Support Topic” and related victim threads, May–October 2026. bleepingcomputer.com (opens in a new tab) (F3: unverified victim reports)
- CYFIRMA, “Technical Analysis of Lucid Stealer: Execution, Capabilities, and C2 Infrastructure”, 10 August 2026. cyfirma.com (opens in a new tab) (B2)
- Steam Community discussions warning about fake game copies used as lures, thread 1 (opens in a new tab) and thread 2 (opens in a new tab). (F3)
- Reddit r/starcraft, “Warning: Discord scam targeting the SC2 community”. reddit.com (opens in a new tab) (F3)
- PhishDestroy, historical record for
sikimoris[.]com. phishdestroy.io (opens in a new tab) (C2)