← All hunts high TLP:CLEAR

Regional Government and Infrastructure Espionage Activity

An espionage actor has established a beachhead via edge appliance exploitation or archive delivery, established persistence through scheduled tasks, and is maintaining access via a PowerShell-based reverse shell.

Based on research by Cisco Talos 2026-10-16 12 steps · 5 queries T1053.005 T1059.001 T1071.001 T1133 T1190 T1204.002 T1547.001

Brief

Why This Hunt Now

Recent reporting from Talos, The Q3 Vulnerability Pulse: Discovery ≠ Exploitation, highlights how adversaries exploit the gap between a published vulnerability and its actual exploitation in the wild. UAT-6275 specifically targets regional government and critical infrastructure by abusing edge appliances and using custom persistence mechanisms. We provide this hunt as a hunt.md playbook to help practitioners identify these intrusion chains before data exfiltration occurs.

How the Hunt Flows

The hunt begins by scoping the environment for vulnerable edge appliances. The first query searches the vulnerability surface for findings related to Ivanti bypasses or SonicWall SSRF. This step identifies the hosts most likely to serve as the initial entry point for the actor.

Following the scoping phase, the hunt executes a parallel search for initial execution evidence. One branch searches file activity for known malicious hashes and files dropped by archive utilities like WinRAR. The other branch monitors script activity for PowerShell execution that pulls payloads from GitHub using IEX or DownloadString commands.

An automated agent evaluates the initial findings to determine if an infection beachhead exists. If the likelihood is high, the hunt pivots into a second parallel phase focused on post-exploitation behavior. The hunt stacks scheduled tasks across the environment to find rare command lines used for persistence and monitors network connections for outbound TCP traffic from PowerShell or known malicious binaries.

A final triage stage correlates the early-stage signals with the persistence and network evidence. An analyst or agent confirms the full intrusion chain, allowing for a high-confidence verdict. If the hunt confirms a malicious intrusion, the workflow includes steps to isolate the compromised host via the endpoint agent.

What the Hunt Cannot See

This hunt contains two primary blind spots. First, it lacks visibility into the initial bypass if it occurs entirely on an appliance without an EDR agent. We only see the follow-on activity once the actor touches a monitored Windows host. Second, the hunt may miss command-and-control traffic if the actor uses a custom reverse shell wrapped in TLS on port 443, as the network query looks for connection metadata rather than decrypted packet content.

