UAT-10147 — Agentic-AI-Augmented Post-Compromise: SPECTRE, Specter Rootkit & BadIIS

Chinese-speaking financially-motivated actor → 1-day RCE against internet-facing IIS/Linux servers (170,000-URL target list) → AI-generated exploitation/persistence playbooks → SPECTRE cross-platform C2 implant (BYOVD EDR kill, credential theft) + Specter Linux kernel rootkit + BadIIS SEO-fraud MaaS
Threat
UAT-10147 / SPECTRE / Specter / BadIIS
Severity
EXPLOITED ITW — MASS SCANNING
Type
Financially-motivated cybercrime (SEO fraud + data theft) — AI-augmented post-compromise, cross-platform C2 + Linux rootkit + BYOVD
Access
Network — multiple 1-day RCE CVEs (Windows IIS + Linux), no 0-days reported
Version
v0.1 (Draft) · 2026-08-26
Author
HuntPack
Confidence
High — 2 direct Cisco Talos technical-blog fetches + 2 direct Talos GitHub IOC-file fetches + 1 corroborating outlet
01

Executive Summary

Cisco Talos identified UAT-10147, a Chinese-speaking intrusion actor Talos assesses with moderate-to-high confidence is financially motivated (SEO fraud + data theft), not a nation-state operator, exploiting publicly disclosed ("1-day") vulnerabilities to compromise internet-facing Windows/IIS and Linux web servers at scale globally, with confirmed activity affecting organizations in government, education, media, technology, and gaming sectors. A recovered command-and-control open directory (139.180.197[.]150) exposed a target list of approximately 170,000 URLs, split into 17 files of ~10,000 URLs each — the actor's own operational notation uses the letter "w" for the Chinese character "萬" (10,000).

What distinguishes UAT-10147 from ordinary opportunistic web-server crimeware is its systematic use of agentic AI tooling across the intrusion lifecycle: AI-generated, well-documented exploitation guides (an ASP.NET ViewState deserialization RCE playbook complete with prerequisites, MAC-validation-failure vs. InvalidCastException oracle logic, out-of-band confirmation techniques, and a privilege-escalation path), four companion AI-generated Python automation scripts (check_paths.py, deploy_implant.py, deploy_shell.py, exfil.py), and the open-source frameworks PentestGPT (autonomous scan-and-exploit) and DeepAudit (AI source-code vulnerability scanning) staged on the actor's own C2 server. Talos further assesses with medium confidence that the actor's new Linux kernel rootkit ("Specter") shows internal evidence of AI-assisted development — a machine-generated documentation style, uniform section separators, and an exhaustive "list every method" pattern uncharacteristic of a human rootkit author.

Post-exploitation, the actor deploys a newly identified cross-platform C2 implant, SPECTRE (Windows + Linux, written in C), which layers process injection, credential theft, anti-analysis/anti-sandbox scoring, and — on Windows — a BYOVD (Bring Your Own Vulnerable Driver) EDR-killer that unlinks kernel callback routines to blind CrowdStrike Falcon, SentinelOne, Microsoft Defender, and other EDR products. On Linux, SPECTRE loads the Specter kernel-module rootkit (disguised as acpi_pad.ko) which hides processes and itself via ftrace hooking rather than syscall-table patching. In parallel, the actor runs a large commodity/open-source arsenal (QuasarRAT, Gh0stCringe, Meterpreter, Noodle RAT, multiple "Potato"-family privilege-escalation tools) and monetizes access via BadIIS (a malware-as-a-service SEO-fraud IIS module also used by other Chinese-speaking crime groups) and a custom ASP.NET SEO-hijacking handler targeting Vietnamese search traffic.

Highest-value defensive angle: almost every step in this campaign after initial RCE produces a distinctive, low-noise process-execution or file-write artifact on the host — the "Google Chrome Start" scheduled task, the svchosts.exe (extra "s") QuasarRAT masquerade, the literal RTCore64.sys/DBUtil_2_3.sys BYOVD driver drop, and the [10-digit].[7-digit].dll reverse-shell naming convention from the Telerik ViewState exploit chain are all near-zero-FP signatures (Q1–Q18 below). The genuinely hard part of this threat is initial access: it depends on which of five 1-day CVEs (Zimbra, AjaxPro, Nacos, Telerik ViewState) is unpatched in your environment, and that patching gap is the single highest-leverage control.

⚠ Patch/upgrade Zimbra Collaboration Suite (CVE-2022-27925), AjaxPro (CVE-2021-23758), Nacos (CVE-2021-29441/29442), and Telerik UI for ASP.NET AJAX (CVE-2019-18935) first, and rotate any ASP.NET machineKey values that may be publicly known via the badsecrets database — the AI-generated exploitation guide Talos recovered states plainly that the entire ViewState attack chain depends on key-material exposure. Every other control in this pack is defense-in-depth for the post-exploitation phase.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
1Cisco Talos — "UAT-10147...integrates agentic AI" (direct fetch)Primary disclosure: actor profile, 170K-URL target list, Windows/Linux infection chains, AI-tooling narrative (PentestGPT, DeepAudit, ysoserial-driven AI playbook + 4 Python scripts), initial-access CVE listyes
1Cisco Talos — "UAT-10147 deploys SPECTRE" (direct fetch)SPECTRE implant internals (Windows 45-command / Linux 29-command sets, BYOVD, injection, credential theft), Specter Linux rootkit internals (ftrace hooking, magic-PID IPC), BadIIS/SeoEngineHandler, web shell, commodity-backdoor rosteryes
1Talos GitHub IOC file — "UAT-10147 integrates agentic AI.txt" (direct fetch)12 SHA256 hashes, 2 IPs, 14 staging URLs tied to the Windows infection chainyes
1Talos GitHub IOC file — "UAT-10147 deploys SPECTRE.txt" (direct fetch)44 SHA256 hashes, 4 IPs (1 shared with the first IOC file), 9 domains/URLs tied to SPECTRE/BadIIS/SEO-fraud infrastructureyes
2The Hacker News — "UAT-10147 Uses AI to Scale Server Attacks" (2026-08-24, direct fetch)Corroborates both Talos posts verbatim via direct quotes; adds SPECTRE first-observed date (April 2026) and a second target-list geography metric (top-5 destination countries by URL count)partial

Verification notes (per standing practice — vendor claims are checked, not assumed):

  • UAT-10147 is explicitly assessed by Talos as financially motivated cybercrime, not a nation-state actor — this pack's severity/type framing and hardening priorities follow that classification rather than treating it as APT-grade targeted espionage.
  • The two Talos posts report target/victim geography two different ways and this pack keeps them distinct rather than merging them: Talos' own post states affected/compromised servers were observed in Brazil, Bolivia, China, Canada, and Vietnam; The Hacker News separately reports the top-5 destination countries of the raw 170,000-URL target list (by resolved IP) as the U.S., India, the U.K., Germany, and the Netherlands. These are not contradictory — one is confirmed-compromise geography, the other is scan-target geography.
  • Three domains in the second Talos IOC file — www.xxxx.vip, spider.xxxx.com, and by extension the literal string "xxxx" — read as a possible placeholder/redaction rather than a genuine registered domain. Talos ships them in a machine-readable IOC file intended for direct ingestion (not narrative prose), so this pack includes them but downgrades them to medium confidence / hunt action rather than block, and flags the caveat explicitly in §4/§10.
  • Every atomic indicator (hash, IP, defanged domain) shipped in §4/§10 traces to one of the four direct-fetch source snapshots in UAT10147-SPECTRE-Hunt-sources/ (fetched 2026-08-26); see §18 for the full source list with access dates.
  • Prompt-injection screening: both Talos blog posts and the corroborating Hacker News article were screened for text addressed to an AI agent/assistant instructing it to take action, fetch further URLs, or treat something as pre-authorized. None was found in any of the three articles or the two raw GitHub IOC files. All fetched content was treated strictly as data to analyze, never as instructions.
03

Hunt Brief & Attack Chain

