← All hunts critical TLP:CLEAR Part 1 of 2

Dell RecoverPoint Appliance Intrusion and Persistence

An adversary is exploiting hardcoded credentials (CVE-2026-22769) to deploy SLAYSTYLE web shells and persistent GRIMBOLT backdoors on Dell RecoverPoint for Virtual Machines appliances.

Based on research by Mandiant 2026-09-20 11 steps · 3 queries T1071 T1133 T1190 T1505.003

Brief

Why this hunt

Recent reporting by the Google Cloud blog titled UNC6201 exploiting a Dell RecoverPoint zero-day (https://cloud.google.com/blog/topics/threat-intelligence/unc6201-exploiting-dell-recoverpoint-zero-day) details how adversaries exploit hardcoded credentials. This vulnerability, tracked as CVE-2026-22769, provides root-level access to Dell RecoverPoint for Virtual Machines appliances. Once compromised, the adversary deploys SLAYSTYLE web shells and GRIMBOLT backdoors to maintain long-term access. These appliances often operate without traditional EDR coverage, making them ideal targets for lateral movement and virtual infrastructure manipulation.

How the Hunt Flows

The hunt begins by identifying vulnerable appliances. A scoping query checks vulnerability management findings for CVE-2026-22769 and maps affected assets to hostnames. This step is a gate; the hunt only proceeds if the environment contains known-vulnerable hosts. This prevents running expensive historical queries across the entire fleet if no exposure exists.

The second phase fans out to examine HTTP traffic. The query searches for HTTP PUT requests targeting the Apache Tomcat Manager text and HTML deployment endpoints. These requests indicate the delivery of a malicious WAR file used to host a web shell. The hunt focuses on requests that include deployment-related paths or specific URL queries known to trigger the manager API during exploitation.

Simultaneously, the hunt looks for rare file-system markers. It identifies WAR files in Tomcat directories and modifications to boot scripts such as convert_hosts.sh. By calculating the prevalence of these file paths across the appliance estate, the hunt highlights artifacts present on only one or two hosts. This allows an analyst to distinguish legitimate system updates from targeted persistence and unauthorized configuration changes.

The final phase correlates the vulnerability findings with the observed traffic and file activity. An analyst reviews the results to provide a verdict for each host. If the hunt confirms a compromise, it provides instructions for network isolation and manual disk forensics, specifically targeting logs that standard telemetry might miss, such as the fapi_cl_audit_log.log.

What This Hunt Cannot See

A host might be exploited before a vulnerability scanner flags it. If the scoping gate closes because of missing or delayed vulnerability data, the hunt will not find the intrusion. Additionally, endpoint auditing may not cover the specific Tomcat cache directories where the adversary stages files. Finally, the hunt cannot see application-level success codes for certain commands; these reside in proprietary audit logs which require manual extraction and review.

In this series

Steps

  1. Identify vulnerable Dell RecoverPoint appliances

    Query · scoping

    Find Dell RecoverPoint appliances currently reporting the hardcoded credential vulnerability and map them to hostnames.

    reads hb_vulnerability_findingsql
    SELECT d.hostname AS device_hostname, f.device_uid, f.affected_package_name, f.affected_package_version, f.severity, f.status, f.first_seen FROM hb_vulnerability_finding AS f JOIN hb_devices AS d ON f.device_uid = d.device_uid AND f.provider = d.provider WHERE f.cve_uid = '{{target_cve}}' AND f.status != 'suppressed'

    What a hit looks like. A list of hostnames and device UIDs flagging CVE-2026-22769. Silence proves no vulnerable hosts are currently reporting.

  2. Evaluate exposure level

    Agent triage

    Analyze the lead results to determine if a full forensic investigation of the appliance estate is required.

  3. Should the hunt proceed to deep investigation?

    Decision

    Gate the expensive fan-out queries on the presence of vulnerable appliances.

  4. HTTP exploitation of Tomcat Manager

    Query · triage

    Identify PUT requests targeting the Tomcat Manager deployment endpoint via both text and HTML APIs.

    reads hb_http_activitysql
    SELECT device_hostname, url_full, http_method, src_endpoint_ip, time FROM hb_http_activity WHERE (LOWER(url_path) LIKE '%/manager/text/deploy%' OR LOWER(url_path) LIKE '%/manager/html/deploy%' OR LOWER(url_query) LIKE '%path=/%') AND http_method = 'PUT' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. PUT requests to the manager endpoint indicate attempt or success in deploying a malicious WAR file.

  5. Rare persistence markers on Dell appliances

    Query · baseline

    Identify rare WAR file deployments, boot script modifications, or audit log tampering across the entire fleet.

    reads hb_file_activitysql
    SELECT file_path, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen FROM hb_file_activity WHERE (LOWER(file_path) LIKE '/var/lib/tomcat9/%.war' OR LOWER(file_path) LIKE '/var/cache/tomcat9/catalina/%' OR LOWER(file_path) LIKE '%convert_hosts.sh' OR LOWER(file_path) LIKE '/home/kos/auditlog/fapi_cl_audit_log.log') AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY file_path HAVING host_count <= 2

    What a hit looks like. A file path seen on only one or two appliances fleet-wide indicates a malicious artifact.

  6. Triage compromise per host

    Agent triage

    Correlate vulnerability exposure with observed HTTP activity and rare file modifications to confirm intrusion.

  7. Route on triage verdict

    Decision

    Take action on compromised hosts or route for manual review.

  8. Isolate compromised appliance

    Response action

    Contain the threat by severing network access to the compromised host.

  9. Manual analyst review

    Analyst task

    Confirm the agent findings and prepare for deep forensic analysis.

  10. Close out hunt

    Analyst task

    Record findings and update the vulnerability tracking status.

Coverage

Scenario coverage

StageCoveredHow, or why not
Tomcat Manager Zero-Day Exploitation
T1190 · T1133
Yes vulnerable-appliances, http-exploitation
SLAYSTYLE Web Shell Deployment
T1505.003
Yes rare-persistence-markers
Backdoor Persistence via Boot Script
T1505.003
Yes rare-persistence-markers
Stealthy Proxying via IPTables
T1090.003
Out of scope Belongs to another part of the 'UNC6201 exploiting a Dell RecoverPoint zero-day' series.
C2 via DNS-over-HTTPS
T1071
Out of scope Belongs to another part of the 'UNC6201 exploiting a Dell RecoverPoint zero-day' series.
Lateral Movement via Ghost NICs
T1090.003
Out of scope Belongs to another part of the 'UNC6201 exploiting a Dell RecoverPoint zero-day' series.

Blind spots

  • Needs hb_vulnerability_finding with CVE-2026-22769 coverage. A host may be exploited before it is flagged by vulnerability scanners, causing the gate to close prematurely. It would answer whether an appliance is vulnerable before the scanner updates.
  • Needs hb_file_activity covering /var/cache/tomcat9. If endpoint auditing excludes the Tomcat cache directories, the deployment of SLAYSTYLE might remain invisible. It would answer whether we can see the compilation of the malicious WAR file.
  • Needs /home/kos/auditlog/fapi_cl_audit_log.log. Standard HTTP logs show the request but not the application-level success or error codes only found in the proprietary audit log. It would answer whether the specific deployment command succeeded.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
lookback_daysnumber30Days of history to examine for exploitation and persistence markers.
scope_hostslist[host]Optional list of hostnames to focus on, typically derived from the scoping step.
target_cvestringCVE-2026-22769The specific Dell RecoverPoint vulnerability ID.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint
Web server / proxy logssiemnetwork

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: This hunt correlates vulnerability status with rare file-system behavior
  and HTTP traffic patterns using a gated approach, allowing it to find intrusion
  even when specific web shell filenames rotate.
blind_spots:
- id: missing-vulnerability-telemetry
  question: whether an appliance is vulnerable before the scanner updates
  requires: hb_vulnerability_finding with CVE-2026-22769 coverage
  risk: A host may be exploited before it is flagged by vulnerability scanners, causing
    the gate to close prematurely.
  stage: tomcat-manager-zero-day-exploit
- id: insufficient-telemetry-for-verdict
  question: whether we can see the compilation of the malicious WAR file
  requires: hb_file_activity covering /var/cache/tomcat9
  risk: If endpoint auditing excludes the Tomcat cache directories, the deployment
    of SLAYSTYLE might remain invisible.
  stage: webshell-war-persistence
- id: appliance-audit-logs
  question: whether the specific deployment command succeeded
  requires: /home/kos/auditlog/fapi_cl_audit_log.log
  risk: Standard HTTP logs show the request but not the application-level success
    or error codes only found in the proprietary audit log.
  stage: tomcat-manager-zero-day-exploit
coverage:
- stage: tomcat-manager-zero-day-exploit
  status: covered
  steps:
  - vulnerable-appliances
  - http-exploitation
- stage: webshell-war-persistence
  status: covered
  steps:
  - rare-persistence-markers
- stage: boot-script-backdoor-persistence
  status: covered
  steps:
  - rare-persistence-markers
- reason: Belongs to another part of the 'UNC6201 exploiting a Dell RecoverPoint zero-day'
    series.
  stage: stealthy-iptables-proxying
  status: out_of_scope
- reason: Belongs to another part of the 'UNC6201 exploiting a Dell RecoverPoint zero-day'
    series.
  stage: c2-doh-communication
  status: out_of_scope
- reason: Belongs to another part of the 'UNC6201 exploiting a Dell RecoverPoint zero-day'
    series.
  stage: vmware-infrastructure-pivoting
  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 a CVSS 10.0 zero-day in edge appliances allows root-level
    persistence that bypasses traditional OS security controls.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An adversary is exploiting hardcoded credentials (CVE-2026-22769) to deploy
  SLAYSTYLE web shells and persistent GRIMBOLT backdoors on Dell RecoverPoint for
  Virtual Machines appliances.
labels:
- hunt
- attack.t1190
- attack.t1133
- attack.t1505.003
- attack.t1071
name: Dell RecoverPoint Appliance Intrusion and Persistence
parameters:
  lookback_days:
    default: '30'
    description: Days of history to examine for exploitation and persistence markers.
    type: number
  scope_hosts:
    default: []
    description: Optional list of hostnames to focus on, typically derived from the
      scoping step.
    type: list[host]
  target_cve:
    default: CVE-2026-22769
    description: The specific Dell RecoverPoint vulnerability ID.
    type: string
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://cloud.google.com/blog/topics/threat-intelligence/unc6201-exploiting-dell-recoverpoint-zero-day
    gates:
    - dry-run
    - lint
    model: hb_google/gemini-3-flash-preview
rationale: Focus on systems running Dell RecoverPoint software. If CVE telemetry is
  delayed, search hb_software_inventory for the RecoverPoint package name.
references:
- name: UNC6201 exploiting a Dell RecoverPoint zero-day
  url: https://cloud.google.com/blog/topics/threat-intelligence/unc6201-exploiting-dell-recoverpoint-zero-day
related:
- hunt: vmware-infrastructure-pivoting
  reason: Compromised appliances are used as a beachhead to create Ghost NICs on the
    virtual infrastructure.
  relation: follows
scenario:
  stages:
  - name: Tomcat Manager Zero-Day Exploitation
    observables:
    - CVE-2026-22769
    - HTTP PUT /manager/text/deploy?path=/
    - admin user authentication to Apache Tomcat Manager
    - /home/kos/tomcat9/tomcat-users.xml
    - /home/kos/auditlog/fapi_cl_audit_log.log
    slug: tomcat-manager-zero-day-exploit
    tactic: initial-access
    techniques:
    - T1190
    - T1133
  - name: SLAYSTYLE Web Shell Deployment
    observables:
    - Malicious WAR file upload to /var/lib/tomcat9
    - org.apache.catalina.startup.HostConfig.deployWAR
    - /var/cache/tomcat9/Catalina
    - java.io
    - Base64.getDecoder
    - Runtime.getRuntime().exec
    slug: webshell-war-persistence
    tactic: persistence
    techniques:
    - T1505.003
  - name: Backdoor Persistence via Boot Script
    observables:
    - Modification of /home/kos/kbox/src/installation/distribution/convert_hosts.sh
    - Execution via /etc/rc.local at boot
    - GRIMBOLT C# Native AOT binary packed with UPX
    - BRICKSTORM binary replacement
    slug: boot-script-backdoor-persistence
    tactic: persistence
    techniques:
    - T1505.003
  - name: Stealthy Proxying via IPTables
    observables:
    - iptables -I INPUT -i eth0 -p tcp --dport 443 -m string --hex-string
    - iptables REDIRECT --to-ports 10443
    - Monitoring port 443 for Single Packet Authorization (SPA)
    - Systemd Journal command recovery
    slug: stealthy-iptables-proxying
    tactic: command-and-control
    techniques:
    - T1090.003
  - name: C2 via DNS-over-HTTPS
    observables:
    - DNS-over-HTTPS queries to Google, Cloudflare, and Amazon DNS services
    - C2 traffic associated with GRIMBOLT and BRICKSTORM
    slug: c2-doh-communication
    tactic: command-and-control
    techniques:
    - T1071
  - name: Lateral Movement via Ghost NICs
    observables:
    - Creation of temporary network ports (Ghost NICs) on virtual machines
    - Pivoting from ESXi servers to internal or SaaS infrastructure
    slug: vmware-infrastructure-pivoting
    tactic: lateral-movement
    techniques:
    - T1090.003
  summary: Suspected PRC-nexus actor UNC6201 exploited a zero-day (CVE-2026-22769)
    in Dell RecoverPoint for Virtual Machines using hardcoded Tomcat Manager credentials.
    They established persistent access via SLAYSTYLE web shells and backdoors, utilizing
    modified boot scripts and complex iptables rules for stealthy network proxying
    and Single Packet Authorization.
series:
  index: 1
  slug: unc6201-exploiting-a-dell-recoverpoint-zero-day
  title: UNC6201 exploiting a Dell RecoverPoint zero-day
  total: 2
severity: critical
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
---


# Dell RecoverPoint Appliance Intrusion and Persistence

This hunt identifies compromised Dell RecoverPoint appliances using a gated flow. It begins by finding vulnerable assets through vulnerability scan data. If vulnerable hosts exist, the hunt fans out to search for HTTP exploitation attempts against the Apache Tomcat Manager and rare file-system markers. The hunt examines both web shell deployment in Tomcat cache directories and persistent backdoor entries in boot scripts.

## vulnerable-appliances
<!-- Identify vulnerable Dell RecoverPoint appliances -->
Find Dell RecoverPoint appliances currently reporting the hardcoded credential vulnerability and map them to hostnames.

```sqlite target=endpoint role=scoping params=(target_cve=target_cve)
~~~yaml
expected: A list of hostnames and device UIDs flagging CVE-2026-22769. Silence proves
  no vulnerable hosts are currently reporting.
reads:
- device_uid
- hostname
- provider
- cve_uid
silence: evidence_of_absence
source: hb_vulnerability_finding
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT d.hostname AS device_hostname, f.device_uid, f.affected_package_name, f.affected_package_version, f.severity, f.status, f.first_seen FROM hb_vulnerability_finding AS f JOIN hb_devices AS d ON f.device_uid = d.device_uid AND f.provider = d.provider WHERE f.cve_uid = '{{target_cve}}' AND f.status != 'suppressed'
```

## evaluate-exposure
<!-- Evaluate exposure level -->
```agent target=hunter
cite: required
context:
- vulnerable-appliances
max_iterations: 3
objective: Determine if any Dell RecoverPoint appliances are vulnerable and prioritize
  them for historical telemetry review.
success_criteria: A recommendation to fan out or close the hunt.
tools:
- endpoint
- web
```

## is-vulnerable
<!-- Should the hunt proceed to deep investigation? -->
if~: "vulnerable Dell RecoverPoint appliances were identified" (confidence: high, judge=hunter)
then: → fan-out
indeterminate: → manual-review
unavailable: → manual-review (blind_spot: missing-vulnerability-telemetry)
else: → close-out

## fan-out
<!-- Fan out forensic queries -->
parallel:
- → http-exploitation
- → rare-persistence-markers
join: → triage-compromise

## http-exploitation
<!-- HTTP exploitation of Tomcat Manager -->
Identify PUT requests targeting the Tomcat Manager deployment endpoint via both text and HTML APIs.

```sqlite target=web role=triage params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: PUT requests to the manager endpoint indicate attempt or success in deploying
  a malicious WAR file.
reads:
- device_hostname
- url_path
- url_query
- http_method
- 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, time FROM hb_http_activity WHERE (LOWER(url_path) LIKE '%/manager/text/deploy%' OR LOWER(url_path) LIKE '%/manager/html/deploy%' OR LOWER(url_query) LIKE '%path=/%') AND http_method = 'PUT' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## rare-persistence-markers
<!-- Rare persistence markers on Dell appliances -->
Identify rare WAR file deployments, boot script modifications, or audit log tampering across the entire fleet.

```sqlite target=endpoint role=baseline params=(lookback_days=lookback_days)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: A file path seen on only one or two appliances fleet-wide indicates a malicious
  artifact.
prevalence:
  by: device_hostname
  key:
  - file_path
  rare_below: 3
reads:
- file_path
- device_hostname
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT file_path, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen FROM hb_file_activity WHERE (LOWER(file_path) LIKE '/var/lib/tomcat9/%.war' OR LOWER(file_path) LIKE '/var/cache/tomcat9/catalina/%' OR LOWER(file_path) LIKE '%convert_hosts.sh' OR LOWER(file_path) LIKE '/home/kos/auditlog/fapi_cl_audit_log.log') AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY file_path HAVING host_count <= 2
```

## triage-compromise
<!-- Triage compromise per host -->
```agent target=hunter
cite: required
context:
- evaluate-exposure
- http-exploitation
- rare-persistence-markers
max_iterations: 6
objective: Determine if the vulnerable Dell appliances show conclusive signs of exploitation
  (HTTP PUT) or persistence (rare WARs/scripts).
success_criteria: A malicious | suspicious | benign verdict for every host listed
  in the results.
tools:
- endpoint
- web
```

## route-verdict
<!-- Route on triage verdict -->
if~: "the triage verdict is malicious or suspicious for at least one host" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → manual-review
unavailable: → manual-review (blind_spot: insufficient-telemetry-for-verdict)
else: → close-out

## isolate-host
<!-- Isolate compromised appliance -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the Dell RecoverPoint appliance from the network and revoke any service credentials used by Apache Tomcat.
```
→ manual-review

## manual-review
<!-- Manual analyst review -->
```manual target=analyst
Review the cited rows from the triage step. For compromised hosts, acquire a disk image for analysis of the fapi_cl_audit_log.log and the Tomcat WAR cache.
```
→ close-out

## close-out
<!-- Close out hunt -->
```manual target=analyst
Document the final count of vulnerable vs. compromised appliances. If vulnerable appliances were found but no intrusion markers were present, notify the infrastructure team to prioritize patching.
```
→ 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.