KREMLIN / REF9334 — Banking Browser-Extension Hunt

Brazilian banking malware ecosystem that forges Chromium's Secure Preferences integrity checks to force-install a credential- and session-theft extension into Chrome/Edge. Tracked by Elastic Security Labs since May 2025, reported 2026-09-15.
Threat
KREMLIN (REF9334)
Severity
ACTIVE — CREDENTIAL THEFT
Type
Banking malware / browser-extension hijack
Primary Access
T1566.001 Phishing (JS lure)
Version
v0.1 (Draft) · 2026-09-16
Author
HuntPack
Confidence
High (primary vendor report + 2 corroborating write-ups)
01

Executive Summary

KREMLIN is a Brazilian banking-malware toolkit — named by its own author "Kr3mlin4rt1st," with no actual Russian nexus — that Elastic Security Labs has tracked as REF9334 across seven campaigns since May 2025 (reported 2026-09-15). Victims manually run a JavaScript file disguised as a bank receipt or invoice; a multi-stage loader checks for sandboxes, establishes scheduled-task persistence, resolves command-and-control locations from an Ethereum smart contract or Cloudflare Workers, and drops a C++ installer that sideloads through a legitimate SentinelOne binary.

The operation's signature capability is forcing a malicious Chrome/Edge extension into the browser without the Web Store and without user consent: the installer force-closes the browser, extracts Chromium's OSCrypt and App-Bound encryption keys (via DPAPI and a debugged browser process), then rewrites the profile's Secure Preferences file — regenerating the HMACs and encrypted hashes Chromium itself uses to prove the file hasn't been tampered with. The browser loads the extension as though the user had approved it. The extension then harvests cookies, session storage, browsing history, screenshots, and keystrokes from roughly a dozen Brazilian banks, exfiltrating an RC4-encrypted archive to attacker infrastructure. Elastic disrupted over 1,500 infections (98.75% in Brazil) by sinkholing the malware's own sandbox-canary domain.

Falcon telemetry cannot see inside the extension's in-browser JavaScript (keylogging, screenshot capture, cookie theft happen entirely in-page), so detection here is necessarily about the surrounding host behavior: the scheduled task, the DLL sideload, the debugger-attached browser process, and the Secure Preferences write itself. That gap is exactly why the hardening section (§12–13) — extension allowlisting, blocking the three known malicious extension IDs, and disabling unmanaged Developer Mode — carries as much weight in this pack as the hunt queries do.

Defender priority: hunt for (1) Chrome/Edge Secure Preferences modified by a non-browser process and (2) chrome.exe/msedge.exe launched with --remote-debugging-port. Both behavioral signals catch the technique regardless of which of the 20+ rotating C2 domains this campaign uses next — infrastructure IOCs alone will not survive the next rebrand (donalurdes → maria → haria → cremeb → zaviro/volmira already happened once).

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
PrimaryElastic Security Labs — "The extension you never installed: KREMLIN forges Chrome's own integrity checks to steal banking sessions"Full technical report: 7-campaign timeline, IOC appendix (domains/IPs/hashes/extension IDs), Ethereum contract evolution, Secure Preferences HMAC-forgery mechanics, SentinelOne DLL sideload, PigSyscall usage, victim count (1,515 systems, 98.75% Brazil)Yes
SecondaryThe Hacker News — "KREMLIN Banking Malware Hijacks Chrome and Edge to Steal Credentials and Session Tokens"Corroborates the extension ID (ndpbidppejfanjbhfgjlohfanbfbklff), current C2 domains (volmira.site, zaviro.online, luizestrelhashapr.online), the Ethereum contract address, and the "Phantom Extension"/HMAC-forgery descriptionYes (corroboration only — raises confidence, does not add new atomics)
SecondaryGBHackers — "KREMLIN Banking Malware Bypasses Chrome Security to Steal Banking Sessions"Corroborates the scheduled task name, the SentinelOne sideload, the RC4/SystemFunction032 exfil detail, and the Ethereum dead-drop contract; explicitly recommends hunting Secure Preferences changes, Developer Mode activation, and browser debugging activityYes (corroboration only)

Decisions made against the operator brief: two indicators supplied in the tasking brief could not be traced to any fetched source text after a targeted re-search — IP 45.90.13[.]77 (only 45.90.13.210 appears in the Elastic report; same /24, different host, not corroborated) and Cloudflare Workers hostname find-postman.ddesdokww.workers.dev (no fetched source mentions this string at all). Per the no-invented-IOC rule, both are omitted from this pack rather than shipped on the brief's word alone. The Workers hostname version.checkeligibitily.workers.dev is likewise not shipped as an atomic block/detect entry — the source only describes the resolver as serving "version, graph subdomains" without giving the full hostname string verbatim — but graph.checkeligibitily.workers.dev IS shipped, because that exact string appears in the source's quoted resolver URL.

Trust-the-source resolution: the operator brief's lure-filename pattern (ComprovanteBank_DD-MM-YYYY.js) differs slightly from what Elastic actually documented (COMPROVANTE_{Bank}_DD-MM-YYYY.{10 digits}.js and ComprovanteOriginal_{Bank}_DD-MM-YYYY.{10 digits}.js). This pack uses the source's actual pattern throughout.

Prompt-injection check: none of the three fetched sources contained any text directed at the research agent (no embedded instructions, no "ignore previous instructions," no claimed authorization to skip steps or fetch additional URLs). All three are cited normally.

03

Hunt Brief & Attack Chain

Hunt Hypotheses

  1. (High) Persistence via a scheduled task named MicrosoftNodeRuntimeUpdater or AcrobatBrowserExtension is present on hosts compromised by this loader family.
  2. (High) Chrome/Edge Secure Preferences files are being modified by a process other than the browser itself — the mechanical fingerprint of forced extension registration.
  3. (High) chrome.exe/msedge.exe processes are being launched with remote-debugging flags to extract OSCrypt/App-Bound keys via ReadProcessMemory.
  4. (High) A binary named SentinelMemoryScanner.exe is running from a path outside a genuine SentinelOne installation (DLL sideload staging).
  5. (Medium) node.exe is being spawned under conhost.exe --headless, matching the first-stage persistence execution pattern.
  6. (Medium) wscript.exe/cscript.exe are executing JavaScript files whose names match the COMPROVANTE banking-receipt lure pattern.
  7. (High) Endpoints are resolving DNS for known KREMLIN/REF9334 C2 infrastructure (current or historical).
  8. (High) One of the three known malicious extension IDs is present in a Chrome/Edge profile.

