Back to Intelligence

CVE-2026-102764: Chinese APT Exploited BeyondTrust as Zero-Day — Detection, Hunting, and Remediation Guide

SA
Security Arsenal Team
October 18, 2026
12 min read

SecurityWeek reports that a Chinese state-sponsored APT tracked as Armory Castle exploited a vulnerability in BeyondTrust products — CVE-2026-102764 — as an unpatched zero-day to gain initial access into victim environments. Once inside, the operators deployed custom tooling and, critically for defenders, deleted logs and forensic artifacts to erase evidence of their intrusion.

If you run BeyondTrust Remote Support or Privileged Remote Access in your environment, treat this as an active incident condition — not a patch-management ticket. Remote access and privileged session management platforms sit at the center of the trust boundary: they hold administrative credentials, broker sessions into sensitive systems, and are reachable from the network edge. A compromise here is functionally equivalent to handing the attacker a signed pass into your tier-0 infrastructure. The deliberate destruction of logs and artifacts by this actor means many organizations may have already been breached without knowing it.

This post breaks down the attack chain, gives you working detection content (Sigma, KQL, VQL), and walks through remediation and retro-hunting guidance.

Technical Analysis

What We Know

Per the reporting:

  • Vulnerability: CVE-2026-102764, a flaw in BeyondTrust products exploited in the wild before a patch was available (true zero-day exploitation).
  • Threat actor: A Chinese APT group tracked as Armory Castle, consistent with the broader pattern of PRC-nexus operations targeting remote access and edge infrastructure (a tradecraft trend we've seen accelerate through 2025 and into 2026).
  • Attack chain:
    1. Initial access via exploitation of the BeyondTrust vulnerability against an internet-facing or network-reachable instance.
    2. Post-exploitation: deployment of custom tools on or through the compromised appliance/server.
    3. Anti-forensics: deletion of logs and artifacts to destroy evidence of access and activity.

Why BeyondTrust Is a High-Value Target

From an attacker's perspective, remote support / privileged access appliances are a near-perfect initial access vector:

  • They are typically externally reachable or at least broadly exposed to partner/vendor networks.
  • They store or broker privileged credentials and session tokens.
  • They are frequently excluded from standard EDR coverage (appliance form factor, vendor-locked OS) and under-monitored.
  • Successful exploitation often yields code execution in a service context with elevated privileges — a direct path to domain-level compromise.

Exploitation Status

  • Confirmed active in-the-wild exploitation — this was exploited as a zero-day before public disclosure or a vendor fix.
  • Anti-forensic behavior (log deletion) strongly suggests the actor anticipated investigation and that dwell time in victim environments may be significant.
  • Defenders should monitor CISA's Known Exploited Vulnerabilities (KEV) catalog for an entry with a mandated remediation deadline, and check the official BeyondTrust security advisories page for the patched version and indicators of compromise (IOCs). Do not rely on the CVE record alone — vendor advisories for actively exploited flaws are typically updated with IoCs and hunting guidance in the days following disclosure.

The Anti-Forensics Problem

The log deletion detail is the most operationally important part of this story. It tells you two things:

  1. Local logs on the BeyondTrust host cannot be trusted as complete. If your investigation starts and ends with on-box logs, you will conclude "no evidence" incorrectly.
  2. Your only reliable evidence is telemetry captured off the appliance: forwarded syslog, network flow, upstream firewall/WAF logs, EDR on adjacent systems, and authentication logs on the systems the appliance connects to (jump targets, directory services, managed endpoints).

This is why the detection content below focuses on behaviors visible from the network and from downstream systems, not solely on the appliance itself.

Detection & Response

Sigma Rules

The following rules target the observable behaviors in this campaign: suspicious child processes spawned by BeyondTrust service components (custom tool deployment), and deliberate log/artifact destruction. Tune process names to your deployment (BeyondTrust Remote Support services commonly run under bomgar-derived service names on Windows jump points and components).

YAML
---
title: Suspicious Child Process Spawned by BeyondTrust Service Components
id: 3f8a2c91-7d44-4b1e-9a05-c6d2e8f1a734
status: experimental
description: Detects command shells, scripting engines, or system utilities spawned by BeyondTrust Remote Support / Privileged Remote Access service processes, consistent with post-exploitation tool deployment following exploitation of CVE-2026-102764.
references:
  - https://www.securityweek.com/chinese-apt-exploited-beyondtrust-vulnerability-as-zero-day/
  - https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.execution
  - attack.t1059
  - attack.initial_access
  - attack.t1190
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|contains:
      - '\bomgar'
      - '\beyondtrust'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\certutil.exe'
      - '\bitsadmin.exe'
      - '\curl.exe'
      - '\wget.exe'
  condition: selection_parent and selection_child
falsepositives:
  - BeyondTrust support sessions legitimately launching shells on managed endpoints — scope to the BeyondTrust server/jump host itself rather than session targets
level: high
---
title: Security Log Clearing or Audit Policy Tampering
id: 8b1e4f27-2a93-4d5c-b761-9e0c3a5d82f6
status: experimental
description: Detects clearing of Windows event logs or disabling of audit policy, matching the anti-forensic log deletion behavior reported in the Armory Castle BeyondTrust campaign.
references:
  - https://www.securityweek.com/chinese-apt-exploited-beyondtrust-vulnerability-as-zero-day/
  - https://attack.mitre.org/techniques/T1070/001/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.defense_evasion
  - attack.t1070.001
logsource:
  category: process_creation
  product: windows
detection:
  selection_wevtutil:
    Image|endswith: '\wevtutil.exe'
    CommandLine|contains:
      - ' cl '
      - ' clear-log '
  selection_auditpol:
    Image|endswith: '\auditpol.exe'
    CommandLine|contains:
      - '/clear'
      - '/disable'
  selection_ps:
    CommandLine|contains:
      - 'Clear-EventLog'
      - 'Remove-EventLog'
      - 'Limit-EventLog'
  condition: 1 of selection_*
falsepositives:
  - Rare; log clearing is almost never legitimate administrative activity on production servers
level: critical
---
title: Outbound Connection from BeyondTrust Service Process to External Host
id: c57d9a14-60e8-4f2b-a3c9-8d1b7e5f4028
status: experimental
description: Detects BeyondTrust service executables initiating outbound network connections to non-corporate destinations, potentially indicating C2 communication or data staging by custom tooling deployed after CVE-2026-102764 exploitation.
references:
  - https://www.securityweek.com/chinese-apt-exploited-beyondtrust-vulnerability-as-zero-day/
  - https://attack.mitre.org/techniques/T1071/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.command_and_control
  - attack.t1071
logsource:
  category: network_connection
  product: windows
detection:
  selection:
    Image|contains:
      - '\bomgar'
      - '\beyondtrust'
    Initiated: 'true'
  filter_vendor:
    DestinationHostname|endswith:
      - '.beyondtrust.com'
      - '.bomgar.com'
  condition: selection and not filter_vendor
falsepositives:
  - Legitimate BeyondTrust cloud portal connectivity — build an allowlist of known vendor endpoints and corporate destinations before enabling at high level
level: medium

KQL — Microsoft Sentinel / Defender Hunting

This query hunts for the two core behaviors: BeyondTrust service processes spawning shells or utilities, and log-clearing activity on or around BeyondTrust hosts. Run it across a 30-day lookback — the actor's log deletion means shallow lookbacks will miss historical compromise.

KQL — Microsoft Sentinel / Defender
// Hunt: BeyondTrust post-exploitation behavior (CVE-2026-102764 / Armory Castle)
// Part 1: BeyondTrust service processes spawning shells, scripting engines, or download utilities
let btProcesses = dynamic(["bomgar", "beyondtrust"]);
let suspiciousChildren = dynamic(["cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe", "regsvr32.exe", "certutil.exe", "bitsadmin.exe", "curl.exe", "wget.exe", "net.exe", "nltest.exe", "whoami.exe"]);
let shellSpawns =
DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where InitiatingProcessFileName has_any (btProcesses) or InitiatingProcessFolderPath has_any (btProcesses)
| where FileName in~ (suspiciousChildren)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName, ReportId;
// Part 2: Log clearing / anti-forensics on the same estate
let logClearing =
DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where (FileName =~ "wevtutil.exe" and ProcessCommandLine has_any (" cl ", "clear-log"))
   or (FileName =~ "auditpol.exe" and ProcessCommandLine has_any ("/clear", "/disable"))
   or ProcessCommandLine has_any ("Clear-EventLog", "Remove-EventLog")
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, AccountName, InitiatingProcessFileName, ReportId;
// Correlate: flag any device appearing in both sets within the window
shellSpawns
| join kind=leftouter (logClearing | summarize LogClearEvents = count(), FirstClear = min(TimeGenerated) by DeviceName) on DeviceName
| extend LogClearingOnHost = iif(isnotempty(LogClearEvents), "YES - investigate as priority", "no")
| sort by TimeGenerated asc
;
// Run separately: show all log-clearing events regardless of BeyondTrust correlation
// logClearing | sort by TimeGenerated asc

Also review Windows Event IDs 1102 (Security log cleared) and 104 (System log cleared) in SecurityEvent / Event tables, and check your syslog pipeline for gaps: an appliance that abruptly stops forwarding logs is itself a detection signal.

Velociraptor VQL

Use this artifact to sweep BeyondTrust servers and jump hosts for suspicious process lineage and artifact deletion indicators:

VQL — Velociraptor
-- Hunt: BeyondTrust post-exploitation (CVE-2026-102764)
-- Identify suspicious child processes of BeyondTrust service components
-- and execution of log-clearing utilities across the estate
SELECT Pid,
       Ppid,
       Name,
       Exe,
       CommandLine,
       Username,
       CreateTime,
       pslist(Pid=Ppid).Exe AS ParentExe
FROM pslist()
WHERE (ParentExe =~ '(?i)bomgar|beyondtrust'
        AND Name =~ '(?i)cmd|powershell|pwsh|wscript|cscript|mshta|rundll32|certutil|bitsadmin|curl|wget')
   OR CommandLine =~ '(?i)wevtutil.*(cl|clear-log)|auditpol.*(/clear|/disable)|Clear-EventLog|Remove-EventLog'

Complement this with a filesystem timeline hunt (glob() over BeyondTrust installation and temp directories sorted by modification time) to surface dropped custom tooling, and netstat() filtered to BeyondTrust process IDs for unexpected outbound sessions.

Remediation / Verification Script

Run this on Windows jump hosts and BeyondTrust server components to verify patch state, check for log tampering, and confirm forwarding integrity. For BeyondTrust appliance-based deployments, use the vendor console to confirm the base version against the advisory.

PowerShell
# CVE-2026-102764 - BeyondTrust compromise verification and hardening checks
# Run elevated on BeyondTrust servers and jump clients

# 1) Check for evidence of log clearing (Event 1102 = Security log cleared, 104 = System log cleared)
Write-Host "[+] Checking for log clearing events (last 90 days)..." -ForegroundColor Cyan
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=1102; StartTime=(Get-Date).AddDays(-90)} -ErrorAction SilentlyContinue |
  Select-Object TimeCreated, Message | Format-List