Steps

  1. Hosts with appliance vulnerabilities

    Query · scoping

    Scope the hunt to hosts where the environment has found appliance-based vulnerabilities like the Ivanti bypass or SonicWall SSRF.

    reads hb_vulnerability_findingsql
    SELECT device_uid, cve_uid, title, severity, first_seen FROM hb_vulnerability_finding WHERE (cve_uid = 'CVE-2026-104935' OR LOWER(title) LIKE '%ivanti%' OR LOWER(title) LIKE '%sonicwall%')

    What a hit looks like. A list of device UIDs affected by edge appliance vulnerabilities. Silence means no appliances in scope are flagged as vulnerable to these specific CVEs.

  2. Search for malicious file indicators

    Query · enrichment

    Search for specific hashes and rare files dropped by suspicious parent processes like WinRAR.

    reads hb_file_activitysql
    SELECT device_hostname, file_name, file_hash_sha256, process_name, time FROM hb_file_activity WHERE (instr(',' || '{{uat_hashes}}' || ',', ',' || file_hash_sha256 || ',') > 0 OR LOWER(process_name) LIKE '%\\winrar.exe') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Any row showing known malicious hashes or files dropped by archive utilities. Silence means no suspicious drops were observed.

  3. PowerShell scripts from GitHub

    Query · detection candidate

    Identify PowerShell execution that pulls payloads from GitHub, a common UAT-6275 delivery method.

    reads hb_script_activitysql
    SELECT device_hostname, script_content, script_type, time FROM hb_script_activity WHERE (LOWER(script_content) LIKE '%github%' AND (LOWER(script_content) LIKE '%iex%' OR LOWER(script_content) LIKE '%invoke-expression%' OR LOWER(script_content) LIKE '%downloadstring%')) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. PowerShell script blocks containing GitHub URLs and execution keywords, indicating external payload retrieval.

  4. Assess early infection likelihood

    Agent triage

    Evaluate whether the scoped vulnerability and initial signals suggest a successful beachhead.

  5. Rare scheduled tasks

    Query · baseline

    Stack-count scheduled jobs to find rare persistence entries created by the actor.

    reads hb_scheduled_jobsql
    SELECT job_name, job_cmd_line, COUNT(DISTINCT device_hostname) AS hosts, MIN(time) AS first_seen FROM hb_scheduled_job WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY job_cmd_line HAVING hosts <= 2

    What a hit looks like. Scheduled tasks with rare command lines that appear on only one or two hosts. Silence means no rare tasks were identified.

  6. PowerShell reverse-shell connections

    Query · triage

    Monitor for outbound TCP connections from PowerShell or known binaries to detect reverse-shell activity.

    reads hb_network_connectionsql
    SELECT device_hostname, process_name, dst_endpoint_ip, dst_endpoint_port, direction, time FROM hb_network_connection WHERE (LOWER(process_name) LIKE '%\\powershell.exe' OR instr(',' || '{{uat_filenames}}' || ',', ',' || LOWER(process_name) || ',') > 0) AND direction = 'outbound' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Outbound connections from PowerShell or suspect binaries. Silence means no outbound traffic matching these patterns was found.

  7. Intrusion assessment

    Agent triage

    Correlate early stage triage with persistence and network signals to confirm a full espionage chain.

  8. Route on assessment

    Decision

    Direct the hunt based on the intrusion verdict.

  9. Isolate compromised host

    Response action

    Prevent further exfiltration by isolating infected hosts.

  10. Analyst review

    Analyst task

    Provide manual oversight for suspicious hits and confirm the agent's logic.

  11. Close out hunt

    Analyst task

    Document findings and ensure all examined hosts are accounted for.

Coverage

Scenario coverage

StageCoveredHow, or why not
Edge Appliance Exploitation
T1190 · T1133
Yes vulnerability-scope
Malicious Document and Archive Delivery
T1204.002 · T1566.001
Yes file-indicators
Script Payload Download and Execution
T1059.001 · T1105
Yes github-scripts
Persistence via Tasks and Startup Folder
T1053.005 · T1547.001
Yes rare-tasks
Reverse Shell Command and Control
T1071.001 · T1095
Yes powershell-c2

Blind spots

  • Needs EDR agent on the appliance itself. Compromise of the appliance that does not immediately result in follow-on activity on a monitored endpoint will be missed. It would answer whether the initial bypass was executed on the appliance.
  • Needs TLS decryption / PCAP. A custom shell using TLS on port 443 might be mistaken for normal web traffic without content inspection. It would answer whether the outbound traffic on common ports contains reverse shell commands.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
lookback_daysnumber14Days of history to examine.
scope_hostslist[host]—Optional list of hostnames to narrow the behavioral queries.
uat_filenameslist[string]sample.exe, f_00478d.exe, kmsauto net.exeFilenames reported in UAT-6275 activity.
uat_hasheslist[hash]9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507, 73ac1bbfaee6c76c34f655ac0477a4cd930f2aa55e658c8e312ff81aac9a741f, 58d6fec4ba24c32d38c9a0c7c39df3cb0e91f500b323e841121d703c7b718681, fed979f93bcaf4e73ebd25748093a92095d5109cbd01d55f97bdc50ce509ad2fMalware hashes associated with UAT-6275 payloads.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint
Network telemetrynetworknetwork

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: This hunt correlates vulnerability state with behavioral file and script
  execution and follow-on persistence. A single rule on scheduled tasks is too noisy;
  this hunt provides the forensic triage required to link disparate stages into a
  single intrusion chain.
blind_spots:
- id: appliance-visibility-gap
  question: whether the initial bypass was executed on the appliance
  requires: EDR agent on the appliance itself
  risk: Compromise of the appliance that does not immediately result in follow-on
    activity on a monitored endpoint will be missed.
  stage: appliance-vulnerability-exploitation
