TinyRCT Backdoor — CL-STA-1062 (UAT-7237)
Executive Summary
CL-STA-1062 (overlaps Cisco Talos UAT-7237) is a Chinese-speaking espionage cluster active since at least March 2022. Unit 42 documented a 2025 campaign — surfacing again in the current intel cycle — in which the group compromised at least ten Southeast Asian organizations, including two state-owned energy operators, exfiltrating databases and web-server source code and maintaining long-dwell access.
The signature implant is TinyRCT, a lightweight C#-based backdoor that masquerades as PerfWatson2.exe (a legitimate Visual Studio telemetry binary) and beacons over HTTP with AES-128-CBC encryption using a hard-coded key. Initial access is via exploitation of public-facing applications and ASPX web shells; the loader uses AppDomainManager injection (a trojanized chrome_setup.zip) to run TinyRCT under a legitimate .NET host. The actor layers open-source tooling — fscan, Mimikatz, JuicyPotato, and SoftEther/VNT VPN tunnels — for discovery, credential theft, privilege escalation, and lateral movement.
Highest-value defensive angle: the masquerade and persistence artifacts are narrow and high-fidelity — PerfWatson2.exe running from %LOCALAPPDATA% instead of a Visual Studio path, the GoogleUpdaterTaskSystem140.0.7272.0 scheduled task, and web-server processes (w3wp.exe) spawning command shells. Those three signals catch the chain end-to-end with very low false-positive cost.
Defender priority: Hunt PerfWatson2.exe executing outside a Visual Studio install path and any IIS worker process spawning cmd.exe/powershell.exe first — these are the earliest reliable footholds in the TinyRCT chain and precede credential theft and lateral movement.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| 1 | Unit 42 (Palo Alto) — CL-STA-1062 / TinyRCT report, 2026-06-25 | Full IOC + TTP set: C2 infra, hashes, AppDomainManager injection, PerfWatson2 masquerade, hard-coded AES key | Yes |
| 1 | Hive Pro — Threat Advisory, 2026-06-29 | Corroborates IOCs; enumerates full MITRE technique set and scheduled-task persistence | Yes |
| 2 | The Hacker News / SC Media / Infosecurity Mag | Attribution overlap with UAT-7237; targeting of energy / government in Southeast Asia | Partial |
| 2 | Cisco Talos — UAT-7237 (Aug 2025) | Original cluster naming; Taiwan web-infrastructure targeting | Partial |
Web-hunter note: IOCs are vendor-attributed and corroborated across two Tier-1 reports. Atomic network IOCs (VPS C2 IPs) are perishable — treat as hunt/enrich after ~90 days. Behavioral signatures (masquerade path, task name, injection chain) are durable.
Hunt Brief & Attack Chain
Hunt hypotheses (ordered by fidelity)
- H1 — Masquerade (high):
PerfWatson2.exeexecuting from a non-Visual-Studio path (e.g.%LOCALAPPDATA%) is TinyRCT, not telemetry. Very low FP. - H2 — Web-shell foothold (high): IIS worker
w3wp.exespawningcmd.exe/powershell.exe/recon tooling indicates ASPX web-shell command execution. - H3 — Scheduled-task persistence (high): creation of a task named
GoogleUpdaterTaskSystem140.0.7272.0viaschtasks.exewith/rl highest /sc onlogon. - H4 — AppDomainManager injection (medium):
chrome_setup.exelaunched from Downloads loading a sideloaded managed DLL. - H5 — Offensive tooling (medium):
fscan,JuicyPotato, Mimikatz, SoftEther/VNT present by name or hash. - H6 — Self-destruct (medium):
choice.exeused as a delay primitive in a self-deletion batch routine. - H7 — C2 beacon (high, perishable): outbound connections to the four attributed VPS C2/staging IPs.
- H8 — Masquerading tunnels (medium): SoftEther/VNT renamed to
vmtools.exe/VMware executables running from non-VMware paths.
Attack chain
| Step | Action | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 · Initial Access | Exploit public-facing app; drop ASPX web shell | ProcessRollup2 (parent w3wp) | Q5 · web-shell child processes |
| 2 · Delivery | chrome_setup.zip → AppDomainManager injection | ProcessRollup2, PeFileWritten | Q4 · loader from Downloads |
| 3 · Execution | TinyRCT runs as PerfWatson2.exe from %LOCALAPPDATA% | ProcessRollup2 | Q1 · masquerade path |
| 4 · Persistence | Scheduled task GoogleUpdaterTaskSystem140.0.7272.0 | ProcessRollup2 (schtasks) | Q3 · task creation |
| 5 · PrivEsc | JuicyPotato token impersonation | ProcessRollup2 | Q6 · tooling by name/hash |
| 6 · Cred Access | Mimikatz credential dumping | ProcessRollup2 | Q6 · tooling by name/hash |
| 7 · Discovery | fscan network sweep | ProcessRollup2 | Q6 · tooling by name/hash |
| 8 · Lateral / C2 | SoftEther / VNT VPN tunnels; HTTP AES-CBC beacon | NetworkConnectIP4, ProcessRollup2 | Q7 · C2 IPs · Q8 · tunnel masquerade |
| 9 · Defense Evasion | choice.exe delayed self-delete | ProcessRollup2 | Q2 · self-destruct |
Consolidated IOC Table
All indicators trace to Unit 42 (2026-06-25) and Hive Pro (2026-06-29). Network IOCs are VPS-hosted and perishable; hashes and behavioral markers are durable.
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| IPv4 | 45.32.113.172 | med | detect | Primary TinyRCT C2 |
| IPv4 | 139.180.134.221 | med | detect | Staging / payload server |
| IPv4 | 202.182.102.5 | med | hunt | Attributed infrastructure |
| IPv4 | 45.76.210.43 | med | hunt | Attributed infrastructure |
| URL | http://139.180.134.221/PerfWatson2.exe | high | detect | TinyRCT payload retrieval |
| URL path | /sdksdk608/ (1.zip, anydesk_0117.zip, hamcore.se2, httpdf, vpn_bridge.config, win-vpn.rar) | high | hunt | Staging directory for tooling/VPN |
| SHA256 | 00e09754526d0fe836ba27e3144ae161b0ecd3774abec5560504a16a67f0087c | high | detect | chrome_setup.zip (loader package) |
| SHA256 | cbfe8de6ffadbb1d396f61e63eb18e8b11c29527c1528641e3223d4c516cf7c3 | high | detect | TinyRCT downloader |
| SHA256 | 4e1f8888d020decd09799ec946f1bf677cac6612b24582ddbf4d8ede425d8384 | high | detect | TinyRCT backdoor |
| SHA256 | f34bd1d485de437fe18360d1e850c3fd64415e49d691e610711d8d232071a0b1 | high | detect | fscan (network scanner) |
| SHA256 | dce5df29bddff5a4ddaea5c4fec14da91f7b69063a6e1c45ed61e5da4fc6c87b | high | detect | SoftEther VPN (renamed) |
| SHA256 | 9b481b69cd91b09fa7bae7428f646dd89473a4c03393e43da81fe756cde1c472 | high | detect | VNT tunneling tool |
| Filename | PerfWatson2.exe (outside VS path) | med | hunt | TinyRCT masquerade |
| Task | GoogleUpdaterTaskSystem140.0.7272.0 | high | detect | Persistence artifact |
| Crypto | AES-128-CBC key ThisIsASecretKey87654321, null IV | high | enrich | Hard-coded C2 encryption |
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Internet-facing IIS / ASP.NET web servers | ProcessRollup2 (parent-child), PeFileWritten (.aspx) | Critical | Low — Falcon on web tier |
| Windows workstations / jump hosts | ProcessRollup2, ScheduledTask registration | Critical | Low |
| Domain controllers / identity | ProcessRollup2 (Mimikatz, JuicyPotato) | High | Medium — LSASS access visibility |
| Network egress | NetworkConnectIP4, DnsRequest | High | Medium — VPS C2 rotates |
| State-owned energy / OT-adjacent IT | ProcessRollup2 on IT hosts bridging to OT | Critical | High — sparse EDR in OT |
ATT&CK Mapping
| Tactic | Technique | Behavior | Coverage |
|---|---|---|---|
| Initial Access | T1190 | Exploit public-facing application | Q5 / native |
| Persistence | T1505.003 | ASPX web shell | Q5 |
| Persistence | T1053.005 | Scheduled task (GoogleUpdaterTaskSystem140.0.7272.0) | Q3 |
| Execution / DefEvasion | T1574.014 | AppDomainManager injection | Q4 |
| Defense Evasion | T1036.005 | Masquerade as PerfWatson2.exe / vmtools.exe | Q1 / Q8 |
| Defense Evasion | T1070.004 | choice.exe delayed self-deletion | Q2 |
| Defense Evasion | T1497 | Sandbox / environment checks | native |
| Priv Escalation | T1068 | JuicyPotato token impersonation | Q6 |
| Credential Access | T1003 | Mimikatz credential dumping | Q6 |
| Discovery | T1046 / T1082 | fscan network + system discovery | Q6 |
| Lateral Movement / C2 | T1572 / T1090 | SoftEther / VNT / yuze VPN tunnels | Q8 |
| Command & Control | T1071.001 / T1573.001 | HTTP beacon, AES-128-CBC encryption | Q7 |
| Collection / Exfil | T1560.001 / T1041 / T1113 | RAR staging, gzip+AES 40 KB-chunk exfil, screenshots | native / Q7 |
Native Audit-Log Hunts (non-CQL)
- Windows Security 4698 — scheduled-task creation; filter for task name containing
GoogleUpdaterTaskSystem140. - Sysmon Event 11 / IIS logs — new
.aspxfiles written underinetpub\wwwrootoutside a deployment window; correlate with w3wp child processes. - Sysmon Event 1 / 4688 —
PerfWatson2.exewith a parent that is notdevenv.exeor a Visual Studio installer. - Windows Security 4624/4672 — logon + privilege assignment bursts on IIS hosts consistent with JuicyPotato SeImpersonate abuse.
- Firewall / proxy logs — HTTP GET/POST to the four attributed VPS IPs; look for fixed ~10-second beacon cadence.
- DNS / NetFlow — long-lived outbound sessions to VPS ranges from web-tier or energy-IT subnets.
CrowdStrike LogScale CQL Hunt Queries
Looks for: the TinyRCT masquerade — PerfWatson2.exe running from a path that is not a Visual Studio install. Legitimate PerfWatson2 lives under a Microsoft Visual Studio directory.
// HUNT: TinyRCT PerfWatson2.exe masquerade // MITRE: T1036.005 | CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^PerfWatson2\.exe$/i | ImageFileName!=/Microsoft Visual Studio/i | table([ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData], limit=200)
Looks for: TinyRCT's self-destruct — choice.exe used as a delay primitive alongside a file delete. FP: some installers/scripts use choice.exe for prompts; scope to command lines that also delete a file or are spawned by a suspicious parent.
// HUNT: TinyRCT choice.exe self-delete routine // MITRE: T1070.004 | CONF: med FP: med COST: low // REQUIRES: ProcessRollup2 // TUNING: exclude known software installers by ParentBaseFileName #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^choice\.exe$/i | CommandLine=/timeout|ping|del |del\t/i | table([ComputerName, UserName, ParentBaseFileName, CommandLine], limit=200)
Looks for: creation of the TinyRCT persistence task via schtasks.exe. The genuine Google updater task does not carry this exact versioned name created with /rl highest /sc onlogon from a user-writable path.
// HUNT: TinyRCT scheduled task creation // MITRE: T1053.005 | CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^schtasks\.exe$/i | CommandLine=/GoogleUpdaterTaskSystem140/i | table([ComputerName, UserName, ParentBaseFileName, CommandLine], limit=200)
Looks for: the trojanized installer — chrome_setup.exe executing from a Downloads directory (loader validates %USERPROFILE%\Downloads before injecting). FP: legitimately named installers may exist; confirm the sideloaded .config and child PerfWatson2.exe.
// HUNT: TinyRCT chrome_setup loader from Downloads // MITRE: T1574.014 | CONF: med FP: med COST: low // REQUIRES: ProcessRollup2 // TUNING: pair with Q1 child PerfWatson2.exe to confirm #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^chrome_setup\.exe$/i | ImageFileName=/Downloads/i | table([ComputerName, UserName, ImageFileName, CommandLine, SHA256HashData], limit=200)
Looks for: ASPX web-shell command execution — w3wp.exe spawning shells or recon tooling. FP: some app deployments run cmd.exe under w3wp; baseline your app pools and exclude known deployment accounts.
// HUNT: Web-shell command execution via IIS worker // MITRE: T1505.003, T1190 | CONF: high FP: med COST: low // REQUIRES: ProcessRollup2 // TUNING: exclude approved app-pool deployment jobs #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^w3wp\.exe$/i | FileName=/^(cmd|powershell|net|net1|whoami|ipconfig|fscan|systeminfo)\.exe$/i | table([ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Looks for: the open-source toolkit CL-STA-1062 layers in — fscan, JuicyPotato, Mimikatz — by binary name or the attributed SHA256 values. FP: red-team use; confirm against change tickets.
// HUNT: CL-STA-1062 offensive tooling // MITRE: T1068, T1003, T1046 | CONF: med FP: med COST: low // REQUIRES: ProcessRollup2 // TUNING: exclude sanctioned pentest hosts #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^(fscan|juicypotato|mimikatz)\.exe$/i or SHA256HashData=/^(f34bd1d485de437fe18360d1e850c3fd64415e49d691e610711d8d232071a0b1|dce5df29bddff5a4ddaea5c4fec14da91f7b69063a6e1c45ed61e5da4fc6c87b|9b481b69cd91b09fa7bae7428f646dd89473a4c03393e43da81fe756cde1c472)$/i | table([ComputerName, UserName, FileName, ImageFileName, SHA256HashData, ParentBaseFileName], limit=200)
Looks for: outbound connections to the four Unit 42-attributed VPS addresses. Perishable — VPS infra rotates; keep the IP set current.
// HUNT: TinyRCT C2 / staging connections // MITRE: T1071.001 | CONF: high FP: low COST: low // REQUIRES: NetworkConnectIP4 #event_simpleName=/NetworkConnectIP4/ | RemoteAddressIP4=/^(45\.32\.113\.172|139\.180\.134\.221|202\.182\.102\.5|45\.76\.210\.43)$/ | table([ComputerName, RemoteAddressIP4, RemotePort, ContextBaseFileName], limit=200)
Looks for: SoftEther/VNT tunnels renamed to vmtools.exe or VMware executables but running from outside a VMware install path. FP: genuine VMware Tools; the path exclusion removes most noise.
// HUNT: SoftEther/VNT tunnel masquerade // MITRE: T1036.005, T1572 | CONF: med FP: med COST: low // REQUIRES: ProcessRollup2 // TUNING: exclude C:\Program Files\VMware paths #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^(vmtools|vmware|vmtoolsd)\.exe$/i | ImageFileName!=/VMware/i | table([ComputerName, UserName, ImageFileName, CommandLine, SHA256HashData], limit=200)
CrowdStrike Custom IOA Recommendations
| IOA Name | Pattern | Exclusions | Action |
|---|---|---|---|
| TinyRCT PerfWatson2 Masquerade | Process PerfWatson2.exe where image path does not contain Microsoft Visual Studio | VS install / update paths | Detect → Block (high confidence) |
| IIS Worker Shell Spawn | ParentImage w3wp.exe → child cmd/powershell/whoami/fscan | Approved app-pool deploy accounts | Detect |
| GoogleUpdater Fake Task | schtasks.exe CommandLine contains GoogleUpdaterTaskSystem140 | None | Detect → Block |
Promote Q1 and Q3 to Custom IOAs first — both are high-confidence, low-FP, and cover the earliest reliable stages. Keep Q4/Q5/Q6/Q8 as Investigate-only hunts pending environment baselining.
Machine-Readable IOC Appendix
type,value,action,severity,expiration,description,tags sha256,00e09754526d0fe836ba27e3144ae161b0ecd3774abec5560504a16a67f0087c,prevent,critical,2027-01-10,TinyRCT chrome_setup.zip,campaign:CL-STA-1062 sha256,cbfe8de6ffadbb1d396f61e63eb18e8b11c29527c1528641e3223d4c516cf7c3,prevent,critical,2027-01-10,TinyRCT downloader,campaign:CL-STA-1062 sha256,4e1f8888d020decd09799ec946f1bf677cac6612b24582ddbf4d8ede425d8384,prevent,critical,2027-01-10,TinyRCT backdoor,campaign:CL-STA-1062 sha256,f34bd1d485de437fe18360d1e850c3fd64415e49d691e610711d8d232071a0b1,detect,high,2027-01-10,fscan scanner,campaign:CL-STA-1062 sha256,dce5df29bddff5a4ddaea5c4fec14da91f7b69063a6e1c45ed61e5da4fc6c87b,detect,high,2027-01-10,SoftEther VPN renamed,campaign:CL-STA-1062 sha256,9b481b69cd91b09fa7bae7428f646dd89473a4c03393e43da81fe756cde1c472,detect,high,2027-01-10,VNT tunnel,campaign:CL-STA-1062 ipv4,45.32.113.172,detect,high,2026-10-10,TinyRCT primary C2,campaign:CL-STA-1062 ipv4,139.180.134.221,detect,high,2026-10-10,TinyRCT staging server,campaign:CL-STA-1062 ipv4,202.182.102.5,detect,medium,2026-10-10,Attributed infrastructure,campaign:CL-STA-1062 ipv4,45.76.210.43,detect,medium,2026-10-10,Attributed infrastructure,campaign:CL-STA-1062
PerfWatson2.exe running outside a "Microsoft Visual Studio" path schtasks.exe creating task "GoogleUpdaterTaskSystem140.0.7272.0" (/rl highest /sc onlogon) w3wp.exe spawning cmd.exe / powershell.exe / fscan.exe chrome_setup.exe executing from a Downloads directory choice.exe used as a delay before a file-delete (self-destruct) HTTP beacon with ~10s cadence + AES-128-CBC (key ThisIsASecretKey87654321, null IV)
TinyRCT (C# backdoor, masquerades as PerfWatson2.exe) MyAppDomainManager.dll (AppDomainManager injection loader) fscan (network scanner) JuicyPotato (SeImpersonate priv-esc) Mimikatz (credential dumping) SoftEther VPN / VNT / yuze (tunneling; renamed to vmtools.exe / VMware exes)
1. Enumerate .aspx files under inetpub\wwwroot written outside deploy windows 2. Review app-pool identities for SeImpersonatePrivilege exposure (JuicyPotato) 3. Audit scheduled tasks for GoogleUpdater* names created onlogon /rl highest 4. Confirm all PerfWatson2.exe instances resolve to a Visual Studio install 5. Block egress to the four attributed VPS IPs at the perimeter
Detection Validation Gates
| Gate | Check | Pass Criteria |
|---|---|---|
| Telemetry ready | ProcessRollup2 + NetworkConnectIP4 flowing from web tier and jump hosts | Both event types present in last 24h |
| Benign baseline | Run Q5 over 7 days; record app-pool deploy accounts that legitimately spawn cmd | Exclusion list built before enabling alerting |
| Positive test | Rename a benign binary to PerfWatson2.exe in a lab %LOCALAPPDATA% path; run Q1 | Q1 fires |
| Positive test | Create a test task named GoogleUpdaterTaskSystem140.0.7272.0; run Q3 | Q3 fires |
| Promotion | Q1 + Q3 zero FPs over baseline window | Promote to Custom IOA (block) |
Hardening — Tiered
- Block egress to the four attributed C2/staging IPs at perimeter and cloud NSGs (MITRE M1037).
- Patch internet-facing web apps and remove any unauthorized
.aspxunder web roots (M1051, M1050). - Import the SHA256 IOC set to Falcon IOC Management as prevent/detect (M1040).
- Strip SeImpersonatePrivilege from IIS app-pool identities where not required to neutralize JuicyPotato (M1026, CIS Windows Benchmark 2.2.x user-rights).
- Constrain outbound from web-tier and energy-IT subnets to an allowlist; deny arbitrary VPS egress (M1037).
- Enable Credential Guard / LSASS PPL to blunt Mimikatz (M1043, MS Security Baseline).
- Application control (WDAC/AppLocker) allowlisting on web servers and jump hosts to block unsigned tunnels and renamed binaries (M1038, CIS).
- Segment IT from OT for state-owned energy environments; broker all IT→OT access through monitored jump hosts (M1030, NIST SP 800-82).
- Deploy .NET AppDomainManager hardening — restrict
APPDOMAIN_MANAGER_*and audit.configsideloading (M1042).
Deployable Playbooks
1 · Remove SeImpersonate from an IIS app-pool identity (PowerShell + secedit)
# Audit which accounts currently hold SeImpersonatePrivilege secedit /export /areas USER_RIGHTS /cfg C:\temp\rights.inf Select-String -Path C:\temp\rights.inf -Pattern "SeImpersonatePrivilege" # Then remove the app-pool virtual account from that line via GPO: # Computer Config > Windows Settings > Security Settings > Local Policies > # User Rights Assignment > "Impersonate a client after authentication" # Keep only: Administrators, SERVICE, LOCAL SERVICE, NETWORK SERVICE (as required)
2 · Hunt + remove the persistence task (PowerShell)
Get-ScheduledTask | Where-Object { $_.TaskName -like "GoogleUpdaterTaskSystem140*" } |
ForEach-Object {
Write-Host "SUSPECT TASK:" $_.TaskName $_.TaskPath
# Unregister-ScheduledTask -TaskName $_.TaskName -Confirm:$false # after triage
}
3 · Confirm every PerfWatson2.exe is legitimate (PowerShell)
Get-CimInstance Win32_Process -Filter "Name='PerfWatson2.exe'" |
Select-Object ProcessId, ExecutablePath, CommandLine |
Where-Object { $_.ExecutablePath -notmatch 'Microsoft Visual Studio' }
4 · Block C2 egress (Windows Firewall example)
$ips = "45.32.113.172","139.180.134.221","202.182.102.5","45.76.210.43" New-NetFirewallRule -DisplayName "Block CL-STA-1062 C2" -Direction Outbound ` -RemoteAddress $ips -Action Block -Profile Any # Prefer enforcing at the perimeter / cloud NSG as the primary control.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Network-contain hosts hitting C2 IPs or running masqueraded PerfWatson2.exe; preserve memory | SOC / IR | Falcon host containment, RTR memory capture |
| Eradicate | Kill TinyRCT process, unregister GoogleUpdater task, remove sideloaded DLL + web shells, rotate exposed creds | IR | RTR command log, task/registry export |
| Eradicate | Reset app-pool + service accounts; revoke any SoftEther/VNT tunnels | IdAM | Password reset log, VPN session teardown |
| Recover | Rebuild compromised web servers from known-good; re-patch; re-baseline scheduled tasks | Platform | Golden-image restore ticket |
| Recover | Confirm no residual egress to VPS ranges; enable Q1/Q3 as blocking IOAs | SOC | Clean 72h monitoring window |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1036.005 | PerfWatson2 masquerade | Q1 | Yes | Good |
| T1053.005 | GoogleUpdater task | Q3 | Yes | Good |
| T1505.003 / T1190 | ASPX web shell | Q5 | Candidate | Partial |
| T1574.014 | AppDomainManager injection | Q4 | No | Partial |
| T1068 / T1003 / T1046 | JuicyPotato / Mimikatz / fscan | Q6 | No | Partial |
| T1071.001 | C2 beacon | Q7 | No | Good (perishable) |
| T1572 / T1090 | VPN tunnel masquerade | Q8 | No | Partial |
| T1070.004 | choice.exe self-delete | Q2 | No | Partial |
| T1497 | Sandbox checks | — | No | Gap |
| T1560.001 / T1041 | RAR staging / chunked exfil | native | No | Gap |
Known gaps: environment/sandbox checks (T1497) and RAR-staged chunked exfiltration (T1560.001/T1041) are not directly covered by process telemetry — lean on native audit-log hunts and egress-volume anomaly detection. Validate Q4/Q5 field behavior and app-pool baselines in your tenant before promoting to blocking IOAs.
Hunt Summary Ticket
TITLE: TinyRCT / CL-STA-1062 (UAT-7237) — SE-Asia energy/gov espionage hunt
SEVERITY: Critical (nation-state, active)
SCOPE: Internet-facing IIS/ASP.NET, Windows jump hosts, energy-IT subnets
HYPOTHESIS: CL-STA-1062 established web-shell foothold and deployed TinyRCT
(PerfWatson2.exe masquerade) with GoogleUpdater task persistence.
QUERIES: Q1 masquerade · Q3 task · Q5 web-shell · Q7 C2 (start here)
Q2 self-delete · Q4 loader · Q6 tooling · Q8 tunnels (secondary)
DO FIRST: Q1 (PerfWatson2 outside VS path) + Q5 (w3wp child shells)
FINDINGS: ____________________________________________
GAPS: T1497 sandbox checks; T1560/T1041 chunked exfil (native/anomaly)
ACTIONS: Block 4 C2 IPs; import SHA256 IOCs; strip SeImpersonate; hunt tasks
OWNER: ____________________
VERSION: v0.2 · 2026-07-10
Changelog
table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| 1 | Unit 42 — CL-STA-1062 Targets SE Asian Governments and Critical Infrastructure (TinyRCT) | IOCs, TTPs, attribution, masquerade & injection chain | 2026-07-10 |
| 1 | Hive Pro — TinyRCT Threat Advisory | Corroborating IOCs, full MITRE set, persistence detail | 2026-07-10 |
| 2 | The Hacker News — Chinese-Speaking APT Deploys New TinyRCT Backdoor | Campaign context, targeting | 2026-07-10 |
| 2 | Security Affairs — CL-STA-1062 Expands Attacks on SE-Asian CNI | Sector targeting, UAT-7237 overlap | 2026-07-10 |