The hypothesis is that an adversary is using NAble, a Remote Management and Monitoring tool, to establish a network connection for potential C2 communication or persistence. SOC teams should proactively hunt for this behavior in Azure Sentinel to identify and mitigate potential adversary exploitation of legitimate RMM tools.
KQL Query
let Time_start = now(-5d);
let Time_end = now();
//
DeviceNetworkEvents
| where Timestamp between (Time_start..Time_end)
| where RemoteUrl has_any (
'remote.management',
'logicnow.com',
'logicnow.us',
'system-monitor.com',
'systemmonitor.eu.com',
'systemmonitor.co.uk',
'systemmonitor.us',
'n-able.com',
'rmm-host.com',
'solarwindsmsp.com'
)
and InitiatingProcessVersionInfoCompanyName has_any (
'Remote Monitoring',
'LogicNow Ltd',
'N-Able',
'SolarWinds MSP'
)
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName,
RemoteUrl
id: 2cd90dd4-4f42-4d3e-86ed-b5c711f79f65
name: Remote Management and Monitoring tool - NAble - Network Connection
description: |
Remote Monitoring and Management (RMM) programs are IT to manage remote endpoints. Attackers have begun to abuse these programs to persist or provide C2 channels.
https://github.com/jischell-msft/RemoteManagementMonitoringTools
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
dataTypes:
- DeviceNetworkEvents
tactics: CommandAndControl
relevantTechniques: T1219
query: |
let Time_start = now(-5d);
let Time_end = now();
//
DeviceNetworkEvents
| where Timestamp between (Time_start..Time_end)
| where RemoteUrl has_any (
'remote.management',
'logicnow.com',
'logicnow.us',
'system-monitor.com',
'systemmonitor.eu.com',
'systemmonitor.co.uk',
'systemmonitor.us',
'n-able.com',
'rmm-host.com',
'solarwindsmsp.com'
)
and InitiatingProcessVersionInfoCompanyName has_any (
'Remote Monitoring',
'LogicNow Ltd',
'N-Able',
'SolarWinds MSP'
)
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName,
RemoteUrl
| Sentinel Table | Notes |
|---|---|
DeviceNetworkEvents | Ensure this data connector is enabled |
Scenario: Scheduled System Maintenance via Nable
Description: A system administrator uses Nable to schedule a routine system maintenance task that requires a network connection to a remote server for patching.
Filter/Exclusion: process.name != "Nable.exe" OR process.parent.name != "Nable.exe" OR destination_ip IN (list of known patch servers)
Scenario: Remote Monitoring Job Execution
Description: The Nable tool is used to execute a remote monitoring job that periodically connects to a central monitoring server to send logs or status updates.
Filter/Exclusion: process.name != "Nable.exe" OR destination_ip IN (list of known monitoring servers) OR destination_port != 443
Scenario: Admin Task to Update Remote Systems
Description: An IT admin uses Nable to push updates to multiple endpoints, which requires establishing network connections to those systems during the update process.
Filter/Exclusion: process.name != "Nable.exe" OR destination_ip IN (list of managed endpoints) OR process.parent.name != "Nable.exe"
Scenario: Network Discovery via Nable for Inventory Purposes
Description: The Nable tool is used to perform a network discovery scan to inventory all devices on the internal network for asset management.
Filter/Exclusion: process.name != "Nable.exe" OR destination_ip IN (internal network range) OR process.parent.name != "Nable.exe"
Scenario: Remote Support Session Initiated by Help Desk
Description: A help desk technician uses Nable to initiate a remote support session with a user’s endpoint, which involves a temporary network connection for troubleshooting.
Filter/Exclusion: process.name != "Nable.exe" OR destination_ip IN (help desk IP range) OR process.parent.name != "Nable.exe"