Golden Chickens / Venom Spider (TAG-195) — TinyEgg, ChonkyChicken & ChromEggscalator
Executive Summary
TAG-195 (publicly Golden Chickens / Venom Spider, historically the More_eggs developer) is a financially motivated malware-as-a-service provider whose tooling has been supplied to FIN6, Cobalt Group and Evilnum. On 2026-07-24 Recorded Future's Insikt Group disclosed four new families that replace the prior TerraStealerV2 / TerraLogger generation: TinyEgg (initial-access backdoor), ChonkyChicken (full post-exploitation implant), a modularized ChonkyChicken (controller plus at least fourteen on-demand plugin modules), and ChromEggscalator (a repackaged build of the public ChromElevator Chrome App-Bound-Encryption bypass utility).
The attacker objective is credential and session monetisation. ChonkyChicken does not merely steal saved passwords: it drives a live, authenticated browser through the Chrome DevTools Protocol, so an organisation that rotates passwords after an incident but never looks for an active CDP session remains compromised. Operator TAG-127 delivers the first stage through ClickFix fake-verification pages that talk the user into pasting a command into the Windows Run dialog.
The highest-value defensive angle is that all four families were built to one internal specification, and that specification is behaviourally loud. Every component is an OCX file executed by regsvr32.exe from a user-writable directory, every component gates on its own filename, and TinyEgg and ChonkyChicken both persist through the same Run key value — HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WinComCtl. One behavioural detection on that pattern covers the entire current tool set, present and future, and does not decay when the operators rotate hashes and domains.
Defender priority: deploy Q1 (regsvr32 loading an OCX from a user-writable path) and Q2 (WinComCtl Run-key creation) first — they are high-confidence, low-FP, and durable against the modular redesign. Then run Q3/Q4 for CDP browser hijack, because credential rotation alone does not evict an attacker holding a live DevTools session.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| T1 PRIMARY | Recorded Future / Insikt Group — TAG-195 Upgrades MaaS Ecosystem with Modular Tools | Original research. Full technical analysis of all four families, command tables, shared architectural traits, mitigations, and a complete IOC appendix (30 SHA256, 6 domains, 4 public IPs, filenames, Run key, ports, log-file artifacts). | Yes — sole source for every atomic hash |
| T2 | The Hacker News (2026-07-24) | Independent write-up. Confirms family names, TAG-195/TAG-127 relationship, ClickFix + OCX delivery, WebSocket C2, the 14-module inventory and the undocumented wtrack module. | Yes — narrative corroboration, no atomic IOCs |
| T2 | GBHackers | Reproduces the Insikt IOC appendix: all six domains plus 70.34.205.43 and 65.20.102.161. Confirms DllInstall export and modular reduction of static footprint. | Yes — second source for domains + 2 IPs |
| T2 | CyberPress | Confirms ClickFix delivery and the screenly[.]cam lure domain. Adds generic LOLBIN hunting advice. | Partial — see caveat below |
| T2 | CybersecurityNews | Confirms regsvr32 execution, WinComCtl Run key, koki.ocx controller, chromelevator, port 3000 and the xlog.txt artifact. | Yes — behavioural corroboration |
| T2 | SC Media (CyberRisk Alliance) | Short brief. Confirms the four-family disclosure and MaaS framing. No technical detail beyond the primary. | Partial — headline confirmation only |
Analyst decisions and corrections
- Correction to the tasking brief — the delivery LOLBIN is
regsvr32.exe, not curl/certutil/mshta. The primary report is explicit and consistent across all four families: payloads are OCX files executed viaregsvr32.exe. Thecurl/certutil/mshtatrio appears only in CyberPress's own generic "monitor LOLBIN abuse (e.g. ...)" advice, not as an observed TAG-195 artifact. Those binaries are still covered in Q5 as a broad ClickFix net, but they are labelled as generic technique coverage rather than campaign-specific indicators. - Hash severity capped at
detect/ high. All 30 SHA256 values originate from the single Insikt appendix; no second independent source publishes them. House rule is thatprevent/criticalrequires two independent sources, so the hashes ship as high-severity detects rather than blocks. The domains, which two sources publish, do ship at prevent. 70.34.205.43deliberately downgraded. Insikt describes it as a shared hosting IP carrying multiple lure domains. Blocking a shared VPS address risks collateral denial, so it ships asdetect/high with a note rather than as a block.- No prompt-injection content found. All six fetched pages were swept for embedded instructions, authority claims and "the real IOCs are here" redirects. The only regex hit was SC Media's copyright boilerplate ("without prior authorization"), which is benign. No source was disqualified.
- Modular ChonkyChicken C2 is a test artifact. The observed endpoint
ws://localhost:3000/ws/agentis a development configuration, so the path/ws/agentand the port 3000 are the durable signals — not the loopback address.
Perishability: domains and IPs are volatile (weeks). Hashes are stable but trivially recompiled given the active development cadence. The behavioural signals (regsvr32+OCX, WinComCtl, CDP flags) are the long-lived half of this pack.
Hunt Brief & Attack Chain
Attack chain
| # | Step | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 | Victim lands on a ClickFix fake security-verification page (CAPTCHA mimic) on an attacker lure domain. | Proxy / DNS logs, DnsRequest | Q9 — known lure domains; web-gateway newly-registered-domain policy |
| 2 | Page copies a command to the clipboard and instructs the user to paste it into the Windows Run dialog. | ProcessRollup2 with ParentBaseFileName=explorer.exe; RunMRU registry | Q5 — Run-dialog LOLBIN chain; Native hunt N1 (RunMRU) |
| 3 | Command downloads an OCX payload from staging infrastructure and runs it with regsvr32.exe. TinyEgg installed. | ProcessRollup2, NetworkConnectIP4 | Q1 — regsvr32 + .ocx from user-writable path |
| 4 | TinyEgg gates on its own filename appearing in both the command line and the loaded module path; terminates in sandboxes. | Absence-of-detonation (analysis-side) | Not endpoint-detectable — see coverage gap G1 |
| 5 | TinyEgg registers over WebSocket (agent_register, agentType: "tiny") and opens an interactive shell. | NetworkConnectIP4 port 3000, path /ws/agent | Q8 — non-standard-port WebSocket egress |
| 6 | Persistence: OCX staged under %LOCALAPPDATA%\Packages\, Run key WinComCtl created pointing at it. | AsepValueUpdate / RegGenericValueUpdate | Q2 — WinComCtl / OCX-in-Run-key |
| 7 | Operator tasks TinyEgg to fetch ChonkyChicken (or the modular controller koki.ocx). | PeFileWritten, NewExecutableWritten | Q6 — named OCX filenames written to disk |
| 8 | ChonkyChicken stages ChromEggscalator to %TEMP%\mscom.ocx and runs it to bypass Chrome App-Bound Encryption. | PeFileWritten, ProcessRollup2 | Q6 + Q1; artifact C:\ProgramData\xlog.txt |
| 9 | cdp_start launches Chrome/Edge off-screen with remote debugging; operator drives the live authenticated session. | ProcessRollup2 CommandLine; loopback NetworkConnectIP4 :9222 | Q3 / Q4 / Q12 |
| 10 | Network recon (net_arp_scan, net_port_scan, net_share_enum) then credential/token-backed lateral movement and remote scheduled tasks. | NetworkConnectIP4 fan-out, UserLogon | Q11 — recon fan-out from regsvr32/rundll32 |
| 11 | Sustained surveillance: keylogging with window titles, clipboard capture, audio capture, live screen frames. | Limited native telemetry | Coverage gap G2 — module load is in-memory |
Hunt hypotheses (ordered by fidelity)
| ID | Hypothesis | MITRE | Falcon events | Expected FP sources | Conf |
|---|---|---|---|---|---|
| H1 | An adversary is executing OCX payloads through regsvr32.exe from a user-writable directory, the TAG-195 execution standard shared by all four families. | T1218.010 | ProcessRollup2 | In-house installers registering OCX controls from %TEMP% during setup | HIGH |
| H2 | Run-key persistence is being created under the value name WinComCtl, or pointing at an .ocx in a user-writable path. | T1547.001 | AsepValueUpdate, RegGenericValueUpdate | Essentially none for the named value; legacy OCX-based LOB apps for the generic form | HIGH |
| H3 | A Chromium browser has been launched with remote debugging enabled and positioned off-screen, indicating covert CDP session hijack rather than developer use. | T1185, T1528 | ProcessRollup2 | Almost none — the off-screen flag is the discriminator | HIGH |
| H4 | Files matching the TAG-195 OCX filename set are being written to disk. | T1105 | PeFileWritten, NewExecutableWritten | mscomctl.ocx is a real legacy Microsoft control — path matters | HIGH |
| H5 | Hosts are resolving or connecting to published TAG-195 lure, staging and C2 infrastructure. | T1071.001 | DnsRequest, NetworkConnectIP4 | Sinkholes, security-vendor scanners, threat-intel appliances | HIGH |
| H6 | A user was induced to paste and run a command from the Windows Run dialog (ClickFix), producing an explorer.exe parent for a scripting or download LOLBIN. | T1204.004 | ProcessRollup2 | Power users and IT staff legitimately use Win+R | MEDIUM |
| H7 | An implant is speaking WebSocket C2 outbound on a non-standard HTTP port (3000 observed across all three C2-capable families). | T1071.001, T1571 | NetworkConnectIP4 | Node.js dev servers, Grafana, internal microservices | MEDIUM |
| H8 | A COM-registration host process is fanning out to many internal hosts/ports, consistent with net_enumerate reconnaissance. | T1046, T1018 | NetworkConnectIP4 | Vulnerability scanners, asset-discovery agents, backup software | MEDIUM |
Consolidated IOC Table
Every atomic value below is transcribed from the Insikt Group appendix and is traceable to a saved source snapshot. Domains and IPs are shown defanged.
| Type | Value | Conf | Action | Context | Expiry |
|---|---|---|---|---|---|
| domain | aurekh[.]com | HIGH | prevent | ClickFix lure domain | 2027-01-27 |
| domain | ahdaratlegalservices[.]com | HIGH | prevent | ClickFix lure domain | 2027-01-27 |
| domain | screenly[.]cam | HIGH | prevent | ClickFix lure page shown in Insikt Figure 3; corroborated by three sources | 2027-01-27 |
| domain | paysolutions[.]ink | HIGH | prevent | ClickFix lure domain | 2027-01-27 |
| domain | xtrafftrck[.]net | HIGH | prevent | OCX payload staging and WebSocket C2 | 2027-01-27 |
| domain | thessa[.]trackgrid[.]net | HIGH | prevent | OCX payload staging and WebSocket C2 | 2027-01-27 |
| ipv4 | 70[.]34[.]205[.]43 | HIGH | detect | Shared hosting IP for multiple lure domains — do not block outright | 2027-01-27 |
| ipv4 | 65[.]20[.]102[.]161 | HIGH | detect | OCX staging and WebSocket C2 | 2027-01-27 |
| ipv4 | 65[.]20[.]105[.]177 | MEDIUM | detect | OCX staging and WebSocket C2 (single source) | 2027-01-27 |
| ipv4 | 108[.]61[.]209[.]100 | MEDIUM | detect | OCX staging and WebSocket C2 (single source) | 2027-01-27 |
| sha256 x30 | see §10 quick-copy CSV | HIGH | detect | 4 ChromEggscalator · 10 TinyEgg · 14 ChonkyChicken · 2 Modular ChonkyChicken | 2027-01-27 |
| filename | updater.ocx | HIGH | hunt | TinyEgg filename-gating token | 2026-10-27 |
| filename | mscomctl.ocx | MEDIUM | hunt | ChonkyChicken masquerade — collides with the genuine legacy Microsoft control, so path is the discriminator | 2026-10-27 |
| filename | mscom.ocx | HIGH | hunt | ChromEggscalator staged by ChonkyChicken into %TEMP% | 2026-10-27 |
| filename | chromelevator.ocx | HIGH | hunt | ChromEggscalator gating token | 2026-10-27 |
| filename | koki.ocx / agent.ocx | HIGH | hunt | Modular ChonkyChicken controller | 2026-10-27 |
| filename | wpad_capture.ocx | MEDIUM | hunt | WPAD hash-capture helper — sample never recovered | 2026-10-27 |
| registry | HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WinComCtl | HIGH | detect | Identical persistence across TinyEgg and ChonkyChicken | 2027-01-27 |
| path | %LOCALAPPDATA%\Packages\ | HIGH | hunt | Consistent OCX staging location | 2026-10-27 |
| artifact | %TEMP%\lg.txt | HIGH | hunt | ChonkyChicken gating-failure log — present whether or not execution succeeded | 2026-10-27 |
| artifact | C:\ProgramData\xlog.txt | HIGH | hunt | ChromEggscalator operational log | 2026-10-27 |
| port | 3000 | HIGH | hunt | WebSocket listener across all three C2-capable families | 2026-10-27 |
| uri-path | /ws/agent | HIGH | hunt | Common agent C2 endpoint path | 2026-10-27 |
| port | 9222 | MEDIUM | hunt | Chrome DevTools endpoint used for session hijack (default CDP port) | 2026-10-27 |
| cmdline | --remote-debugging-port · --window-position=-32000,-32000 | HIGH | detect | Off-screen remotely-controllable browser launch | 2027-01-27 |
Affected Surface & Telemetry Matrix
| Surface | Required telemetry | Priority | Gap risk |
|---|---|---|---|
| Windows workstations (all four families are Windows-only OCX/DLL) | Falcon ProcessRollup2 / SyntheticProcessRollup2 | CRITICAL | Low — default sensor coverage |
| Registry autostart (HKCU Run) | AsepValueUpdate, RegGenericValueUpdate | CRITICAL | Low |
| Chromium browsers (Chrome, Edge) — stored credentials and live sessions | ProcessRollup2 CommandLine; loopback NetworkConnectIP4 | HIGH | Medium — loopback connections are not always retained |
| Outbound web egress (payload staging + WebSocket C2) | DnsRequest, NetworkConnectIP4, proxy logs | HIGH | Medium — direct-to-IP egress bypasses DNS-only visibility |
| File writes of staged OCX payloads | PeFileWritten, NewExecutableWritten | HIGH | Medium — an OCX is a PE, but non-PE artifacts (lg.txt, xlog.txt) are not covered |
| Internal east-west (ARP/TCP/SMB recon, lateral movement) | NetworkConnectIP4, UserLogon, remote scheduled tasks | MEDIUM | High — ARP scanning is link-layer and largely invisible to EDR |
| In-memory plugin modules (modular ChonkyChicken) | None reliable — LoadLibraryA on a randomly-named temp file | MEDIUM | High — documented gap G2 |
| Windows Run dialog usage (ClickFix) | ProcessRollup2 parentage; RunMRU registry hive (forensic) | HIGH | Medium — RunMRU requires host triage, not streamed |
ATT&CK Mapping
| Tactic | Technique | Name | Observed behaviour | Query / Control |
|---|---|---|---|---|
| Initial Access | T1189 | Drive-by Compromise | Fake security-verification (ClickFix) pages on attacker lure domains | Q9 · web gateway |
| Execution | T1204.004 | User Execution: Malicious Copy and Paste | Victim pastes an attacker command into the Windows Run dialog | Q5 · N1 · M-Immediate-1 |
| Execution | T1059.003 | Command and Scripting Interpreter: Windows Command Shell | Pasted command spawns cmd/PowerShell to fetch the OCX | Q5 |
| Defense Evasion | T1218.010 | System Binary Proxy Execution: Regsvr32 | All four families packaged as OCX and run by regsvr32.exe | Q1 · IOA-1 · WDAC/AppLocker |
| Defense Evasion | T1027 | Obfuscated Files or Information | TinyEgg XOR (static 32-byte key); ChonkyChicken AES string obfuscation | No direct query — see G1 |
| Defense Evasion | T1497 | Virtualization / Sandbox Evasion | Filename gating: implant exits unless its name is in both the command line and module path | Gap G1 (analysis-side) |
| Persistence | T1547.001 | Registry Run Keys / Startup Folder | HKCU\...\Run\WinComCtl pointing at a staged OCX | Q2 · IOA-2 |
| Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | JSON-over-WebSocket tasking; /ws/agent endpoint path | Q8 · Q10 · N3 |
| Command and Control | T1571 | Non-Standard Port | WebSocket listener on port 3000 across all three C2-capable families | Q8 · M-Near-3 |
| Command and Control | T1090 | Proxy | proxy_request module makes WinHTTP requests via the victim host; WPAD helper | N3 · Q6 |
| Credential Access | T1555.003 | Credentials from Web Browsers | ChromEggscalator bypasses Chrome App-Bound Encryption to extract stored credentials | Q6 · Q7 · M-Near-2 |
| Credential Access | T1528 | Steal Application Access Token | Live authenticated browser session driven over CDP | Q3 · Q4 · Q12 |
| Collection | T1185 | Browser Session Hijacking | cdp_start / cdp_send control an off-screen authenticated browser | Q4 · IOA-3 |
| Collection | T1056.001 | Input Capture: Keylogging | keylog module records keystrokes plus active window titles | Gap G2 |
| Collection | T1115 | Clipboard Data | clipboard module exfiltrates ASCII clipboard text | Gap G2 |
| Collection | T1113 | Screen Capture | screen module streams raw binary frames over the WebSocket | Gap G2 |
| Collection | T1123 | Audio Capture | audio module returns Base64 WAV recordings | Gap G2 |
| Discovery | T1046 | Network Service Discovery | net_port_scan fingerprints SMB, RDP, WinRM, SQL, HTTP/S, SSH | Q11 |
| Discovery | T1018 | Remote System Discovery | net_arp_scan / net_enumerate multi-phase host discovery | Q11 · partial |
| Discovery | T1135 | Network Share Discovery | net_share_enum via NetShareEnum | N4 |
| Discovery | T1087.002 | Account Discovery: Domain Account | domain module: NetUserEnum, NetGroupEnum, DsEnumerateDomainTrustW | N4 |
| Discovery | T1049 | System Network Connections Discovery | remote_logon passively enumerates sessions and generates no auth events | Gap G3 |
| Lateral Movement | T1021 | Remote Services | cred_exec, token_run, remote scheduled task creation | N4 · M-Near-4 |
| Ingress | T1105 | Ingress Tool Transfer | On-demand Base64 module delivery; ChromEggscalator staging | Q6 |
Native Audit-Log Hunts (non-CQL)
These close gaps the Falcon event stream does not cover — chiefly the non-PE forensic artifacts and the ClickFix paste evidence.
N1 · RunMRU — direct evidence a user pasted a ClickFix command
The Run dialog records everything typed or pasted into it. This is the single best confirmation that a ClickFix lure worked on a specific user, and it survives the process exiting.
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"
# Sweep a collected hive set for the tell-tale strings (PowerShell, read-only):
Get-ChildItem 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' |
Select-Object -ExpandProperty Property |
ForEach-Object { (Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU').$_ } |
Where-Object { $_ -match 'regsvr32|\.ocx|curl |certutil|mshta|powershell' }
N2 · Forensic log artifacts left by the implants themselves
Both files are written even when execution-gating fails, so they prove an attempt regardless of outcome. Neither is a PE, so Falcon's PE-write events will not surface them.
# ChonkyChicken gating-failure log Test-Path (Join-Path $env:TEMP 'lg.txt') # ChromEggscalator operational log Test-Path 'C:\ProgramData\xlog.txt' # Staged OCX payloads under the consistent staging root Get-ChildItem "$env:LOCALAPPDATA\Packages" -Recurse -Filter *.ocx -ErrorAction SilentlyContinue | Select-Object FullName, Length, CreationTime # ChromEggscalator credential-extraction output directory Get-ChildItem (Join-Path $env:TEMP 'output') -ErrorAction SilentlyContinue
N3 · Proxy / network-inspection hunts
- Search proxy logs for HTTP
Upgrade: websocketrequests whose URI path ends/ws/agent, on any port. - Search for outbound TCP/3000 to external addresses. Insikt observed this port across TinyEgg, ChonkyChicken and Modular ChonkyChicken.
- Search for direct-to-IP HTTP/HTTPS (no Host header resolution) — the staging IPs were reachable without domain lookup.
- Look for the
proxy_requestmodule's outbound requests: WinHTTP traffic presenting a bareMozilla/5.0User-Agent from a workstation process that is not a browser. - WebSocket payloads are XOR-masked per RFC 6455, so content signatures will not work without frame decoding. Detect on metadata: port, path, Upgrade header, and long-lived connections.
N4 · Windows Security / Directory audit
- Event ID 4698 (scheduled task created) on remote hosts, correlated to a workstation source — ChonkyChicken retains remote scheduled-task strings for lateral movement.
- Event ID 5140 / 5145 (network share accessed) bursts from a single workstation, matching
net_share_enum. - Event ID 4624 Type 3 / Type 9 from workstation-to-workstation, matching
cred_execandtoken_run. - Note that
remote_logondeliberately enumerates sessions without submitting credentials, so it produces no 4625/4624 at all. Do not treat a quiet auth log as evidence of absence.
CrowdStrike LogScale CQL Hunt Queries
Time windows are set in the Falcon console, not in-query. Start with 7 days for the behavioural queries (Q1–Q6, Q11–Q12) and 30 days for the atomic-indicator queries (Q7, Q9, Q10).
Looks for: the single execution behaviour shared by TinyEgg, ChonkyChicken, Modular ChonkyChicken and ChromEggscalator. Deploy this first — it is durable against hash and infrastructure rotation.
// HUNT: regsvr32 loading an OCX from a user-writable directory (TAG-195 execution standard) // MITRE: T1218.010 | CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 (Windows process telemetry) // FALSE POSITIVES: in-house or vendor installers registering an OCX control from %TEMP% during setup // TUNING: exclude your software-deployment agents by ParentBaseFileName (ccmexec.exe, msiexec.exe, setup.exe) #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^regsvr32\.exe$/i | CommandLine=/\.ocx/i | CommandLine=/\\(AppData\\Local|AppData\\Roaming|Temp|Downloads|ProgramData|Packages)\\/i | ParentBaseFileName!=/^(ccmexec\.exe|msiexec\.exe|setup\.exe)$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData])
Looks for: the identical persistence model used by both TinyEgg and ChonkyChicken. The named value WinComCtl is effectively zero-FP; the generic OCX-in-Run-key arm is the future-proof half.
// HUNT: HKCU Run key named WinComCtl, or any Run value pointing at an OCX // MITRE: T1547.001 | CONF: high FP: low COST: low // REQUIRES: AsepValueUpdate / RegGenericValueUpdate registry telemetry // FALSE POSITIVES: legacy line-of-business apps that autostart a genuine OCX control // TUNING: the WinComCtl arm needs no tuning; for the generic OCX arm, allowlist known-good RegStringValue paths under Program Files #event_simpleName=/^(AsepValueUpdate|RegGenericValueUpdate)$/ | RegObjectName=/\\Software\\Microsoft\\Windows\\CurrentVersion\\Run$/i | RegValueName=/^WinComCtl$/i or RegStringValue=/\.ocx/i | RegStringValue!=/^"?C:\\Program Files/i | table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue])
Looks for: any Chrome/Edge/Brave process started with a CDP listener. FP: genuine developer and QA automation (Selenium, Playwright, Puppeteer) does this constantly — exclude by user, host group or the parent automation binary rather than by dropping the query.
// HUNT: Chromium browser launched with --remote-debugging-port (CDP listener) // MITRE: T1185, T1528 | CONF: high FP: medium COST: low // REQUIRES: ProcessRollup2 with CommandLine capture // FALSE POSITIVES: Selenium / Playwright / Puppeteer test rigs and developer workstations // TUNING: exclude developer and QA host groups, and exclude ParentBaseFileName of your test runners (node.exe, chromedriver.exe, pwsh.exe on build agents) #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^(chrome\.exe|msedge\.exe|brave\.exe)$/i | CommandLine=/--remote-debugging-(port|pipe)/i | ParentBaseFileName!=/^(node\.exe|chromedriver\.exe|msedgedriver\.exe)$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
Looks for: ChonkyChicken's cdp_start signature — a debuggable browser deliberately positioned off the visible desktop with large negative window coordinates. Legitimate automation has no reason to hide the window this way, which is what makes this the high-fidelity twin of Q3.
// HUNT: browser launched off-screen AND with remote debugging (ChonkyChicken cdp_start) // MITRE: T1185, T1528 | CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 with CommandLine capture // FALSE POSITIVES: none observed -- the off-screen flag is the discriminator #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^(chrome\.exe|msedge\.exe|brave\.exe)$/i | CommandLine=/--window-position=-\d{4,6}/i | CommandLine=/--(remote-debugging-port|remote-debugging-pipe|user-data-dir)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
Looks for: the ClickFix hallmark — explorer.exe as the parent of a scripting or download utility, which is what the Windows Run dialog produces. FP: IT staff and power users legitimately use Win+R; the command-line content filter is what separates signal from habit. Note this is generic ClickFix technique coverage, not a TAG-195-specific indicator.
// HUNT: ClickFix -- explorer.exe parenting a download/script LOLBIN with remote-content arguments // MITRE: T1204.004, T1059.003 | CONF: medium FP: medium COST: medium // REQUIRES: ProcessRollup2 with CommandLine and ParentBaseFileName // FALSE POSITIVES: helpdesk and power users running admin one-liners from Win+R // TUNING: exclude your IT-admin user group and jump hosts; then baseline the remaining CommandLine values weekly and allowlist recurring internal URLs #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | ParentBaseFileName=/^explorer\.exe$/i | FileName=/^(cmd\.exe|powershell\.exe|pwsh\.exe|mshta\.exe|wscript\.exe|cscript\.exe|curl\.exe|certutil\.exe|regsvr32\.exe|bitsadmin\.exe)$/i | CommandLine=/(http|\.ocx|iwr |invoke-webrequest|-urlcache|-encodedcommand|-w hidden|downloadstring)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
Looks for: the named OCX payloads being staged. mscomctl.ocx is also a genuine legacy Microsoft control, so the query anchors on user-writable paths rather than the name alone.
// HUNT: TinyEgg / ChonkyChicken / ChromEggscalator / modular-controller OCX staged to disk // MITRE: T1105 | CONF: high FP: low COST: low // REQUIRES: PeFileWritten / NewExecutableWritten file telemetry // FALSE POSITIVES: genuine mscomctl.ocx shipped by legacy VB6-era installers -- excluded by the path filter below // TUNING: if a legacy LOB installer trips this, allowlist its exact TargetFileName rather than removing the filename arm #event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/ | TargetFileName=/\\(updater|mscomctl|mscom|chromelevator|koki|agent|wpad_capture)\.ocx$/i | TargetFileName=/\\(AppData|Temp|Downloads|ProgramData|Packages)\\/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, TargetFileName, SHA256HashData])
Looks for: all 30 published sample hashes across the four families. Any hit is a confirmed incident, not a hunt lead. Perishable — TAG-195 is in active development and will recompile.
// HUNT: known TAG-195 sample hashes (Insikt Group appendix, 2026-07-24) // MITRE: T1218.010, T1105 | CONF: high FP: low COST: low // REQUIRES: process or PE-write telemetry carrying SHA256HashData // FALSE POSITIVES: none -- any match is confirmed TAG-195 tooling #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten)$/ | in(SHA256HashData, values=[ "b7b322f4638ead5c39031ffc7ca8c791c8d47211b09449f7ceb49f0c32a19b45", "33a12c2328db22429c4a515400a57ffeaf7aec48a2a3c299ab6f1ce2d2b0e87d", "7ee371ff1a13a3bbd26c925a9beedb1aa0d0c03fe6f63d3803a3a55aaccd0a5b", "6922b319dc96d020738bcf466c4d6d9233e4767b68592e1fd9258a232f166ce1", "086273cd91f3d6556ed2af915df310e4b184b3db84c3903aa09830d49d1fbb62", "652346c05123b4c9556c27f5c5efc4bcd941dd66957e3797c6751246a2bff9c6", "f3f4de7eb30c01044ad3c7f2c22376d0ab6f6dc60ef6aee3cde75fd33fbddacc", "6c23b7723a9f69ea48f02c8fe13fd60ecbfc2fb28e32e481c46ec968a66c66cd", "c455c02ca6b3844027e05d941830de97753c3966dd57c5fa9f1938d8cd1cca3b", "d2e1ab10d5a0c16a724aeda8acb46b38f551ade58137969c3bc3c9cdc0a12425", "3250adbca0a0bfeab8bd88ee93b603be31fc86b341fd77a152b4843416560d53", "5cae5202ddcc29f19f954d81ba138f11b8a4080d05fef63c05a00b9242c06967", "ccb6be9211b3946d290e8b23497b8f0e6ac045d1dcde4aaae424680e9029e4eb", "200fbc76bd9fab3b4adcecfe44233cf47146f5709a9735a0232cb4aa7284eadb", "5d585f2b24503a96011bbe928f42b1b663946e822b309f8496573c66b5ee834c", "9a2d714ddd5c48722c35df8a70e97f12d46bcde05dc79b7242a7e692bd346826", "d5dea9a51b984be9d7fa76e3e8ff89cfb97c335927331e8e348b9ee269070c1b", "c4e2af286ee2ed12375bb66a5bff1a9d3bb5a6579842bc3a28ac00dfae195adc", "a3a0aced0f3c13b0b9890ec74802a1cb4936bccfaf5e8a6a52f555c82e09d92f", "f3d2ad7440a6f985846710d2dcf0dd2db268dc690837bdf19e4e4e6684483527", "6c7619c34497f430c4f7618cfefe07d1defacfae48f6730c20f52e7a7344faa9", "41aa04782e436345ef45dc159321d5c0e0e5cba300e55a4d1d3194e5c7c5fd97", "337e92c233edc38842c6122fa38e0e84a478f5aa5af2a95ca6be3ca056d925b8", "c4e55e9e6837de01f0dadc7db299abd48630bf115a442f09ea0c6a593c559e6f", "6adf68448b8541e3cbe4a471845cb6c2ac07613f08698567e5ed76dc2a921834", "be7b80f42b0d859b7afaeefca04e46dc10fb5c0a532692bbbfef2924254d1175", "45c8cbaeb5c7708e7b8030e701747c65203958e82eddc41f39e0ca93bd36c114", "e481d16e51f90c4cc0e7096284b53eef06f7ee8b37a03d92734521d8bca24409", "e3153ced59bb0376186b0eee0ec68f0b5aa9ae5820ef8508ae4e67625e1a3581", "16735cb80d796865b2430aa11d21a539fcb00b027932f2c63e4b5c098d26585b"]) | table([@timestamp, ComputerName, UserName, FileName, CommandLine, SHA256HashData])
Looks for: the WebSocket listener port Insikt observed across all three C2-capable families. FP: port 3000 is the Node.js/Grafana default, so internal destinations are noise — the query keeps only externally-routed connections and prioritises COM-host initiators.
// HUNT: workstation egress to TCP/3000 (TAG-195 WebSocket C2 listener port) // MITRE: T1071.001, T1571 | CONF: medium FP: medium COST: low // REQUIRES: NetworkConnectIP4 telemetry // FALSE POSITIVES: Node.js dev servers, Grafana, internal microservices on the default 3000 port // TUNING: this query already drops RFC1918 destinations; additionally exclude your developer host group and any SaaS vendor ranges you legitimately reach on 3000 #event_simpleName=/^NetworkConnectIP4$/ | RemotePort=3000 | RemoteAddressIP4!=/^(10\.|127\.|169\.254\.|192\.168\.|172\.(1[6-9]|2\d|3[01])\.)/ | table([@timestamp, ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort])
Looks for: the four ClickFix lure domains plus the two payload-staging / C2 domains. A hit on a lure domain means a user reached the social-engineering page; a hit on a staging domain means the payload chain progressed.
// HUNT: TAG-195 / TAG-127 lure and C2 domain resolution // MITRE: T1189, T1071.001 | CONF: high FP: low COST: low // REQUIRES: DnsRequest telemetry // FALSE POSITIVES: internal threat-intel scanners and sandbox detonation hosts resolving IOCs on purpose #event_simpleName=/^(DnsRequest|SuspiciousDnsRequest)$/ | DomainName=/(^|\.)(aurekh\.com|ahdaratlegalservices\.com|screenly\.cam|paysolutions\.ink|xtrafftrck\.net|trackgrid\.net)$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName])
Looks for: direct-to-IP contact with published infrastructure, which catches the chain even when DNS visibility is missing. Treat 70.34.205.43 hits with care — Insikt describes it as shared hosting, so validate the destination domain before acting.
// HUNT: outbound connections to published TAG-195 staging / C2 addresses // MITRE: T1071.001 | CONF: high FP: low COST: low // REQUIRES: NetworkConnectIP4 telemetry // FALSE POSITIVES: 70.34.205.43 is SHARED hosting -- a hit is not proof of TAG-195 contact on its own #event_simpleName=/^NetworkConnectIP4$/ | in(RemoteAddressIP4, values=["70.34.205.43", "65.20.102.161", "65.20.105.177", "108.61.209.100"]) | table([@timestamp, ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort])
Looks for: ChonkyChicken's net_port_scan / net_enumerate reconnaissance, seen as a COM registration host touching an implausible number of internal hosts. FP: vulnerability scanners, asset-discovery and backup agents produce the same shape — but they should not be running inside regsvr32.exe.
// HUNT: regsvr32/rundll32 making wide internal connection fan-out (network reconnaissance) // MITRE: T1046, T1018 | CONF: medium FP: medium COST: medium // REQUIRES: NetworkConnectIP4 telemetry with ContextBaseFileName populated // FALSE POSITIVES: scanners and asset-discovery agents that inject into or masquerade as COM hosts // TUNING: exclude the aid values of your authorised vulnerability scanners and asset-discovery servers, then raise the DistinctHosts floor until only outliers remain #event_simpleName=/^NetworkConnectIP4$/ | ContextBaseFileName=/^(regsvr32\.exe|rundll32\.exe)$/i | groupBy([aid, ComputerName, ContextBaseFileName], function=[count(field=RemoteAddressIP4, distinct=true, as=DistinctHosts), count(field=RemotePort, distinct=true, as=DistinctPorts)]) | DistinctHosts > 25 | sort(DistinctHosts, order=desc, limit=100)
Looks for: the other half of the CDP hijack — something attaching to the browser's debug port rather than the browser opening it. FP: developer tooling attaches to 9222 legitimately; the value here is the initiating process name, so triage on ContextBaseFileName first. Loopback connection retention is tenant-dependent, so confirm this event class is present before relying on it.
// HUNT: local CDP endpoint (9222) contacted by a process that is not a browser // MITRE: T1185, T1528 | CONF: medium FP: medium COST: low // REQUIRES: NetworkConnectIP4 including loopback -- verify loopback retention in tenant // FALSE POSITIVES: chromedriver, node, VS Code and other developer tooling attaching to a debug port // TUNING: exclude ContextBaseFileName of your sanctioned dev tooling (node.exe, chromedriver.exe, code.exe) and your developer host group #event_simpleName=/^NetworkConnectIP4$/ | RemotePort=9222 | ContextBaseFileName!=/^(chrome\.exe|msedge\.exe|brave\.exe|node\.exe|chromedriver\.exe|msedgedriver\.exe|code\.exe)$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort])
CrowdStrike Custom IOA Recommendations
Three queries are strong enough to promote from Investigate-only to a blocking Custom IOA. The rest stay as scheduled hunt searches.
IOA-1 · Block regsvr32 registering an OCX from a user-writable path
| Field | Value |
|---|---|
| Rule group | Windows — Process Creation |
| Action | Start in Detect for 7–14 days, then promote to Prevent once the baseline is clean |
| Severity | High |
| Image filename pattern | .*\\regsvr32\.exe |
| Command line pattern | .*\\(AppData|Temp|Downloads|ProgramData|Packages)\\.*\.ocx.* |
| Exclusions | Software-deployment parents (ccmexec.exe, msiexec.exe) and any packaging server host group |
| Covers | All four families, both current and future builds — this is the durable control |
IOA-2 · Alert on WinComCtl Run-key creation
| Field | Value |
|---|---|
| Rule group | Windows — Registry Operation (ASEP) |
| Action | Detect (the value name is specific enough that Prevent is defensible after one clean week) |
| Severity | Critical |
| Registry key pattern | .*\\CurrentVersion\\Run |
| Value name pattern | WinComCtl |
| Exclusions | None expected. Investigate any hit as a live intrusion. |
| Covers | TinyEgg and ChonkyChicken persistence identically |
IOA-3 · Alert on off-screen debuggable browser launch
| Field | Value |
|---|---|
| Rule group | Windows — Process Creation |
| Action | Detect |
| Severity | High |
| Image filename pattern | .*\\(chrome|msedge|brave)\.exe |
| Command line pattern | .*--window-position=-\d{4,6}.*--remote-debugging.* |
| Exclusions | Developer and QA host groups only if a hit is confirmed benign |
| Covers | ChonkyChicken cdp_start browser session hijack |
Investigate-only (do not promote): Q5, Q8, Q11 and Q12 carry medium FP risk and are environment-sensitive. Run them as scheduled searches with the tuning applied, review for two weeks, and only then consider promotion. Q7/Q9/Q10 belong in Falcon IOC Management rather than a Custom IOA.
Machine-Readable IOC Appendix
Every atomic value below is traceable to a saved source snapshot. Behavioural signatures are deliberately kept separate from importable indicators.
type,value,action,severity,expiration,description,tags domain,aurekh.com,prevent,high,2027-01-27,TAG-195 ClickFix lure domain,campaign:TAG-195 domain,ahdaratlegalservices.com,prevent,high,2027-01-27,TAG-195 ClickFix lure domain,campaign:TAG-195 domain,screenly.cam,prevent,high,2027-01-27,TAG-195 ClickFix lure domain,campaign:TAG-195 domain,paysolutions.ink,prevent,high,2027-01-27,TAG-195 ClickFix lure domain,campaign:TAG-195 domain,xtrafftrck.net,prevent,high,2027-01-27,TAG-195 OCX staging and WebSocket C2,campaign:TAG-195 domain,thessa.trackgrid.net,prevent,high,2027-01-27,TAG-195 OCX staging and WebSocket C2,campaign:TAG-195 ipv4,70.34.205.43,detect,high,2027-01-27,SHARED hosting IP for lure domains - do not block,campaign:TAG-195 ipv4,65.20.102.161,detect,high,2027-01-27,TAG-195 OCX staging and WebSocket C2,campaign:TAG-195 ipv4,65.20.105.177,detect,high,2027-01-27,TAG-195 OCX staging and WebSocket C2,campaign:TAG-195 ipv4,108.61.209.100,detect,high,2027-01-27,TAG-195 OCX staging and WebSocket C2,campaign:TAG-195 sha256,b7b322f4638ead5c39031ffc7ca8c791c8d47211b09449f7ceb49f0c32a19b45,detect,high,2027-01-27,ChromEggscalator,campaign:TAG-195 sha256,33a12c2328db22429c4a515400a57ffeaf7aec48a2a3c299ab6f1ce2d2b0e87d,detect,high,2027-01-27,ChromEggscalator,campaign:TAG-195 sha256,7ee371ff1a13a3bbd26c925a9beedb1aa0d0c03fe6f63d3803a3a55aaccd0a5b,detect,high,2027-01-27,ChromEggscalator,campaign:TAG-195 sha256,6922b319dc96d020738bcf466c4d6d9233e4767b68592e1fd9258a232f166ce1,detect,high,2027-01-27,ChromEggscalator,campaign:TAG-195 sha256,086273cd91f3d6556ed2af915df310e4b184b3db84c3903aa09830d49d1fbb62,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,652346c05123b4c9556c27f5c5efc4bcd941dd66957e3797c6751246a2bff9c6,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,f3f4de7eb30c01044ad3c7f2c22376d0ab6f6dc60ef6aee3cde75fd33fbddacc,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,6c23b7723a9f69ea48f02c8fe13fd60ecbfc2fb28e32e481c46ec968a66c66cd,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,c455c02ca6b3844027e05d941830de97753c3966dd57c5fa9f1938d8cd1cca3b,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,d2e1ab10d5a0c16a724aeda8acb46b38f551ade58137969c3bc3c9cdc0a12425,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,3250adbca0a0bfeab8bd88ee93b603be31fc86b341fd77a152b4843416560d53,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,5cae5202ddcc29f19f954d81ba138f11b8a4080d05fef63c05a00b9242c06967,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,ccb6be9211b3946d290e8b23497b8f0e6ac045d1dcde4aaae424680e9029e4eb,detect,high,2027-01-27,TinyEgg,campaign:TAG-195 sha256,200fbc76bd9fab3b4adcecfe44233cf47146f5709a9735a0232cb4aa7284eadb,detect,high,2027-01-27,ChonkyChicken (Insikt Sigma reference sample),campaign:TAG-195 sha256,5d585f2b24503a96011bbe928f42b1b663946e822b309f8496573c66b5ee834c,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,9a2d714ddd5c48722c35df8a70e97f12d46bcde05dc79b7242a7e692bd346826,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,d5dea9a51b984be9d7fa76e3e8ff89cfb97c335927331e8e348b9ee269070c1b,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,c4e2af286ee2ed12375bb66a5bff1a9d3bb5a6579842bc3a28ac00dfae195adc,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,a3a0aced0f3c13b0b9890ec74802a1cb4936bccfaf5e8a6a52f555c82e09d92f,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,f3d2ad7440a6f985846710d2dcf0dd2db268dc690837bdf19e4e4e6684483527,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,6c7619c34497f430c4f7618cfefe07d1defacfae48f6730c20f52e7a7344faa9,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,41aa04782e436345ef45dc159321d5c0e0e5cba300e55a4d1d3194e5c7c5fd97,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,337e92c233edc38842c6122fa38e0e84a478f5aa5af2a95ca6be3ca056d925b8,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,c4e55e9e6837de01f0dadc7db299abd48630bf115a442f09ea0c6a593c559e6f,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,6adf68448b8541e3cbe4a471845cb6c2ac07613f08698567e5ed76dc2a921834,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,be7b80f42b0d859b7afaeefca04e46dc10fb5c0a532692bbbfef2924254d1175,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,45c8cbaeb5c7708e7b8030e701747c65203958e82eddc41f39e0ca93bd36c114,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,e481d16e51f90c4cc0e7096284b53eef06f7ee8b37a03d92734521d8bca24409,detect,high,2027-01-27,ChonkyChicken,campaign:TAG-195 sha256,e3153ced59bb0376186b0eee0ec68f0b5aa9ae5820ef8508ae4e67625e1a3581,detect,high,2027-01-27,Modular ChonkyChicken controller,campaign:TAG-195 sha256,16735cb80d796865b2430aa11d21a539fcb00b027932f2c63e4b5c098d26585b,detect,high,2027-01-27,Modular ChonkyChicken controller,campaign:TAG-195 # Hashes ship as detect/high rather than prevent/critical: all 30 come from one # vendor appendix, and house rule requires two independent sources for prevent. # Domains carry two sources and therefore ship at prevent.
TAG-195 behavioural signatures (no atomic value required)
BEH-1 regsvr32.exe command line contains ".ocx" AND a user-writable path
(%TEMP% | %APPDATA% | %LOCALAPPDATA% | %LOCALAPPDATA%\Packages\ | Downloads | %ProgramData%)
BEH-2 HKCU\Software\Microsoft\Windows\CurrentVersion\Run value named "WinComCtl"
BEH-3 HKCU ...\CurrentVersion\Run value data referencing any .ocx outside Program Files
BEH-4 chrome.exe|msedge.exe launched with --remote-debugging-port
AND --window-position=-32000,-32000 (off-screen CDP session)
BEH-5 explorer.exe parenting cmd|powershell|mshta|curl|certutil|regsvr32
with remote-content arguments (ClickFix Run-dialog paste)
BEH-6 Outbound TCP/3000 to a non-RFC1918 address from a workstation
BEH-7 HTTP Upgrade: websocket with URI path ending /ws/agent (any port)
BEH-8 Non-browser process connecting to 127.0.0.1:9222
BEH-9 File present: %TEMP%\lg.txt (ChonkyChicken gating log)
BEH-10 File present: C:\ProgramData\xlog.txt (ChromEggscalator log)
BEH-11 Directory present: %TEMP%\output\ (ChromEggscalator extraction output)
BEH-12 WinHTTP request with a bare "Mozilla/5.0" User-Agent from a non-browser process
BEH-13 regsvr32.exe or rundll32.exe opening connections to many distinct internal hosts
Families TinyEgg | ChonkyChicken | Modular ChonkyChicken | ChromEggscalator
Predecessors More_eggs | RevC2 | TerraStealerV2 | TerraLogger | VenomLNK
Actors TAG-195 (Golden Chickens / Venom Spider) = developer
TAG-127 = operator/customer using ClickFix and VenomLNK
Customers FIN6 | Cobalt Group | Evilnum (per prior eSentire reporting)
OCX filenames updater.ocx TinyEgg gating token
mscomctl.ocx ChonkyChicken masquerade (collides with a real MS control)
mscom.ocx ChromEggscalator staged into %TEMP%
chromelevator.ocx ChromEggscalator gating token
koki.ocx Modular ChonkyChicken controller
agent.ocx Modular ChonkyChicken controller (alt)
wpad_capture.ocx WPAD hash-capture helper (never recovered)
Staging path %LOCALAPPDATA%\Packages\
Run key HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WinComCtl
Persistence cmd regsvr32 /s /i "<staged_path>"
Exports used DllInstall (TinyEgg, ChonkyChicken, modular controller)
DllRegisterServer (ChromEggscalator, WPAD helper)
Debug strings Koki=[YES/NO] Blat=[YES/NO] (gating result markers)
C2 protocol JSON over WebSocket; register = request_register / agent_register
agentType "tiny" = TinyEgg
Modules (14) procmgr screen files shell network domain clipboard keylog
wtrack audio idle proxy chrome persist
(wtrack purpose is undetermined -- capability under development)
# 1. Is regsvr32 already blocked from user-writable paths? (WDAC/AppLocker) Get-AppLockerPolicy -Effective -Xml | Select-String -Pattern 'regsvr32|\.ocx' # 2. ASR rule: block Office/script-created executable content # (BlockExecutableContent) - report current state Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions # 3. Is the Run dialog restricted for standard users? reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoRun # 4. Is browser password saving disabled by policy? reg query "HKLM\Software\Policies\Google\Chrome" /v PasswordManagerEnabled reg query "HKLM\Software\Policies\Microsoft\Edge" /v PasswordManagerEnabled # 5. Is remote debugging blocked by browser policy? reg query "HKLM\Software\Policies\Google\Chrome" /v RemoteDebuggingAllowed reg query "HKLM\Software\Policies\Microsoft\Edge" /v RemoteDebuggingAllowed # 6. PowerShell language mode for standard users $ExecutionContext.SessionState.LanguageMode # 7. Is outbound TCP/3000 permitted from workstation VLANs? # (check at the egress firewall, not on the host)
Detection Validation Gates
| Gate | Check | Pass criterion |
|---|---|---|
| G-1 Telemetry ready | Confirm ProcessRollup2, AsepValueUpdate, RegGenericValueUpdate, PeFileWritten, NetworkConnectIP4 and DnsRequest are all present for the target host group over the last 24h. | All six event types return rows. If AsepValueUpdate is empty, Q2 is blind and must be treated as unimplemented. |
| G-2 Loopback retention | Q12 depends on loopback NetworkConnectIP4 events, which some tenants do not retain. | Query RemoteAddressIP4=127.0.0.1 over 24h and confirm rows exist. If not, mark Q12 as a gap rather than as coverage. |
| G-3 Benign baseline | Run Q1, Q3, Q5, Q8, Q11, Q12 over 30 days before alerting and record every distinct hit. | Each recurring hit is either explained and excluded, or investigated. Zero unexplained residue before promotion. |
| G-4 Positive test — execution | Copy a benign signed OCX (for example a genuine mscomctl.ocx) to %TEMP% on a lab host and register it with regsvr32 /s. | Q1 returns the event. This is the Insikt-recommended purple-team step and involves no malicious code. |
| G-5 Positive test — persistence | On the same lab host, create HKCU\...\Run\WinComCtl pointing at that benign OCX, then delete it. | Q2 returns the event within the expected latency. |
| G-6 Positive test — CDP | Launch Edge on a lab host with --remote-debugging-port=9222 --window-position=-32000,-32000. | Q3 and Q4 both return the event; Q4 returns strictly fewer rows than Q3 across the estate. |
| G-7 Positive test — egress | From a lab host, open a TCP connection to an external listener on port 3000. | Q8 returns the event and the RFC1918 exclusion did not suppress it. |
| G-8 Promotion | IOA-1 and IOA-2 run in Detect mode for a full business cycle including patch week and month-end. | Zero false positives across the window before switching IOA-1 to Prevent. |
Hardening — Tiered
M-Immediate-1 · Block regsvr32.exe from loading DLL/OCX out of user-writable directories. This one control breaks the execution path of all four families at once. Authority: MITRE M1038 (Execution Prevention) and M1042 (Disable or Remove Feature); CIS Microsoft Windows Benchmark application-control section; Microsoft WDAC recommended block rules. Cover %TEMP%, %APPDATA%, %LOCALAPPDATA%, %LOCALAPPDATA%\Packages\, Downloads, %ProgramData% and browser cache paths. See Playbook 1.
M-Immediate-2 · Import the §10 IOC CSV into Falcon IOC Management. Domains at prevent, IPs and hashes at detect. Authority: MITRE M1031 (Network Intrusion Prevention). Ten minutes of work, and it closes the currently-published infrastructure immediately.
M-Immediate-3 · Block outbound TCP/3000 from workstation VLANs at the egress firewall. Insikt observed port 3000 as the WebSocket listener across all three C2-capable families. Authority: MITRE M1037 (Filter Network Traffic); NIST SP 800-41 egress-filtering guidance. Exempt only named business applications, by destination, not by allowing the port wholesale.
M-Immediate-4 · Disable browser password storage by policy and block remote debugging. PasswordManagerEnabled=0 and RemoteDebuggingAllowed=0 for Chrome and Edge removes the prize ChromEggscalator exists to take, and disables the CDP hijack primitive. Authority: MITRE M1027 (Password Policies) and M1042; CIS Google Chrome and CIS Microsoft Edge Benchmarks. See Playbook 2.
M-Near-1 · Restrict the Windows Run dialog for standard users (NoRun). ClickFix depends on the victim having somewhere to paste. Recorded Future recommends this explicitly. Authority: MITRE M1038; Microsoft Security Baseline Explorer policies. Pilot carefully — some helpdesk workflows depend on Win+R, so this is a near-term control rather than an immediate one. See Playbook 3.
M-Near-2 · Enforce PowerShell Constrained Language Mode for standard users and block unsigned scripts. Limits what a pasted ClickFix command can achieve even when it runs. Authority: MITRE M1038, M1045 (Code Signing); Microsoft PowerShell security baseline. Requires an application-control policy to be meaningful — CLM is enforced by WDAC/AppLocker, not by a standalone setting.
M-Near-3 · Route all workstation web traffic through an authenticated proxy and deny direct-to-IP HTTP/S. Insikt's staging IPs were reachable without DNS, so DNS-only blocking is insufficient. Authority: MITRE M1037; NIST SP 800-41.
M-Near-4 · Restrict workstation-to-workstation SMB, RDP, WinRM and remote scheduled-task creation. This is what removes the value of ChonkyChicken's entire reconnaissance and lateral-movement suite. Authority: MITRE M1030 (Network Segmentation), M1035 (Limit Access to Resource Over Network); CIS Benchmark host-firewall section.
M-Near-5 · Deploy Windows LAPS and rotate local administrator credentials. Reduces the value of anything harvested by browser theft or keylogging. Authority: MITRE M1026 (Privileged Account Management), M1027; Microsoft Security Baseline.
M-Strat-1 · Enforce FIDO2 / phishing-resistant MFA on all high-value applications. The only control that meaningfully survives both ABE bypass and a live CDP session, because it binds authentication to hardware the operator does not have. Authority: MITRE M1032 (Multi-factor Authentication); NIST SP 800-63B AAL3; CISA phishing-resistant MFA guidance.
M-Strat-2 · Remove local administrator rights from standard users. Authority: MITRE M1026; CIS Controls v8 safeguard 5.4. Long-running because of application compatibility work, but it degrades every post-exploitation capability in this pack.
M-Strat-3 · Full WDAC application-control rollout in enforcement mode. The generalisation of M-Immediate-1: an allowlist makes the entire "legitimate binary proxies an attacker payload" class unavailable. Authority: MITRE M1038; Microsoft WDAC deployment guidance; DISA Windows STIG application-whitelisting requirements.
M-Strat-4 · Privileged access workstations for all administrative activity, and no BYOD into privileged or developer workflows. Authority: MITRE M1026; Microsoft privileged-access strategy. note This also shrinks the legitimate population that trips Q3 and Q12, which makes those two queries materially quieter.
M-Strat-5 · Add WebSocket frame decoding to network inspection where legally and technically permissible. RFC 6455 masking defeats content signatures outright, so without decoding, WebSocket C2 inspection is metadata-only. Authority: MITRE M1031. ⚠ best-practice, no formal benchmark
Deployable Playbooks
Playbook 1 — AppLocker DLL rule blocking OCX/DLL execution from user-writable paths
Prerequisites: AppLocker requires the Application Identity service (AppIDSvc) running and set to automatic. Windows Enterprise/Education, or Windows Pro with WDAC instead. An existing AppLocker DLL rule collection, or acceptance that creating one enables DLL rule enforcement estate-wide. Test in Audit mode on a pilot ring first — DLL rules are the highest-compatibility-risk AppLocker collection.
Reboot required: No. A Group Policy refresh (gpupdate /force) plus a user logoff/logon is sufficient.
Rollback: Delete the DLL rule collection from the GPO and run gpupdate /force, or set -RuleType DLL enforcement back to NotConfigured. Local fallback is shown in step 5. No file or registry state is left behind.
# --- Step 1: confirm the Application Identity service is running -------------
Get-Service AppIDSvc | Select-Object Name, Status, StartType
Set-Service AppIDSvc -StartupType Automatic
Start-Service AppIDSvc
# --- Step 2: start in AUDIT mode. Do not skip this. -------------------------
Set-AppLockerPolicy -XmlPolicy .\tag195-dll-audit.xml -Merge
# tag195-dll-audit.xml -- DLL collection, AuditOnly:
# <RuleCollection Type="Dll" EnforcementMode="AuditOnly">
# <FilePathRule Id="..." Name="Allow DLL/OCX from Program Files"
# UserOrGroupSid="S-1-1-0" Action="Allow">
# <Conditions><FilePathCondition Path="%PROGRAMFILES%\*"/></Conditions>
# </FilePathRule>
# <FilePathRule Id="..." Name="Allow DLL/OCX from Windows"
# UserOrGroupSid="S-1-1-0" Action="Allow">
# <Conditions><FilePathCondition Path="%WINDIR%\*"/></Conditions>
# </FilePathRule>
# </RuleCollection>
# Everything outside those two roots is implicitly denied, which covers
# %TEMP%, %APPDATA%, %LOCALAPPDATA%\Packages\, Downloads and %ProgramData%.
# --- Step 3: harvest audit events for 7-14 days -----------------------------
Get-WinEvent -LogName 'Microsoft-Windows-AppLocker/EXE and DLL' -MaxEvents 2000 |
Where-Object { $_.Id -eq 8003 } |
Select-Object TimeCreated, Message | Format-List
# --- Step 4: promote to Enforce only after the audit log is clean -----------
# Change EnforcementMode="AuditOnly" to EnforcementMode="Enabled", re-import:
Set-AppLockerPolicy -XmlPolicy .\tag195-dll-enforce.xml -Merge
# --- Step 5: ROLLBACK (local) -----------------------------------------------
# Clears the local AppLocker policy entirely and returns to no DLL enforcement.
Set-AppLockerPolicy -XmlPolicy .\empty-policy.xml
gpupdate /force
# Domain rollback: remove the DLL RuleCollection from the GPO, then gpupdate.
# --- Step 6: verify ---------------------------------------------------------
Get-AppLockerPolicy -Effective -Xml | Select-String -Pattern 'Dll|EnforcementMode'
Playbook 2 — Browser policy: kill password storage and remote debugging
Prerequisites: Chrome and/or Edge ADMX templates imported into the Central Store, or direct registry deployment via GPO Preferences / Intune. Users must be warned that saved passwords will become unavailable — pair this with an enterprise password manager rollout or you will generate a helpdesk surge.
Reboot required: No. Browser restart required for the policy to take effect.
Rollback: Delete the four registry values shown in step 4 (or set the GPO settings to Not Configured) and restart the browser. Previously saved passwords are not deleted by this policy, only prevented from being added, so rollback restores prior behaviour without data loss.
# --- Step 1: Chrome -- disable password manager and remote debugging -------- New-Item -Path 'HKLM:\Software\Policies\Google\Chrome' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Google\Chrome' ` -Name 'PasswordManagerEnabled' -Value 0 -Type DWord Set-ItemProperty -Path 'HKLM:\Software\Policies\Google\Chrome' ` -Name 'RemoteDebuggingAllowed' -Value 0 -Type DWord # --- Step 2: Edge -- same two controls -------------------------------------- New-Item -Path 'HKLM:\Software\Policies\Microsoft\Edge' -Force | Out-Null Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Edge' ` -Name 'PasswordManagerEnabled' -Value 0 -Type DWord Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Edge' ` -Name 'RemoteDebuggingAllowed' -Value 0 -Type DWord # --- Step 3: verify --------------------------------------------------------- Get-ItemProperty 'HKLM:\Software\Policies\Google\Chrome' | Select-Object PasswordManagerEnabled, RemoteDebuggingAllowed Get-ItemProperty 'HKLM:\Software\Policies\Microsoft\Edge' | Select-Object PasswordManagerEnabled, RemoteDebuggingAllowed # Also confirm in-browser at chrome://policy and edge://policy # --- Step 4: ROLLBACK ------------------------------------------------------- Remove-ItemProperty -Path 'HKLM:\Software\Policies\Google\Chrome' ` -Name 'PasswordManagerEnabled','RemoteDebuggingAllowed' -ErrorAction SilentlyContinue Remove-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Edge' ` -Name 'PasswordManagerEnabled','RemoteDebuggingAllowed' -ErrorAction SilentlyContinue # Restart the browser. Saved credentials are untouched by this policy.
Playbook 3 — Restrict the Run dialog for standard users (ClickFix mitigation)
Prerequisites: Identify and exempt every group that legitimately uses Win+R — helpdesk, desktop engineering, developers. This is a user-visible change and will generate tickets if deployed estate-wide without notice. Deploy via a GPO scoped to standard users only, never to an OU containing admin accounts.
Reboot required: No. Logoff/logon or gpupdate /force plus an Explorer restart.
Rollback: Set NoRun to 0 or delete the value, then restart Explorer (step 3). Immediate and complete — the Run dialog returns with no residual state.
# --- Step 1: apply (per-user; deploy via GPO scoped to standard users) ------ $k = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' New-Item -Path $k -Force | Out-Null Set-ItemProperty -Path $k -Name 'NoRun' -Value 1 -Type DWord # --- Step 2: verify --------------------------------------------------------- Get-ItemProperty -Path $k -Name NoRun # --- Step 3: ROLLBACK ------------------------------------------------------- Remove-ItemProperty -Path $k -Name 'NoRun' -ErrorAction SilentlyContinue Stop-Process -Name explorer -Force # Explorer restarts automatically # --- Step 4: compensating hunt while this is still being piloted ------------ # Until NoRun is deployed, Q5 plus the RunMRU sweep (N1) are the coverage. # Note that NoRun does NOT block PowerShell/Terminal paste-and-run, so # ClickFix variants targeting a terminal window remain in scope for Q5.
Playbook 4 — Egress control for WebSocket C2
Prerequisites: A change window at the egress firewall and an inventory of any business application legitimately reached on TCP/3000. Confirm with Q8 (run in report mode over 30 days) before writing the deny rule, or you will break something you did not know existed.
Reboot required: No. Firewall policy commit only.
Rollback: Remove the deny rule and re-commit. Keep the previous policy version tagged so the rollback is a single revert rather than a hand-rebuild. Because this is a deny rule with no state change on endpoints, rollback is immediate and has no side effects.
# --- Step 1: evidence-gather BEFORE writing the rule ------------------------ # Run Q8 with the RFC1918 exclusion removed, over 30 days, and list every # distinct RemoteAddressIP4 + ContextBaseFileName pair. That is your exemption # candidate list. Do not guess it. # --- Step 2: firewall policy (vendor-neutral intent) ------------------------ # deny src: workstation-VLANs dst: any port: tcp/3000 log: yes # allow src: workstation-VLANs dst: <named business hosts> port: tcp/3000 # (place the allow ABOVE the deny; scope it by destination, never "any") # --- Step 3: also deny direct-to-IP HTTP/S from workstation VLANs ----------- # Force all workstation web egress through the authenticated proxy. # This is what closes the DNS-less staging path (M-Near-3). # --- Step 4: verify --------------------------------------------------------- # From a pilot workstation, attempt an outbound TCP/3000 connection to an # external test listener and confirm it is denied AND logged. Test-NetConnection -ComputerName <external-test-host> -Port 3000 # --- Step 5: ROLLBACK ------------------------------------------------------- # Revert to the tagged previous policy version and re-commit. No endpoint # state was changed, so nothing else needs undoing.
Containment Runbook
| Phase | Actions | Owner | Evidence to capture |
|---|---|---|---|
| 0 · Triage (0–30 min) |
Confirm the hit is real. Pull the full process tree around the regsvr32.exe execution. Identify the OCX path and hash. Check for %TEMP%\lg.txt and C:\ProgramData\xlog.txt — either file proves an execution attempt even if the payload exited on its gating check. |
SOC L1 | Process tree export, OCX SHA256, both log-file paths, RunMRU contents |
| 1 · Isolate (30–60 min) |
Network-contain the host in Falcon. Do not power it off — an active CDP session and the in-memory modules live only in RAM and are the highest-value evidence in this intrusion. Capture memory before anything else if the maturity exists to do so. | SOC L2 | Memory image, Falcon containment timestamp, list of active network connections at containment |
| 2 · Scope (1–4 h) |
Run Q7, Q9 and Q10 estate-wide over 30 days. Run Q1 and Q2 over 30 days. TinyEgg is stage one, so a single confirmed host means asking which other hosts got the ClickFix lure, not just which ran the payload. Check the proxy for the lure domains across all users, not just the affected one. | Threat hunting | Affected-host list, lure-domain hit list by user, first-seen timestamp per host |
| 3 · Eradicate (4–24 h) |
Delete the WinComCtl Run key value and the staged OCX under %LOCALAPPDATA%\Packages\. Then check for the second implant: Insikt notes an operator who removes one family's persistence often leaves the other's behind. Remove %TEMP%\mscom.ocx, %TEMP%\wpad_capture.ocx, %TEMP%\output\ and both log files after imaging. |
IR / Desktop | Registry export before deletion, file hashes before deletion, confirmation both Run key AND payload are gone |
| 4 · Credential response (4–24 h) |
Treat every credential in every browser profile on the host as compromised. Rotate them. Then, separately, terminate all active browser and application sessions — force a global sign-out and revoke refresh tokens. Password rotation alone does not evict an operator holding a live CDP session; this is the single most-missed step in this intrusion type. | IAM / IR | Rotation list, session-revocation confirmation per SaaS platform, MFA re-enrolment records |
| 5 · Lateral review (24–72 h) |
Review 4624 Type 3/9, 4698 (remote scheduled tasks) and 5140/5145 from the affected host for the full dwell window. Remember remote_logon enumerates sessions without authenticating, so a clean auth log does not mean no reconnaissance happened. |
IR | Lateral-movement timeline, any remote scheduled tasks created, share-access log |
| 6 · Recover (72 h+) |
Rebuild rather than clean where the modular controller was present — the module inventory delivered to that host is not recoverable from the controller alone, so you cannot enumerate what the operator actually ran. Restore the user, re-enrol MFA, then monitor the host under Q1/Q2/Q4 for 30 days. | Desktop / SOC | Rebuild record, 30-day monitoring outcome, closure note |
| 7 · Harden (ongoing) |
Deploy M-Immediate-1 through M-Immediate-4 across the estate, not just the affected host. Feed the lure domains into the web gateway. Brief users on ClickFix specifically — the pattern is "a website asked me to paste something into the Run box". | Security engineering | Deployment coverage report, user-awareness campaign record |
Detection Coverage Map
| Technique | Behaviour | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1189 Drive-by Compromise | ClickFix lure page delivery | Q9 | — | PARTIAL — only known domains |
| T1204.004 Malicious Copy and Paste | Run-dialog paste chain | Q5 · N1 | — | PARTIAL — FP-sensitive |
| T1218.010 Regsvr32 | OCX from user-writable path | Q1 | IOA-1 | GOOD |
| T1547.001 Registry Run Keys | WinComCtl / OCX autostart | Q2 | IOA-2 | GOOD |
| T1105 Ingress Tool Transfer | Named OCX staged to disk | Q6 | — | GOOD |
| T1185 Browser Session Hijacking | Off-screen CDP browser | Q4 · Q3 · Q12 | IOA-3 | GOOD |
| T1528 Steal Application Access Token | Live authenticated session control | Q3 · Q4 · Q12 | IOA-3 | GOOD |
| T1555.003 Credentials from Web Browsers | ChromEggscalator ABE bypass | Q6 · Q7 | — | PARTIAL — filename/hash-bound |
| T1071.001 Web Protocols | WebSocket C2 to known infra | Q8 · Q9 · Q10 · N3 | — | PARTIAL — see G4 |
| T1571 Non-Standard Port | TCP/3000 egress | Q8 | — | GOOD |
| T1046 Network Service Discovery | net_port_scan fan-out | Q11 | — | PARTIAL |
| T1018 Remote System Discovery | net_arp_scan | Q11 (partial) | — | GAP — G5 |
| T1497 Sandbox Evasion | Filename gating | — | — | GAP — G1 |
| T1056.001 / T1115 / T1113 / T1123 | Keylog · clipboard · screen · audio modules | — | — | GAP — G2 |
| T1049 System Network Connections Discovery | remote_logon session enumeration | — | — | GAP — G3 |
| T1090 Proxy | proxy_request / WPAD interception | N3 · Q6 | — | PARTIAL |
| T1027 Obfuscated Files | XOR / AES string obfuscation | — | — | GAP — G1 |
Documented gaps
- G1 · Filename gating and string obfuscation are not endpoint-detectable. These are anti-analysis properties, not runtime behaviours. Their practical effect is that dynamic sandboxing of a captured sample will silently produce a clean verdict. Compensate by treating the presence of
%TEMP%\lg.txt(N2) as evidence of an attempt, and never clear a sample as benign purely because it did not detonate. - G2 · Modular plugin capabilities have no reliable telemetry. Modules arrive Base64-encoded over the WebSocket, are written to a randomly named temp file and loaded via
LoadLibraryA. There is no stable filename, hash or path to hunt. This is the single largest gap in the pack and it is by design — Insikt notes a defender who captures the controller captures no capabilities at all. Detection must be pushed upstream to the controller (Q1, Q2, Q6, Q8), which is why those four queries carry the weight of this pack. - G3 ·
remote_logongenerates no authentication events. It enumerates logged-on sessions without submitting credentials, so there is nothing in the Security log to find. Accept as uncovered; compensate with M-Near-4 (east-west restriction) so the reconnaissance has less to feed. - G4 · WebSocket content is opaque. RFC 6455 mandates XOR frame masking, so content signatures do not work without frame decoding (M-Strat-5). Coverage is metadata-only: port, path, Upgrade header, connection duration.
- G5 · ARP-based host discovery is link-layer.
net_arp_scanis largely invisible to EDR and to L3 network monitoring. Q11 catches the TCP half ofnet_enumerateonly. Switch-level ARP monitoring would be required for full coverage. - G6 · Non-PE forensic artifacts.
lg.txt,xlog.txtand the%TEMP%\output\directory are not PE files, so Falcon's PE-write events do not surface them. Covered by native hunt N2 as a host-triage step rather than by streamed telemetry.
Validation gates: the eight gates in §11 must be cleared before any of this coverage counts as deployed. In particular, gate G-1 determines whether Q2 is live at all (it is blind without AsepValueUpdate), and gate G-2 determines whether Q12 is coverage or a seventh gap. Run gates G-4 through G-7 as the purple-team exercise Recorded Future recommends — every one of them uses benign components and no malicious code.
Hunt Summary Ticket
TITLE: Golden Chickens / TAG-195 -- TinyEgg, ChonkyChicken, Modular ChonkyChicken, ChromEggscalator
SEVERITY: High (active MaaS, in-the-wild ClickFix delivery by TAG-127)
SCOPE: All Windows endpoints. Priority: any host with Chrome or Edge and stored credentials.
HYPOTHESIS: TAG-195 tooling executes OCX payloads via regsvr32.exe from user-writable
directories, persists through HKCU Run value "WinComCtl", speaks JSON-over-
WebSocket C2 on TCP/3000, and hijacks live browser sessions via the Chrome
DevTools Protocol after bypassing Chrome App-Bound Encryption.
QUERIES: Q1 regsvr32 + .ocx from user-writable path CONF high FP low <-- START HERE
Q2 WinComCtl Run key / OCX autostart CONF high FP low <-- START HERE
Q3 browser with --remote-debugging-port CONF high FP med
Q4 off-screen browser + remote debugging CONF high FP low
Q5 ClickFix Run-dialog LOLBIN chain CONF med FP med
Q6 TAG-195 OCX filenames written to disk CONF high FP low
Q7 30 known SHA256 payload hashes CONF high FP low
Q8 outbound TCP/3000 WebSocket C2 CONF med FP med
Q9 lure / staging / C2 domain resolution CONF high FP low
Q10 connections to 4 published C2 IPs CONF high FP low
Q11 regsvr32/rundll32 internal fan-out CONF med FP med
Q12 non-browser process hitting local CDP :9222 CONF med FP med
DO FIRST: 1. Import the section 10 IOC CSV into Falcon IOC Management.
2. Run Q1 and Q2 over 30 days. These two cover all four families and
survive hash/infrastructure rotation.
3. Run Q7, Q9, Q10 over 30 days for confirmed-incident hits.
4. Clear validation gate G-1 before trusting any coverage claim.
5. Deploy IOA-1 in Detect mode.
FINDINGS: [ ] Q1 hits: ____ [ ] Q2 hits: ____ [ ] Q4 hits: ____
[ ] Q7 hits: ____ [ ] Q9 hits: ____ [ ] Q10 hits: ____
[ ] %TEMP%\lg.txt found on: ____
[ ] C:\ProgramData\xlog.txt found on: ____
GAPS: G1 filename gating / obfuscation not endpoint-detectable
G2 modular plugin capabilities have no reliable telemetry <-- largest gap
G3 remote_logon produces no authentication events
G4 WebSocket content opaque (RFC 6455 masking)
G5 ARP host discovery invisible to EDR
G6 non-PE artifacts (lg.txt, xlog.txt) need host triage
ACTIONS: [ ] M-Immediate-1 block regsvr32 loading OCX from user-writable paths
[ ] M-Immediate-2 import IOC CSV
[ ] M-Immediate-3 block outbound TCP/3000 from workstation VLANs
[ ] M-Immediate-4 disable browser password storage + remote debugging
[ ] On any confirmed hit: rotate credentials AND revoke all sessions.
Rotation alone does not evict an active CDP session.
OWNER: ____________________
VERSION: v0.1 -- 2026-07-27
Changelog
References
| Tier | Source | Used For | Accessed |
|---|---|---|---|
| T1 | Recorded Future / Insikt Group — TAG-195 Upgrades MaaS Ecosystem with Modular Tools | Primary research. All technical analysis, command tables, module inventory, mitigations and the complete IOC appendix. Sole source of every SHA256. | 2026-07-27 |
| T2 | The Hacker News — Golden Chickens Resurfaces With Four New Malware Families and Modular Implants | Independent corroboration of family names, actor relationships, module list and delivery model. | 2026-07-27 |
| T2 | GBHackers — Golden Chickens Launches Four Modular Malware Families | Second independent source for the six domains and two of the four IPs; DllInstall export detail. | 2026-07-27 |
| T2 | CyberPress — Golden Chickens TAG-195 Launches TinyEgg and ChonkyChicken Modular Malware | Corroborates ClickFix delivery and the screenly lure domain. Its curl/certutil/mshta line is generic LOLBIN advice, not a TAG-195 observation. | 2026-07-27 |
| T2 | CybersecurityNews — ChonkyChicken Malware Steals Chrome Credentials, Moves Laterally and Spies on Victims | Corroborates regsvr32 execution, WinComCtl Run key, koki.ocx controller, port 3000 and the xlog artifact. | 2026-07-27 |
| T2 | SC Media — Golden Chickens malware-as-a-service resurfaces with four new families | Headline-level confirmation of the disclosure and MaaS framing. | 2026-07-27 |
| FRAMEWORK | MITRE ATT&CK — T1189, T1204.004, T1059.003, T1218.010, T1547.001, T1071.001, T1571, T1090, T1555.003, T1528, T1185, T1056.001, T1115, T1113, T1123, T1046, T1018, T1135, T1087.002, T1049, T1021, T1105, T1027, T1497 | Technique mapping and M-number mitigation routing (M1026, M1027, M1030, M1031, M1032, M1035, M1037, M1038, M1042, M1045). | 2026-07-27 |
Source snapshots for every reference above are archived alongside this pack in GoldenChickens-TAG195-TinyEgg-Hunt-sources/. Every atomic indicator shipped in §10 is mechanically traceable to one of those snapshots.