Attack Chain

StepTelemetryHunt Angle
1. DeliveryEmail/messenger attachment or downloadJavaScript file named to look like a bank receipt/invoice (no native Falcon email telemetry — pair with mail-gateway/EDR-for-email logs)
2. ExecutionProcessRollup2 (wscript.exe/cscript.exe)Q3 — lure filename pattern match
3. Sandbox/VM evasionProcessRollup2 (process enumeration), no dedicated eventNot directly queryable; covered by downstream persistence/DLL hunts
4. PersistenceScheduledTaskRegisteredQ1 — named-task hunt
5. First-stage relaunchProcessRollup2 (conhost.exe → node.exe)Q2
6. C2/payload resolutionEthereum smart contract read / Cloudflare Workers — no Falcon telemetry (on-chain RPC call, not endpoint DNS)Gap — see §15
7. Installer + DLL sideloadProcessRollup2, PeFileWritten/NewExecutableWrittenQ6, Q7
8. Credential-store key theftProcessRollup2 (debugger-attached chrome/msedge)Q5
9. Forced extension installCriticalFileModified (Secure Preferences / Extensions path)Q4, Q9
10. Collection (cookies/keys/screenshots/keylog)In-browser JavaScript — no Falcon telemetryGap — see §15; mitigate via hardening §12
11. ExfiltrationNetworkConnectIP4/DnsRequest to C2Q8
04

Consolidated IOC Table

TypeValueConfidenceActionContextExpiry
Domainvolmira.siteHighDetectCurrent extension C2 (version check, download, exfil)2027-03-16
Domainzaviro.onlineHighDetectCurrent installer C2 + fingerprint upload2027-03-16
Domainluizestrelhashapr.onlineHighDetectExtension C2, resolved via Ethereum smart contract2027-03-16
Domaingranderevolucao.storeMediumDetectInstaller payload host (single-sourced)2026-12-16
Domaincremeb.comMediumDetectCremeb-campaign C2 + QR-extension config API (single-sourced)2026-12-16
Domaincalifornicationdetroit.comMediumDetectBackup, Cloudflare-proxied infrastructure (single-sourced)2026-12-16
Domaingraph.checkeligibitily.workers.devMediumDetectCloudflare Workers C2 resolver — full hostname only, workers.dev is shared infra2026-12-16
Domain (historical)codecaudiog.site, codecvideowin.online, acrobat-updater.com, lojinhadoluiz.online, donalurdesconfeitos.site, marialurdes.site, harialurdes.siteMediumHuntPrior-campaign C2 (Jun 2025 – Mar 2026); low activity expected now but useful for retro-hunting2026-10-16
IPv4185.221.23.133MediumDetectCodecaudiog-campaign PULSAR RAT C22026-12-16
IPv4144.172.112.239MediumDetectAcrobat-campaign PULSAR RAT C22026-12-16
IPv445.90.13.210MediumDetectAcrobat-campaign PULSAR RAT alternate C22026-12-16
IPv437.16.74.100 / 37.16.74.34MediumDetectCremeb-campaign PULSAR RAT C22026-12-16
IPv4178.92.162.38MediumDetectREMCOS RAT C2 (Ethereum-transition campaign)2026-12-16
SHA-256 (x8)see §10 Falcon IOC CSVMediumDetectInstaller, extension, PowerShell installer, JS loaders — all single-sourced (Elastic)2026-12-16
Extension IDndpbidppejfanjbhfgjlohfanbfbklffHighBlock install"AVSync System Inc" — corroborated by 2 sources2027-03-16
Extension IDdjodclnjknbpambeaaapadmdfhmbpeogMediumBlock install"FrameSync Driver System" masquerade2026-12-16
Extension IDcdgcjghdeinagopbaobhmaefigoafaaaMediumBlock installQR-code themed extension2026-12-16
MutexClarinhoQueSim-XEDA2OMediumHuntEthereum-transition-era installer mutex2026-12-16
Scheduled taskMicrosoftNodeRuntimeUpdater / AcrobatBrowserExtensionHighDetectPersistence task names2027-03-16
Domain (do NOT block)creamp1eonlyfans.netHighEnrich / monitor onlySandbox-canary domain, now sinkholed by Elastic Threat Command — a hit means an infected host tried to abort; blocking it re-enables the malware's normal execution path2026-12-16
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Windows endpoint (process/file/task)Falcon sensor: ProcessRollup2, PeFileWritten, NewExecutableWritten, ScheduledTaskRegisteredHighLow — standard sensor telemetry, on by default
Chrome/Edge profile files (Secure Preferences, Local State, Extensions/)CriticalFileModified via a Falcon Critical File Monitoring / FIM rule scoped to these pathsCriticalHigh — this rule is not configured out of the box; Q4 and Q9 return nothing until it is (see §11)
DNS / network egressDnsRequest, NetworkConnectIP4HighLow, assuming DnsRequest collection is enabled
In-browser extension activity (keylogging, screenshots, cookie theft)None — this happens entirely inside the browser's JS engineCriticalTotal gap for EDR; mitigate via extension-install hardening (§12), not detection
Blockchain-based C2 resolution (Ethereum RPC read)None — an outbound RPC call to a public Ethereum node, indistinguishable from normal dApp/wallet traffic without app-layer proxy inspectionMediumTotal gap; detection falls back to the resolved domains/IPs after the fact (Q8)
06

ATT&CK Mapping

