The detection identifies potential adversary use of BeyondTrust, a Remote Management and Monitoring tool, to establish persistence or command and control channels by leveraging file signature anomalies. SOC teams should proactively hunt for this behavior in Azure Sentinel to detect and mitigate advanced threats exploiting legitimate RMM tools.
KQL Query
let Time_start = now(-5d);
let Time_end = now();
//
DeviceFileCertificateInfo
| where Timestamp between (Time_start..Time_end)
| where Signer has_any (
'Bomgar Corporation',
'BeyondTrust Corporation',
'BeyondTrust Software'
)
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName
id: d7c16186-57d3-4e65-bd6b-f333d97d0c15
name: Remote Management and Monitoring tool - BeyondTrust - File Signature
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:
- DeviceFileCertificateInfo
tactics: CommandAndControl
relevantTechniques: T1219
query: |
let Time_start = now(-5d);
let Time_end = now();
//
DeviceFileCertificateInfo
| where Timestamp between (Time_start..Time_end)
| where Signer has_any (
'Bomgar Corporation',
'BeyondTrust Corporation',
'BeyondTrust Software'
)
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName
Scenario: Scheduled file integrity monitoring scan using BeyondTrust
Filter/Exclusion: process.name != "integrityscan.exe" or process.parent.name != "BeyondTrustService.exe"
Scenario: Admin task to update or patch remote systems using BeyondTrust
Filter/Exclusion: process.name != "beyondtrust.exe" or process.parent.name != "BeyondTrustService.exe"
Scenario: Legitimate file signature verification using BeyondTrust’s built-in tools
Filter/Exclusion: process.name != "fileverifier.exe" or file.hash != "known_good_hashes"
Scenario: Remote system inventory collection via BeyondTrust
Filter/Exclusion: process.name != "inventorytool.exe" or process.parent.name != "BeyondTrustService.exe"
Scenario: File signature analysis during a security audit using BeyondTrust
Filter/Exclusion: process.name != "audittool.exe" or file.signature != "known_audit_hashes"