Detect Virtual Private Server in IBM QRadar
Adversaries may rent Virtual Private Servers (VPSs) to stage malicious infrastructure including command-and-control (C2) servers, phishing pages, payload delivery endpoints, and exfiltration destinations. VPS providers offer rapid provisioning, geographic flexibility, and—when chosen carefully—minimal registration requirements, making attribution difficult. Because VPS-hosted IPs typically carry commercial hosting ASN reputation rather than residential or known-malicious reputation, they can evade naive geo-blocking and ASN-based controls. Real-world actors documented using this technique include Gamaredon, APT28, LAPSUS$, Ember Bear (GRU Unit 29155), HAFNIUM, APT42, Moonstone Sleet, and Contagious Interview. Detection from a defender perspective focuses on three observable effects: outbound C2 beaconing FROM compromised endpoints TO VPS-hosted IPs, inbound attack traffic (scanning, exploit delivery, phishing redirectors) FROM VPS IP ranges, and identity-based signals such as authentication attempts from datacenter IP space. Because T1583.003 is a Resource Development technique (TA0042), it is not directly observable on victim endpoints—detection is necessarily inferential, relying on behavioral patterns that betray VPS-based infrastructure in use.
MITRE ATT&CK
- Tactic
- Resource Development
- Technique
- T1583 Acquire Infrastructure
- Sub-technique
- T1583.003 Virtual Private Server
- Canonical reference
- https://attack.mitre.org/techniques/T1583/003/
QRadar Detection Query
SELECT
DATEFORMAT(MIN(starttime), 'YYYY-MM-dd HH:00:00') AS WindowStart,
sourceip AS EndpointIP,
username AS AccountName,
"Application" AS ProcessImage,
destinationip AS DestinationIP,
COUNT(*) AS ConnectionCount,
COUNT(DISTINCT destinationport) AS UniqueDestPorts,
MIN(DATEFORMAT(starttime, 'YYYY-MM-dd HH:mm:ss')) AS FirstSeen,
MAX(DATEFORMAT(starttime, 'YYYY-MM-dd HH:mm:ss')) AS LastSeen,
ROUND(COUNT(*) / 60.0, 2) AS ConnectionsPerMinute,
CASE
WHEN COUNT(*) >= 50 AND COUNT(DISTINCT destinationport) <= 1
THEN 'CRITICAL - Highly Regular Single-Port Beaconing'
WHEN COUNT(*) >= 30 AND COUNT(DISTINCT destinationport) <= 2
THEN 'HIGH - Low Port Variance Repetitive Connections'
WHEN COUNT(*) >= 20
THEN 'MEDIUM - Elevated Outbound Connection Frequency'
ELSE 'LOW - Above Threshold Outbound Frequency'
END AS BeaconRisk
FROM events
WHERE
LOGSOURCETYPENAME(devicetype) ILIKE '%Sysmon%'
AND QIDNAME(qid) ILIKE '%Network connection%'
AND destinationip NOT LIKE '10.%'
AND destinationip NOT LIKE '172.16.%'
AND destinationip NOT LIKE '172.17.%'
AND destinationip NOT LIKE '172.18.%'
AND destinationip NOT LIKE '172.19.%'
AND destinationip NOT LIKE '172.20.%'
AND destinationip NOT LIKE '172.21.%'
AND destinationip NOT LIKE '172.22.%'
AND destinationip NOT LIKE '172.23.%'
AND destinationip NOT LIKE '172.24.%'
AND destinationip NOT LIKE '172.25.%'
AND destinationip NOT LIKE '172.26.%'
AND destinationip NOT LIKE '172.27.%'
AND destinationip NOT LIKE '172.28.%'
AND destinationip NOT LIKE '172.29.%'
AND destinationip NOT LIKE '172.30.%'
AND destinationip NOT LIKE '172.31.%'
AND destinationip NOT LIKE '192.168.%'
AND destinationip NOT LIKE '127.%'
AND destinationip NOT LIKE '169.254.%'
AND "Application" NOT ILIKE '%chrome.exe'
AND "Application" NOT ILIKE '%firefox.exe'
AND "Application" NOT ILIKE '%msedge.exe'
AND "Application" NOT ILIKE '%MicrosoftEdgeCP.exe'
AND "Application" NOT ILIKE '%iexplore.exe'
AND "Application" NOT ILIKE '%brave.exe'
AND "Application" NOT ILIKE '%opera.exe'
AND "Application" NOT ILIKE '%svchost.exe'
AND "Application" NOT ILIKE '%MsMpEng.exe'
AND "Application" NOT ILIKE '%wuauclt.exe'
AND "Application" NOT ILIKE '%TrustedInstaller.exe'
AND "Application" NOT ILIKE '%msiexec.exe'
AND "Application" NOT ILIKE '%teams.exe'
AND "Application" NOT ILIKE '%OneDrive.exe'
AND starttime >= NOW() - 24 HOURS
GROUP BY
DATEFORMAT(starttime, 'YYYY-MM-dd HH:00:00'),
sourceip,
username,
"Application",
destinationip
HAVING COUNT(*) >= 12
ORDER BY ConnectionCount DESC
LAST 24 HOURS Detects C2 beaconing to VPS-hosted infrastructure by aggregating Sysmon Event ID 3 (network connection) records ingested via QRadar DSM. Groups by 1-hour windows, source endpoint, process image, and destination IP, then filters for groups with 12 or more connections to the same public IP. Risk-scores each group by connection volume and port variance. Requires Sysmon logs to be forwarded and parsed by a Sysmon DSM or Windows Security DSM with the Application field populated from the Sysmon Image field via a custom property.
Data Sources
Required Tables
False Positives & Tuning
- Vulnerability scanners (Tenable Nessus, Qualys scanner agent, Rapid7 InsightVM) generate large volumes of outbound connections from a single process to many IPs; these would scatter across destinations but the scanner process itself should be excluded by name or source IP.
- Backup clients (Veeam, Acronis, Commvault) perform sustained high-frequency connections to cloud backup endpoints during backup windows; baseline scheduled backup times and exclude known backup process names and destination IP ranges.
- Software deployment tools and patch management agents (PDQ Deploy, ManageEngine Desktop Central) connect repeatedly to distribution servers during patch cycles; correlate with change management windows to suppress.
Other platforms for T1583.003
Testing Methodology
Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Simulate C2 Beacon via PowerShell HTTP Check-in to VPS-like Endpoint
Expected signal: Sysmon Event ID 1: Process Create with Image=powershell.exe and CommandLine containing '-WindowStyle Hidden' and 'Invoke-WebRequest'. Sysmon Event ID 3: 15 network connections from powershell.exe to 127.0.0.1:8443 at approximately 5-second intervals. PowerShell ScriptBlock Log Event ID 4104 with the full script body.
- Test 2Simulate VPS Payload Download via LOLBin (certutil)
Expected signal: Sysmon Event ID 1: Process Create with Image=certutil.exe and CommandLine containing '-urlcache' and '-f'. Sysmon Event ID 3: Network Connection from certutil.exe to 127.0.0.1:8080. Sysmon Event ID 11: File Create attempt for %TEMP%\df00tech-vps-test.exe (may not succeed if no listener). Security Event ID 4688 (if command line auditing enabled).
- Test 3Simulate VPS-based Reconnaissance Inbound Scan Detection (nmap from localhost)
Expected signal: Linux auditd: syscall execve for nmap with full argument list. Syslog: nmap process execution. Network: TCP SYN packets to localhost ports 22, 80, 443, 3389, 8080, 8443. If monitoring inbound scan patterns on perimeter, this generates SYN packets with no corresponding application connection.
- Test 4Simulate Azure AD Authentication from VPS IP Range via PowerShell Graph API Call
Expected signal: Sysmon Event ID 1: Process Create with Image=powershell.exe. Sysmon Event ID 3: Network Connection from powershell.exe to login.microsoftonline.com:443. Sysmon Event ID 22 (DNS Query): DNS resolution of login.microsoftonline.com. PowerShell ScriptBlock Log Event ID 4104.
References (12)
- https://attack.mitre.org/techniques/T1583/003/
- https://documents.trendmicro.com/assets/wp/wp-criminal-hideouts-for-lease.pdf
- https://michaelkoczwara.medium.com/cobalt-strike-c2-hunting-with-shodan-c448d501a6e2
- https://threatconnect.com/blog/infrastructure-research-hunting/
- https://cloud.google.com/blog/topics/threat-intelligence/scandalous-external-detection-using-network-scan-data-and-automation/
- https://www.cisa.gov/news-events/cybersecurity-advisories/aa24-249a
- https://www.microsoft.com/en-us/security/blog/2022/03/22/dev-0537-criminal-actor-targeting-organizations-for-data-exfiltration-and-destruction/
- https://unit42.paloaltonetworks.com/unit-42-gamaredon-group-russia-linked/
- https://www.sentinelone.com/labs/winter-vivern-all-you-need-is-one-side-loading-and-a-good-lure/
- https://www.ic3.gov/Media/News/2022/220211.pdf
- https://learn.microsoft.com/en-us/azure/sentinel/understand-threat-intelligence
- https://learn.microsoft.com/en-us/defender-endpoint/advanced-hunting-devicenetworkevents-table
Unlock Pro Content
Get the full detection package for T1583.003 including response playbook, investigation guide, and atomic red team tests.