← Threat Library
critical other chromeedge

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.

Disclosed September 14, 2026
Blast radius 1,500+ infections disrupted via a kill-switch domain; total scope unconfirmed
Status active

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)

NameStoreIDMalicious versionArchived
AVSync System Inc
chromendpbidppejfanjbhfgjlohfanbfbklffno
FrameSync Driver
chromedjodclnjknbpambeaaapadmdfhmbpeogno
QR-code themed extension (unnamed)
chromecdgcjghdeinagopbaobhmaefigoafaaano

Indicators of compromise (27)

sha256106eac79396a3ff77b8f375c391260ce422be2ae4d55d3aa75b2635cbdc0fa42JavaScript loader
sha256c8c38634dd44d7c6162c66174a6ee23ee404265125166e8d757681bdd66a4268C++ installer
sha256223be3f8648bf6998c4a58b972522e5fda8d9d0a57b4e163811930de66c3f7caMalicious extension package
sha25642a3e2bb135fb46b11b127f45a266b3a4d9dff4aa1cf75433f93fe69ba51a9b9PowerShell installer
domainvolmira.siteActive C2
domainzaviro.onlineActive C2
domaingranderevolucao.storeActive C2
domainluizestrelhashapr.onlineActive C2
domaincodecaudiog.siteHistorical C2, June 2025 (Codecaudiog campaign)
domaincodecvideowin.onlineHistorical C2, June 2025 (Codecaudiog campaign)
domainacrobat-updater.comHistorical C2, August 2025 (Acrobat campaign)
domainlojinhadoluiz.onlineHistorical C2, September 2025 (Framesync campaign)
domaincremeb.comHistorical C2, April 2026+ (Cremeb campaign, first KREMLIN branding)
domaincalifornicationdetroit.comHistorical C2, July 2026
ip185.221.23.133C2, Finland, June 2025 (port 4782/443)
ip144.172.112.239C2, United States, August 2025 (port 4782)
ip45.90.13.210C2, Netherlands, August 2025 (port 443)
ip37.16.74.100C2, Netherlands, April 2026 (port 443)
ip37.16.74.34C2, Netherlands, April 2026 (port 443)
ip178.92.162.38C2, Brazil, July 2026 - serves REMCOS RAT
wallet0x5C32A09873be70a92fd8bB5A9fED7967dE06BdE6Operator Ethereum wallet, ~20,778 USDT moved June 2025-August 2026
contract0xCD7360A83E5cdbBbbbcEB0e78748babA6740d07bCurrent Ethereum dead-drop resolver contract (stores dynamic C2 config)
contract0x902EDbFECFF38f285Bf26283fB9cEB3700061873Dead-drop resolver contract, deployed 2026-05-19
contract0x4f7D712D0B53fDf3c96896EB411467B30Da23406Dead-drop resolver contract, deployed 2026-06-09
contract0x64Def0A6099c4DE9C413B108EAae85A3C7457615Dead-drop resolver contract, deployed 2026-06-16
email[email protected]Email behind the "Radduxx" Internet Archive uploader account used to host loader stages
handleKr3mlin4rt1stAuthor handle credited in the February 2026 (v1.33) build

Sources