- id: encrypted-reverse-shell
  question: whether the outbound traffic on common ports contains reverse shell commands
  requires: TLS decryption / PCAP
  risk: A custom shell using TLS on port 443 might be mistaken for normal web traffic
    without content inspection.
  stage: reverse-shell-c2
coverage:
- stage: appliance-vulnerability-exploitation
  status: covered
  steps:
  - vulnerability-scope
- stage: document-and-archive-delivery
  status: covered
  steps:
  - file-indicators
- stage: script-download-and-execution
  status: covered
  steps:
  - github-scripts
- stage: persistence-via-tasks-and-startup
  status: covered
  steps:
  - rare-tasks
- stage: reverse-shell-c2
  status: covered
  steps:
  - powershell-c2
guardrails:
  claims: no_unsupported
  evidence: citation_required
  missing_data: not_benign
  telemetry: untrusted
hunt:
  applicability: campaign-specific
  handoff: keep-as-periodic-hunt
  justification: UAT-6275 is actively targeting regional government and critical infrastructure
    with custom reverse shells; identifying these intrusions before exfiltration occurs
    is a high-priority defensive objective.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An espionage actor has established a beachhead via edge appliance exploitation
  or archive delivery, established persistence through scheduled tasks, and is maintaining
  access via a PowerShell-based reverse shell.
labels:
- hunt
- attack.t1053.005
- attack.t1059.001
- attack.t1133
- attack.t1190
- attack.t1204.002
- attack.t1547.001
- attack.t1071.001
- command and control
- execution
- initial access
- persistence
name: Regional Government and Infrastructure Espionage Activity
parameters:
  lookback_days:
    default: '14'
    description: Days of history to examine.
    type: number
  scope_hosts:
    default: []
    description: Optional list of hostnames to narrow the behavioral queries.
    type: list[host]
  uat_filenames:
    default:
    - sample.exe
    - f_00478d.exe
    - kmsauto net.exe
    description: Filenames reported in UAT-6275 activity.
    from:
      kind: article
      observed: '2026-10-15'
      ref: talos-uat-6275-espionage
    type: list[string]
  uat_hashes:
    default:
    - 9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507
    - 73ac1bbfaee6c76c34f655ac0477a4cd930f2aa55e658c8e312ff81aac9a741f
    - 58d6fec4ba24c32d38c9a0c7c39df3cb0e91f500b323e841121d703c7b718681
    - fed979f93bcaf4e73ebd25748093a92095d5109cbd01d55f97bdc50ce509ad2f
    description: Malware hashes associated with UAT-6275 payloads.
    from:
      kind: article
      observed: '2026-10-15'
      ref: talos-uat-6275-espionage
    type: list[hash]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://blog.talosintelligence.com/the-q3-vulnerability-pulse-discovery-exploitation/
    gates:
    - dry-run
    - lint
    model: hb_google/gemini-3-flash-preview
rationale: Focus on internet-facing Windows servers and infrastructure in the CIS
  region first. Expand to workstations if the GitHub-hosted scripts are detected on
  any beachhead host.
references:
- name: "Talos \u2014 The Q3 Vulnerability Pulse: Discovery \u2260 Exploitation"
  url: https://blog.talosintelligence.com/the-q3-vulnerability-pulse-discovery-exploitation/
related:
- hunt: winrar-vulnerability-hygiene
  reason: General WinRAR patching is a hygiene concern; this hunt specifically looks
    for the espionage actor's usage.
  relation: out-of-scope-alternative