TacticTechniqueNameObserved Behavior
Initial AccessT1566.001Phishing: Spearphishing AttachmentJavaScript file disguised as a Brazilian-bank payment receipt (COMPROVANTE pattern)
ExecutionT1204.002User Execution: Malicious FileVictim manually double-clicks the .js lure, invoked via wscript.exe/cscript.exe
PersistenceT1053.005Scheduled Task/Job: Scheduled TaskMicrosoftNodeRuntimeUpdater (logon+1min) / AcrobatBrowserExtension (logon + every 30min)
Defense EvasionT1574.002Hijack Execution Flow: DLL Side-LoadingLegitimate SentinelMemoryScanner.exe loads malicious SentinelAgentCore.dll; loader-lock bypass via LdrpWorkInProgress manipulation
Persistence / Defense EvasionT1176Browser ExtensionsExtension force-registered in Secure Preferences with forged HMACs, bypassing Web Store approval
Credential AccessT1555.003Credentials from Password Stores: Credentials from Web BrowsersOSCrypt legacy key (DPAPI) + App-Bound key (debugger-attached ReadProcessMemory against chrome.dll) extraction
CollectionT1113 / T1056.001Screen Capture / Input Capture: KeyloggingIn-extension screenshot command; keylogging via input-event listeners + MutationObserver (no EDR visibility)
Command and ControlT1102.001Web Service: Dead Drop ResolverEthereum smart contract setConfig/getConfig serving current C2 domains; Cloudflare Workers as a secondary resolver
Command and ControlT1071.001Application Layer Protocol: Web ProtocolsHTTPS + WebSocket polling to /google_ws/ and /google_api/*.css disguised as static-asset fetches
Defense EvasionT1027Obfuscated Files or InformationXOR-encrypted installer strings, reversed-Base64 loader payloads, JPEG-steganography carriers on archive.org
Defense EvasionT1497Virtualization/Sandbox EvasionProcess-tool enumeration (60+ security tools), VM artifact checks, network canary domain
ExfiltrationT1041Exfiltration Over C2 ChannelRC4-encrypted (key = SHA-256 of plaintext) ZIP of browser data sent to /api/savecreds / /api/v1/fingerprint
07

Native Audit-Log Hunts

Non-CQL checks that complement the Falcon queries in §8, especially where a Critical File Monitoring rule is not yet deployed.

  • Windows Security Event 4698 (scheduled task created) — filter TaskName for MicrosoftNodeRuntimeUpdater or AcrobatBrowserExtension; cross-reference the creating process against known-admin tooling.
  • Sysmon Event ID 7 (image/DLL load) — flag SentinelAgentCore.dll loaded by a process whose path is not under the standard SentinelOne install directory.
  • Sysmon Event ID 11 (FileCreate) — flag writes to ...\User Data\Default\Secure Preferences, ...\User Data\Local State, or any ...\User Data\Default\Extensions\{extension-id} path where the writing image is not chrome.exe or msedge.exe.
  • Chrome/Edge policy audit (chrome://policy / edge://policy) — confirm ExtensionInstallBlocklist and ExtensionSettings are actually applied on the endpoint, not merely configured centrally.
  • chrome://extensions with Developer Mode manually enabled — visually confirm no unpublished/unexpected extension is present; the three known IDs will not show a Web Store listing if inspected.
  • DNS/proxy log review for the sinkholed canary domain creamp1eonlyfans.net — any resolution attempt is a confirmed-infection signal (see the "do NOT block" note in §4/§10).
  • Manual IR / live-response — enumerate open mutexes for ClarinhoQueSim-XEDA2O on a suspect host (no native Windows Event Log source for mutex creation; requires a live-response tool or memory capture).
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Scheduled Task Persistence (MicrosoftNodeRuntimeUpdater / AcrobatBrowserExtension)
CONF HIGHFP LOWCOST LOW

Looks for: the two persistence task names KREMLIN's loader registers. FP: none expected — these names are not used by legitimate software.

// HUNT: Scheduled Task Persistence — MicrosoftNodeRuntimeUpdater / AcrobatBrowserExtension
// MITRE: T1053.005
// CONF: high  FP: low  COST: low
// REQUIRES: ScheduledTaskRegistered
// FALSE POSITIVES: none expected — task names are attacker-chosen, not used by legitimate software
#event_simpleName=/^ScheduledTaskRegistered$/
| TaskName=/^(MicrosoftNodeRuntimeUpdater|AcrobatBrowserExtension)$/i
| table([ComputerName, UserName, TaskName, TaskExecutable, TaskAuthor, aid])
Q2 · conhost.exe --headless Spawning node.exe (First-Stage Relaunch)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: the documented conhost.exe --headless node.exe relaunch pattern used by the first-stage loader. FP: legitimate headless Node.js CI/build agents or Electron-based dev tooling can match this.

// HUNT: conhost.exe --headless Spawning node.exe
// MITRE: T1059.007, T1204.002
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate headless Node.js CI/build agents or Electron dev tooling launched via conhost
// TUNING: exclude known CI build hosts and approved Electron/Node dev tooling directories via an ImageFileName path exclusion after validating in your tenant
#event_simpleName=/^ProcessRollup2$/
| FileName=/^node(\.exe)?$/i
| ParentBaseFileName=/^conhost(\.exe)?$/i
| CommandLine=/--headless/i
| table([ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, aid])
Q3 · Banking-Lure JavaScript Executed via wscript/cscript (COMPROVANTE Pattern)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Windows Script Host executing a file whose name contains the "comprovante" (Portuguese for "receipt") lure keyword. FP: legitimate finance-team scripts or macros that reference accounting documents named similarly.

// HUNT: Banking-Lure JavaScript via wscript/cscript (COMPROVANTE Pattern)
// MITRE: T1566.001, T1204.002
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate accounting/finance scripts or macros that reference "comprovante"-named documents
// TUNING: exclude signed/approved accounting-suite installers; if noisy, scope the hunt to endpoints outside the finance department
#event_simpleName=/^ProcessRollup2$/
| FileName=/^(wscript|cscript)(\.exe)?$/i
| CommandLine=/comprovante/i
| table([ComputerName, UserName, FileName, CommandLine, ParentBaseFileName, aid])
Q4 · Chrome/Edge Secure Preferences Modified by a Non-Browser Process
CONF HIGHFP MEDIUMCOST LOW

Looks for: the mechanical fingerprint of forced extension registration — Secure Preferences rewritten by something other than the browser. Requires a Critical File Monitoring rule covering this path (see §11). FP: enterprise browser-management agents legitimately rewrite this file outside the browser process.

// HUNT: Chrome/Edge Secure Preferences Modified by a Non-Browser Process
// MITRE: T1176, T1555.003
// CONF: high  FP: medium  COST: low
// REQUIRES: CriticalFileModified — Falcon Critical File Monitoring rule scoped to "Secure Preferences" under Chrome/Edge User Data profiles
// FALSE POSITIVES: enterprise browser-management tools (Chrome Browser Cloud Management, Intune, Workspace ONE) that legitimately rewrite Secure Preferences outside the browser process
// TUNING: exclude ContextBaseFileName values for your approved MDM/browser-management agents (e.g. IntuneManagementExtension.exe, CCMExec.exe) after validating them in your tenant
#event_simpleName=/^CriticalFileModified$/
| TargetFileName=/Secure Preferences/i
| ContextBaseFileName!=/^(chrome|msedge)(\.exe)?$/i
| table([ComputerName, UserName, ContextBaseFileName, TargetFileName, aid])
Q5 · Chrome/Edge Launched with Remote-Debugging Flags (OSCrypt/App-Bound Key-Theft Precursor)
CONF HIGHFP MEDIUMCOST LOW

Looks for: chrome.exe/msedge.exe launched with a remote-debugging flag — the precursor to the documented App-Bound key extraction via ReadProcessMemory. FP: web developers and QA/test automation (Selenium, Puppeteer, Playwright) legitimately use this flag.

// HUNT: Chrome/Edge Launched with Remote-Debugging Flags
// MITRE: T1555.003, T1140
// CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: web developers, QA/test automation (Selenium, Puppeteer, Playwright), and RMM tooling that legitimately launch Chrome/Edge with --remote-debugging-port
// TUNING: exclude ComputerName values for known dev/QA/CI workstations and build agents; consider scoping the alert to non-engineering OUs
#event_simpleName=/^ProcessRollup2$/
| FileName=/^(chrome|msedge)(\.exe)?$/i
| CommandLine=/--remote-debugging-(port|pipe)/i
| table([ComputerName, UserName, FileName, CommandLine, ParentBaseFileName, aid])
Q6 · SentinelMemoryScanner.exe Running Outside Its Installed Path (DLL-Sideload Staging)
CONF HIGHFP LOWCOST LOW

Looks for: the legitimate-named SentinelOne binary running from anywhere other than its real install directory — the setup for sideloading SentinelAgentCore.dll. FP: none expected; if a genuine SentinelOne agent is deployed, validate the standard path first.

// HUNT: SentinelMemoryScanner.exe Running Outside Its Installed Path
// MITRE: T1574.002
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: none expected in environments without a genuine SentinelOne agent; where SentinelOne is deployed, confirm the standard install path before relying on this alone
#event_simpleName=/^ProcessRollup2$/
| FileName=/^SentinelMemoryScanner(\.exe)?$/i
| ImageFileName!=/\\Program Files\\SentinelOne\\/i
| table([ComputerName, UserName, ImageFileName, ParentBaseFileName, CommandLine, aid])
Q7 · SentinelAgentCore.dll Written Outside the SentinelOne Install Directory
CONF HIGHFP LOWCOST LOW

Looks for: the malicious sideload DLL dropped outside a legitimate SentinelOne install. FP: none expected outside a genuine SentinelOne install/update in progress.

// HUNT: SentinelAgentCore.dll Written Outside the SentinelOne Install Directory
// MITRE: T1574.002
// CONF: high  FP: low  COST: low
// REQUIRES: PeFileWritten or NewExecutableWritten
// FALSE POSITIVES: none expected outside a genuine SentinelOne install/update in progress
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| TargetFileName=/SentinelAgentCore\.dll$/i
| TargetFileName!=/\\Program Files\\SentinelOne\\/i
| table([ComputerName, UserName, TargetFileName, SHA256HashData, aid])
Q8 · DNS Resolution to Known KREMLIN/REF9334 C2 Infrastructure
CONF HIGHFP LOWCOST LOW

Looks for: DNS requests to current and historical campaign infrastructure. FP: none expected; these are attacker-registered domains. Refresh this list as infrastructure rotates (see §17 changelog cadence).

// HUNT: DNS Resolution to Known KREMLIN/REF9334 C2 Infrastructure
// MITRE: T1071.001, T1102.001
// CONF: high  FP: low  COST: low
// REQUIRES: DnsRequest
// FALSE POSITIVES: none expected; domains are attacker-registered and campaign-specific — retire/rotate this list as infrastructure changes
#event_simpleName=/^DnsRequest$/
| DomainName=/^(volmira\.site|zaviro\.online|granderevolucao\.store|luizestrelhashapr\.online|cremeb\.com|californicationdetroit\.com|codecaudiog\.site|codecvideowin\.online|acrobat-updater\.com|lojinhadoluiz\.online|donalurdesconfeitos\.site|marialurdes\.site|harialurdes\.site)$/i
| table([ComputerName, UserName, DomainName, aid])
Q9 · Known KREMLIN Extension ID Present in a Chrome/Edge Profile
CONF HIGHFP LOWCOST LOW

Looks for: any of the three known malicious extension IDs referenced in a file path (profile Extensions/{id} directory or Secure Preferences content). Requires the same Critical File Monitoring rule as Q4. FP: none — these IDs are not legitimate Web Store publishers.

// HUNT: Known KREMLIN Extension ID Present in a Chrome/Edge Profile
// MITRE: T1176
// CONF: high  FP: low  COST: low
// REQUIRES: CriticalFileModified — same FIM rule scope as Q4 (Extensions/ and Secure Preferences paths)
// FALSE POSITIVES: none — these extension IDs are not legitimate Web Store publishers
#event_simpleName=/^CriticalFileModified$/
| TargetFileName=/(ndpbidppejfanjbhfgjlohfanbfbklff|djodclnjknbpambeaaapadmdfhmbpeog|cdgcjghdeinagopbaobhmaefigoafaaa)/i
| table([ComputerName, UserName, TargetFileName, ContextBaseFileName, aid])
09

CrowdStrike Custom IOA Recommendations

Promote the five highest-confidence, lowest-FP queries to Custom IOA rule groups after the 14-day silent-run validation in §11. Keep Q2, Q3, Q4, and Q5 as Investigate-only hunts until their FP-medium tuning exclusions are confirmed in your tenant.

IOA NameSource QueryPatternExclusionsDeployment Path
DETECT — KREMLIN Scheduled Task PersistenceQ1Scheduled task registration matching MicrosoftNodeRuntimeUpdater or AcrobatBrowserExtensionNone identifiedConsole > Endpoint Security > Custom IOA rule groups > Create rule (Process Creation category) > Detect-only for 14 days > promote to Prevent
DETECT — SentinelOne Binary Sideload StagingQ6 + Q7SentinelMemoryScanner.exe execution or SentinelAgentCore.dll write outside the standard SentinelOne pathValidated SentinelOne install directory for your environmentSame rule group, Process Creation + File System categories
DETECT — KREMLIN C2 DNS ResolutionQ8DNS request to the current/historical domain listNone; refresh list on changelog updatesPrefer Falcon Custom IOC (domain) import over a Custom IOA for this one — see §10 CSV block
DETECT — Known KREMLIN Extension ID PresentQ9File path containing one of the three known extension IDsNoneRequires the Critical File Monitoring rule from §11 to be live first

Triage & Response (for any hit above)

  1. Network-contain the host in Falcon before further investigation — this is an active credential-theft chain with a live exfil channel.
  2. Pull the process tree for the alerting event; confirm parent chain against §3's attack chain (JS lure → wscript/cscript → scheduled task → conhost/node → installer).
  3. Check for the Q4/Q9 Secure Preferences / extension-ID fingerprint even if the alert came from a different query — if present, assume the extension is already force-installed.
  4. Pull local Chrome/Edge chrome://extensions (Developer Mode on) via live response; document any extension ID not matching your organization's approved/forced list.
  5. Run Q8 environment-wide, scoped to the last 30 days, to find other hosts beaconing to the same infrastructure.
  6. Rotate credentials and revoke active sessions for any account whose browser profile shows the Q4/Q9 fingerprint, prioritizing banking and password-manager-linked accounts.
  7. Escalate to IR if OSCrypt/App-Bound key theft is confirmed (Q5 hit + Q4 hit on the same host within the same session) — this indicates DPAPI-protected secrets beyond the browser may be exposed.

Pivot Queries

// PIVOT: host-scoped — all process activity in the hour around a Q1/Q4/Q6 hit
#event_simpleName=/^ProcessRollup2$/
| aid=REPLACE_WITH_AID
| table([ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, aid])
// PIVOT: environment-wide — any other host resolving the same C2 domain as a confirmed hit
#event_simpleName=/^DnsRequest$/
| DomainName=REPLACE_WITH_CONFIRMED_DOMAIN
| table([ComputerName, UserName, DomainName, aid])
10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
domain,volmira.site,prevent,critical,2027-03-16,KREMLIN/REF9334 current extension C2 (version check/download/exfil) -- corroborated by 2 sources,campaign:KREMLIN-REF9334
domain,zaviro.online,prevent,critical,2027-03-16,KREMLIN/REF9334 current installer C2 and fingerprint upload -- corroborated by 2 sources,campaign:KREMLIN-REF9334
domain,luizestrelhashapr.online,prevent,critical,2027-03-16,KREMLIN/REF9334 extension C2 resolved via Ethereum smart contract -- corroborated by 2 sources,campaign:KREMLIN-REF9334
domain,granderevolucao.store,detect,high,2026-12-16,KREMLIN/REF9334 installer payload host (single-sourced),campaign:KREMLIN-REF9334
domain,cremeb.com,detect,high,2026-12-16,KREMLIN/REF9334 Cremeb-campaign C2 and QR-extension config API (single-sourced),campaign:KREMLIN-REF9334
domain,californicationdetroit.com,detect,medium,2026-12-16,KREMLIN/REF9334 backup Cloudflare-proxied infrastructure (single-sourced),campaign:KREMLIN-REF9334
domain,graph.checkeligibitily.workers.dev,detect,high,2026-12-16,KREMLIN/REF9334 Cloudflare Workers C2 resolver -- block this exact hostname only; workers.dev is shared multi-tenant infrastructure,campaign:KREMLIN-REF9334
domain,codecaudiog.site,hunt,medium,2026-10-16,KREMLIN/REF9334 historical Codecaudiog-campaign C2 (Jun 2025),campaign:KREMLIN-REF9334
domain,codecvideowin.online,hunt,medium,2026-10-16,KREMLIN/REF9334 historical Codecaudiog-campaign C2,campaign:KREMLIN-REF9334
domain,acrobat-updater.com,hunt,medium,2026-10-16,KREMLIN/REF9334 historical Acrobat-campaign C2 (Aug 2025),campaign:KREMLIN-REF9334
domain,lojinhadoluiz.online,hunt,medium,2026-10-16,KREMLIN/REF9334 historical Framesync-campaign C2 (Sep 2025),campaign:KREMLIN-REF9334
domain,donalurdesconfeitos.site,hunt,medium,2026-10-16,KREMLIN/REF9334 historical transition-era C2,campaign:KREMLIN-REF9334
domain,marialurdes.site,hunt,medium,2026-10-16,KREMLIN/REF9334 historical transition-era C2,campaign:KREMLIN-REF9334
domain,harialurdes.site,hunt,medium,2026-10-16,KREMLIN/REF9334 historical transition-era C2,campaign:KREMLIN-REF9334
ipv4,185.221.23.133,detect,high,2026-12-16,KREMLIN/REF9334 Codecaudiog-campaign PULSAR RAT C2,campaign:KREMLIN-REF9334
ipv4,144.172.112.239,detect,high,2026-12-16,KREMLIN/REF9334 Acrobat-campaign PULSAR RAT C2,campaign:KREMLIN-REF9334
ipv4,45.90.13.210,detect,high,2026-12-16,KREMLIN/REF9334 Acrobat-campaign PULSAR RAT alternate C2,campaign:KREMLIN-REF9334
ipv4,37.16.74.100,detect,high,2026-12-16,KREMLIN/REF9334 Cremeb-campaign PULSAR RAT C2,campaign:KREMLIN-REF9334
ipv4,37.16.74.34,detect,high,2026-12-16,KREMLIN/REF9334 Cremeb-campaign PULSAR RAT C2,campaign:KREMLIN-REF9334
ipv4,178.92.162.38,detect,high,2026-12-16,KREMLIN/REF9334 REMCOS RAT C2 (Ethereum-transition campaign),campaign:KREMLIN-REF9334
sha256,c8c38634dd44d7c6162c66174a6ee23ee404265125166e8d757681bdd66a4268,detect,high,2026-12-16,KREMLIN C++ installer (2.10MB x64; PigSyscall indirect syscalls; SentinelOne DLL sideload),campaign:KREMLIN-REF9334
sha256,223be3f8648bf6998c4a58b972522e5fda8d9d0a57b4e163811930de66c3f7ca,detect,high,2026-12-16,KREMLIN malicious extension -- AVSync System Inc masquerade (ext id ndpbidppejfanjbhfgjlohfanbfbklff),campaign:KREMLIN-REF9334
sha256,42a3e2bb135fb46b11b127f45a266b3a4d9dff4aa1cf75433f93fe69ba51a9b9,detect,high,2026-12-16,KREMLIN PowerShell extension installer (install_chrome_ext.ps1),campaign:KREMLIN-REF9334
sha256,106eac79396a3ff77b8f375c391260ce422be2ae4d55d3aa75b2635cbdc0fa42,detect,high,2026-12-16,KREMLIN first-stage JavaScript loader (Codecaudiog B variant),campaign:KREMLIN-REF9334
sha256,5ece7fd3766b0b7f8aadefa562313cea6c3c94f9398658dd389910e5be44f552,detect,high,2026-12-16,KREMLIN first-stage loader popup filename-pattern sample,campaign:KREMLIN-REF9334
sha256,ba80216c960977fa45e317f00dcf31e96acab29904a737cbc0bf86e929c3be5f,detect,high,2026-12-16,KREMLIN loader -- seguranca.versionnova.site wave A (2026-06-22),campaign:KREMLIN-REF9334
sha256,cb15cbf3f01a92e609e4c2bc26155e667e96c5d04770e83abba66ee07bcecea0,detect,high,2026-12-16,KREMLIN loader -- seguranca.versionnova.site wave B (2026-06-26),campaign:KREMLIN-REF9334
sha256,170dffb37e05f525f735bc9ad84b3908a488f7ce43fcb07739a10e4331e15a2c,detect,high,2026-12-16,KREMLIN loader -- seguranca.versionnova.site wave C (2026-07-03/14),campaign:KREMLIN-REF9334
Behavioral Signaturesnot natively importable
# Scheduled task names (persistence)
MicrosoftNodeRuntimeUpdater        -- runs 1 min after logon; launches conhost.exe --headless node.exe
AcrobatBrowserExtension            -- runs at logon and every 30 minutes; re-downloads latest payload

# Mutex
ClarinhoQueSim-XEDA2O              -- Ethereum-transition-era installer mutex (Portuguese name)

# Malicious Chrome/Edge extension IDs (not legitimate Web Store publishers)
ndpbidppejfanjbhfgjlohfanbfbklff   -- "AVSync System Inc" v1.0.0
djodclnjknbpambeaaapadmdfhmbpeog   -- "FrameSync Driver System" / "FrameSync Plugin Project"
cdgcjghdeinagopbaobhmaefigoafaaa   -- QR-code themed extension (targets web.whatsapp.com, sicoob.com.br)

# Lure filename patterns (JavaScript, delivered as email/messenger attachments)
COMPROVANTE_{Bank}_DD-MM-YYYY.{10 digits}.js
ComprovanteOriginal_{Bank}_DD-MM-YYYY.{10 digits}.js
popup_{date}_{random}.js

# C2 request paths (behavioral -- not resolvable via DNS/IP blocking alone)
/google_ws/                                    -- extension WebSocket C2 channel
/google_api/ (paths ending in .css)             -- extension REST C2 disguised as CSS fetches
/api/ext/version, /api/ext, /api/savecreds      -- volmira.site endpoints
/api/v1/fingerprint                             -- zaviro.online endpoint
Named Tooling & Blockchain C2context
# RAT payloads distributed alongside the extension
PULSAR RAT      (versions 1.6.6, 1.7.1-1.7.3, 2.4.5 observed)
REMCOS RAT      (Ethereum-transition campaign, current)

# Ethereum smart-contract dead-drop resolver (T1102.001)
Operator wallet:      0x5C32A09873be70a92fd8bB5A9fED7967dE06BdE6
Current contract:     0xCD7360A83E5cdbBbbbcEB0e78748babA6740d07b (setConfig/getConfig; params: main-v2, sub-module, sentinel, extension, binary, binary_chunks)
Prior contracts:      0x902EDbFECFF38f285Bf26283fB9cEB3700061873, 0x4f7D712D0B53fDf3c96896EB411467B30Da23406

# Sideloaded / abused legitimate binary
SentinelMemoryScanner.exe   -- legitimate SentinelOne binary abused to sideload SentinelAgentCore.dll

# Syscall evasion
PigSyscall  -- open-source indirect-syscall library; resolves SSNs via RUNTIME_FUNCTION entries

# Sandbox / kill-switch canary -- MONITOR ONLY, DO NOT BLOCK
creamp1eonlyfans.net   -- now sinkholed by Elastic Threat Command; malware aborts if this domain responds, so a hit means an infected host tried to self-terminate. Blocking it would restore the malware's default (non-aborting) execution path.
Chrome/Edge Policy Audit Checklistmanual verification
# Chrome/Edge policy audit (run per endpoint or pull via MDM reporting)
1. chrome://policy (or edge://policy) -- confirm ExtensionInstallBlocklist contains the 3 known KREMLIN extension IDs
2. Confirm ExtensionSettings default installation_mode is "blocked" (allowlist-only), not left unset
3. Confirm DeveloperToolsAvailability does not leave "Developer mode" reachable on the extensions page for standard users
4. chrome://extensions with Developer mode manually toggled on -- confirm zero unexpected/unpublished extensions
5. Where FIM is deployed, verify current Secure Preferences / Local State file hashes against a known-good baseline
11

Detection Validation Gates

GateRequirementStatus for This Pack
Telemetry readyProcessRollup2, DnsRequest, PeFileWritten/NewExecutableWritten, ScheduledTaskRegistered enabled; Critical File Monitoring rule created for Secure Preferences/Local State/Extensions pathsAction needed — the FIM rule for Q4/Q9 is not on by default in most tenants
Benign baselineRun all 9 queries over a trailing 30-day window with no alerting enabled; record hit volume per queryPending — run before enabling any Custom IOA
Positive testsIn an isolated lab VM: register a scheduled task named exactly MicrosoftNodeRuntimeUpdater; launch chrome.exe --remote-debugging-port=9222; confirm Q1 and Q5 firePending
PromotionPromote Q1, Q6, Q7, Q8, Q9 to Custom IOA after 14 days silent-run with zero benign hits; keep Q2, Q3, Q4, Q5 as Investigate-only pending FP tuning validationScheduled — see §9
12

Hardening — Tiered & Deployable

Because the extension's in-browser data theft (§5, §15) is invisible to EDR, hardening carries more of the defensive weight than usual for this threat. The controls below target the three chokepoints the attack chain cannot avoid: getting the lure to execute, forcing the extension in, and reaching C2.

Immediate
  • Block the 3 known malicious extension IDs via Chrome/Edge ExtensionInstallBlocklist policy (Chrome Enterprise / Microsoft Edge policy documentation). No compatibility risk — these are not legitimate publishers. → M1038 (Execution Prevention).
  • Disable Windows Script Host (WSH) for standard endpoints via the documented Enabled registry value, blocking wscript.exe/cscript.exe execution of the .js lure outright. → M1038, M1042 (Disable/Remove Feature or Program).
  • Enable the Falcon Critical File Monitoring / FIM rule for Secure Preferences, Local State, and Extensions\ under Chrome/Edge profiles — this is a detection prerequisite (§11), not just a hardening nicety; without it Q4 and Q9 are blind. → M1047 (Audit).
Near Term (1–4 weeks)
  • Move Chrome/Edge extension policy to allowlist-only: set ExtensionSettings default installation_mode to blocked, with an explicit allowlist for approved extensions and a forcelist for organization-mandated ones (Chrome Enterprise / Edge policy documentation). Pilot on one ring first — inventory currently-installed extensions before flipping the default. → M1038.
  • Enable Microsoft Defender ASR rule "Block JavaScript or VBScript from launching downloaded executable content" (GUID d3e037e1-3eb8-44c8-a917-57927947596d) in Audit mode for 2 weeks, then Block. → M1040 (Behavior Prevention on Endpoint).
  • Restrict local administrator rights on standard user workstations — the App-Bound key extraction and Secure Preferences HMAC forgery both benefit from elevated or same-user debugger-attach rights; least-privilege reduces the attack surface for this specific technique. → M1026 (Privileged Account Management).
Strategic (1–3 months)
  • Enable Credential Guard where hardware supports it (VT-x/AMD-V + Secure Boot), reducing the value of any DPAPI-protected secret theft that accompanies this technique on a compromised host. → M1025 (Privileged Process Integrity). ⚠ best-practice, no dedicated CIS Benchmark line item for this exact scenario — routed via the general Credential Guard control.
  • User-awareness training targeted at finance/AP staff on the specific COMPROVANTE lure pattern — this is the one link in the chain that is entirely social, and the pack's own hunt coverage of delivery (§3, step 1) is a documented gap. → M1017 (User Training).
13

Deployable Playbooks

Playbook 1 — Disable Windows Script Host (blocks the .js lure's execution vector)

MITRE: T1204.002 → M1038, M1042   Prerequisites: confirm no legitimate logon/legacy scripts on the target ring depend on wscript.exe/cscript.exe (rare but check any old VBS/JS logon scripts first)   Reboot required: No

\# Disable Windows Script Host for both wscript.exe and cscript.exe
$path = 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings'
New-Item -Path $path -Force | Out-Null
New-ItemProperty -Path $path -Name 'Enabled' -Value 0 -PropertyType DWORD -Force | Out-Null
Write-Output "Windows Script Host disabled (Enabled=0)"

GPO path: deploy the above via a registry preference item, or use Administrative Templates if your baseline ADMX includes a WSH template. Verify: (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings' Enabled).Enabled should return 0; attempting to run a .js file via double-click should show "Windows Script Host access is disabled."

Rollback: Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings' Enabled 1 (or delete the value) — takes effect immediately, no reboot needed.

Playbook 2 — Block Known KREMLIN Extension IDs + Move to Allowlist-Only

MITRE: T1176 → M1038   Prerequisites: Chrome/Edge ADMX templates installed in your GPO/Intune environment; inventory of currently force-installed and user-installed extensions before changing the default installation mode   Reboot required: No (browser restart to pick up policy)

// Chrome/Edge ExtensionSettings policy (JSON) -- deploy via GPO "Extension management settings" or Intune OMA-URI
{
  "ndpbidppejfanjbhfgjlohfanbfbklff": { "installation_mode": "blocked" },
  "djodclnjknbpambeaaapadmdfhmbpeog": { "installation_mode": "blocked" },
  "cdgcjghdeinagopbaobhmaefigoafaaa": { "installation_mode": "blocked" },
  "*": { "installation_mode": "blocked" }
}

Verify: on a test endpoint, chrome://policy should show ExtensionSettings applied with the three blocked IDs; attempt to sideload one of the three IDs in a lab VM and confirm Chrome refuses to load it.

Rollback: revert the GPO/Intune ExtensionSettings value to your prior JSON (back it up before this change) and force a policy refresh (gpupdate /force or Intune sync).

Playbook 3 — Enable ASR Rule: Block JavaScript/VBScript from Launching Downloaded Executable Content

MITRE: T1204.002, T1059.007 → M1040   Prerequisites: Microsoft Defender Antivirus active or passive mode; roll out to a pilot ring in Audit before Block   Reboot required: No

\# Audit mode first (recommended 2-week pilot)
Set-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions AuditMode

\# After a clean audit period, switch to Block
Set-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions Enabled

Verify: Get-MpPreference | Select -ExpandProperty AttackSurfaceReductionRules_Ids should list the GUID with a matching action in AttackSurfaceReductionRules_Actions; review Defender ASR audit events (Event ID 1122/1121) for hit volume before flipping to Block.

Rollback: Set-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions Disabled

14

Containment Runbook

PhaseActionsOwnerEvidence to Preserve
IsolateNetwork-contain the host in Falcon; block the confirmed C2 domain/IP at proxy/firewall (never block the sinkholed creamp1eonlyfans.net canary — see §4/§10); force sign-out of any banking/financial sessions accessible from the hostSOC/IR on-callFalcon RTR session log, containment timestamp, list of active browser sessions at time of isolation
EradicateRemove the MicrosoftNodeRuntimeUpdater/AcrobatBrowserExtension scheduled tasks; remove the malicious extension via forced ExtensionSettings "removed" mode (do not rely on manual chrome://extensions removal alone — Secure Preferences must be regenerated by a clean browser reinstall/profile reset); delete dropped installer/DLL/JS artifacts; quarantine and hash all recovered samplesIR / Endpoint EngFull file paths + hashes of all removed artifacts, scheduled task XML export, before/after Secure Preferences file (do not restore the tampered copy)
RecoverReset the affected Chrome/Edge profile entirely (new profile, not a repaired one) since the HMACs/keys involved may still validate a residual tamper; rotate all credentials and revoke active sessions for accounts used in that profile, prioritizing banking and password-manager-linked accounts; re-image if root-level DPAPI/App-Bound key exposure is suspected beyond the browser; monitor Q8 hits from this host for 30 daysIR + affected user's manager (for banking-credential rotation)Credential-rotation confirmation, 30-day monitoring log, closure report referencing which hunt queries fired during the incident
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1566.001Lure deliveryQ3 (execution only, not delivery)NoPartial
T1053.005Scheduled task persistenceQ1Yes (§9)Good
T1176Forced extension installQ4, Q9Yes — Q9 (§9)Good
T1555.003OSCrypt/App-Bound key theftQ5No — investigate-onlyPartial
T1574.002SentinelOne DLL sideloadQ6, Q7Yes (§9)Good
T1102.001Ethereum dead-drop C2 resolutionNone — on-chain RPC call, no Falcon telemetryNoGap
T1071.001HTTPS/WebSocket C2 commsQ8 (DNS only; in-path proxy/SWG logs needed for the /google_ws/ and /google_api/ paths themselves)Yes (§9)Partial
T1056.001In-extension keyloggingNone — in-browser JS, no EDR visibilityNoGap — mitigate via §12 extension hardening
T1113In-extension screenshot captureNone — same gap as aboveNoGap — mitigate via §12
T1027Installer/loader obfuscationCovered indirectly via hash IOCs (§10), not behaviorallyNoPartial

Validation gates from §11 apply to every "Good"/"Partial" row above — none of these queries should be promoted to Prevent without the benign-baseline and positive-test steps completed first. The two "Gap" rows tied to in-browser behavior are not closeable by EDR at all; they are the reason §12's extension-allowlisting controls are marked Immediate/Near-Term rather than optional.

16

Hunt Summary Ticket

TITLE:      KREMLIN / REF9334 -- Banking Browser-Extension Hunt
SEVERITY:   High / Active credential-theft campaign
SCOPE:      Windows endpoints running Chrome or Edge; Brazilian-bank-facing users highest priority
HYPOTHESIS: Hosts show scheduled-task persistence, a non-browser process modifying Secure
            Preferences, a debugger-attached browser process, or DNS resolution to known
            KREMLIN C2 -- any one of these indicates active or attempted extension force-install.
QUERIES:    Q1-Q9 (section 8); IOA candidates Q1, Q6, Q7, Q8, Q9 (section 9)
DO FIRST:   1) Confirm Critical File Monitoring is enabled for Secure Preferences/Extensions
               paths (section 11) -- without it, Q4 and Q9 return nothing.
            2) Run Q1, Q6, Q7, Q8 first (high conf, low FP, no tuning needed).
            3) Block the 3 known extension IDs via ExtensionInstallBlocklist (section 12/13)
               immediately, independent of hunt results.
FINDINGS:   [populate after first run]
GAPS:       In-browser extension behavior (keylogging, screenshot, cookie theft) and the
            Ethereum-contract C2 resolution step are invisible to Falcon telemetry (section 15).
ACTIONS:    See containment runbook (section 14) for any confirmed hit.
OWNER:      HuntPack
VERSION:    v0.1 -- 2026-09-16
17

Changelog

v0.12026-09-16Initial release. Research from Elastic Security Labs (primary) plus 2 corroborating write-ups. 9 CQL hunt queries, 4 Custom IOA candidates, tiered hardening, 3 deployable playbooks, containment runbook. Two brief-supplied indicators (IP 45.90.13[.]77, hostname find-postman.ddesdokww.workers.dev) omitted — untraceable to any fetched source.
18

References

TierSourceUsed ForAccess Date
PrimaryElastic Security Labs — "The extension you never installed: KREMLIN forges Chrome's own integrity checks to steal banking sessions"Full technical report; IOC appendix; campaign timeline; Secure Preferences HMAC-forgery mechanics; Ethereum contract details; SentinelOne sideload; PigSyscall; victim count2026-09-16
SecondaryThe Hacker News — "KREMLIN Banking Malware Hijacks Chrome and Edge to Steal Credentials and Session Tokens"Corroboration: current C2 domains, extension ID, Ethereum contract, HMAC-forgery description, victim/geography stats2026-09-16
SecondaryGBHackers — "KREMLIN Banking Malware Bypasses Chrome Security to Steal Banking Sessions"Corroboration: scheduled task name, SentinelOne sideload, RC4/SystemFunction032 exfil detail, recommended hunt angles2026-09-16

Source snapshots saved verbatim at build time: 01-elastic-security-labs.txt, 02-thehackernews.txt, 03-gbhackers.txt in this pack's -sources/ directory.