Abused RMM Infrastructure and Network Patterns
An adversary is using unauthorized remote monitoring and management (RMM) tools for command and control, detectable via rare DNS lookups to RMM domains and specific User-Agent strings.
Based on research by Red Canary 2026-09-20 9 steps · 3 queries T1071.001 T1071.004 T1105
Brief
Why now
Adversaries frequently abuse legitimate software to maintain persistence and move laterally without triggering endpoint alerts. Red Canary recently detailed this challenge in their article, The dual-use dilemma: Rethinking detection for remote access tool abuse (https://redcanary.com/blog/security-operations/rmm-detection/). Because RMM tools like NetSupport, Atera, and Syncro are signed and perform standard administrative tasks, many security products treat them as inherently safe. This hunt addresses that gap by focusing on the network footprints these tools leave behind.
How the hunt flows
The first phase scopes the estate for any host communicating with known RMM domains. This query acts as a gate to limit the data volume for follow-on steps. It scans the DNS activity for a curated list of domains associated with tools like ScreenConnect, AnyDesk, and various MSP platforms.
Once the hunt identifies lead hosts, it branches into two parallel investigative paths. One path calculates the prevalence of each RMM domain across the entire fleet. If a domain appears on hundreds of hosts, it likely belongs to a sanctioned IT tool. If it appears on only one or two hosts, it warrants immediate investigation.
The second path inspects HTTP telemetry for the same hosts. It looks for identifying User-Agent strings known to belong to RMM clients. This metadata provides high-confidence evidence that a specific tool is active on the host, even if the binary name has been changed by the adversary.
In the final phase, an agent evaluates the combined evidence from the DNS and HTTP queries. The agent compares the rarity of the network connections against the specific metadata found to determine if the activity aligns with a malicious intrusion. An analyst then performs a forensic review of the suspicious binaries and their installation origin.
What this hunt cannot see
This hunt has two primary blind spots. First, if an RMM tool uses DNS-over-HTTPS (DoH) to resolve its command-and-control infrastructure, the DNS queries will not appear in standard network-level or endpoint-based DNS logs. Second, the hunt relies on the presence of HTTP metadata. If the RMM tool uses encrypted custom protocols or if the environment lacks HTTP inspection, the corroboration step will provide no results, leaving the hunt to rely solely on DNS prevalence.
Steps
-
Initial RMM domain discovery
Query · scopingIdentify any host in the estate making requests to known RMM infrastructure as a scoping lead.
reads hb_dns_activitysqlSELECT device_hostname, query_hostname, COUNT(*) as lookup_count, MIN(time) as first_seen, MAX(time) as last_seen FROM hb_dns_activity WHERE instr(',' || '{{rmm_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, query_hostnameWhat a hit looks like. A list of hosts and the RMM domains they are resolving. This query acts as the gate for the hunt.
-
DNS prevalence of RMM domains
Query · baselineStack-count the domains seen on lead hosts to find rare instances that indicate unauthorized RMM usage.
reads hb_dns_activitysqlSELECT LOWER(query_hostname) as rmm_domain, COUNT(DISTINCT device_hostname) as host_count, COUNT(*) as total_lookups FROM hb_dns_activity WHERE instr(',' || '{{rmm_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY 1 HAVING host_count <= 3 ORDER BY host_count ASCWhat a hit looks like. RMM domains resolving on very few hosts. Fleet-wide IT tools will have high host counts and can be filtered.
-
HTTP User-Agent inspection
Query · enrichmentIdentify specific RMM clients by their unique HTTP User-Agent strings on the suspect hosts.
reads hb_http_activitysqlSELECT device_hostname, url_hostname, user_agent, time FROM hb_http_activity WHERE instr(',' || '{{rmm_user_agents}}' || ',', ',' || user_agent || ',') > 0 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. Hits on these User-Agent strings strongly suggest the presence of unauthorized NetSupport or Syncro agents.
-
Analyze RMM network patterns
Agent triageEvaluate whether the identified RMM network activity is consistent with sanctioned IT activity or an intrusion.
-
Route on verdict
DecisionRoute the hunt based on the agent's findings.
-
Isolate host
Response actionNeutralize the threat while preserving evidence.
-
Analyst forensic review
Analyst taskPerform deep dive analysis on suspicious hosts.
-
Close out
Analyst taskDocument findings and update policies.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| RMM Network Communication | Yes | rmm-dns-leads, rmm-dns-prevalence, rmm-http-user-agents |
| RMM Phishing Lures T1566 · T1190 |
Out of scope | Belongs to the first hunt in this series (Abused RMM Staging and Lures). |
| RMM Loader Execution T1059.001 |
Out of scope | Belongs to the first hunt in this series. |
| RMM Persistence and Installation T1574.002 |
Out of scope | Belongs to the first hunt in this series. |
| Credential Access and Follow-on Payloads T1555 · T1486 |
Out of scope | Handled by identity-focused hunts targeting credential theft. |
Blind spots
- Needs cleartext DNS logging or endpoint-based DNS visibility. Malicious RMM clients using DoH will not appear in hb_dns_activity. It would answer whether the RMM tool is using DNS-over-HTTPS (DoH) to bypass network-level DNS logging.
- Needs hb_http_activity from a proxy or endpoint agent. Without HTTP metadata, the hunt relies entirely on DNS prevalence, which may increase false positives. It would answer whether the RMM tool is presenting a recognizable User-Agent.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
lookback_days | number | 14 | Days of historical telemetry to examine. |
rmm_domains | list[domain] | remotepc.com, remotedesktop.com, syncromsp.com, syncroapi.com, kabutoservices.com, atera.com, cmdm.comodo.com, atera-agent-heartbeat.servicebus.windows.net | Known RMM domains identified in recent abuse campaigns. |
rmm_user_agents | list[string] | NetSupport Manager/1.3, JWrapperDownloader, Servicing/1.0.29.18406 | RMM-specific User-Agent strings identified in research. |
scope_hosts | list[host] | — | Filter follow-on steps to these hosts; usually populated from the initial leads step. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Web server / proxy logs | siem | network |
Source
---
analysis: A simple detection rule on RMM domains fires on legitimate IT activity.
This hunt uses a prevalence model to identify rare RMM usage and corroborates it
with User-Agent metadata, requiring an analyst and agent to weigh the context of
the host's role.
blind_spots:
- id: doh-blind-spot
question: whether the RMM tool is using DNS-over-HTTPS (DoH) to bypass network-level
DNS logging
requires: cleartext DNS logging or endpoint-based DNS visibility
risk: Malicious RMM clients using DoH will not appear in hb_dns_activity.
stage: rmm-network-c2
- id: no-http-telemetry
question: whether the RMM tool is presenting a recognizable User-Agent
requires: hb_http_activity from a proxy or endpoint agent
risk: Without HTTP metadata, the hunt relies entirely on DNS prevalence, which may
increase false positives.
stage: rmm-network-c2
coverage:
- stage: rmm-network-c2
status: covered
steps:
- rmm-dns-leads
- rmm-dns-prevalence
- rmm-http-user-agents
- reason: Belongs to the first hunt in this series (Abused RMM Staging and Lures).
stage: initial-access-rmm-lures
status: out_of_scope
- reason: Belongs to the first hunt in this series.
stage: loader-execution-and-staging
status: out_of_scope
- reason: Belongs to the first hunt in this series.
stage: rmm-persistence-and-installation
status: out_of_scope
- reason: Handled by identity-focused hunts targeting credential theft.
stage: credential-access-and-follow-on
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: RMM abuse is a common precursor to ransomware. Identifying these
tools via network patterns provides a platform-agnostic detection method that
works even when adversaries use signed, legitimate binaries to bypass endpoint
security.
methodology: model-assisted
trigger: intel-report
hypothesis: An adversary is using unauthorized remote monitoring and management (RMM)
tools for command and control, detectable via rare DNS lookups to RMM domains and
specific User-Agent strings.
labels:
- hunt
- attack.t1071.001
- attack.t1071.004
- attack.t1105
name: Abused RMM Infrastructure and Network Patterns
parameters:
lookback_days:
default: '14'
description: Days of historical telemetry to examine.
type: number
rmm_domains:
default:
- remotepc.com
- remotedesktop.com
- syncromsp.com
- syncroapi.com
- kabutoservices.com
- atera.com
- cmdm.comodo.com
- atera-agent-heartbeat.servicebus.windows.net
description: Known RMM domains identified in recent abuse campaigns.
from:
kind: article
observed: '2026-06-17'
ref: red-canary-rmm-abuse
type: list[domain]
rmm_user_agents:
default:
- NetSupport Manager/1.3
- JWrapperDownloader
- Servicing/1.0.29.18406
description: RMM-specific User-Agent strings identified in research.
from:
kind: article
observed: '2026-06-17'
ref: red-canary-rmm-abuse
type: list[string]
scope_hosts:
default: []
description: Filter follow-on steps to these hosts; usually populated from the
initial leads step.
type: list[host]
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://redcanary.com/blog/security-operations/rmm-detection/
gates:
- dry-run
- lint
model: hb_google/gemini-3-flash-preview
rationale: Focus on workstations and servers first. Servers typically have more static
RMM usage patterns, making deviations stand out. The lead query acts as a gate;
use its results to populate scope_hosts for follow-on steps.
references:
- name: 'The dual-use dilemma: Rethinking detection for remote access tool abuse'
url: https://redcanary.com/blog/security-operations/rmm-detection/
related:
- hunt: abused-rmm-persistence-and-installation
reason: This hunt focuses on the network layer; binary-level persistence and service
installation are handled in a separate hunt.
relation: out-of-scope-alternative
scenario:
stages:
- name: RMM Phishing Lures
observables:
- ssa.msi
- Ecard9140.exe
- party_invite.exe
- Voicemailaudioext.exe
- docmentfilecsm_jw98evavuqm5gb3.exe
- IRS-Statement_Pr2ui4J9cfA6YEu.exe
- invited.exe
- MSTeam-installer.msi
slug: initial-access-rmm-lures
tactic: initial-access
techniques:
- T1566
- T1190
- name: RMM Loader Execution
observables:
- PowerShell downloading ZIP files
- Batch files extracting ZIPs
- SyncroLive.Agent.Runner.exe spawning msiexec.exe
- client32.exe execution from C:\Users\Public\
slug: loader-execution-and-staging
tactic: execution
techniques:
- T1059.001
- name: RMM Persistence and Installation
observables:
- client32.ini
- HostService.exe
- remotepcservice.exe
- RMMService.exe
- remotepchost1.exe
- C:\ProgramData\PDQ\PDQConnectAgent\token
- syncro.installer.exe
slug: rmm-persistence-and-installation
tactic: persistence
techniques:
- T1574.002
- name: RMM Network Communication
observables:
- remotepc.com
- remotedesktop.com
- syncromsp.com
- syncroapi.com
- kabutoservices.com
- atera.com
- cmdm.comodo.com
- 'User-Agent: NetSupport Manager/1.3'
- 'User-Agent: JWrapperDownloader'
- 'User-Agent: Servicing/1.0.29.18406'
- /access/JWrapper-Remote%20Access-version.txt
slug: rmm-network-c2
tactic: command-and-control
- name: Credential Access and Follow-on Payloads
observables:
- DICOMportable.zip
- DicomPortable.exe
- DeerStealer
- HijackLoader
- Sideloaded DLLs via ITarian
slug: credential-access-and-follow-on
tactic: credential-access
techniques:
- T1555
- T1486
summary: "Adversaries abuse legitimate, signed RMM tools like ScreenConnect, Syncro,\
\ and NetSupport by deploying them through phishing lures to establish stealthy\
\ persistence. These tools are often chained\u2014one RMM serving as a loader\
\ for others\u2014to facilitate follow-on malicious activity including credential\
\ theft and ransomware."
series:
index: 2
slug: the-dual-use-dilemma-rethinking-detection-for-remote-access-tool-abuse
title: 'The dual-use dilemma: Rethinking detection for remote access tool abuse'
total: 2
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
---
# Abused RMM Infrastructure and Network Patterns
Adversaries abuse legitimate RMM tools like Syncro, Atera, and NetSupport to maintain persistence and bypass binary-based detection. Because these tools are signed and trusted, their installation often goes unnoticed by signature-based tools. This hunt identifies unauthorized RMM usage by focusing on the network layer. It first scopes the environment for known RMM domains, then measures the fleet-wide prevalence of those domains to distinguish between sanctioned IT tools and malicious one-offs. It simultaneously inspects HTTP User-Agents for common RMM patterns on the suspicious hosts. An agent evaluates the combined evidence to determine if a host is compromised.
## rmm-dns-leads
<!-- Initial RMM domain discovery -->
Identify any host in the estate making requests to known RMM infrastructure as a scoping lead.
```sqlite target=endpoint role=scoping params=(rmm_domains=rmm_domains, lookback_days=lookback_days)
~~~yaml
expected: A list of hosts and the RMM domains they are resolving. This query acts
as the gate for the hunt.
reads:
- device_hostname
- query_hostname
- time
silence: not_evidence_of_absence
source: hb_dns_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, query_hostname, COUNT(*) as lookup_count, MIN(time) as first_seen, MAX(time) as last_seen FROM hb_dns_activity WHERE instr(',' || '{{rmm_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, query_hostname
```
## rmm-corroboration
<!-- Corroborate prevalence and User-Agents -->
parallel:
- → rmm-dns-prevalence
- → rmm-http-user-agents
join: → triage-rmm-network
## rmm-dns-prevalence
<!-- DNS prevalence of RMM domains -->
Stack-count the domains seen on lead hosts to find rare instances that indicate unauthorized RMM usage.
```sqlite target=endpoint role=baseline params=(rmm_domains=rmm_domains, scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: RMM domains resolving on very few hosts. Fleet-wide IT tools will have high
host counts and can be filtered.
prevalence:
by: device_hostname
key:
- query_hostname
rare_below: 4
reads:
- query_hostname
- device_hostname
- time
silence: not_evidence_of_absence
source: hb_dns_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT LOWER(query_hostname) as rmm_domain, COUNT(DISTINCT device_hostname) as host_count, COUNT(*) as total_lookups FROM hb_dns_activity WHERE instr(',' || '{{rmm_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY 1 HAVING host_count <= 3 ORDER BY host_count ASC
```
## rmm-http-user-agents
<!-- HTTP User-Agent inspection -->
Identify specific RMM clients by their unique HTTP User-Agent strings on the suspect hosts.
```sqlite target=web role=enrichment params=(lookback_days=lookback_days, rmm_user_agents=rmm_user_agents, scope_hosts=scope_hosts)
~~~yaml
expected: Hits on these User-Agent strings strongly suggest the presence of unauthorized
NetSupport or Syncro agents.
reads:
- device_hostname
- url_hostname
- user_agent
- time
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, url_hostname, user_agent, time FROM hb_http_activity WHERE instr(',' || '{{rmm_user_agents}}' || ',', ',' || user_agent || ',') > 0 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```
## triage-rmm-network
<!-- Analyze RMM network patterns -->
```agent target=hunter
cite: required
context:
- rmm-dns-leads
- rmm-dns-prevalence
- rmm-http-user-agents
max_iterations: 4
objective: Determine if any host is running an unauthorized RMM tool based on the
rarity of the C2 domain and the presence of identifying User-Agent strings. Differentiate
between sanctioned IT tools and malicious deployments.
success_criteria: A verdict for each host with supporting citations from the DNS and
HTTP results.
tools:
- endpoint
- web
```
## rmm-decision
<!-- Route on verdict -->
if~: "the triage-rmm-network verdict is malicious for at least one host" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: no-http-telemetry)
else: → close-out
## isolate-host
<!-- Isolate host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host immediately. Collect the RMM configuration files (e.g. client32.ini or token files) before clearing the binary.
```
→ analyst-review
## analyst-review
<!-- Analyst forensic review -->
```manual target=analyst
Examine the host for the RMM binary. Check its metadata and signature. Determine if it was installed by a legitimate IT process or dropped by a suspicious parent like PowerShell.
```
→ close-out
## close-out
<!-- Close out -->
```manual target=analyst
Record the sanctioned RMM tools identified. Update the organizational allowed software list and consider blocking unused RMM domains.
```
→ 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.