← All hunts high TLP:CLEAR Part 2 of 2

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

  1. Initial RMM domain discovery

    Query · scoping

    Identify any host in the estate making requests to known RMM infrastructure as a scoping lead.

    reads hb_dns_activitysql
    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

    What a hit looks like. A list of hosts and the RMM domains they are resolving. This query acts as the gate for the hunt.

  2. DNS prevalence of RMM domains

    Query · baseline

    Stack-count the domains seen on lead hosts to find rare instances that indicate unauthorized RMM usage.

    reads hb_dns_activitysql
    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

    What a hit looks like. RMM domains resolving on very few hosts. Fleet-wide IT tools will have high host counts and can be filtered.

  3. HTTP User-Agent inspection

    Query · enrichment

    Identify specific RMM clients by their unique HTTP User-Agent strings on the suspect hosts.

    reads hb_http_activitysql
    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')

    What a hit looks like. Hits on these User-Agent strings strongly suggest the presence of unauthorized NetSupport or Syncro agents.

  4. Analyze RMM network patterns

    Agent triage

    Evaluate whether the identified RMM network activity is consistent with sanctioned IT activity or an intrusion.

  5. Route on verdict

    Decision

    Route the hunt based on the agent's findings.

  6. Isolate host

    Response action

    Neutralize the threat while preserving evidence.

  7. Analyst forensic review

    Analyst task

    Perform deep dive analysis on suspicious hosts.

  8. Close out

    Analyst task

    Document findings and update policies.

Coverage

Scenario coverage

StageCoveredHow, 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

ParameterTypeDefaultWhat it is
lookback_daysnumber14Days of historical telemetry to examine.
rmm_domainslist[domain]remotepc.com, remotedesktop.com, syncromsp.com, syncroapi.com, kabutoservices.com, atera.com, cmdm.comodo.com, atera-agent-heartbeat.servicebus.windows.netKnown RMM domains identified in recent abuse campaigns.
rmm_user_agentslist[string]NetSupport Manager/1.3, JWrapperDownloader, Servicing/1.0.29.18406RMM-specific User-Agent strings identified in research.
scope_hostslist[host]Filter follow-on steps to these hosts; usually populated from the initial leads step.

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: 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.