Get-WinEvent -FilterHashtable @{LogName='System'; Id=104; StartTime=(Get-Date).AddDays(-90)} -ErrorAction SilentlyContinue |
  Select-Object TimeCreated, Message | Format-List

# 2) Identify BeyondTrust services and their binary paths for version verification
Write-Host "[+] Enumerating BeyondTrust services..." -ForegroundColor Cyan
Get-CimInstance Win32_Service |
  Where-Object { $_.PathName -match 'bomgar|beyondtrust' } |
  Select-Object Name, State, StartName, PathName | Format-List

# 3) Check whether Security log was truncated: earliest event timestamp vs. expected retention
Write-Host "[+] Checking earliest available Security log event (truncation indicator)..." -ForegroundColor Cyan
$oldest = Get-WinEvent -LogName Security -MaxEvents 1 -Oldest -ErrorAction SilentlyContinue
if ($oldest) { Write-Host "    Oldest Security event: $($oldest.TimeCreated)" }
else { Write-Host "    WARNING: Security log is empty or inaccessible - possible tampering" -ForegroundColor Red }

# 4) Confirm log forwarding is functioning (Sysmon/forwarder service present and running)
Write-Host "[+] Checking log forwarding / monitoring agents..." -ForegroundColor Cyan
Get-Service -ErrorAction SilentlyContinue |
  Where-Object { $_.Name -match 'sysmon|wef|nxlog|wazuh|crowdstrike|csagent|sense|mdedefender' } |
  Select-Object Name, Status, StartType | Format-Table