Hunt hypotheses (ordered by fidelity)

  1. H1 (high): A "Potato"-family privilege-escalation tool (EfsPotato/GodPotato/JuicyPotato/RustPotato, or the renamed prcc1.rar/prcc2.rar) executes on a Windows web server. Falcon: ProcessRollup2.
  2. H2 (high): certutil.exe retrieves a payload from published UAT-10147 staging infrastructure (adminapi.tippusoni.in, kl21177.com, 139.180.197.150). Falcon: ProcessRollup2.
  3. H3 (high): A scheduled task literally named "Google Chrome Start" is registered — UAT-10147's deceptive persistence mechanism for QuasarRAT/Gh0stCringe/SPECTRE. Falcon: ScheduledTaskRegistered.
  4. H4 (high): A process named svchosts.exe (extra "s" — QuasarRAT's masquerade of the legitimate singular svchost.exe) executes. Falcon: ProcessRollup2.
  5. H5 (high): The RTCore64.sys or DBUtil_2_3.sys vulnerable driver is written to disk — SPECTRE's BYOVD EDR-killer staging its payload. Falcon: PeFileWritten/NewExecutableWritten.
  6. H6 (high): A [10-digit].[7-digit].dll reverse-shell payload is written to disk — the distinctive naming convention from the Telerik/CVE-2019-18935 exploitation chain. Falcon: PeFileWritten/NewExecutableWritten.
  7. H7 (medium-high): Windows Defender exclusions are added for System32\inetsrv/SysWOW64\inetsrv — BadIIS defense-evasion staging. Falcon: ProcessRollup2.
  8. H8 (medium-high): A rogue local account is created and added to Administrators and Remote Desktop Users — the user.bat persistence step. Falcon: ProcessRollup2 (net/net1).
  9. H9 (medium-high): SAM/SYSTEM/SECURITY registry hives are saved to disk via reg.exe save — SPECTRE's offline credential-theft step. Falcon: ProcessRollup2.
  10. H10 (medium): An IIS worker process (w3wp.exe) spawns a shell or the C# compiler — a general web-shell / dynamic-compilation RCE follow-on indicator covering all four initial-access CVEs. Falcon: ProcessRollup2.
  11. H11 (medium): On Linux, the Specter rootkit LKM is loaded via an explicit insmod/modprobe acpi_pad invocation, or the fraudulent hardware-monitor.service systemd unit is enabled. Falcon: ProcessRollup2.
  12. H12 (medium-high): A root-context shell is spawned from a web-server or JVM parent process on Linux — the post-LPE follow-on indicator covering the six Linux privilege-escalation CVEs. Falcon: ProcessRollup2.
  13. H13 (high): A host contacts published UAT-10147/SPECTRE C2 IP or DNS infrastructure. Falcon: NetworkConnectIP4 / DnsRequest.

Attack chain

StepActionTelemetryHunt Angle
1AI-assisted recon (PentestGPT autonomous scan-and-exploit, DeepAudit source-code scanning) against the 170,000-URL target list from the actor's own infrastructureNone — occurs entirely on attacker-controlled infrastructure, not victim telemetryN8 — external threat-intel/ASM watch for the published C2/staging infrastructure reaching your perimeter
2RCE via one of five 1-day CVEs: Zimbra (CVE-2022-27925), AjaxPro (CVE-2021-23758), Nacos (CVE-2021-29441/29442), or Telerik ViewState (CVE-2019-18935) — the latter via an AI-generated exploitation guide using leaked/known machineKey values from badsecretsProcessRollup2 — first host-visible moment: IIS worker/Java process spawning an unexpected childQ11 (H10), Q16 (H12) / N1
3AI-generated Python automation (check_paths.py, deploy_implant.py, deploy_shell.py) diagnoses write access, drops the SPECTRE implant or an ASHX web shell, and confirms success via out-of-band webhook.site HTTP callbacksDnsRequest/NetworkConnectIP4 to webhook.site; ProcessRollup2 for the PowerShell WriteAllBytes handler writeQ13, N4
4Windows: back.bat uses certutil to pull EfsPotato (renamed prcc1.rar), bai.bat, and QuasarRAT (renamed svchosts.exe) from staging infrastructureProcessRollup2Q2, Q4, Q5
5EfsPotato/Potato-family privilege escalation to SYSTEM via SeImpersonatePrivilege abuseProcessRollup2Q1 (H1)
6Windows Defender exclusions added for inetsrv; BadIIS (dll.zip) and user.bat pulled via certutil and installed; appcmd list site reconProcessRollup2Q3 (H7), N5
7Rogue local admin + Remote Desktop Users account created (user.bat) for persistent RDP accessProcessRollup2 (net/net1)Q6 (H8)
8Persistence: Windows scheduled task "Google Chrome Start" (highest privileges, at logon) / Linux fraudulent systemd unit hardware-monitor.service (Before=sysinit.target)ScheduledTaskRegistered / ProcessRollup2 (systemctl)Q4 (H3), Q15 (H11)
9SPECTRE implant active: process injection (hollowing/EarlyBird/self-hollow), BYOVD EDR kill (RTCore64.sys/DBUtil_2_3.sys), credential theft (hive dump, Chrome/Edge, Credential Manager); Linux SPECTRE loads the Specter rootkit (acpi_pad.ko, ftrace hooks, magic-PID 31337 IPC)PeFileWritten/NewExecutableWritten; ProcessRollup2Q7–Q10, Q14 (H5, H9); N6, N7
10Monetization/C2: BadIIS and the custom ASP.NET SeoEngineHandler poison search rankings and serve malicious JS to Vietnamese browser traffic; SPECTRE and BadIIS beacon to published C2 infrastructureNetworkConnectIP4/DnsRequestQ17, Q18 (H13)

Gap: step 1 (attacker-side AI-driven recon/exploit-tooling) and the HTTP-layer details of steps 2–3 (the ViewState oracle logic, the web shell's X-ID: x9 / v=x9 auth-header check, the /api/v1/register and /api/v1/output SPECTRE C2 URI paths) are invisible to Falcon endpoint telemetry — Falcon does not parse HTTP request/response content. Close this gap with IIS/WAF/reverse-proxy access-log review (§7 native hunts).

04

Consolidated IOC Table

56 SHA256 hashes across two Talos-published IOC releases; full de-duplicated list also in the machine-readable appendix (§10). Domains flagged "generic-looking" carry medium confidence per the §2 verification note.

TypeValueConfidenceActionContextExpiry
ipv4139.180.197.150highdetectUAT-10147 open C2/staging directory (port 54321); shared across both IOC releases2027-02-26
ipv418.140.163.186highdetectUAT-10147 infrastructure (initial-access toolkit release)2027-02-26
ipv427.124.2.46highdetectSPECTRE/BadIIS infrastructure2027-02-26
ipv427.124.2.48highdetectSPECTRE/BadIIS infrastructure2027-02-26
ipv427.124.2.52highdetectSPECTRE/BadIIS infrastructure2027-02-26
domainadminapi.tippusoni.inhighdetectWindows infection-chain staging server (back.txt/bai.txt/user.txt/dll.zip/svchosts.exe)2027-02-26
domainkl21177.comhighdetectSecondary Windows staging server (prcc1.rar/dll.zip/user.bat)2027-02-26
domainjs.jyzyps.comhighdetectSEO-fraud JS payload host (vnnb.js, nb.js)2027-02-26
domainvn.mma888.cchighdetectSEO-fraud / BadIIS infrastructure2027-02-26
domainthceshi.healthsave.nethighdetectSPECTRE/BadIIS infrastructure2027-02-26
domainvip8888vn.xyzhighdetectSeoEngineHandler C2 (Vietnamese-targeting SEO fraud)2027-02-26
domainb.niupilao.viphighdetectSPECTRE/BadIIS infrastructure2027-02-26
domainvip.niupilao.viphighdetectSPECTRE/BadIIS infrastructure2027-02-26
domainudvyiwvfs.cyouhighdetectSPECTRE/BadIIS infrastructure2027-02-26
domainwww.xxxx.vipmediumhunt⚠ generic-looking string; Talos-published but not independently discussed in narrative text — see §22026-11-26
domainspider.xxxx.commediumhunt⚠ generic-looking string; Talos-published but not independently discussed in narrative text — see §22026-11-26
filepath%TEMP%\RTCore64.sys / %TEMP%\DBUtil_2_3.syshighhuntSPECTRE BYOVD vulnerable-driver staging (CVE-2019-16098 / CVE-2021-21551)2026-11-26
filepathC:\Windows\System32\drivers\etc\hosts:cachehighhuntNTFS ADS — observed SPECTRE C2-config storage location2026-11-26
filepath (pattern)[10 digits].[7 digits].dllhighhuntReverse-shell DLL naming convention, CVE-2019-18935/Telerik exploitation2026-11-26
filenamesvchosts.exehighhuntQuasarRAT masquerade (extra "s" vs. legitimate svchost.exe)2026-11-26
filenameacpi_pad.ko (as a loaded/staged file outside the kernel's own module tree)highhuntSpecter Linux rootkit disguise name2026-11-26
servicenamehardware-monitor.servicehighhuntSpecter rootkit fraudulent systemd persistence unit ("Hardware Performance Monitor", Before=sysinit.target)2026-11-26
tasknameGoogle Chrome StarthighhuntWindows scheduled-task persistence for QuasarRAT/Gh0stCringe/SPECTRE2026-11-26
http-headerX-ID: x9 (or query param v=x9)highhuntCustom two-layer web shell auth token (WAF/access-log hunt only, not Falcon-visible)2026-11-26
uri-path/api/v1/register , /api/v1/outputhighhuntSPECTRE Windows/Linux C2 HTTP POST endpoints (WAF/proxy-log hunt only)2026-11-26
sha256 ×12see §10 machine-readable appendixhighdetectUAT-10147 initial-access toolkit (EfsPotato/QuasarRAT/BadIIS release, source 01b)2027-02-26
sha256 ×44see §10 machine-readable appendixhighdetectSPECTRE/Specter/BadIIS toolkit release (source 02b)2027-02-26
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Internet-facing Windows/IIS servers (Zimbra, AjaxPro, Telerik UI for ASP.NET AJAX, or any app on IIS)Process execution, file-write, network, DNS (Falcon); IIS/WAF access logs (native)CriticalFalcon has no HTTP-request visibility — the ViewState exploitation oracle and web-shell auth-header check are only visible in web-server/WAF logs
Internet-facing Linux servers (Nacos or any app reachable for the exploited CVEs)Process execution, file-write, network, DNS (Falcon); auditd/journal logs (native)CriticalOnce the Specter rootkit is active, it hides its own process and kernel module from userland tools (and potentially from EDR sensor queries that rely on the same kernel APIs) via ftrace hooking — detection is strongest pre-load or via out-of-band integrity checks (§7)
Windows kernel / EDR sensor integrityFile-write telemetry for the two named vulnerable drivers; Microsoft vulnerable-driver blocklist enforcement (native, not Falcon telemetry)CriticalOnce RTCore64.sys/DBUtil_2_3.sys successfully loads and SPECTRE unlinks the EDR kernel callbacks, Falcon itself goes blind to subsequent process/thread/image-load events on that host for the remainder of the session — detection must land before or at the driver-load moment
Local Windows credential stores (SAM/SECURITY hives, Chrome/Edge login data, Windows Credential Manager)Process execution (commandline-based detection)HighMedium — SPECTRE's chromedump/vaultdump functions may execute in-process rather than spawning an external process, which would not appear in ProcessRollup2 at all; file-open telemetry (Q8) is an optional/premium data source in some Falcon sensor policies
DNS/network egress (all in-scope hosts)DnsRequest, NetworkConnectIP4HighLow — well covered by Q17/Q18 while published infrastructure stays live; requires periodic IOC-freshness review
06

ATT&CK Mapping

TacticTechnique IDTechnique NameObserved Behavior
Initial AccessT1190Exploit Public-Facing ApplicationZimbra (CVE-2022-27925), AjaxPro (CVE-2021-23758), Nacos (CVE-2021-29441/29442), Telerik ViewState (CVE-2019-18935)
Privilege EscalationT1068Exploitation for Privilege EscalationLinux LPE chain: CVE-2022-0995, CVE-2021-3156, CVE-2015-5287, CVE-2015-3246, CVE-2010-3904, CVE-2022-0847; Windows: RTCore64.sys/DBUtil_2_3.sys BYOVD driver exploitation
Privilege EscalationT1134Access Token Manipulation"Potato"-family tools (EfsPotato/GodPotato/JuicyPotato/RustPotato) abusing SeImpersonatePrivilege; SPECTRE steal_token/make_token/rev2self commands
ExecutionT1059.003 / T1059.001Windows Command Shell / PowerShellback.bat/bai.bat/user.bat batch scripts; PowerShell Defender-exclusion and web-shell-write commands
ExecutionT1059.004Unix ShellLinux LPE exploit execution, root shell spawned post-privesc
Defense EvasionT1562.001Impair Defenses: Disable or Modify ToolsWindows Defender exclusions added for inetsrv directories; SPECTRE BYOVD unlinking of EDR kernel callbacks
Defense EvasionT1014RootkitSpecter Linux kernel-module rootkit hiding processes, itself, and network connections via ftrace hooking
Defense EvasionT1027 / T1027.007Obfuscated/Encrypted Files; Dynamic API ResolutionSPECTRE per-string xorshift32 encryption, PEB hash-walk (DJB2) API resolution, randomized [10-digit].[7-digit].dll naming
Defense EvasionT1070.006TimestompSPECTRE timestomp command (both Windows and Linux variants)
Defense EvasionT1564.004Hide Artifacts: NTFS File Attributes (ADS)SPECTRE C2 configuration stored in the hosts file's Alternate Data Stream
Defense EvasionT1497Virtualization/Sandbox EvasionSPECTRE weighted anti-sandbox scoring (Windows: process blocklist/RAM/CPU/disk/sleep-accel/hostnames; Linux: 8-factor equivalent), self-terminates at score >=50
PersistenceT1053.005Scheduled Task"Google Chrome Start" task, highest privileges, runs at every logon
PersistenceT1543.002Systemd ServiceFraudulent "hardware-monitor.service" unit, Before=sysinit.target (loads before security tooling)
PersistenceT1547.006Kernel Modules and ExtensionsSpecter rootkit loaded as acpi_pad.ko-disguised LKM
PersistenceT1136.001 / T1098Create Account: Local Account / Account ManipulationRogue local account added to Administrators and Remote Desktop Users groups
PersistenceT1505.003Web ShellTwo-layer in-memory-compiled web shell (X-ID/v=x9 auth); AI-generated ASHX web-shell deployment (sss.ashx/up.ashx)
Credential AccessT1003.002OS Credential Dumping: SAMSPECTRE hashdump — SAM/SYSTEM/SECURITY hive save via RegSaveKeyA for offline extraction
Credential AccessT1555.003 / T1555.004Credentials from Web Browsers / Windows Credential ManagerSPECTRE chromedump (Chrome/Edge Login Data + Local State) and vaultdump (cmdkey /list)
Credential AccessT1056.001KeyloggingSPECTRE keylog_start/stop/dump commands
CollectionT1113Screen CaptureSPECTRE screenshot command
DiscoveryT1082 / T1083 / T1057 / T1069System Info / File & Dir / Process / Permission Groups DiscoveryAI-generated recon playbook (sysinfo, webroot enumeration, appcmd list site, icacls ACL checks, whoami /priv)
Command and ControlT1071.001Web ProtocolsSPECTRE HTTP POST beacons to /api/v1/register and /api/v1/output on a hardcoded (string-encrypted) fallback C2 domain
Command and ControlT1102Web ServiceNacos-based asynchronous exfiltration sink; webhook.site used for AI-script OOB exploitation-confirmation callbacks
Command and ControlT1105Ingress Tool Transfercertutil-based downloads of every stage (EfsPotato, QuasarRAT, BadIIS, SPECTRE, web shells)
ImpactT1584.001 / (non-ATT&CK: SEO fraud)Compromise Infrastructure: Domains (adjacent) / Search-result poisoningBadIIS MaaS module and custom SeoEngineHandler serve fabricated content to search crawlers and malicious JS to real Vietnamese users
07

Native Audit-Log Hunts

These checks cover the HTTP-layer exploitation/web-shell activity and the post-rootkit visibility gap noted in §3/§5, none of which are reliably visible in standard Falcon endpoint telemetry.

#HuntWhereWhat to look for
N1IIS/WAF/reverse-proxy access-log review for ViewState exploitationIIS logs, WAF/reverse-proxy logs in front of ASP.NET applicationsHTTP 500 responses with body content indicating InvalidCastException (the AI-guide's documented RCE-success oracle, not a failure) on requests carrying an oversized __VIEWSTATE parameter; repeated malformed-ViewState probes preceding a 500
N2Web-shell auth-header/parameter sweepIIS/WAF access logsRequests carrying an X-ID header or v query parameter with value x9 against any .ashx handler, especially sss.ashx/up.ashx
N3File integrity monitoring on IIS webrootsFIM agent / scheduled Get-FileHash sweepNew or modified .ashx/.aspx files outside a known deployment window, especially matching up.ashx/sss.ashx or containing Base64-encoded, reflection-loaded handler code
N4Outbound DNS/proxy log review for webhook.siteDNS logs, proxy/firewall logsAny in-scope web server resolving or connecting to webhook.site — the consistent OOB-callback endpoint across all four AI-generated Python scripts. High legitimate-use base rate elsewhere in the org, but a server-tier host reaching it is anomalous and worth a hunt-only rule (deliberately not shipped as a CQL query here due to FP risk outside a server-only scope)
N5IIS site-inventory command reviewCommand-line/process audit logs, change-management ticket systemappcmd.exe list site /config /xml or list vdir executed outside a documented change window
N6Linux /proc vs. ps process-count integrity checkScheduled shell script comparing ls /proc | grep -E '^[0-9]+$' | wc -l against independent process-enumeration sources (e.g., a kernel-level agent, container runtime process list)A discrepancy indicates a hidden PID — Specter's rootkit_hide (signal 62) removes the target task_struct from the kernel PID list, making /proc/<pid> invisible to userland tools that rely on it
N7Linux lsmod vs. kernel module list cross-checkScheduled comparison of lsmod output against /sys/module/ directory listing and, where available, a kernel-level/eBPF module-load audit trail independent of the linked-list Specter unlinks fromA module present in one source but not lsmod indicates the Specter rootkit hiding itself (signal 36); also check for acpi_pad appearing loaded when the host's ACPI/power-management configuration does not call for it
N8External attack-surface / threat-intel watchASM tooling, perimeter firewall/IDS logs, threat-intel feed ingestionAny inbound scanning or probing from the published UAT-10147 IP infrastructure (§4/§10) reaching your internet-facing IIS/Linux servers — the 170,000-URL target list means broad, opportunistic exposure is the primary risk driver, not targeted selection
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · "Potato"-family privilege-escalation tool execution
CONF HIGHFP LOWCOST LOW

Looks for: EfsPotato/GodPotato/JuicyPotato/RustPotato, or the renamed prcc1.rar/prcc2.rar, executing — UAT-10147's SeImpersonatePrivilege-abuse privilege-escalation step.

// HUNT: "Potato"-family privilege-escalation tool execution (EfsPotato/GodPotato/JuicyPotato/RustPotato or renamed prcc1/prcc2)
// MITRE: T1068, T1134
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate penetration-test/red-team engagements running these same public GitHub tools by their stock name
#event_simpleName = ProcessRollup2
| FileName = /^(efspotato|godpotato|juicypotato|rustpotato)(\.exe)?$|^prcc[12]\.(exe|rar)$/i
| table([@timestamp, aid, ComputerName, ParentBaseFileName, FileName, CommandLine, UserName], limit=200)
| sort(@timestamp, order=desc)
Q2 · certutil retrieving payloads from published UAT-10147 staging infrastructure
CONF HIGHFP LOWCOST LOW

Looks for: certutil.exe referencing the two known Windows-chain staging domains/IP in its command line.

// HUNT: certutil.exe download referencing published UAT-10147 staging infrastructure
// MITRE: T1105
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: none expected for these specific domains/IP; to hunt for NEW infrastructure broaden this to a generic certutil -urlcache -split -f pattern (higher FP, admin tooling also uses it)
#event_simpleName = ProcessRollup2
| FileName = /^certutil(\.exe)?$/i
| CommandLine = /(adminapi\.tippusoni\.in|kl21177\.com|139\.180\.197\.150)/i
| table([@timestamp, aid, ComputerName, CommandLine, UserName, ParentBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q3 · Windows Defender exclusion added for IIS inetsrv directories
CONF HIGHFP MEDCOST LOW

Looks for: a PowerShell Add-MpPreference -ExclusionPath or reg add to the Defender exclusions key, targeting inetsrv. FP: legitimate IIS extension installers occasionally add scoped Defender exclusions.

// HUNT: Windows Defender exclusion added for System32\inetsrv / SysWOW64\inetsrv (BadIIS defense-evasion staging)
// MITRE: T1562.001
// CONF: high
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate IIS module/extension installers occasionally add scoped Defender exclusions during setup
// TUNING: cross-check the source ComputerName/UserName against your change-management or patch-ticket system before treating a hit as malicious
#event_simpleName = ProcessRollup2
| FileName = /^(powershell|reg)(\.exe)?$/i
| CommandLine = /(ExclusionPath.*inetsrv|Exclusions.Paths.*inetsrv)/i
| table([@timestamp, aid, ComputerName, FileName, CommandLine, UserName, ParentBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q4 · Scheduled task "Google Chrome Start" persistence
CONF HIGHFP LOWCOST LOW

Looks for: the exact deceptive scheduled-task name UAT-10147 uses to run QuasarRAT/Gh0stCringe/SPECTRE at every logon with the highest privileges.

// HUNT: Scheduled task registered under the deceptive name "Google Chrome Start"
// MITRE: T1053.005
// CONF: high
// FP: low
// COST: low
// REQUIRES: ScheduledTaskRegistered
// FALSE POSITIVES: none expected — this exact literal task name is not created by any legitimate Chrome installer or Windows component
#event_simpleName = ScheduledTaskRegistered
| TaskName = /^Google Chrome Start$/i
| table([@timestamp, aid, ComputerName, TaskName, TaskExecutable, UserName], limit=200)
| sort(@timestamp, order=desc)
Q5 · svchosts.exe (QuasarRAT masquerade, extra "s") execution
CONF HIGHFP LOWCOST LOW

Looks for: a process literally named svchosts.exe (plural) — the legitimate Windows filename is singular svchost.exe; this exact typosquat never ships natively.

// HUNT: Process named svchosts.exe (extra "s") — QuasarRAT payload masquerade
// MITRE: T1036.005, T1105
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: none expected — no legitimate Windows component or common third-party software ships a binary named svchosts.exe
#event_simpleName = ProcessRollup2
| FileName = /^svchosts\.exe$/i
| table([@timestamp, aid, ComputerName, ParentBaseFileName, FileName, CommandLine, ImageFileName, UserName], limit=200)
| sort(@timestamp, order=desc)
Q6 · Rogue local admin + Remote Desktop Users account creation
CONF HIGHFP MEDCOST LOW

Looks for: net/net1 adding a user and/or adding an account to Administrators or Remote Desktop Users — the user.bat persistence step. FP: legitimate IT provisioning also uses these commands.

// HUNT: Local account created and added to Administrators / Remote Desktop Users (user.bat persistence)
// MITRE: T1136.001, T1098
// CONF: high
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate IT onboarding/provisioning scripts also use net user and net localgroup commands
// TUNING: correlate with a preceding Q1/Q2/Q3 hit on the same aid within a short window before treating as malicious; exclude known provisioning service accounts
#event_simpleName = ProcessRollup2
| FileName = /^net1?(\.exe)?$/i
| CommandLine = /(localgroup.*(Administrators|Remote Desktop Users).*\/add|user\s+\S+\s+\S+\s+\/add)/i
| table([@timestamp, aid, ComputerName, CommandLine, UserName, ParentBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q7 · SAM/SYSTEM/SECURITY registry hive dump via reg.exe save
CONF HIGHFP MEDCOST LOW

Looks for: reg.exe save against the SAM, SYSTEM, or SECURITY hives — SPECTRE's offline credential-theft step (equivalent to its internal RegSaveKeyA usage). FP: legitimate backup/AD-recovery tooling also runs this.

// HUNT: reg.exe save against SAM/SYSTEM/SECURITY hives (SPECTRE hashdump / offline NT-hash extraction staging)
// MITRE: T1003.002
// CONF: high
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate backup or AD-recovery/DR tooling also runs reg save against these hives on a schedule
// TUNING: allow-list known backup/DR service accounts and their scheduled maintenance windows; treat any hit on an internet-facing IIS/web-adjacent host as high priority regardless
#event_simpleName = ProcessRollup2
| FileName = /^reg(\.exe)?$/i
| CommandLine = /save.*HKLM.(SAM|SYSTEM|SECURITY)/i
| table([@timestamp, aid, ComputerName, CommandLine, UserName, ParentBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q8 · Non-browser process opening Chrome/Edge credential store (chromedump)
CONF MEDFP MEDCOST LOW

Looks for: a process other than chrome.exe/msedge.exe opening the browser's "Login Data" file — SPECTRE's chromedump function. FP: legitimate credential-migration/backup tools do the same.

// HUNT: Non-browser process opening Chrome/Edge "Login Data" credential store (SPECTRE chromedump)
// MITRE: T1555.003
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: FileOpenInfo — validate this event is enabled for your sensor policy; file-open telemetry is an optional/premium data source in some Falcon configurations
// FALSE POSITIVES: legitimate password-migration or endpoint-backup tooling also opens this file from a non-browser process; chrome.exe/msedge.exe opening their own store is expected and must be filtered at triage (CQL/LogScale regex has no negative-lookahead support, so the exclusion is not done in-query)
// TUNING: baseline your approved credential-migration/backup tools and exclude by ContextBaseFileName before promoting; correlate with a Q1/Q7 hit on the same aid; at triage, drop rows where ContextBaseFileName is chrome.exe or msedge.exe
#event_simpleName = FileOpenInfo
| TargetFileName = /\\(Google\\Chrome|Microsoft\\Edge)\\User Data\\.*\\Login Data$/i
| table([@timestamp, aid, ComputerName, TargetFileName, ContextBaseFileName, UserName], limit=200)
| sort(@timestamp, order=desc)
Q9 · Windows Credential Manager enumeration via cmdkey /list (vaultdump)
CONF MEDFP HIGHCOST LOW

Looks for: cmdkey.exe /list — SPECTRE's LSASS-free Credential Manager enumeration. FP: helpdesk/IT troubleshooting commonly runs this exact command.

// HUNT: cmdkey.exe /list execution (SPECTRE vaultdump — Windows Credential Manager enumeration)
// MITRE: T1555.004
// CONF: medium
// FP: high
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: helpdesk/IT troubleshooting and some backup-credential tooling run this exact command routinely
// TUNING: this is too noisy to alert on alone — correlate with a Q1/Q7/Q10 hit on the same aid within a short window before triage
#event_simpleName = ProcessRollup2
| FileName = /^cmdkey(\.exe)?$/i
| CommandLine = /\/list/i
| table([@timestamp, aid, ComputerName, CommandLine, ParentBaseFileName, UserName], limit=200)
| sort(@timestamp, order=desc)
Q10 · BYOVD vulnerable driver dropped to disk (RTCore64.sys / DBUtil_2_3.sys)
CONF HIGHFP LOWCOST LOW

Looks for: the two named vulnerable kernel drivers SPECTRE uses for its EDR-killing BYOVD attack, written to disk.

// HUNT: RTCore64.sys or DBUtil_2_3.sys written to disk (SPECTRE BYOVD EDR-killer staging, CVE-2019-16098 / CVE-2021-21551)
// MITRE: T1068, T1562.001
// CONF: high
// FP: low
// COST: low
// REQUIRES: PeFileWritten / NewExecutableWritten
// FALSE POSITIVES: none expected for a fresh write on an endpoint that does not run legitimate MSI Afterburner (RTCore64.sys) or Dell BIOS-update tooling (DBUtil_2_3.sys) — treat ANY hit on a server as a priority-1 EDR-blinding event
#event_simpleName = /PeFileWritten|NewExecutableWritten/
| TargetFileName = /\\(RTCore64|DBUtil_2_3)\.sys$/i
| table([@timestamp, aid, ComputerName, TargetFileName, SHA256HashData, ContextBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q11 · IIS worker process spawning a shell or the C# compiler
CONF HIGHFP MEDCOST LOW

Looks for: w3wp.exe spawning a command/script interpreter or csc.exe — the first host-visible moment of Zimbra/AjaxPro/Nacos/Telerik ViewState exploitation or the CodeDomProvider-based web shell's dynamic compilation. FP: some legitimate ASP.NET apps shell out; first-request JIT compilation also spawns csc.exe.

// HUNT: IIS worker process (w3wp.exe) spawning a shell/script interpreter or the C# compiler
// MITRE: T1190, T1059, T1505.003
// CONF: high
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: a small number of legitimate ASP.NET applications intentionally shell out; ASP.NET's own first-request dynamic compilation can spawn csc.exe
// TUNING: baseline known-legitimate w3wp.exe child processes per application pool for 7-14 days before promoting to a block-capable IOA; exclude AppPool identities tied to known build/CI-integrated web apps
#event_simpleName = ProcessRollup2
| ParentBaseFileName = /^w3wp\.exe$/i
| FileName = /^(cmd|powershell|pwsh|cscript|wscript|csc|mshta|rundll32)(\.exe)?$/i
| table([@timestamp, aid, ComputerName, ParentBaseFileName, FileName, CommandLine, UserName], limit=200)
| sort(@timestamp, order=desc)
Q12 · Randomized reverse-shell DLL naming convention (CVE-2019-18935)
CONF HIGHFP LOWCOST LOW

Looks for: a DLL matching the [10 digits].[7 digits].dll naming pattern — the distinctive artifact of reverse-shell payloads dropped via the Telerik UI ViewState exploitation chain.

// HUNT: Reverse-shell DLL matching the [10-digit].[7-digit].dll naming convention (CVE-2019-18935 / Telerik exploitation)
// MITRE: T1505.003, T1027
// CONF: high
// FP: low
// COST: low
// REQUIRES: PeFileWritten / NewExecutableWritten
// FALSE POSITIVES: none expected — this exact 10-digit-dot-7-digit naming is not a standard .NET temp-file or ASP.NET compilation-cache convention
#event_simpleName = /PeFileWritten|NewExecutableWritten/
| TargetFileName = /.\d{10}\.\d{7}\.dll$/i
| table([@timestamp, aid, ComputerName, TargetFileName, SHA256HashData, ContextBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q13 · PowerShell writing a new .ashx handler into an IIS webroot
CONF MEDFP MEDCOST LOW

Looks for: PowerShell's [IO.File]::WriteAllBytes writing an .ashx file — the AI-generated deploy_shell.py script's two-step web-shell drop technique. FP: legitimate deployment/config-management tooling occasionally writes handlers this way.

// HUNT: PowerShell [IO.File]::WriteAllBytes writing a .ashx file into an IIS webroot (AI-generated web-shell deploy script)
// MITRE: T1505.003, T1140
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate deployment/config-management scripts occasionally write .ashx handlers using the same WriteAllBytes technique
// TUNING: correlate with a preceding w3wp.exe-parented hit (Q11) or a recent exploitation-window alert before treating as malicious; exclude known CI/CD deployment service accounts
#event_simpleName = ProcessRollup2
| FileName = /^powershell(\.exe)?$/i
| CommandLine = /WriteAllBytes.*\.ashx/i
| table([@timestamp, aid, ComputerName, CommandLine, ParentBaseFileName, UserName], limit=200)
| sort(@timestamp, order=desc)
Q14 · Linux: Specter rootkit kernel module load disguised as acpi_pad
CONF MEDFP LOWCOST LOW

Looks for: an explicit insmod/modprobe acpi_pad invocation — the legitimate acpi_pad module is normally auto-loaded by the kernel at boot, not manually invoked by name, so an explicit invocation is itself the anomaly.

// HUNT: Manual insmod/modprobe invocation naming acpi_pad (Specter Linux rootkit disguise)
// MITRE: T1014, T1547.006
// CONF: medium
// FP: low
// COST: low
// REQUIRES: ProcessRollup2 on Linux hosts
// FALSE POSITIVES: environments with custom ACPI/power-management tooling that manually reloads this module by name (rare)
#event_simpleName = ProcessRollup2
| FileName = /^(insmod|modprobe)$/i
| CommandLine = /acpi_pad/i
| table([@timestamp, aid, ComputerName, CommandLine, ParentBaseFileName, UserName], limit=200)
| sort(@timestamp, order=desc)
Q15 · Linux: fraudulent "hardware-monitor.service" systemd persistence
CONF MEDFP MEDCOST LOW

Looks for: systemctl enable/start for the fraudulent hardware-monitor.service unit that loads Specter before security tooling initializes (Before=sysinit.target).

// HUNT: systemd service enabled/started for the Specter rootkit's fraudulent "hardware-monitor.service" unit
// MITRE: T1543.002, T1036.005
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2 on Linux hosts
// FALSE POSITIVES: a generically-named "hardware monitor" service could coincidentally exist in some environments' custom tooling
// TUNING: verify the underlying unit file's ExecStart binary path and the loaded kernel module against the legitimate acpi_pad.ko location under /lib/modules/ before treating a hit as malicious
#event_simpleName = ProcessRollup2
| FileName = /^systemctl$/i
| CommandLine = /(enable|start).*hardware-monitor/i
| table([@timestamp, aid, ComputerName, CommandLine, UserName], limit=200)
| sort(@timestamp, order=desc)
Q16 · Linux: root shell spawned from a web-server/JVM process
CONF HIGHFP MEDCOST LOW

Looks for: a shell running as root whose parent is a web-server or JVM process — the post-privilege-escalation follow-on indicator covering the six Linux LPE CVEs (CVE-2022-0995, CVE-2021-3156, CVE-2015-5287, CVE-2015-3246, CVE-2010-3904, CVE-2022-0847). FP: some legitimate wrapper scripts shell out from these parents.

// HUNT: Root-context shell spawned from a web-server/JVM parent process (post-LPE follow-on)
// MITRE: T1190, T1068, T1059.004
// CONF: high
// FP: medium
// COST: low
// REQUIRES: ProcessRollup2 on Linux hosts
// FALSE POSITIVES: some legitimate application health-check/wrapper scripts shell out from these parents; root-context is the key discriminator since these services rarely run as root in a hardened deployment
// TUNING: exclude known service-management wrapper scripts by CommandLine pattern; expected to be rare if the web server process itself is not configured to run as root
#event_simpleName = ProcessRollup2
| ParentBaseFileName = /^(httpd|nginx|java|tomcat|catalina)$/i
| FileName = /^(sh|bash|dash)$/i
| UserName = /^root$/i
| table([@timestamp, aid, ComputerName, ParentBaseFileName, FileName, CommandLine, UserName], limit=200)
| sort(@timestamp, order=desc)
Q17 · Outbound connection to published UAT-10147/SPECTRE C2 IP infrastructure
CONF HIGHFP LOWCOST LOW

Looks for: outbound connections to any of the 5 published UAT-10147/SPECTRE C2 IPs across both Talos IOC releases.

// HUNT: Outbound connection to published UAT-10147/SPECTRE C2 infrastructure IP addresses
// MITRE: T1071.001, T1105
// CONF: high
// FP: low
// COST: low
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: none expected — re-verify each IP is still live/attacker-controlled before enabling a block action, as shared hosting providers can reassign IPs over time
#event_simpleName = NetworkConnectIP4
| in(RemoteAddressIP4, values=["139.180.197.150","18.140.163.186","27.124.2.46","27.124.2.48","27.124.2.52"])
| table([@timestamp, aid, ComputerName, RemoteAddressIP4, RemotePort, ContextBaseFileName, CommandLine], limit=max)
| sort(@timestamp, order=desc)
Q18 · DNS resolution of published UAT-10147/SPECTRE/BadIIS C2 domains
CONF HIGHFP LOWCOST LOW

Looks for: DNS resolution of any of the 9 published high-confidence C2/staging domains across both Talos IOC releases. The two "generic-looking" domains (§2/§4) are deliberately excluded from this block-grade query; hunt them separately via §10.

// HUNT: DNS resolution of published UAT-10147/SPECTRE/BadIIS C2 domains
// MITRE: T1071.001
// CONF: high
// FP: low
// COST: low
// REQUIRES: DnsRequest
// FALSE POSITIVES: none expected for these specific domains; re-verify liveness periodically
#event_simpleName = DnsRequest
| DomainName = /^(adminapi\.tippusoni\.in|kl21177\.com|js\.jyzyps\.com|vn\.mma888\.cc|thceshi\.healthsave\.net|vip8888vn\.xyz|b\.niupilao\.vip|vip\.niupilao\.vip|udvyiwvfs\.cyou)$/i
| table([@timestamp, aid, ComputerName, DomainName, ContextProcessId], limit=200)
| sort(@timestamp, order=desc)
09

CrowdStrike Custom IOA Recommendations

IOA NameField PatternsBenign ExclusionsDeployment Path
IOA-1 · Potato-family tool execution (Q1)FileName matching efspotato/godpotato/juicypotato/rustpotato/prcc1/prcc2Authorized pentest/red-team engagement windows (allow-list by change ticket)Endpoint Security → Custom IOA → Process Creation, Detect
IOA-2 · certutil to known staging infra (Q2)FileName is certutil.exe; CommandLine containing adminapi.tippusoni.in / kl21177.com / 139.180.197.150None expectedCustom IOA → Process Creation, Detect+Block
IOA-3 · "Google Chrome Start" scheduled task (Q4)TaskName = "Google Chrome Start"None expectedCustom IOA → Scheduled Task, Detect+Block
IOA-4 · svchosts.exe execution (Q5)FileName = svchosts.exeNone expectedCustom IOA → Process Creation, Detect+Block
IOA-5 · BYOVD driver drop (Q10)TargetFileName matching RTCore64.sys / DBUtil_2_3.sysHosts running legitimate MSI Afterburner or Dell BIOS-update tooling (rare on servers)Custom IOA → File Write, Detect+Block
IOA-6 · [10-digit].[7-digit].dll drop (Q12)TargetFileName matching the digit-dot-digit .dll patternNone expectedCustom IOA → File Write, Detect+Block
IOA-7 · Known C2 IP contact (Q17)RemoteAddressIP4 in published C2 IP setNone expected; re-verify liveness before enabling BlockCustom IOA → Network Connection, Detect+Block
IOA-8 · Known C2 domain resolution (Q18)DomainName in published high-confidence domain setNone expected; excludes the two "generic-looking" domains by designCustom IOA → DNS Request, Detect+Block
Q3, Q6, Q7, Q8, Q9, Q11, Q13, Q14, Q15, and Q16 carry FP medium/high and stay as tuned hunt/investigate queries — promote to IOA only after the baselining steps noted in each query's // TUNING: line are complete in your tenant.
10

Machine-Readable IOC Appendix

Every value below traces to a saved source snapshot in UAT10147-SPECTRE-Hunt-sources/ — see §18.

Falcon IOC Management CSVbulk import — 56 hashes + 5 IPs + 11 domains
type,value,action,severity,expiration,description,tags
ipv4,139.180.197.150,detect,critical,2027-02-26,UAT-10147 open C2/staging directory,campaign:UAT10147
ipv4,18.140.163.186,detect,high,2027-02-26,UAT-10147 infrastructure,campaign:UAT10147
ipv4,27.124.2.46,detect,high,2027-02-26,SPECTRE/BadIIS infrastructure,campaign:UAT10147
ipv4,27.124.2.48,detect,high,2027-02-26,SPECTRE/BadIIS infrastructure,campaign:UAT10147
ipv4,27.124.2.52,detect,high,2027-02-26,SPECTRE/BadIIS infrastructure,campaign:UAT10147
domain,adminapi.tippusoni.in,detect,high,2027-02-26,Windows infection-chain staging,campaign:UAT10147
domain,kl21177.com,detect,high,2027-02-26,Secondary Windows staging server,campaign:UAT10147
domain,js.jyzyps.com,detect,high,2027-02-26,SEO-fraud JS payload host,campaign:UAT10147
domain,vn.mma888.cc,detect,high,2027-02-26,SEO-fraud / BadIIS infrastructure,campaign:UAT10147
domain,thceshi.healthsave.net,detect,high,2027-02-26,SPECTRE/BadIIS infrastructure,campaign:UAT10147
domain,vip8888vn.xyz,detect,high,2027-02-26,SeoEngineHandler C2,campaign:UAT10147
domain,b.niupilao.vip,detect,high,2027-02-26,SPECTRE/BadIIS infrastructure,campaign:UAT10147
domain,vip.niupilao.vip,detect,high,2027-02-26,SPECTRE/BadIIS infrastructure,campaign:UAT10147
domain,udvyiwvfs.cyou,detect,high,2027-02-26,SPECTRE/BadIIS infrastructure,campaign:UAT10147
domain,www.xxxx.vip,hunt,medium,2026-11-26,generic-looking – hunt not block; see Source Review,campaign:UAT10147
domain,spider.xxxx.com,hunt,medium,2026-11-26,generic-looking – hunt not block; see Source Review,campaign:UAT10147
sha256,175e83adc721cd7d634ebd2c63fb8d2404c009067bc7719ef02c5d1f9d81e9a1,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,1f0496ad392b5b9edf9e59a56af4d8e17638ddbb12e086f104d9a0f316ad59a1,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,37cabc04da36e710dd4aee8609ab7553c039a54dd085460854e9ddb49b0e7032,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,50232092004b9ad335e1e72e3a6dcfde93c4470007ddfcc637e6e5f899f68be0,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,73b272612cec9e03a7e2f7516ece600fb1b45b719fa9d93b382ed25ec314e5c0,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,9fa27b231502d6d33441ab54227da50cbd325847ce2272f9c0e79b4ea873e432,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,cfce59111338701b2990be9aadc80166ac0618cb57483d6a065f1e2526a34494,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,fbe9c6052d7261bd252322e155d86bd370340f1fbb2b0a1e9c7b444f6275614a,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,00892f276299a13721642e8a9bcbcb949a658547c6c8271866a1997b79f1e5c5,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,23a83c6bbdd7d6c09a5187338065d15f2a90a252772813cba83b9818aa56cef7,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,8280502c2c6902e61fc4c02a9a81b4720688449a5bca3d89dbd1e2edd507c69a,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,d190b349d791267a9583ba9f4a1ab0e4199d1a3abfd4dae514ed5def0754ba94,detect,high,2027-02-26,UAT-10147 initial-access toolkit,campaign:UAT10147
sha256,008f28989917a9712657de5675fc024b65cb27536734e9b54ea6c3af00ea70f2,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,11ccfdfb0dfe782ba0eeabaa8e65619a792f9258476a072b774ef19a5240b944,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,1c2edfb1b280fdc570591c88da5b1adbd249be6b8cc306a42525a515adaf73e8,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,21274d668e28b01172fa326f42e396b825708ddc2336ae388d6729627c525775,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,43124b72616ef38b0c8a07b167e971b0e4479626fb5ef2303b2ed993e21f6c4c,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,50d88f3d8f91f18195f1e9948cf6b47d69d7e19226957b1e7e3b2e4bd7c4fef4,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,59a386b75b84f137c4e17c37e3430fc93c0184102b3fbdfe649cef2e0335d85b,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,684e7ed556dcc9e2fe24fcfd73e6b9c29d7126584f87c5331c2607d39e29329f,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,76df454fe87620dd59efb483a56a8b573c7d16207635cf2616a67e25dab57779,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,77cce6576f93961651133b543948ea3853cc2f06b8c3fd523f6858d6d18ad775,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,830c6ca21a7da0eed436f8371c8a86baa62ab857a5478a222dd3189645d4d084,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,91d00ca46d1013c031aa8ff2e54b7b3496bac78f6147842766bffd4d32a2e042,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,7565a5bc56fcd94c7f52cf7428747cd4f52d0d3b485900d3d9b06b470ccba23b,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,b74beab9dac9ee7853b5e846eec6f778db01867b49f64d6be259ea9e19006121,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,bfbd1aa2c0ace1575e86dc5cedc0754e4ae4aae97e70ac9f0523a2e8e8b22ed9,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,c88dab534081650d5a385f9bc5c61eced41b4e9fe63ace6173aa536c4aaffa67,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,cf0a6353f1fccf63fca02ed41eafd3da8d55f77b8b4c45666a37fa3cdc33da55,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,41f1514ad52c870bc4b51291cb939067e8ace23ec308419253ee0a2497bf2e21,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,dd4c16c65513c3eb66691f87d5bb5595d38554395ec89be2b9e325e013ef53d5,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,dee976f262498184d746cc8305cc9e6905ad762c661df8d7daec120f14060b41,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,2e9f10f5cc9fb5c9f935ee78a21de70168e398b7a47db54373a5dcb19c485398,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,e315f955a9b44a9c875d2e47f2a91e9e77043bd553ad616ada38eaf669d44b2e,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,58725b8e592435026928c39622f41b7ad4f4dc62e353eb459c3b4858eafd9e82,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,544a7d9d4de3904ad35e6cc87f34cb556fda722c3d3cae1a6334645f1a950cc7,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,9a8e9d587b570d4074f1c8317b163aa8d0c566efd88f294d9d85bc7776352a28,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,722bd55e1496cb614f4f365a4203da6166c637f2c6b9ec0da3844637bc6e9e9d,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,0345406e85aa7759c0af0372c23de0c5f3e9b6d53e970405e5c168f55c51a7e0,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,23a7adda56e2e5519e01f57f16f99e4be611aac4fa908f2ee2d99e3d96e14865,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,9619259c1ea9b1c6b8279fdb761018b14a41acc94f67f1469bf68bf393b4ba74,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,f07d869ddd17d4359e26da43574d0d07987b500a390196b72b3c1747a4cbb3bf,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,d0da3be9de8e7068a65247b8195d73e88f454820e13c1de62675e1f845d6fabf,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,0f56c703e9b7ddeb90646927bac05a5c6d95308c8e13b88e5d4f4b572423e036,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,35c960bda30ceeb22216fad7776b43ecf44aaccf2ff7f600f91a1afb49a8a43c,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,7172ebfb4e96e3b0bff59e87f670c5512144d445b276746c8c78593272720ebf,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,b02664c71d1a40760ff6eb253d1a9022d93262698d528d95e8983bf848b8827b,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,dbe956ae1135e81ae06220393ee80caacc62006295a1fb26e87f048a7a78b81b,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,4bbba075f56ee15760b1397100a82f2c7425b866cf1a35684fda5b712783f97b,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,1c70b2a55b6f3a3382f40fe15293b609d047103b0c6c7da0049f7c0e365ea880,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,fc54b68f0a375600c8ab23d894b56837db287b32209c0a455fb439a780593c80,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,b0c1c3b806a60807854173f2199ba49baf5c2729051b14e4725cb90cfc755519,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,089b19f7760a53272f580432460dc959cbb8ffb87bde43152795ff5d893debdd,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,1fc83b41d201bfbc4db94e332e0c770be9d74591d9817c1b938ccdf17c7a48a9,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,fea09e46f6adf23aa17c56faa14d19168b5417ed90d7b2b36f2c8dd5f6014ea7,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
sha256,061b765659bf24b62d242d4f8ca9a9884037e186714517509a8f48b54e1123a0,detect,high,2027-02-26,SPECTRE/Specter/BadIIS toolkit,campaign:UAT10147
Behavioral Signaturespaths / tasks / services / patterns
Scheduled task:   Google Chrome Start (Windows, highest privileges, at logon)
QuasarRAT:        svchosts.exe (extra "s")
BYOVD drivers:    %TEMP%\RTCore64.sys ; %TEMP%\DBUtil_2_3.sys
SPECTRE C2 ADS:   C:\Windows\System32\drivers\etc\hosts:cache
Reverse-shell DLL pattern: [10 digits].[7 digits].dll
Windows privesc renamed:   prcc1.rar, prcc2.rar (EfsPotato)
Windows staging paths:     C:\ProgramData\dll.zip ; C:\ProgramData\user.bat
Web shell auth:            HTTP header X-ID: x9  OR  query param v=x9
SPECTRE C2 URIs:           /api/v1/register ; /api/v1/output
Linux rootkit module:      acpi_pad.ko (disguised)
Linux fraudulent service:  hardware-monitor.service (Before=sysinit.target)
Linux rootkit IPC:         kill() to PID 31337 (0x7A69), signals 35/36/37/62
ASHX web shell files:      sss.ashx ; up.ashx
Web shell dev path:        C:\Users\dajiba\Desktop\phantom-v2\data\arsenal\webshells\sss.ashx
BadIIS PDB strings:        demo.pdb ; service.pdb (x\u795e-branded build tree)
Staging URLs (Windows chain): https://adminapi.tippusoni.in/4/pr.exe, /4/prcc2.txt, /4/prcc2.rar, /4/dll.zip,
                            /4/user.txt, /4/back.txt, /4/bai.txt, /4/svchosts.exe, /5/pr.exe, /5/bai.txt,
                            /5/svchosts.exe ; https://kl21177.com/1/prcc1.rar, /1/dll.zip, /1/user.bat ;
                            http://139.180.197.150:54321/4/pr.exe, /4/bai.txt, /4/svchosts.exe
SEO-fraud JS payloads:     https://js.jyzyps.com/js/vnnb.js , /js/nb.js
Named Malware / Toolingactor + toolkit reference
Actor:            UAT-10147 (Chinese-speaking, financially motivated — Cisco Talos)
Implants:         SPECTRE (Windows + Linux cross-platform C2, C, Havoc-derived on Windows)
                  Specter (Linux kernel-module rootkit, loaded by SPECTRE, disguised as acpi_pad.ko)
SEO fraud:        BadIIS (MaaS IIS module) ; custom ASP.NET "SeoEngineHandler" (Vietnamese targeting)
Commodity tools:  QuasarRAT, Gh0stCringe (Go-loader shellcode), Meterpreter, Noodle RAT (Type 0x03A2 ELF)
Privesc tools:    EfsPotato, GodPotato, JuicyPotato, RustPotato
AI tooling:       PentestGPT (autonomous scan-and-exploit), DeepAudit (AI source-code vuln scanning),
                  AI-generated ViewState RCE guide + check_paths.py / deploy_implant.py / deploy_shell.py / exfil.py
Exploit CVEs:     CVE-2022-27925 (Zimbra), CVE-2021-23758 (AjaxPro), CVE-2021-29441/29442 (Nacos),
                  CVE-2019-18935 (Telerik UI ViewState)
Linux LPE CVEs:   CVE-2022-0995, CVE-2021-3156 (Baron Samedit), CVE-2015-5287, CVE-2015-3246,
                  CVE-2010-3904, CVE-2022-0847 (Dirty Pipe)
BYOVD CVEs:       CVE-2019-16098 (MSI RTCore64.sys), CVE-2021-21551 (Dell DBUtil_2_3.sys)
Talos coverage:   ClamAV: Py.Loader.Tool-10060293-1/2, Win.Malware.Generic-10060228-0/-10060235-0/-10060218-0/
                  -9883082-0/-10060252-0/-10060220-0, Win.Loader.Downloader-10060287-1, Win.Malware.BadPotato-10060230-0,
                  Win.Exploit.Marte-10033857-0, Unix.Rootkit.Malware-10060258-0, Unix.Rootkit.Spectre-10060260-0,
                  Win.Tool.GodPotato-10019688-1, Win.Tool.juicypotato-10041758-0, Win.Malware.BadIIS-10059985-0,
                  Win.Malware.Ulise-10056576-0, Unix.Backdoor.Msfvenom-10012672-0, Win.Loader.BadiisSet-10060291-1,
                  Asp.Rootkit.Badiis-10060290-1, Unix.Trojan.Backdoor-6678692-0
                  SNORT SIDs: 1:66690, 1:66688, 1:66689, 1:66696, 1:66697, 1:301548
Patch / Exposure Auditverification checklist
# Confirm patch status for the four initial-access CVEs
#   Zimbra Collaboration Suite: version fixes CVE-2022-27925
#   AjaxPro: version fixes CVE-2021-23758 deserialization
#   Alibaba Nacos: version fixes CVE-2021-29441 / CVE-2021-29442
#   Telerik UI for ASP.NET AJAX: version fixes CVE-2019-18935

# ASP.NET machineKey exposure check
#   Confirm validationKey/decryptionKey are NOT the framework default and do NOT
#   appear in the public "badsecrets" known/leaked-key database
#   https://github.com/blackhillsinfosec/badsecrets

# Linux LPE patch check (run on each server)
#   Confirm kernel/sudo/ABRT/libuser versions post-date:
#   CVE-2022-0995, CVE-2021-3156, CVE-2015-5287, CVE-2015-3246, CVE-2010-3904, CVE-2022-0847

# Microsoft vulnerable-driver blocklist check (PowerShell, Windows)
Get-CimInstance -query "SELECT * FROM Win32_PnPSignedDriver" |
  Where-Object { $_.DeviceName -match "RTCore64|DBUtil" }
# Confirm HVCI / Microsoft's vulnerable driver blocklist is ENABLED and current:
Get-CimInstance -Namespace root\Microsoft\Windows\DeviceGuard -ClassName Win32_DeviceGuard |
  Select-Object VirtualizationBasedSecurityStatus, CodeIntegrityPolicyEnforcementStatus

# Linux kernel module signature enforcement check
cat /proc/sys/kernel/tainted
grep -r "CONFIG_MODULE_SIG_FORCE" /boot/config-$(uname -r)
11

Detection Validation Gates

GateRequirement
Telemetry readyConfirm ProcessRollup2, PeFileWritten/NewExecutableWritten, ScheduledTaskRegistered, NetworkConnectIP4, and DnsRequest are flowing for every in-scope Windows/IIS and Linux host; confirm FileOpenInfo is enabled in your sensor policy before relying on Q8
Benign baselineRun Q3, Q6, Q7, Q9, Q11, Q13, Q15, and Q16 in hunt-only mode for at least 7–14 days to capture legitimate admin/deployment/backup activity on the in-scope fleet before writing exclusions
Positive testsLab-verify Q4 (register a test scheduled task literally named "Google Chrome Start" in a sandbox), Q10 (drop a renamed, non-executing copy of a same-named test file to a lab %TEMP%), and Q14 (invoke modprobe acpi_pad in an isolated Linux VM) each return a row before relying on them in production
PromotionPromote IOA-1 through IOA-8 (§9) only after the above; keep Q3, Q6–Q9, Q11, Q13–Q16 as tuned hunt queries until their FP-medium/high exclusions are baselined
12

Hardening — Tiered & Deployable

UAT-10147's entire attack chain begins with one of four unpatched 1-day CVEs (Windows/IIS) or a chain of Linux LPE CVEs. Patching removes initial access outright. The BYOVD EDR-killer and Linux rootkit are the two controls that most directly protect your detection capability itself — get those in place even if patching lags.

Immediate — this week
  • Patch/upgrade Zimbra Collaboration Suite, AjaxPro, Alibaba Nacos, and Telerik UI for ASP.NET AJAX to versions that fix CVE-2022-27925, CVE-2021-23758, CVE-2021-29441/29442, and CVE-2019-18935 respectively — M1051 (Update Software). Closes every confirmed initial-access vector in this campaign.
  • Rotate ASP.NET machineKey validationKey/decryptionKey values on any application using auto-generated or default keys, and check them against the public badsecrets known/leaked-key database — ⚠ best-practice, no single formal CIS/MS-Baseline control number covers ViewState key hygiene specifically; Microsoft's own ASP.NET machineKey guidance is the authoritative source. The AI-generated exploitation guide Talos recovered states the entire ViewState RCE chain depends on this exposure.
  • Enable/verify Microsoft's vulnerable-driver blocklist (HVCI or the standalone driver blocklist policy) fleet-wideM1038 (Execution Prevention). Directly blocks RTCore64.sys and DBUtil_2_3.sys from loading, neutralizing SPECTRE's EDR-killing capability before it can execute.
  • Patch Linux LPE-vulnerable components (kernel, sudo, ABRT, libuser) to versions post-dating CVE-2022-0995, CVE-2021-3156, CVE-2015-5287, CVE-2015-3246, CVE-2010-3904, and CVE-2022-0847 — M1051.
Near term — pilot first, 1–4 weeks
  • Enforce Linux kernel module signature verification (CONFIG_MODULE_SIG_FORCE or Secure-Boot-tied lockdown mode) — M1045 (Code Signing), the closest Linux-side control equivalent. Blocks the unsigned Specter rootkit LKM from loading regardless of the disguise name used.
  • Restrict SeImpersonatePrivilege / reduce IIS AppPool identity privileges to the minimum required, and prefer newer app pool identity models where the Potato-family token-impersonation techniques are less effective — M1026 (Privileged Account Management).
  • Enable Credential Guard and LSA Protection (RunAsPPL) fleet-wideM1043 (Credential Access Protection). Raises the cost of SPECTRE's credential-theft functions even though the SAM/SECURITY hive-save technique (Q7) does not require live LSASS access.
  • Deploy Q1–Q18 as scheduled searches, with FP-medium/high queries (Q3, Q6–Q9, Q11, Q13–Q16) in detect-only mode pending the tuning baseline in §11.
  • File Integrity Monitoring on IIS webroots for new/modified .ashx/.aspx handlers — M1022 (Restrict File and Directory Permissions) combined with a FIM control.
Strategic — 1–3 months
  • Establish a formal external attack-surface management (ASM) and vulnerability-scanning program for internet-facing web servers — M1016 (Vulnerability Scanning). UAT-10147's 170,000-URL target list demonstrates that broad, automated, AI-assisted scanning of exposed infrastructure is now a standing background threat, not an occasional event.
  • Deploy Linux runtime integrity/eBPF-based rootkit detection (e.g., kernel module allow-listing, eBPF-based process/module observability that does not rely solely on the same kernel data structures a rootkit can unlink from) — ⚠ best-practice, no single formal CIS benchmark line item covers eBPF-based rootkit detection specifically; this is an architectural investment beyond baseline auditd.
  • Extend application allow-listing (WDAC on Windows, package/binary allow-listing on Linux) to all internet-facing web-application server rolesM1038.
  • Formalize an ASP.NET/IIS secure-configuration baseline (machineKey rotation cadence, ViewState MAC enforcement, restricted AppPool identities) as a recurring configuration-compliance check, not a one-time fix — M1041 (Encrypt Sensitive Information) combined with configuration management.
13

Deployable Playbooks

Playbook 1 — Enable Microsoft's vulnerable-driver blocklist (blocks SPECTRE's BYOVD EDR-killer)

1. Confirm current HVCI / Memory Integrity status on target hosts.
   Prerequisites: Windows 10 2004+ / Server 2022+ with virtualization extensions enabled in firmware.
   Reboot required: no (assessment only).
   Rollback: none required.

2. Enable the vulnerable-driver blocklist via Group Policy (Computer Configuration > Administrative
   Templates > System > Device Guard > "Deploy Windows Defender Application Control", or via
   Memory Integrity in Windows Security if not centrally managed), then reboot the pilot ring.
   Prerequisites: step 1 confirmed; pilot ring identified (rare but possible driver-compatibility breaks
   with legitimate low-level tooling — test before fleet-wide rollout).
   Reboot required: yes.
   Rollback: disable the GPO / turn off Memory Integrity in Windows Security, then reboot.

3. Validate enforcement by attempting to load a copy of a known-blocklisted driver name (in an isolated
   lab VM only — never on production) and confirming the load is refused; in production, confirm via
   the PowerShell check in the Patch/Exposure Audit block (§10).
   Prerequisites: step 2 complete and rebooted.
   Reboot required: no.
   Rollback: none required — verification step.

Playbook 2 — Rotate ASP.NET machineKey values and verify against badsecrets

1. Inventory every ASP.NET application's <machineKey> configuration (web.config, or centrally in
   machine.config) and record whether validationKey/decryptionKey are explicitly set or auto-generated.
   Prerequisites: administrative access to each IIS host; change-management ticket for the affected apps.
   Reboot required: no.
   Rollback: none required — inventory step.

2. Cross-check any explicitly-set key values against the public badsecrets database
   (https://github.com/blackhillsinfosec/badsecrets) using its CLI/library, or via the badsecrets
   web checker for any key you cannot rule out as unique.
   Prerequisites: step 1 complete.
   Reboot required: no.
   Rollback: none required — verification step.

3. For any application using a known/leaked key or a framework-default key, generate new
   cryptographically random validationKey/decryptionKey values and update web.config
   (this invalidates all outstanding ViewState/session tokens for that app — plan for
   a brief re-authentication wave).
   Prerequisites: step 2 identified an at-risk key; maintenance window scheduled; app restart planned.
   Reboot required: no host reboot; requires an IIS app-pool recycle (equivalent to a brief app restart).
   Rollback: restore the previous web.config from backup and recycle the app pool if the new keys
   break a legitimate integration that depended on key stability.

Playbook 3 — Enforce Linux kernel module signature verification (blocks the unsigned Specter rootkit LKM)

1. Check current module-signature enforcement status.
   cat /proc/sys/kernel/tainted
   grep -r "CONFIG_MODULE_SIG_FORCE\|CONFIG_MODULE_SIG" /boot/config-$(uname -r)
   Prerequisites: root/sudo access to the target host.
   Reboot required: no (assessment only).
   Rollback: none required.

2. On distributions supporting it, enable Secure Boot-tied kernel lockdown mode (lockdown=integrity or
   lockdown=confidentiality via kernel command line, e.g. GRUB_CMDLINE_LINUX="lockdown=integrity"), or
   enable module signature enforcement (module.sig_enforce=1) where the distribution ships signed modules.
   Prerequisites: step 1 confirmed the current state; pilot ring identified — this can break
   legitimate out-of-tree/DKMS modules (e.g., some GPU or storage drivers) that are not signed for
   your kernel; test the pilot ring's full driver set first.
   Reboot required: yes.
   Rollback: remove the lockdown=/module.sig_enforce= kernel parameter from the bootloader config
   and reboot to restore the prior (permissive) state.

3. Validate by attempting to load an unsigned test module (isolated lab VM only) and confirming the
   load is refused with an "unsigned module" error in dmesg/journalctl.
   Prerequisites: step 2 complete and rebooted.
   Reboot required: no.
   Rollback: none required — verification step.

Playbook 4 — Restrict IIS AppPool identity privileges (raises the cost of Potato-family privesc)

1. Inventory which IIS Application Pool identities currently hold SeImpersonatePrivilege
   (the default for most built-in AppPool identities and NETWORK SERVICE).
   whoami /priv   (run under each AppPool identity via a scheduled task, or review via
   Local Security Policy > User Rights Assignment > Impersonate a client after authentication)
   Prerequisites: administrative access to each IIS host.
   Reboot required: no.
   Rollback: none required — inventory step.

2. For application pools that do not require impersonation (most static/API-only sites), remove
   the AppPool identity from the "Impersonate a client after authentication" user-rights assignment
   via Group Policy or secpol.msc, scoped to a pilot ring first.
   Prerequisites: step 1 complete; confirm the target application does not rely on impersonation
   for legitimate functionality (test in the pilot ring).
   Reboot required: no (IIS app-pool recycle is sufficient for the change to take effect for that pool).
   Rollback: re-add the AppPool identity to the user-rights assignment and recycle the app pool.

3. Deploy Q1 and Q11 (§8) as scheduled searches to confirm no Potato-family tool execution or
   w3wp.exe shell spawning occurs against the hardened pool going forward.
   Prerequisites: step 2 complete.
   Reboot required: no.
   Rollback: none required — verification step.
14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain any host with a confirmed Q1/Q4/Q5/Q10/Q12/Q17/Q18 hit; preserve memory and disk images before any patch/reset — if Q10 (BYOVD driver drop) fired, treat the EDR sensor's subsequent telemetry as potentially blinded and do NOT rely solely on Falcon for post-isolation confirmationSOC L2 / IRContainment timestamps; Q1–Q18 hit list; memory/disk images
TriageDetermine which initial-access CVE was exploited (check IIS/WAF logs per N1 for ViewState-oracle traffic, or application logs for Zimbra/AjaxPro/Nacos exploitation); enumerate every host that pulled a payload from the published staging infrastructure (Q2, Q17, Q18); check for credential-theft indicators (Q7/Q8/Q9) and BYOVD/rootkit indicators (Q10/Q14/Q15)IRWAF/access-log review; download/beacon hit list; Q7–Q9/Q14/Q15 hit list
EradicateRemove the scheduled task "Google Chrome Start" and any associated QuasarRAT/Gh0stCringe/SPECTRE binaries; remove the rogue local admin/RDP account; remove BadIIS/SeoEngineHandler from IIS; remove any web shells (custom two-layer shell, sss.ashx/up.ashx); unload and remove the Specter LKM and its hardware-monitor.service unit on Linux hosts; remove any dropped BYOVD drivers; rotate every credential a compromised host had access to (SAM/SECURITY hive dump and browser/Credential Manager theft both grant broad reach)IRRemoval log; before/after file-hash comparison; credential-rotation record
RecoverPatch the exploited CVE before returning the host to service; rotate ASP.NET machineKey values for any affected application; rebuild any host that showed a confirmed BYOVD driver load or active rootkit rather than attempting in-place cleanup, since kernel-level compromise cannot be fully verified as removed by userland tooling aloneIR + ITPatch confirmation; new machineKey deployment record; rebuild tickets
HardenApply §12 Immediate + Near-term controls; promote IOA-1 through IOA-8; enable the Microsoft vulnerable-driver blocklist and Linux module-signature enforcement fleet-wide; confirm egress monitoring for the published C2 set is liveDetection EngIOAs enabled; driver-blocklist/module-signing policy diff; monitoring dashboard live

⚠ A confirmed Q10 (BYOVD driver drop) or Q14/Q15 (Specter rootkit load) hit means the host's own security telemetry may already be compromised. Do not trust a "clean" scan result from that host's own EDR sensor after such a hit without independent, out-of-band verification (offline disk image analysis, or a live-response tool that does not rely on the same kernel APIs the rootkit unlinks from).

15

Detection Coverage Map

TechniqueBehaviorCQLNative / IOACoverage
T11901-day RCE (Zimbra/AjaxPro/Nacos/Telerik ViewState)Q11, Q16N1Partial host telemetry starts post-RCE; HTTP-layer exploitation itself is a GAP (see below)
T1068 / T1134Potato-family privescQ1IOA-1Good
T1105certutil payload retrievalQ2IOA-2Good
T1562.001Defender exclusion for inetsrvQ3Partial FP medium, tuning required before IOA
T1053.005"Google Chrome Start" scheduled taskQ4IOA-3Good
T1036.005svchosts.exe masqueradeQ5IOA-4Good
T1136.001 / T1098Rogue admin/RDP account creationQ6Partial FP medium, correlation recommended
T1003.002SAM/SYSTEM/SECURITY hive dumpQ7Partial FP medium, tuning required
T1555.003Chrome/Edge credential theftQ8Partial optional telemetry source (FileOpenInfo); in-process theft may not generate a process event at all
T1555.004Credential Manager enumerationQ9GAP-leaning FP high, correlation-only, not standalone-alertable
T1068 / T1562.001BYOVD driver dropQ10IOA-5Good
T1505.003 / T1027Reverse-shell DLL (CVE-2019-18935)Q12IOA-6Good
T1505.003 / T1140AI-generated ASHX web-shell deployQ13Partial FP medium, correlate with Q11
T1014 / T1547.006Specter rootkit LKM loadQ14Partial pre-load detection only; post-load the rootkit actively hides itself — see N6/N7
T1543.002hardware-monitor.service persistenceQ15Partial FP medium, verify against legitimate acpi_pad location
T1190 / T1068 (Linux)Root shell from web/JVM processQ16Partial FP medium, correlate with exploitation-window alerts
T1071.001 / T1105Known C2 IP contactQ17IOA-7Good while IPs remain live
T1071.001Known C2 domain resolutionQ18IOA-8Good while domains remain live
T1102webhook.site OOB exfil/confirmation callbacksN4GAP not shipped as CQL due to high legitimate base-rate; native/hunt-only
T1505.003 (web-shell auth)X-ID: x9 / v=x9 header checkN2GAP HTTP-header content is not Falcon-visible
T1564.004NTFS ADS C2 config storageN3GAP no standard Falcon field exposes ADS stream content directly

Validation gates: confirm the required telemetry list in §11 is flowing before relying on any query; baseline the FP-medium/high queries for 7–14 days before promoting; lab-test Q4/Q10/Q14 positive cases. The three GAP rows (webhook.site OOB callbacks, HTTP-layer web-shell auth, and NTFS ADS C2 storage) cannot be closed with Falcon endpoint telemetry alone — they require WAF/IIS access-log review and, for the ADS gap, a dedicated ADS-enumeration sweep (N1–N3).

16

Hunt Summary Ticket

TITLE:        Hunt — UAT-10147: SPECTRE implant, Specter Linux rootkit & BadIIS SEO fraud
SEVERITY:     Critical (mass-scanned 1-day RCE against internet-facing IIS/Linux servers; BYOVD
              EDR-killer; kernel-level Linux rootkit; AI-augmented exploitation at scale —
              170,000-URL target list)
SCOPE:        Internet-facing Windows/IIS servers (Zimbra, AjaxPro, Telerik UI for ASP.NET AJAX,
              any IIS-hosted app); internet-facing Linux servers (Nacos or any exposed app);
              Windows kernel/EDR sensor integrity; local Windows credential stores
HYPOTHESIS:   1-day RCE (Zimbra/AjaxPro/Nacos/Telerik ViewState, often AI-guided) -> Potato-family
              privesc -> Defender exclusions + rogue admin account -> "Google Chrome Start"
              scheduled task / hardware-monitor.service persistence -> SPECTRE implant (BYOVD
              EDR kill, credential theft, process injection) -> Specter Linux rootkit (ftrace
              hiding) -> BadIIS/SeoEngineHandler SEO fraud + C2 beaconing
QUERIES RUN:  Native N1 WAF/IIS ViewState-oracle log review | N2 web-shell auth-header sweep |
              N3 webroot FIM | N4 webhook.site DNS/proxy review | N5 appcmd inventory review |
              N6 /proc vs ps integrity check | N7 lsmod vs /sys/module cross-check |
              N8 external ASM/threat-intel watch
              CQL Q1 Potato-tool exec | Q2 certutil staging-infra download | Q3 Defender exclusion |
              Q4 "Google Chrome Start" task | Q5 svchosts.exe | Q6 rogue admin/RDP account |
              Q7 SAM/SYSTEM/SECURITY hive dump | Q8 Chrome/Edge credential file open | Q9 cmdkey /list |
              Q10 BYOVD driver drop | Q11 w3wp.exe shell/csc.exe spawn | Q12 [10-digit].[7-digit].dll |
              Q13 PowerShell .ashx write | Q14 acpi_pad module load | Q15 hardware-monitor.service |
              Q16 root shell from web/JVM | Q17 known C2 IP contact | Q18 known C2 domain resolution
DO FIRST:     Confirm patch status for the four initial-access CVEs and the six Linux LPE CVEs;
              enable the Microsoft vulnerable-driver blocklist fleet-wide (blocks Q10/BYOVD outright);
              run Q1, Q4, Q5, Q10, Q12, Q17, Q18 (low-FP, high-CONF) immediately
FINDINGS:     <pending analyst execution>
GAPS:         No Falcon visibility into HTTP-layer ViewState exploitation oracle or web-shell
              X-ID/v=x9 auth-header check (T1190/T1505.003 HTTP layer); NTFS ADS C2 config storage
              not exposed via a standard Falcon field (T1564.004); webhook.site OOB callback pattern
              shipped as native-hunt only due to FP risk (T1102); Specter rootkit actively hides
              itself from userland/kernel-API-dependent tooling once loaded (T1014)
ACTIONS:      Patch the four initial-access CVEs and six Linux LPE CVEs; enable Microsoft's
              vulnerable-driver blocklist; enforce Linux kernel module signature verification;
              rotate exposed ASP.NET machineKey values; restrict IIS AppPool SeImpersonatePrivilege;
              promote IOA-1 through IOA-8; baseline and tune FP-medium/high queries before promotion
OWNER:        HuntPack
VERSION:      v0.1 - 2026-08-26
17

Changelog

v0.12026-08-26Initial pack — UAT-10147's agentic-AI-augmented post-compromise campaign: SPECTRE cross-platform C2 implant (BYOVD EDR-killer, credential theft, process injection, anti-sandbox), the Specter Linux kernel rootkit (ftrace hooking, magic-PID IPC, likely AI-assisted development per Talos), and the BadIIS/SeoEngineHandler SEO-fraud toolkit. Built on the review-v2 gold layout (fixed left-sidebar scrollspy TOC, collapsible, cloud selector inside the CQL section, per-card Copy/Open-in-Falcon, Grouped IOC Quick-Copy grid, coverage map, .ticket). 18 CQL hunt queries (Q1–Q18) spanning the full Windows + Linux attack chain: Potato-family privesc, staging-infrastructure downloads, Defender-exclusion evasion, deceptive scheduled-task/systemd persistence, rogue-account creation, credential theft (hive dump, browser, Credential Manager), BYOVD driver drop, web-shell/dynamic-compilation RCE follow-on, the CVE-2019-18935 reverse-shell DLL naming convention, AI-generated ASHX web-shell deployment, Linux rootkit module load, and known C2 IP/domain contact. 8 Custom IOA candidates (IOA-1 through IOA-8). 8 native audit-log hunts (N1–N8) covering the HTTP-layer and post-rootkit visibility gaps. Sourced from 4 direct fetches (2 Cisco Talos technical blog posts + 2 Talos GitHub IOC-list files) and 1 corroborating outlet (The Hacker News). 56 SHA256 hashes, 5 IPs, and 11 domains carried into the IOC appendix; 2 "generic-looking" domains flagged medium-confidence/hunt-only rather than silently blocked. No prompt-injection content found in any fetched source (explicitly screened per pipeline security requirements).
18

References

TierSourceUsed ForAccess Date
1Cisco Talos — UAT-10147: Chinese-speaking adversary integrates agentic AI into post-compromise operationsPrimary disclosure: actor profile, 170K-URL target list, Windows/Linux infection chains, AI-tooling narrative2026-08-26
1Cisco Talos — UAT-10147 deploys SPECTRE: A cross-platform implant with Linux rootkit and BYOVD capabilitiesSPECTRE/Specter technical internals, BYOVD, BadIIS/SeoEngineHandler, web shell, commodity-backdoor roster2026-08-26
1Cisco Talos GitHub — "UAT-10147 integrates agentic AI.txt" IOC list12 SHA256 hashes, 2 IPs, 14 staging URLs (Windows infection chain)2026-08-26
1Cisco Talos GitHub — "UAT-10147 deploys SPECTRE.txt" IOC list44 SHA256 hashes, 4 IPs, 9 domains/URLs (SPECTRE/BadIIS/SEO-fraud infrastructure)2026-08-26
2The Hacker News — UAT-10147 Uses AI to Scale Server Attacks, Deploys SPECTRE With EDR Bypass and Linux RootkitCorroboration; SPECTRE first-observed date (April 2026); target-list top-5 destination countries2026-08-26