EXPLORE
← Back to Explore
crowdstrike_cqlHunting

Unauthorized RMM Tool Usage

Detects the execution of Remote Monitoring & Management (RMM) and remote access tools such as AnyDesk, TeamViewer, ScreenConnect, Atera, Splashtop, RustDesk, and others. Threat actors increasingly abuse legitimate RMM software for initial access, persistence, and hands-on-keyboard activity because it blends in with normal IT operations.

MITRE ATT&CK

command-and-control

Detection Query

#event_simpleName=ProcessRollup2 OR #event_simpleName=SyntheticProcessRollup2
| ImageFileName=/(\\|\/)(?<FileName>[^\\\/]+)$/
| case {
    FileName=/^anydesk(_custom)?(\.exe)?$/i                                  | RMMTool:="AnyDesk";
    FileName=/^(teamviewer(_service|_desktop)?|tv_w32|tv_x64)(\.exe)?$/i     | RMMTool:="TeamViewer";
    FileName=/^(screenconnect|connectwise)[\w.]*(\.exe)?$/i                  | RMMTool:="ScreenConnect / ConnectWise";
    FileName=/^(ateraagent|atera[\w.]*)(\.exe)?$/i                           | RMMTool:="Atera";
    FileName=/^(splashtop[\w.]*|srservice|strwinclt|srmanager)(\.exe)?$/i    | RMMTool:="Splashtop";
    FileName=/^rustdesk(\.exe)?$/i                                           | RMMTool:="RustDesk";
    FileName=/^supremo(helper|service)?(\.exe)?$/i                           | RMMTool:="Supremo";
    FileName=/^ammyy[\w.]*(\.exe)?$/i                                        | RMMTool:="Ammyy Admin";
    FileName=/^ultraviewer[\w.]*(\.exe)?$/i                                  | RMMTool:="UltraViewer";
    FileName=/^(dwagent|dwagsvc)(\.exe)?$/i                                  | RMMTool:="DWService";
    FileName=/^meshagent(\.exe)?$/i                                          | RMMTool:="MeshCentral / TacticalRMM";
    FileName=/^(logmein[\w.]*|lmiguardiansvc)(\.exe)?$/i                     | RMMTool:="LogMeIn";
    FileName=/^(gotoassist[\w.]*|gotohttp|g2comm|g2host)(\.exe)?$/i          | RMMTool:="GoTo Assist";
    FileName=/^(rutserv|rfusclient|remoteutilities[\w.]*)(\.exe)?$/i         | RMMTool:="Remote Utilities";
    FileName=/^radmin[\w.]*(\.exe)?$/i                                       | RMMTool:="Radmin";
    FileName=/^(nomachine|nxservice|nxplayer|nxnode)(\.exe)?$/i              | RMMTool:="NoMachine";
    FileName=/^(dwrcs|dameware[\w.]*)(\.exe)?$/i                             | RMMTool:="DameWare";
    FileName=/^(zohours|zohomeeting|zaservice|za_connect)(\.exe)?$/i         | RMMTool:="Zoho Assist";
    FileName=/^(ngrok|frpc|frps)(\.exe)?$/i                                  | RMMTool:="Tunneling (ngrok/frp)";
    * | RMMTool:="none";
}
| RMMTool != "none"
| groupBy([RMMTool, aid, ComputerName, UserName], function=[
    count(as=Executions),
    collect([ImageFileName, CommandLine], limit=10),
    min(@timestamp, as=FirstSeen),
    max(@timestamp, as=LastSeen)
  ], limit=10000)
| formatTime(format="%F %T %Z", field=FirstSeen, as=FirstSeen)
| formatTime(format="%F %T %Z", field=LastSeen, as=LastSeen)
| sort(LastSeen, order=desc)

Author

ByteRay GmbH

Data Sources

Endpoint

Platforms

windowslinux

Tags

Huntingcs_module:Insight
Raw Content
# --- Query Metadata ---
# Human-readable name for the query. Will be displayed as the title.
name: Unauthorized RMM Tool Usage

# MITRE ATT&CK technique IDs
mitre_ids:
  - T1219