scenario:
  stages:
  - name: Edge Appliance Exploitation
    observables:
    - CVE-2026-104935
    - Ivanti Connect Secure authentication bypass
    - SonicWall SMA maximum-severity SSRF
    - unintended alternate access path
    slug: appliance-vulnerability-exploitation
    tactic: initial-access
    techniques:
    - T1190
    - T1133
  - name: Malicious Document and Archive Delivery
    observables:
    - macro-enabled documents
    - WinRAR vulnerability exploit
    - sample.exe
    - f_00478d.exe
    - 9f1f11a708d393e0a4109ae189bc64f1f3e312653dcf317a2bd406f18ffcc507
    - 73ac1bbfaee6c76c34f655ac0477a4cd930f2aa55e658c8e312ff81aac9a741f
    slug: document-and-archive-delivery
    tactic: execution
    techniques:
    - T1204.002
    - T1566.001
  - name: Script Payload Download and Execution
    observables:
    - GitHub-hosted scripts
    - PowerShell activity
    - payload downloads from public services
    - powershell.exe
    slug: script-download-and-execution
    tactic: execution
    techniques:
    - T1059.001
    - T1105
  - name: Persistence via Tasks and Startup Folder
    observables:
    - Windows Startup folder changes
    - suspicious scheduled tasks
    - schtasks.exe
    slug: persistence-via-tasks-and-startup
    tactic: persistence
    techniques:
    - T1053.005
    - T1547.001
  - name: Reverse Shell Command and Control
    observables:
    - custom reverse shells
    - lightweight reverse shells
    slug: reverse-shell-c2
    tactic: command-and-control
    techniques:
    - T1071.001
    - T1095
  summary: UAT-6275 is conducting an espionage campaign against government and critical
    infrastructure in the CIS region using custom reverse shells. The group utilizes
    diverse initial access vectors including phishing with macro-enabled documents,
    WinRAR exploits, and the exploitation of vulnerabilities in Ivanti and SonicWall
    appliances, maintaining persistence through scheduled tasks and the Windows Startup
    folder.
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
  network:
    category: network
    name: Network telemetry
    telemetry:
    - network
tlp: clear
type: investigation
---


# Regional Government and Infrastructure Espionage Activity

This hunt follows the tradecraft of UAT-6275, an actor targeting government and critical infrastructure for diplomatic and economic intelligence. The hunt identifies vulnerable edge appliances such as Ivanti or SonicWall, then parallels searches for malicious file drops and GitHub-hosted script execution. Following an initial triage, it shifts to finding follow-on persistence in the task scheduler and outbound reverse-shell traffic, correlating these disparate stages into a high-confidence intrusion verdict.

## vulnerability-scope
<!-- Hosts with appliance vulnerabilities -->
Scope the hunt to hosts where the environment has found appliance-based vulnerabilities like the Ivanti bypass or SonicWall SSRF.

```sqlite target=endpoint role=scoping
~~~yaml
expected: A list of device UIDs affected by edge appliance vulnerabilities. Silence
  means no appliances in scope are flagged as vulnerable to these specific CVEs.
reads:
- device_uid
- cve_uid
- title
- severity
- first_seen
silence: not_evidence_of_absence
source: hb_vulnerability_finding
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_uid, cve_uid, title, severity, first_seen FROM hb_vulnerability_finding WHERE (cve_uid = 'CVE-2026-104935' OR LOWER(title) LIKE '%ivanti%' OR LOWER(title) LIKE '%sonicwall%')
```

## initial-execution
<!-- Check for initial delivery and execution -->
parallel:
- → file-indicators
- → github-scripts
join: → early-triage

## file-indicators
<!-- Search for malicious file indicators -->
Search for specific hashes and rare files dropped by suspicious parent processes like WinRAR.

```sqlite target=endpoint role=enrichment params=(uat_hashes=uat_hashes, scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: Any row showing known malicious hashes or files dropped by archive utilities.
  Silence means no suspicious drops were observed.
reads:
- device_hostname
- file_name
- file_path
- file_hash_sha256
- process_name
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_hostname, file_name, file_hash_sha256, process_name, time FROM hb_file_activity WHERE (instr(',' || '{{uat_hashes}}' || ',', ',' || file_hash_sha256 || ',') > 0 OR LOWER(process_name) LIKE '%\\winrar.exe') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## github-scripts
<!-- PowerShell scripts from GitHub -->
Identify PowerShell execution that pulls payloads from GitHub, a common UAT-6275 delivery method.

```sqlite target=endpoint role=detection-candidate params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: PowerShell script blocks containing GitHub URLs and execution keywords,
  indicating external payload retrieval.