# 5) Audit recent executable drops in common staging locations
Write-Host "[+] Scanning staging directories for recently written executables..." -ForegroundColor Cyan
$paths = @("C:\ProgramData","C:\Windows\Temp","C:\Users\Public","$env:TEMP")
foreach ($p in $paths) {
  Get-ChildItem -Path $p -Recurse -Include *.exe,*.dll,*.ps1,*.bat -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) } |
    Select-Object FullName, LastWriteTime, Length
}

# 6) REMINDER: Patch action
Write-Host "`n[!] ACTION REQUIRED: Apply the BeyondTrust security update addressing CVE-2026-102764" -ForegroundColor Yellow
Write-Host "    Verify your Remote Support / Privileged Remote Access base version against the official" -ForegroundColor Yellow
Write-Host "    BeyondTrust security advisory. Do not rely on version display alone - confirm via vendor portal." -ForegroundColor Yellow

For Linux-based BeyondTrust appliances, check integrity via the vendor console and your forwarded syslog:

Bash / Shell
#!/bin/bash
# CVE-2026-102764 - appliance-side triage (run via vendor-approved shell access where permitted)
# 1) Look for gaps in local logs (unexpected truncation or missing date ranges)
echo "[+] Log file sizes and timestamps — look for anomalies or recent truncation"
ls -la /var/log/ | grep -E 'messages|secure|syslog|audit'
echo "[+] First vs last entries in auth/syslog — check for missing windows"
head -1 /var/log/syslog 2>/dev/null || head -1 /var/log/messages 2>/dev/null
# 2) Check for cleared shell histories
echo "[+] Shell history files — zero-length or recently replaced files are suspicious"
find /root /home -name ".bash_history" -exec ls -la {} \; 2>/dev/null
# 3) Recent binary drops in writable directories
echo "[+] Recently modified executables in /tmp, /var/tmp, /dev/shm"
find /tmp /var/tmp /dev/shm -type f -mtime -30 2>/dev/null | xargs ls -la 2>/dev/null
# 4) Verify syslog forwarding is alive
echo "[+] Syslog forwarding service status"
systemctl status rsyslog 2>/dev/null | head -5 || service syslog status 2>/dev/null

