Web Exploit and Telemetry Theft (UAT-10147)
The adversary exploits known web vulnerabilities in Zimbra, Telerik, or AjaxPro to achieve initial access and exfiltrates system identifiers to a Nacos configuration server via HTTP POST requests.
Based on research by Cisco Talos 2026-09-20 9 steps · 3 queries T1041 T1190
Brief
Why now
A recent report from Cisco Talos on UAT-10147 integrates agentic AI into post-compromise operations describes a Chinese-speaking threat actor targeting internet-facing web servers. This actor uses a repeatable process of exploitation followed by immediate telemetry theft to verify their success. While the use of agentic AI is a notable evolution in their post-compromise workflow, the entry point remains the exploitation of known vulnerabilities in software like Zimbra, Telerik UI, and AjaxPro.
How the hunt flows
The hunt begins by scoping the environment for vulnerable assets. It queries the vulnerability management surface to find hosts running software with specific CVEs, such as CVE-2022-27925 or CVE-2019-18935. This identifies the potential attack surface and focuses the subsequent network analysis on high-risk targets.
Next, the hunt moves to network telemetry to identify inbound and outbound indicators. The first network branch searches HTTP activity for requests targeting known exploit paths or communicating with malicious domains like adminapi.tippusoni.in. This step finds evidence of the delivery phase where the adversary attempts to drop their payload.
A parallel network query looks for the characteristic exfiltration pattern. The adversary sends HTTP POST requests containing system identifiers like the hostname or username within the URI or query parameters. The hunt identifies these rare POST requests to external destinations, focusing on those that carry specific system strings often sent to Nacos servers.
Finally, an automated agent correlates these findings. The agent analyzes whether a single host shows both a known vulnerability and the corresponding network behavior. If a host identified in the scoping phase also displays exploit-related URI paths or outbound telemetry exfiltration, the agent issues a malicious verdict for immediate isolation.
What the hunt cannot see
This hunt relies on visibility into HTTP URI and header data. If the adversary exfiltrates telemetry solely within the encrypted POST body and the environment lacks HTTPS decryption at the boundary, the network markers will remain hidden. Additionally, the actor uses legitimate Nacos configuration servers to blend with normal traffic. If they rotate to a new, unreported Nacos instance and avoid using common URI markers like 'hostname', the hunt may fail to distinguish the traffic from legitimate API calls without further behavioral baselining.
In this series
Steps
-
Identify vulnerable web servers
Query · scopingLocate assets in the environment currently known to have the vulnerabilities targeted by UAT-10147.
reads hb_vulnerability_findingsqlSELECT DISTINCT device_uid, cve_uid, severity FROM hb_vulnerability_finding WHERE instr(',' || '{{vulnerable_cves}}' || ',', ',' || cve_uid || ',') > 0 AND status != 'suppressed'What a hit looks like. A list of devices and their associated CVEs. Silence means no known vulnerable instances are recorded in the scanned estate.
-
Download and exploit indicators
Query · detection candidateDetect requests to the known UAT-10147 delivery infrastructure and paths commonly associated with targeted web exploits.
reads hb_http_activitysqlSELECT device_hostname, url_full, http_method, user_agent, src_endpoint_ip, time FROM hb_http_activity WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND (instr(',' || '{{ioc_domains}}' || ',', ',' || LOWER(url_hostname) || ',') > 0 OR instr(',' || '{{ioc_ips}}' || ',', ',' || dst_endpoint_ip || ',') > 0 OR LOWER(url_path) LIKE '%/zimbra/%' OR LOWER(url_path) LIKE '%/telerik/%' OR LOWER(url_path) LIKE '%/ajaxpro/%') AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Inbound requests targeting known exploit paths or traffic to specific malicious domains or IPs. Silence says the delivery server was not accessed.
-
System telemetry exfiltration patterns
Query · triageFind outbound HTTP POST requests carrying system identifiers, matching the actor's habit of exfiltrating system data to Nacos servers.
reads hb_http_activitysqlSELECT device_hostname, url_full, http_method, src_endpoint_ip, COUNT(*) as request_count FROM hb_http_activity WHERE http_method = 'POST' AND (instr(LOWER(url_full), 'hostname') > 0 OR instr(LOWER(url_full), 'username') > 0 OR instr(LOWER(url_full), 'computername') > 0) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, url_full, http_method, src_endpoint_ipWhat a hit looks like. POST requests containing system attributes in the URI or query parameters. Silence suggests no observed telemetry theft via URI markers.
-
Analyze web intrusion evidence
Agent triageCorrelate vulnerability presence, malicious request activity, and exfiltration patterns to confirm a successful intrusion.
-
Judge intrusion severity
DecisionRoute the result based on the agent's verdict for containment or further manual review.
-
Isolate compromised host
Response actionPrevent further exfiltration and lateral movement from the confirmed beachhead.
-
Manual forensic investigation
Analyst taskDetermine the extent of the breach and identify any lateral movement or persistent shells.
-
Close out investigation
Analyst taskDocument findings and update vulnerability management for exposed systems.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Web Application Exploitation T1190 |
Yes | vulnerable-asset-scope, exploit-delivery-requests |
| System Telemetry Exfiltration T1041 |
Yes | system-telemetry-exfiltration |
| Automated Foothold Execution T1059 · T1059.001 |
Out of scope | Handled by the persistence-focused hunt in this series. |
| Privilege Escalation Exploits T1059 |
Out of scope | Handled by the persistence-focused hunt in this series. |
| Antivirus Exclusion Evasion T1059.001 |
Out of scope | Handled by the persistence-focused hunt in this series. |
| IIS Server Discovery T1059 |
Out of scope | Handled by the persistence-focused hunt in this series. |
| Persistence Mechanisms T1053.005 · T1505.003 · T1021.001 |
Out of scope | Handled by the persistence-focused hunt in this series. |
| C2 Implant Communication T1071 · T1090.003 |
Out of scope | Handled by the persistence-focused hunt in this series. |
Blind spots
- Needs HTTPS decryption at the boundary or agent-level inspection. If the adversary exfiltrates telemetry solely in the POST body without markers in the URI, this hunt will miss the activity. It would answer what was the content of the POST body during exfiltration?.
- Needs Passive DNS or current threat intelligence for Nacos servers. The actor uses legitimate Nacos configuration servers to blend in; if they rotate their exfiltration sink, the hunt relies on generic hostname query markers which may be noisy. It would answer was the server communicating with a new, unreported Nacos instance?.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
ioc_domains | list[domain] | adminapi.tippusoni.in | Domains used for payload delivery. |
ioc_ips | list[ip] | 139.180.197.150 | IP addresses of known open-directory download servers. |
lookback_days | number | 14 | Days of history to examine. |
scope_hosts | list[host] | — | Specific hostnames to focus on; leave empty to hunt across all web-facing assets. |
vulnerable_cves | list[string] | CVE-2022-27925, CVE-2021-23758, CVE-2019-18935, CVE-2021-29441, CVE-2021-29442 | CVE IDs associated with UAT-10147 exploitation targets. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Web server / proxy logs | siem | network |
Source
---
analysis: This is a hunt because it combines vulnerability scoping with behavioural
exfiltration patterns across independent queries. A single rule targeting specific
domains is trivial to bypass; this hunt looks for the intent behind the traffic
across multiple surfaces.
blind_spots:
- id: http-payload-visibility
question: what was the content of the POST body during exfiltration?
requires: HTTPS decryption at the boundary or agent-level inspection
risk: If the adversary exfiltrates telemetry solely in the POST body without markers
in the URI, this hunt will miss the activity.
stage: web-application-exploitation
- id: ephemeral-delivery-infrastructure
question: was the server communicating with a new, unreported Nacos instance?
requires: Passive DNS or current threat intelligence for Nacos servers
risk: The actor uses legitimate Nacos configuration servers to blend in; if they
rotate their exfiltration sink, the hunt relies on generic hostname query markers
which may be noisy.
stage: web-application-exploitation
coverage:
- stage: web-application-exploitation
status: covered
steps:
- vulnerable-asset-scope
- exploit-delivery-requests
- stage: system-telemetry-exfiltration
status: covered
steps:
- system-telemetry-exfiltration
- reason: Handled by the persistence-focused hunt in this series.
stage: automated-foothold-execution
status: out_of_scope
- reason: Handled by the persistence-focused hunt in this series.
stage: privilege-escalation-exploits
status: out_of_scope
- reason: Handled by the persistence-focused hunt in this series.
stage: antivirus-exclusion-evasion
status: out_of_scope
- reason: Handled by the persistence-focused hunt in this series.
stage: iis-server-discovery
status: out_of_scope
- reason: Handled by the persistence-focused hunt in this series.
stage: persistence-mechanisms
status: out_of_scope
- reason: Handled by the persistence-focused hunt in this series.
stage: c2-implant-communication
status: out_of_scope
guardrails:
claims: no_unsupported
evidence: citation_required
missing_data: not_benign
telemetry: untrusted
hunt:
applicability: campaign-specific
handoff: keep-as-periodic-hunt
justification: Exploitation of public-facing applications is the primary entry point
for UAT-10147. A negative result confirms that while the estate may be vulnerable,
no known actor activity related to this campaign has successfully weaponized the
exposure.
methodology: model-assisted
trigger: intel-report
hypothesis: The adversary exploits known web vulnerabilities in Zimbra, Telerik, or
AjaxPro to achieve initial access and exfiltrates system identifiers to a Nacos
configuration server via HTTP POST requests.
labels:
- hunt
- attack.t1190
- attack.t1041
name: Web Exploit and Telemetry Theft (UAT-10147)
parameters:
ioc_domains:
default:
- adminapi.tippusoni.in
description: Domains used for payload delivery.
from:
kind: article
observed: '2026-01-15'
ref: https://blog.talosintelligence.com/uat-10147-chinese-speaking-adversary-integrates-agentic-ai-into-post-compromise-operations/
type: list[domain]
ioc_ips:
default:
- 139.180.197.150
description: IP addresses of known open-directory download servers.
from:
kind: article
observed: '2026-01-15'
ref: https://blog.talosintelligence.com/uat-10147-chinese-speaking-adversary-integrates-agentic-ai-into-post-compromise-operations/
type: list[ip]
lookback_days:
default: '14'
description: Days of history to examine.
type: number
scope_hosts:
default: []
description: Specific hostnames to focus on; leave empty to hunt across all web-facing
assets.
type: list[host]
vulnerable_cves:
default:
- CVE-2022-27925
- CVE-2021-23758
- CVE-2019-18935
- CVE-2021-29441
- CVE-2021-29442
description: CVE IDs associated with UAT-10147 exploitation targets.
from:
kind: article
observed: '2026-01-15'
ref: https://blog.talosintelligence.com/uat-10147-chinese-speaking-adversary-integrates-agentic-ai-into-post-compromise-operations/
type: list[string]
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://blog.talosintelligence.com/uat-10147-chinese-speaking-adversary-integrates-agentic-ai-into-post-compromise-operations/
gates:
- dry-run
- lint
- critic
model: hb_google/gemini-3-flash-preview
rationale: The hunt prioritizes internet-exposed servers running Zimbra, Telerik UI,
or AjaxPro. If vulnerability scanner reports are empty, the analyst should run the
HTTP lead queries across all web-facing hosts to account for unmanaged assets.
references:
- name: "Cisco Talos \u2014 UAT-10147 integrates agentic AI into post-compromise operations"
url: https://blog.talosintelligence.com/uat-10147-chinese-speaking-adversary-integrates-agentic-ai-into-post-compromise-operations/
related:
- hunt: uat-10147-post-exploit-persistence
reason: This hunt covers the entry; the subsequent hunt covers the batch scripts
and scheduled tasks used for persistence.
relation: follows
scenario:
stages:
- name: Web Application Exploitation
observables:
- CVE-2022-27925
- CVE-2021-23758
- CVE-2019-18935
- adminapi.tippusoni.in
- exploitation of Zimbra Collaboration Suite
- exploitation of AjaxPro
- exploitation of Telerik UI for ASP.NET AJAX
slug: web-application-exploitation
tactic: initial-access
techniques:
- T1190
- name: Automated Foothold Execution
observables:
- back.bat
- back.txt
- user.bat
- bai.bat
- certutil -urlcache -split -f
- Runtime.exec()
- dll.zip
- prcc1.rar
slug: automated-foothold-execution
tactic: execution
techniques:
- T1059
- T1059.001
- name: Privilege Escalation Exploits
observables:
- EfsPotato
- CVE-2022-0995
- CVE-2021-3156
- CVE-2015-5287
- CVE-2015-3246
- CVE-2010-3904
- CVE-2022-0847
- Dirty Pipe exploitation
slug: privilege-escalation-exploits
tactic: privilege-escalation
techniques:
- T1059
- name: Antivirus Exclusion Evasion
observables:
- Add-MpPreference -ExclusionPath C:\Windows\SysWOW64\inetsrv
- Add-MpPreference -ExclusionPath C:\Windows\System32\inetsrv
- reg add "HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths"
- powershell.exe Add-MpPreference
slug: antivirus-exclusion-evasion
tactic: defense-evasion
techniques:
- T1059.001
- name: IIS Server Discovery
observables:
- appcmd list site /config /xml
- C:\Windows\system32\inetsrv\appcmd
slug: iis-server-discovery
tactic: discovery
techniques:
- T1059
- name: Persistence Mechanisms
observables:
- Google Chrome Start
- BadIIS
- addition of user to Remote Desktop Users group
- rogue local user account creation
- System32\inetsrv\BadIIS.dll
slug: persistence-mechanisms
tactic: persistence
techniques:
- T1053.005
- T1505.003
- T1021.001
- name: C2 Implant Communication
observables:
- 139.180.197.150
- svchosts.exe
- QuasarRAT
- NoodleRAT
- SPECTRE
- Gh0stCringe
- Meterpreter
slug: c2-implant-communication
tactic: command-and-control
techniques:
- T1071
- T1090.003
- name: System Telemetry Exfiltration
observables:
- HTTP POST to Nacos configuration server
- exfiltration of id and hostname
- exfiltration of %USERNAME% and %COMPUTERNAME%
slug: system-telemetry-exfiltration
tactic: exfiltration
techniques:
- T1041
summary: UAT-10147 targets Windows and Linux web servers globally, integrating agentic
AI to optimize exploit development and post-compromise orchestration. The campaign
leverages high-volume vulnerability exploitation followed by automated privilege
escalation, defense evasion through antivirus exclusions, and persistence via
rogue IIS modules and scheduled tasks.
series:
index: 1
slug: uat-10147-integrates-agentic-ai-into-post-compromise-operations
title: UAT-10147 integrates agentic AI into post-compromise operations
total: 3
severity: high
targets:
analyst:
name: Tier-2 analyst
role: analyst
endpoint:
category: endpoint
name: Endpoint telemetry (hb_ surfaces)
telemetry:
- endpoint
hunter:
agent: true
name: Hunt agent
web:
category: siem
name: Web server / proxy logs
telemetry:
- network
tlp: clear
type: investigation
---
# Web Exploit and Telemetry Theft (UAT-10147)
The UAT-10147 actor exploits internet-exposed web servers using vulnerabilities like CVE-2022-27925 and CVE-2019-18935. Once access is achieved, they deploy scripts that exfiltrate system identifiers (hostname, username) to a Nacos server to verify exploit success. This hunt identifies vulnerable hosts via the software inventory, searches for inbound requests to known C2 download domains, and identifies outbound HTTP exfiltration patterns. An agent weighs the vulnerability status against the observed traffic to settle on a verdict, allowing the analyst to isolate compromised endpoints.
## vulnerable-asset-scope
<!-- Identify vulnerable web servers -->
Locate assets in the environment currently known to have the vulnerabilities targeted by UAT-10147.
```sqlite target=endpoint role=scoping params=(vulnerable_cves=vulnerable_cves)
~~~yaml
expected: A list of devices and their associated CVEs. Silence means no known vulnerable
instances are recorded in the scanned estate.
reads:
- device_uid
- cve_uid
- severity
- status
silence: not_evidence_of_absence
source: hb_vulnerability_finding
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT DISTINCT device_uid, cve_uid, severity FROM hb_vulnerability_finding WHERE instr(',' || '{{vulnerable_cves}}' || ',', ',' || cve_uid || ',') > 0 AND status != 'suppressed'
```
## parallel-activity-check
<!-- Search for exploitation and exfiltration -->
parallel:
- → exploit-delivery-requests
- → system-telemetry-exfiltration
join: → analyze-web-intrusion
## exploit-delivery-requests
<!-- Download and exploit indicators -->
Detect requests to the known UAT-10147 delivery infrastructure and paths commonly associated with targeted web exploits.
```sqlite target=web role=detection-candidate params=(scope_hosts=scope_hosts, ioc_domains=ioc_domains, ioc_ips=ioc_ips, lookback_days=lookback_days)
~~~yaml
expected: Inbound requests targeting known exploit paths or traffic to specific malicious
domains or IPs. Silence says the delivery server was not accessed.
reads:
- device_hostname
- url_full
- url_hostname
- url_path
- dst_endpoint_ip
- http_method
- user_agent
- src_endpoint_ip
- time
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, url_full, http_method, user_agent, src_endpoint_ip, time FROM hb_http_activity WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND (instr(',' || '{{ioc_domains}}' || ',', ',' || LOWER(url_hostname) || ',') > 0 OR instr(',' || '{{ioc_ips}}' || ',', ',' || dst_endpoint_ip || ',') > 0 OR LOWER(url_path) LIKE '%/zimbra/%' OR LOWER(url_path) LIKE '%/telerik/%' OR LOWER(url_path) LIKE '%/ajaxpro/%') AND time >= datetime('now', '-{{lookback_days}} days')
```
## system-telemetry-exfiltration
<!-- System telemetry exfiltration patterns -->
Find outbound HTTP POST requests carrying system identifiers, matching the actor's habit of exfiltrating system data to Nacos servers.
```sqlite target=web role=triage params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: POST requests containing system attributes in the URI or query parameters.
Silence suggests no observed telemetry theft via URI markers.
prevalence:
by: device_hostname
key:
- url_full
rare_below: 3
reads:
- device_hostname
- url_full
- http_method
- src_endpoint_ip
- time
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, url_full, http_method, src_endpoint_ip, COUNT(*) as request_count FROM hb_http_activity WHERE http_method = 'POST' AND (instr(LOWER(url_full), 'hostname') > 0 OR instr(LOWER(url_full), 'username') > 0 OR instr(LOWER(url_full), 'computername') > 0) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, url_full, http_method, src_endpoint_ip
```
## analyze-web-intrusion
<!-- Analyze web intrusion evidence -->
```agent target=hunter
cite: required
context:
- vulnerable-asset-scope
- exploit-delivery-requests
- system-telemetry-exfiltration
max_iterations: 5
objective: Determine if any host identified in the scope shows evidence of malicious
file downloads and subsequent telemetry exfiltration patterns.
success_criteria: A verdict of malicious for any host where exploit-delivery requests
align with known vulnerabilities or outbound exfiltration.
tools:
- endpoint
- web
```
## judge-intrusion-severity
<!-- Judge intrusion severity -->
if~: "the agent finds any host with a malicious verdict correlating vulnerable services with exploit traffic" (confidence: high, judge=hunter)
then: → isolate-compromised-host
indeterminate: → forensic-investigation
unavailable: → forensic-investigation (blind_spot: http-payload-visibility)
else: → close-out-investigation
## isolate-compromised-host
<!-- Isolate compromised host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host immediately. Do not restart services as this may clear memory-resident payloads. Initiate full IR for web server compromise.
```
→ forensic-investigation
## forensic-investigation
<!-- Manual forensic investigation -->
```manual target=analyst
Review the web server logs for the successful POST requests identified. Search for newly created .aspx or .php files that may serve as web shells. Check for abnormal child processes of the web server such as cmd.exe or /bin/bash.
```
→ end
## close-out-investigation
<!-- Close out investigation -->
```manual target=analyst
If no activity was found, verify the vulnerable systems from the scoping step are scheduled for patching. Document the coverage achieved by this hunt for the risk registry.
```
→ end
Run it
Take this hunt into your environment.
Open it in Huntbase to run every step against your own connections, with Scout weighing the evidence and your analysts in command. Or take the open hunt.md file anywhere that reads the format.
Machine-drafted by huntbase-hunt-generation using hb_google/gemini-3-flash-preview, gated by dry-run, lint, critic, then reviewed by a person.