The hypothesis is that an adversary is using BeyondTrust to establish unauthorized network connections for command and control or persistence. SOC teams should proactively hunt for this behavior in Azure Sentinel to detect potential abuse of RMM tools by threat actors leveraging T1219 techniques.
KQL Query
let Time_start = now(-5d);
let Time_end = now();
//
DeviceNetworkEvents
| where Timestamp between (Time_start..Time_end)
| where RemoteUrl has_any (
'license.bomgar.com',
'bomgarcloud.com',
'beyondtrustcloud.com'
)
and InitiatingProcessVersionInfoCompanyName has_any ('BeyondTrust', 'Bomgar')
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName,
RemoteUrl
id: 605d7211-b9f2-4550-b8f0-d2218f5b926f
name: Remote Management and Monitoring tool - BeyondTrust - 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 (
'license.bomgar.com',
'bomgarcloud.com',
'beyondtrustcloud.com'
)
and InitiatingProcessVersionInfoCompanyName has_any ('BeyondTrust', 'Bomgar')
| 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 maintenance tasks using BeyondTrust to reboot servers
Filter/Exclusion: process.name != "beyondtrust.exe" OR process.parent.name != "beyondtrust.exe"
Scenario: Admin uses BeyondTrust to remotely install software updates on endpoint
Filter/Exclusion: process.name != "beyondtrust.exe" OR event_id != 4688 (for process creation)
Scenario: Legitimate scheduled job to check system health via BeyondTrust
Filter/Exclusion: process.name != "beyondtrust.exe" OR event_id != 4688 (for process creation) OR process.parent.name != "taskeng.exe"
Scenario: IT admin uses BeyondTrust to configure firewall rules on remote endpoints
Filter/Exclusion: process.name != "beyondtrust.exe" OR event_id != 4688 (for process creation) OR process.parent.name != "taskeng.exe"
Scenario: Regular remote desktop session initiated through BeyondTrust for user support
Filter/Exclusion: process.name != "beyondtrust.exe" OR event_id != 4688 (for process creation) OR process.parent.name != "mstsc.exe"