reads:
- device_hostname
- script_content
- script_type
- time
silence: not_evidence_of_absence
source: hb_script_activity
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_hostname, script_content, script_type, time FROM hb_script_activity WHERE (LOWER(script_content) LIKE '%github%' AND (LOWER(script_content) LIKE '%iex%' OR LOWER(script_content) LIKE '%invoke-expression%' OR LOWER(script_content) LIKE '%downloadstring%')) AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## early-triage
<!-- Assess early infection likelihood -->
```agent target=hunter
cite: required
context:
- vulnerability-scope
- file-indicators
- github-scripts
max_iterations: 3
objective: Determine if any host in scope shows evidence of being successfully compromised
  by UAT-6275 based on the vulnerability findings and execution markers.
success_criteria: A per-host verdict citing specific vulnerability findings or script
  content.
tools:
- endpoint
- network
```

## persistence-and-c2
<!-- Check for persistence and C2 -->
parallel:
- → rare-tasks
- → powershell-c2
join: → final-triage

## rare-tasks
<!-- Rare scheduled tasks -->
Stack-count scheduled jobs to find rare persistence entries created by the actor.

```sqlite target=endpoint role=baseline params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: Scheduled tasks with rare command lines that appear on only one or two hosts.
  Silence means no rare tasks were identified.
prevalence:
  by: device_hostname
  key:
  - job_cmd_line
  rare_below: 3
reads:
- job_name
- job_cmd_line
- device_hostname
- time
silence: not_evidence_of_absence
source: hb_scheduled_job
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT job_name, job_cmd_line, COUNT(DISTINCT device_hostname) AS hosts, MIN(time) AS first_seen FROM hb_scheduled_job WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY job_cmd_line HAVING hosts <= 2
```

## powershell-c2
<!-- PowerShell reverse-shell connections -->
Monitor for outbound TCP connections from PowerShell or known binaries to detect reverse-shell activity.

```sqlite target=network role=triage params=(uat_filenames=uat_filenames, scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: Outbound connections from PowerShell or suspect binaries. Silence means
  no outbound traffic matching these patterns was found.
reads:
- device_hostname
- process_name
- dst_endpoint_ip
- dst_endpoint_port
- direction
- time
silence: not_evidence_of_absence
source: hb_network_connection
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_hostname, process_name, dst_endpoint_ip, dst_endpoint_port, direction, time FROM hb_network_connection WHERE (LOWER(process_name) LIKE '%\\powershell.exe' OR instr(',' || '{{uat_filenames}}' || ',', ',' || LOWER(process_name) || ',') > 0) AND direction = 'outbound' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## final-triage
<!-- Intrusion assessment -->
```agent target=hunter
cite: required
context:
- early-triage
- rare-tasks
- powershell-c2
max_iterations: 6
objective: Determine if any host showing early-stage signals also displays persistence
  (rare tasks) or C2 (outbound PowerShell), confirming the UAT-6275 espionage chain.
success_criteria: A final verdict of malicious | suspicious | benign per host.
tools:
- endpoint
- network
```

## route-assessment
<!-- Route on assessment -->
if~: "the final triage verdict is malicious for at least one host" (confidence: high, judge=hunter)
then: → contain-host
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: appliance-visibility-gap)
else: → close-out

## contain-host
<!-- Isolate compromised host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host using the endpoint agent. Collect the identified payloads for forensic analysis.
```
→ analyst-review

## analyst-review
<!-- Analyst review -->
```manual target=analyst
Examine the cited rows for the PowerShell scripts and rare tasks. Verify the destination IPs for reverse-shell traffic. Escalate if persistence is confirmed.
```
→ close-out

## close-out
<!-- Close out hunt -->
```manual target=analyst
Record the results. If no activity was found, verify if any new GitHub repositories have been identified for UAT-6275 and update the parameters for the next run.
```
→ 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, then reviewed by a person.