The hypothesis is that an adversary is using the PcVisit tool to establish unauthorized network connections for remote management and potential C2 communication. SOC teams should proactively hunt for this behavior in Azure Sentinel to detect and mitigate potential persistent threats leveraging 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 (
'pcvisit.de',
'cloudflare-pcvisit.com'
)
and InitiatingProcessVersionInfoCompanyName has 'pcvisit software ag'
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp),
Report=make_set(ReportId), Count=count() by DeviceId, DeviceName,
RemoteUrl
id: bb7b6b01-b7b4-4ea9-ba0e-847093d75c68
name: Remote Management and Monitoring tool - PcVisit - 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 (
'pcvisit.de',
'cloudflare-pcvisit.com'
)
and InitiatingProcessVersionInfoCompanyName has 'pcvisit software ag'
| 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 PcVisit
Description: An IT administrator uses PcVisit to schedule regular system maintenance tasks, such as disk cleanup or software updates, across multiple endpoints.
Filter/Exclusion: process.name != "PcVisit.exe" OR process.parent.name == "Task Scheduler" OR file.hash == "known_maintenance_script_hash"
Scenario: Remote Desktop Session Established via PcVisit
Description: An admin uses PcVisit to establish a remote desktop session to troubleshoot a user’s machine, which triggers network connection activity.
Filter/Exclusion: process.name == "mstsc.exe" OR process.parent.name == "PcVisit.exe" OR destination.port == 3389
Scenario: Patch Deployment via PcVisit
Description: The IT team deploys security patches using PcVisit, which involves connecting to remote endpoints to push updates.
Filter/Exclusion: process.name == "msiexec.exe" OR file.name == "patch_update.msi" OR process.parent.name == "PcVisit.exe"
Scenario: User-Initiated Remote Support via PcVisit
Description: A support technician uses PcVisit to connect to a user’s machine for assistance, which results in network connection activity.
Filter/Exclusion: user.name == "support_user" OR process.parent.name == "PcVisit.exe" OR destination.ip == "internal_support_ip"
Scenario: Automated Inventory Scan via PcVisit
Description: The IT department runs an automated inventory scan using PcVisit to collect system information from all endpoints.
Filter/Exclusion: process.name == "inventory_scanner.exe" OR file.name == "inventory_tool.exe" OR process.parent.name == "PcVisit.exe"