# Description of what the query does and its purpose.
description: |
  Detects the execution of Remote Monitoring & Management (RMM) and remote access tools such as AnyDesk, TeamViewer, ScreenConnect, Atera, Splashtop, RustDesk, and others. Threat actors increasingly abuse legitimate RMM software for initial access, persistence, and hands-on-keyboard activity because it blends in with normal IT operations.

# The author or team that created the query.
author: ByteRay GmbH

# The required log sources to run this query successfully in Next-Gen SIEM.
log_sources:
  - Endpoint

# The CrowdStrike modules required to run this query.
cs_required_modules:
  - Insight

# Tags for filtering and categorization.
tags:
  - Hunting

# --- Query Content ---
# The actual CrowdStrike Query Language (CQL) code.
# Using the YAML block scalar `|` allows for multi-line strings.
cql: |
  #event_simpleName=ProcessRollup2 OR #event_simpleName=SyntheticProcessRollup2
  | ImageFileName=/(\\|\/)(?<FileName>[^\\\/]+)$/
  | case {
      FileName=/^anydesk(_custom)?(\.exe)?$/i                                  | RMMTool:="AnyDesk";
      FileName=/^(teamviewer(_service|_desktop)?|tv_w32|tv_x64)(\.exe)?$/i     | RMMTool:="TeamViewer";
      FileName=/^(screenconnect|connectwise)[\w.]*(\.exe)?$/i                  | RMMTool:="ScreenConnect / ConnectWise";
      FileName=/^(ateraagent|atera[\w.]*)(\.exe)?$/i                           | RMMTool:="Atera";
      FileName=/^(splashtop[\w.]*|srservice|strwinclt|srmanager)(\.exe)?$/i    | RMMTool:="Splashtop";
      FileName=/^rustdesk(\.exe)?$/i                                           | RMMTool:="RustDesk";
      FileName=/^supremo(helper|service)?(\.exe)?$/i                           | RMMTool:="Supremo";
      FileName=/^ammyy[\w.]*(\.exe)?$/i                                        | RMMTool:="Ammyy Admin";
      FileName=/^ultraviewer[\w.]*(\.exe)?$/i                                  | RMMTool:="UltraViewer";
      FileName=/^(dwagent|dwagsvc)(\.exe)?$/i                                  | RMMTool:="DWService";
      FileName=/^meshagent(\.exe)?$/i                                          | RMMTool:="MeshCentral / TacticalRMM";
      FileName=/^(logmein[\w.]*|lmiguardiansvc)(\.exe)?$/i                     | RMMTool:="LogMeIn";
      FileName=/^(gotoassist[\w.]*|gotohttp|g2comm|g2host)(\.exe)?$/i          | RMMTool:="GoTo Assist";
      FileName=/^(rutserv|rfusclient|remoteutilities[\w.]*)(\.exe)?$/i         | RMMTool:="Remote Utilities";
      FileName=/^radmin[\w.]*(\.exe)?$/i                                       | RMMTool:="Radmin";
      FileName=/^(nomachine|nxservice|nxplayer|nxnode)(\.exe)?$/i              | RMMTool:="NoMachine";
      FileName=/^(dwrcs|dameware[\w.]*)(\.exe)?$/i                             | RMMTool:="DameWare";
      FileName=/^(zohours|zohomeeting|zaservice|za_connect)(\.exe)?$/i         | RMMTool:="Zoho Assist";
      FileName=/^(ngrok|frpc|frps)(\.exe)?$/i                                  | RMMTool:="Tunneling (ngrok/frp)";
      * | RMMTool:="none";
  }
  | RMMTool != "none"
  | groupBy([RMMTool, aid, ComputerName, UserName], function=[
      count(as=Executions),
      collect([ImageFileName, CommandLine], limit=10),
      min(@timestamp, as=FirstSeen),
      max(@timestamp, as=LastSeen)
    ], limit=10000)
  | formatTime(format="%F %T %Z", field=FirstSeen, as=FirstSeen)
  | formatTime(format="%F %T %Z", field=LastSeen, as=LastSeen)
  | sort(LastSeen, order=desc)