KREMLIN Banking Malware
A sideloaded Chrome/Edge banking trojan targeting Portuguese-speaking Brazilian users. Forges Secure Preferences HMACs to bypass Chrome extension integrity checks, keylogs and intercepts webRequest bodies, and exfiltrates over a WebSocket C2 whose configuration is resolved from an Ethereum smart contract dead-drop. Not distributed through any official extension store. Reported by Elastic Security Labs (REF9334), 2026-09-14.
What happened
KREMLIN is a Chrome/Edge banking trojan that never goes near the Web Store. It
installs by directly rewriting a victim's Secure Preferences file and
regenerating the HMACs (and, on newer Chrome, the App-Bound encryption hash)
that the browser uses to confirm an extension wasn't tampered with — so Chrome
itself vouches for a malicious extension it never reviewed. The install chain
starts with a phishing lure (a .js file disguised as a document) that drops a
PowerShell/C++ installer, which does the preference rewrite and drops the
extension.
Once running, it keylogs every <input>/<textarea> via a MutationObserver,
intercepts webRequest bodies and headers (so it reads POST data, not just
URLs), injects redirects based on DOM selectors, and grabs screenshots, page
source, and browser history. Everything is RC4-encrypted (via the
undocumented SystemFunction032 API), LZ-string compressed, and shipped over
a WebSocket polling once a second — a persistent channel rather than a
beacon-and-wait.
The distinctive part is how it finds its C2: an Ethereum smart contract acts as a dead-drop resolver, returning the current C2 config on-chain. Elastic traced the operator wallet moving ~20,778 USDT between June 2025 and August 2026, and correlated Ethereum-transaction timing to São Paulo working hours.
Why it matters here
Every one of the three known extension IDs above is absent from our own catalog, and that's expected, not a detection gap: KREMLIN is never published to the Chrome Web Store or any store we scrape, so it sits entirely outside what a store-scanning pipeline (ours included) can see. It's listed here as a reference entry and an IOC source — the C2 domains/IPs/hashes are seeded into our IOC feed in case any of this infrastructure gets reused by something that does go through a store.
Who's targeted
Portuguese-speaking users, overwhelmingly in Brazil. Phishing lures impersonate twelve Brazilian financial institutions: Banco do Brasil, Bradesco, Caixa, Sicoob, C6 Bank, Inter, BTG, Safra, PagBank, PicPay, Santander, and Mercado Pago.
Timeline
Active since at least May 2025 (first loader upload), rebranded and re-infrastructured repeatedly — Codecaudiog (Jun 2025) → Acrobat installer, no extension (Aug 2025) → Framesync (Sep 2025) → Cremeb, first KREMLIN branding (Dec 2025-Mar 2026) → QR-code variant (Apr 2026) → Ethereum resolver introduced (May 2026) → REMCOS RAT added (Jul-Aug 2026) → publicly disclosed by Elastic Security Labs as REF9334 (2026-09-14), who also registered the kill-switch domain and disrupted 1,500+ infections.
Affected extensions (3)
| Name | Store | ID | Malicious version | Archived |
|---|---|---|---|---|
AVSync System Inc | chrome | ndpbidppejfanjbhfgjlohfanbfbklff | — | no |
FrameSync Driver | chrome | djodclnjknbpambeaaapadmdfhmbpeog | — | no |
QR-code themed extension (unnamed) | chrome | cdgcjghdeinagopbaobhmaefigoafaaa | — | no |
Indicators of compromise (27)
| sha256 | 106eac79396a3ff77b8f375c391260ce422be2ae4d55d3aa75b2635cbdc0fa42 | JavaScript loader | |
| sha256 | c8c38634dd44d7c6162c66174a6ee23ee404265125166e8d757681bdd66a4268 | C++ installer | |
| sha256 | 223be3f8648bf6998c4a58b972522e5fda8d9d0a57b4e163811930de66c3f7ca | Malicious extension package | |
| sha256 | 42a3e2bb135fb46b11b127f45a266b3a4d9dff4aa1cf75433f93fe69ba51a9b9 | PowerShell installer | |
| domain | volmira.site | Active C2 | |
| domain | zaviro.online | Active C2 | |
| domain | granderevolucao.store | Active C2 | |
| domain | luizestrelhashapr.online | Active C2 | |
| domain | codecaudiog.site | Historical C2, June 2025 (Codecaudiog campaign) | |
| domain | codecvideowin.online | Historical C2, June 2025 (Codecaudiog campaign) | |
| domain | acrobat-updater.com | Historical C2, August 2025 (Acrobat campaign) | |
| domain | lojinhadoluiz.online | Historical C2, September 2025 (Framesync campaign) | |
| domain | cremeb.com | Historical C2, April 2026+ (Cremeb campaign, first KREMLIN branding) | |
| domain | californicationdetroit.com | Historical C2, July 2026 | |
| ip | 185.221.23.133 | C2, Finland, June 2025 (port 4782/443) | |
| ip | 144.172.112.239 | C2, United States, August 2025 (port 4782) | |
| ip | 45.90.13.210 | C2, Netherlands, August 2025 (port 443) | |
| ip | 37.16.74.100 | C2, Netherlands, April 2026 (port 443) | |
| ip | 37.16.74.34 | C2, Netherlands, April 2026 (port 443) | |
| ip | 178.92.162.38 | C2, Brazil, July 2026 - serves REMCOS RAT | |
| wallet | 0x5C32A09873be70a92fd8bB5A9fED7967dE06BdE6 | Operator Ethereum wallet, ~20,778 USDT moved June 2025-August 2026 | |
| contract | 0xCD7360A83E5cdbBbbbcEB0e78748babA6740d07b | Current Ethereum dead-drop resolver contract (stores dynamic C2 config) | |
| contract | 0x902EDbFECFF38f285Bf26283fB9cEB3700061873 | Dead-drop resolver contract, deployed 2026-05-19 | |
| contract | 0x4f7D712D0B53fDf3c96896EB411467B30Da23406 | Dead-drop resolver contract, deployed 2026-06-09 | |
| contract | 0x64Def0A6099c4DE9C413B108EAae85A3C7457615 | Dead-drop resolver contract, deployed 2026-06-16 | |
| [email protected] | Email behind the "Radduxx" Internet Archive uploader account used to host loader stages | ||
| handle | Kr3mlin4rt1st | Author handle credited in the February 2026 (v1.33) build |