Detection rules › YARA-L
Uncommon or Suspicious RMM Tool Execution Detected
This detection rule identifies uncommon or suspicious Remote Monitoring and Management (RMM) tools, leveraging intelligence from the LOL-RMM (Living Off the Land RMM) project. While RMM tools are widely used for IT administration, remote support, and network management, they are also frequently abused by attackers, initial access brokers (IABs), and ransomware operators to establish persistent remote access, execute malicious commands, or deploy additional payloads. This rule detects RMM software that is not commonly observed in the environment, indicating potential unauthorized access or lateral movement.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Command & Control |
References
Telemetry coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule body
// Copyright 2025 Google LLC. Licensed under Apache-2.0.
rule win_pua_detection_of_uncommon_rmm {
meta:
author = "Georg Lauenstein - suresecure GmbH"
description = "This detection rule identifies uncommon or suspicious Remote Monitoring and Management (RMM) tools, leveraging intelligence from the LOL-RMM (Living Off the Land RMM) project. While RMM tools are widely used for IT administration, remote support, and network management, they are also frequently abused by attackers, initial access brokers (IABs), and ransomware operators to establish persistent remote access, execute malicious commands, or deploy additional payloads. This rule detects RMM software that is not commonly observed in the environment, indicating potential unauthorized access or lateral movement."
rule_id = "mr_f5681a0f-215f-4055-80c7-864ee39bcfb8"
rule_name = "Uncommon or Suspicious RMM Tool Execution Detected"
tactic = "TA0011"
technique = "T1219"
reference = "https://lolrmm.io/"
type = "alert"
platform = "Windows, EDR"
data_source = "Microsoft Sysmon, Windows Event Logs"
severity = "Medium" // Adjust based on your risk assessment
priority = "Medium" // Adjust based on your incident response process
events:
$rmm_tool.metadata.event_type = "PROCESS_LAUNCH"
(
// 247ithelp.com (ConnectWise) RMM
$rmm_tool.target.process.file.full_path = /\\Remote Workforce Client\.exe$/ nocase
) or
(
// Potential Acronic Cyber Protect (Remotix) RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\AcronisCyberProtectConnectAgent\.exe$/ nocase
) or
(
// Potential AeroAdmin RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\aeroadmin\.exe|\\AeroAdmin\.exe/ nocase
) or
(
// Potential Air Live Drive RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\AirLiveDrive\.exe$/ nocase
) or
(
// Potential AliWangWang-remote-control RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\alitask\.exe$/ nocase
) or
(
// Potential Alpemix RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\AlpemixService\.exe$/ nocase
) or
(
// Potential Any Support RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\ManualLauncher\.exe$/ nocase
) or
(
// Potential Anyplace Control RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\apc_host\.exe$/ nocase
) or
(
// Potential aria2 RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\aria2c\.exe$/ nocase
) or
(
// Potential Atera RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\AgentPackageNetworkDiscovery\.exe|\\AgentPackageTaskScheduler\.exe|\\AteraAgent\.exe|\\atera_agent\.exe|\\ateraagent\.exe/ nocase
) or
(
// Potential Auvik RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\auvik\.engine\.exe|\\auvik\.agent\.exe/ nocase
) or
(
// Potential Absolute (Computrace) RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\rpcnet\.exe|\\ctes\.exe|\\ctespersitence\.exe|\\cteshostsvc\.exe|\\rpcld\.exe/ nocase
) or
(
// Potential Bluetrait MSP Agent Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\Bluetrait MSP Agent\.exe|\\BluetraitUserAgent\.exe|\\Bluetrait Agent\\libraries\\paexec\.exe/ nocase
) or
(
// Potential BeamYourScreen RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\beamyourscreen\.exe|\\beamyourscreen-host\.exe/ nocase
) or
(
// Potential Connectwise Automate (LabTech) RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\ltsvc\.exe|\\ltsvcmon\.exe|\\lttray\.exe/ nocase
) or
(
// Potential Duplicati RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\Duplicati\.Server\.exe$/ nocase
) or
(
// Potential FixMe.it RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\FixMeit Unattended Access Setup\.exe|\\TiExpertStandalone\.exe|\\FixMeit Client\.exe|\\FixMeit Expert Setup\.exe|\\TiExpertCore\.exe|\\TiClientCore\.exe/ nocase
) or
(
// Potential FleetDeck.io RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\fleetdeck_agent_svc\.exe|\\fleetdeck_commander_svc\.exe|\\fleetdeck_installer\.exe|\\fleetdeck_commander_launcher\.exe|\\fleetdeck_agent\.exe/ nocase
) or
(
// Potential Level.io RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\level-windows-amd64\.exe|\\level\.exe|\\level-remote-control-ffmpeg\.exe/ nocase
) or
(
// Potential NetSupport Manager RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\pcictlui\.exe|\\client32\.exe|\\pcicfgui\.exe/ nocase
) or
(
// Potential NinjaRMM RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\ninjarmmagent\.exe|\\NinjaRMMAgent\.exe|\\NinjaRMMAgenPatcher\.exe|\\ninjarmm-cli\.exe/ nocase
) or
(
// Potential REMCOS RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\remcos/ nocase
) or
(
// Potential Rocket Remote Desktop RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\RocketRemoteDesktop_Setup\.exe$/ nocase
) or
(
// Potential Tactical RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\tacticalrmm\.exe$/ nocase
) or
(
// Potential TightVNC RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\tvnviewer\.exe|\\tvnserver\.exe/ nocase
) or
(
// Potential Zoho Assist RMM Tool Process Activity
$rmm_tool.target.process.file.full_path = /\\zaservice\.exe|\\ZA_Access\.exe|\\ZohoMeeting\.exe|\\Zohours\.exe|\\zohotray\.exe|\\ZohoURSService\.exe|\\Zaservice\.exe|\\za_connect\.exe|\\ZMAgent\.exe/ nocase
)
$rmm_tool.principal.hostname = $hostname
$rmm_tool.target.process.file.full_path = $image
$rmm_tool.extracted.fields["Company"] = $rmm_company_info
// Filter for known RMM Tools based on Customer Information
// not $rmm_tool.target.process.file.full_path in %known_rmm_tools nocase
match:
$hostname, $image, $rmm_company_info over 10m
outcome:
$risk_score = max(65)
$event_count = count_distinct($rmm_tool.metadata.id)
$principal_process_pid = array_distinct($rmm_tool.principal.process.pid)
$principal_process_command_line = array_distinct($rmm_tool.principal.process.command_line)
$principal_process_file_sha256 = array_distinct($rmm_tool.principal.process.file.sha256)
$principal_process_file_full_path = array_distinct($rmm_tool.principal.process.file.full_path)
$principal_process_product_specific_process_id = array_distinct($rmm_tool.principal.process.product_specific_process_id)
$principal_process_parent_process_product_specific_process_id = array_distinct($rmm_tool.principal.process.parent_process.product_specific_process_id)
$target_process_pid = array_distinct($rmm_tool.target.process.pid)
$target_process_command_line = array_distinct($rmm_tool.target.process.command_line)
$target_process_file_sha256 = array_distinct($rmm_tool.target.process.file.sha256)
$target_process_file_full_path = array_distinct($rmm_tool.target.process.file.full_path)
$target_process_product_specific_process_id = array_distinct($rmm_tool.target.process.product_specific_process_id)
$principal_user_userid = array_distinct($rmm_tool.principal.user.userid)
condition:
$rmm_tool
}
YARA-L rule structure
Condition
Fires when at least one $rmm_tool event in the 10m window.
Events
$rmm_tool
target.process.file.full_path matches "\\Remote Workforce Client\.exe$"target.process.file.full_path matches "\\AcronisCyberProtectConnectAgent\.exe$"target.process.file.full_path matches "\\aeroadmin\.exe|\\AeroAdmin\.exe"target.process.file.full_path matches "\\AirLiveDrive\.exe$"target.process.file.full_path matches "\\alitask\.exe$"target.process.file.full_path matches "\\AlpemixService\.exe$"target.process.file.full_path matches "\\ManualLauncher\.exe$"target.process.file.full_path matches "\\apc_host\.exe$"target.process.file.full_path matches "\\aria2c\.exe$"target.process.file.full_path matches "\\AgentPackageNetworkDiscovery\.exe|\\AgentPackageTaskScheduler\.exe|\\AteraAgent\.exe|\\atera_agent\.exe|\\ateraagent\.exe"target.process.file.full_path matches "\\auvik\.engine\.exe|\\auvik\.agent\.exe"target.process.file.full_path matches "\\rpcnet\.exe|\\ctes\.exe|\\ctespersitence\.exe|\\cteshostsvc\.exe|\\rpcld\.exe"target.process.file.full_path matches "\\Bluetrait MSP Agent\.exe|\\BluetraitUserAgent\.exe|\\Bluetrait Agent\\libraries\\paexec\.exe"target.process.file.full_path matches "\\beamyourscreen\.exe|\\beamyourscreen-host\.exe"target.process.file.full_path matches "\\ltsvc\.exe|\\ltsvcmon\.exe|\\lttray\.exe"target.process.file.full_path matches "\\Duplicati\.Server\.exe$"target.process.file.full_path matches "\\FixMeit Unattended Access Setup\.exe|\\TiExpertStandalone\.exe|\\FixMeit Client\.exe|\\FixMeit Expert Setup\.exe|\\TiExpertCore\.exe|\\TiClientCore\.exe"target.process.file.full_path matches "\\fleetdeck_agent_svc\.exe|\\fleetdeck_commander_svc\.exe|\\fleetdeck_installer\.exe|\\fleetdeck_commander_launcher\.exe|\\fleetdeck_agent\.exe"target.process.file.full_path matches "\\level-windows-amd64\.exe|\\level\.exe|\\level-remote-control-ffmpeg\.exe"target.process.file.full_path matches "\\pcictlui\.exe|\\client32\.exe|\\pcicfgui\.exe"target.process.file.full_path matches "\\ninjarmmagent\.exe|\\NinjaRMMAgent\.exe|\\NinjaRMMAgenPatcher\.exe|\\ninjarmm-cli\.exe"target.process.file.full_path matches "\\remcos"target.process.file.full_path matches "\\RocketRemoteDesktop_Setup\.exe$"target.process.file.full_path matches "\\tacticalrmm\.exe$"target.process.file.full_path matches "\\tvnviewer\.exe|\\tvnserver\.exe"target.process.file.full_path matches "\\zaservice\.exe|\\ZA_Access\.exe|\\ZohoMeeting\.exe|\\Zohours\.exe|\\zohotray\.exe|\\ZohoURSService\.exe|\\Zaservice\.exe|\\za_connect\.exe|\\ZMAgent\.exe"
Match and correlation
Outcome
Outcome variables add context to a detection. When the rule generates an alert, $risk_score is displayed with it.
| Field | Expression |
|---|---|
risk_score | max(65) |
event_count | count_distinct($rmm_tool.metadata.id) |
principal_process_pid | array_distinct($rmm_tool.principal.process.pid) |
principal_process_command_line | array_distinct($rmm_tool.principal.process.command_line) |
principal_process_file_sha256 | array_distinct($rmm_tool.principal.process.file.sha256) |
principal_process_file_full_path | array_distinct($rmm_tool.principal.process.file.full_path) |
principal_process_product_specific_process_id | array_distinct($rmm_tool.principal.process.product_specific_process_id) |
principal_process_parent_process_product_specific_process_id | array_distinct($rmm_tool.principal.process.parent_process.product_specific_process_id) |
target_process_pid | array_distinct($rmm_tool.target.process.pid) |
target_process_command_line | array_distinct($rmm_tool.target.process.command_line) |
target_process_file_sha256 | array_distinct($rmm_tool.target.process.file.sha256) |
target_process_file_full_path | array_distinct($rmm_tool.target.process.file.full_path) |
target_process_product_specific_process_id | array_distinct($rmm_tool.target.process.product_specific_process_id) |
principal_user_userid | array_distinct($rmm_tool.principal.user.userid) |