Remediation

  1. Patch immediately. Apply the BeyondTrust update addressing CVE-2026-102764 to all Remote Support and Privileged Remote Access deployments. Pull the fixed version number and upgrade instructions directly from the official BeyondTrust security advisories page (https://www.beyondtrust.com/trust-center/security-advisories) — the advisory also carries IoCs that may be published post-disclosure. If the flaw is added to CISA's Known Exploited Vulnerabilities catalog, federal and KEV-aligned organizations must remediate within the mandated deadline; treat that clock as your own regardless of sector.

  2. Assume breach until proven otherwise. Because exploitation began as a zero-day and the actor deleted evidence, patching alone does not establish that you were not compromised before the fix. Treat every BeyondTrust instance that was exposed and unpatched during the exploitation window as potentially compromised.

  3. Retro-hunt with off-box telemetry. Since local logs may have been destroyed, pivot to sources the attacker could not touch: forwarded syslog (if configured), perimeter firewall and WAF logs for requests to BeyondTrust web interfaces, VPN/ZTNA access logs, NetFlow for unexpected outbound sessions from the appliance, and authentication logs on downstream systems (Active Directory, jump targets, managed endpoints). Look specifically for time gaps in appliance log forwarding — the gap is the finding.

  4. Rotate credentials. BeyondTrust brokers privileged sessions. Rotate credentials stored in or transiting the platform: service accounts, vaulted credentials, API keys, session broker accounts, and any administrative accounts used through the platform during the exposure window.

  5. Restrict exposure. Place BeyondTrust portals behind a VPN, ZTNA gateway, or IP allowlist where operationally feasible. Administrative interfaces should never be directly internet-facing. This does not substitute for patching but reduces the attack surface for the next zero-day — and there will be one.

  6. Enable and verify log forwarding now. If your appliance is not shipping logs to a SIEM in near-real-time, fix that this week. Log forwarding is the single control that would have defeated this actor's anti-forensic playbook.

  7. Review session recordings. BeyondTrust Remote Support maintains session recordings — an evidence source attackers frequently overlook. Review recordings from the exploitation window for unauthorized sessions.

Bottom Line

Armory Castle's exploitation of CVE-2026-102764 follows the defining pattern of Chinese APT operations in 2025–2026: target the edge and remote access infrastructure, gain access before a patch exists, and destroy the evidence on the way through. Your defense must be built on the same assumptions — patch fast, hunt back in time using telemetry the attacker can't reach, and rotate every credential the platform touched. If you need help scoping a retro-hunt or validating your BeyondTrust deployment, engage your IR provider before you close the ticket.

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.