The hypothesis is that an adversary is using UltraViewer, a Remote Management and Monitoring tool, to create processes for persistence or establish command and control channels. SOC teams should proactively hunt for this behavior in Azure Sentinel to identify potential compromise of endpoints managed by RMM tools.
KQL Query
let Time_start = now(-5d);
let Time_end = now();
//
DeviceProcessEvents
| where Timestamp between (Time_start..Time_end)
| where ProcessVersionInfoCompanyName has 'DucFabulous'
and ProcessVersionInfoProductName has 'UltraViewer'
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName
id: ff759b20-a8c4-4a7d-85cd-3c335a676f09
name: Remote Management and Monitoring tool - UltraViewer - Create Process
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:
- DeviceProcessEvents
tactics: CommandAndControl
relevantTechniques: T1219
query: |
let Time_start = now(-5d);
let Time_end = now();
//
DeviceProcessEvents
| where Timestamp between (Time_start..Time_end)
| where ProcessVersionInfoCompanyName has 'DucFabulous'
and ProcessVersionInfoProductName has 'UltraViewer'
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName
| Sentinel Table | Notes |
|---|---|
DeviceProcessEvents | Ensure this data connector is enabled |
Scenario: IT Admin Deploys UltraViewer for Remote Support
Description: A system administrator uses UltraViewer to remotely support an end-user’s workstation.
Filter/Exclusion: process.parent_process_name == "UltraViewer.exe" or process.user == "IT_Admin_Account"
Scenario: Scheduled Job Runs UltraViewer for Patch Management
Description: A scheduled task runs UltraViewer to deploy patches to multiple endpoints during off-peak hours.
Filter/Exclusion: process.command_line contains "patch_management" or process.parent_process_name == "TaskScheduler"
Scenario: UltraViewer Used for Remote Desktop Access During Business Hours
Description: An employee uses UltraViewer to access their remote desktop during normal working hours.
Filter/Exclusion: process.user == "Employee_Account" or process.start_time between "08:00" and "17:00"
Scenario: UltraViewer Installed via Group Policy for Endpoint Management
Description: UltraViewer is deployed via Group Policy to all endpoints as part of the IT infrastructure.
Filter/Exclusion: process.parent_process_name == "GroupPolicy" or "gpupdate.exe"
Scenario: UltraViewer Used for Monitoring System Performance
Description: The IT team uses UltraViewer to monitor system performance and resource usage on remote machines.
Filter/Exclusion: process.command_line contains "monitor" or "performance" or process.user == "Monitoring_Service_Account"