SOP-36: Tor Anonymizing Proxy and VPN Detection Response

·

Tor and anonymizing proxies are used by attackers to obscure the true destination of exfiltration traffic, bypass DLP and proxy inspection, and route C2 communication through multiple hops that appear as legitimate exit node IPs. Detection relies on known exit node IP lists, relay port signatures (9001, 9030, 9050, 9150), and ASN-based identification of datacenter VPN providers.

This SOP covers two detection paths: exit node IP matching against a Sentinel watchlist of known Tor exit nodes, and relay port detection using ASimNetworkSession to identify Tor relay traffic patterns from internal hosts.

☰ Table of Contents

01 Background 02 Identification 03 Containment 04 Eradication 05 Escalation
🛠

01 — BACKGROUND

TECHNIQUE OVERVIEW
01
Tor & Anonymizing Proxy Architecture
T1090 / T1090.003

Tor (The Onion Router) routes traffic through three relay nodes (Guard, Middle, Exit) before reaching the destination. From a network perspective, all connections appear to originate from the exit node IP, which is publicly listed in the Tor Project's consensus documents. Attackers use Tor to route C2 callbacks and exfiltration traffic, making attribution difficult. Unauthorized VPN usage similarly tunnels corporate traffic through commercial VPN provider ASNs (ExpressVPN, NordVPN, Mullvad) that should not appear in corporate outbound flows.

FieldValue
MITRE TechniqueT1090 — Proxy
Sub-techniqueT1090.003 — Multi-hop Proxy
Log SourcesASimNetworkSession, CommonSecurityLog (Palo Alto/ZScaler), DeviceNetworkEvents
Tor Relay Ports9001 (ORPort), 9030 (DirPort), 9050 (SOCKS proxy), 9150 (Tor Browser), 9051 (ControlPort)
Detection MethodExit node IP watchlist match, relay port signature, VPN ASN identification
Detection PriorityHIGH — Tor usage violates AUP and may indicate active exfiltration or C2

Some legitimate privacy researchers and security professionals use Tor. Always check with the host's manager and review process context before escalating to a full incident — but do not delay action if C2 beacon or data exfiltration patterns are also present.

🔍

02 — IDENTIFICATION

2 INDICATORS
▶ Investigation Workflow
I1
Tor Exit Node IP Watchlist Match
T1090.003
WHY CHECK

The Tor Project publishes a daily updated list of exit node IPs. Matching outbound connections against this list gives definitive confirmation of Tor usage — exit node IPs serve no legitimate corporate function.

📍 Portal Navigation — Microsoft Sentinel Watchlists + Logs
portal.azure.com› Microsoft Sentinel› Watchlists → Logs
  • 1Verify a Tor exit node watchlist exists: Sentinel → Watchlists → look for a list named TorExitNodes or ThreatIntelIPs.
  • 2If no watchlist exists, create one: download the Tor exit node list from check.torproject.org/torbulkexitlist and import as a Sentinel Watchlist with column ExitNodeIP.
  • 3Paste the KQL below; set time range to Last 24 hours.
  • 4Review SrcIpAddr — identify the internal host that connected to the Tor exit node IP.
  • 5Check if the Tor Browser binary (tor.exe, firefox.exe from Tor Browser folder) is visible in the Device Timeline for the source host.
Field / ValueMeaningAction
DstPort = 9050Tor SOCKS proxy port — local Tor client forwarding trafficESCALATE
DstPort = 9001Tor ORPort — connecting to an entry/relay node directlyESCALATE
DstPort = 9150Tor Browser default port — Tor Browser installed and runningESCALATE
Exit node IP matchConnection destination confirmed as a published Tor exit node IPESCALATE
DETECTS: Internal hosts making outbound connections to known Tor exit node IPs from the Sentinel Watchlist, or using Tor-specific relay ports 9001, 9030, 9050, or 9150.
KQL — Microsoft Sentinel (ASimNetworkSession + Watchlist)
let TorExitNodes = _GetWatchlist("TorExitNodes") | project ExitNodeIP = tostring(SearchKey); ASimNetworkSession | where TimeGenerated > ago(24h) | where DstPortNumber in (9001, 9030, 9050, 9150, 9051) or DstIpAddr in (TorExitNodes) | summarize ConnectionCount = count(), DestinationIPs = make_set(DstIpAddr, 10), Ports = make_set(DstPortNumber) by SrcIpAddr, bin(TimeGenerated, 1h) | order by ConnectionCount desc
DETECTS: Tor relay port connections in Splunk — identifies hosts connecting on known Tor ORPort, DirPort, and SOCKS proxy ports.
SPL — Splunk
index=* sourcetype=network dest_port IN (9001, 9030, 9050, 9150, 9051) | stats count as conn_count, values(dest_ip) as dest_ips, values(dest_port) as ports by src_ip | sort -conn_count

The Tor exit node list must be refreshed daily to remain accurate — exit nodes rotate frequently. Set up an automated Logic App or Azure Function to pull from check.torproject.org/torbulkexitlist and update the Sentinel Watchlist on a schedule.

I2
VPN ASN & Anonymizing Proxy Detection
T1090
WHY CHECK

Commercial VPN providers (NordVPN, ExpressVPN, Mullvad, ProtonVPN) operate under specific Autonomous System Numbers (ASNs). Connections from corporate hosts to these ASN ranges indicate unauthorized VPN tunnelling that bypasses proxy inspection and DLP controls.

📍 Portal Navigation — Defender XDR Advanced Hunting
security.microsoft.com› Hunting› Advanced Hunting
  • 1Navigate to security.microsoft.com → Hunting → Advanced Hunting.
  • 2Paste the KQL below to identify hosts running known VPN client processes or connecting to VPN infrastructure ports (UDP 1194/OpenVPN, UDP 51820/WireGuard, TCP 443/SSTP).
  • 3Review InitiatingProcessFileName — openvpn.exe, wireguard.exe, nordvpn.exe, expressvpn.exe confirm VPN client installation.
  • 4Check if the VPN process was installed recently or is running from a non-standard path (Downloads folder, AppData) which indicates shadow IT or attacker-installed VPN.
  • 5Determine if the user has an approved business justification for VPN usage — contact their manager if needed before blocking.
DETECTS: Known VPN client processes running on corporate endpoints — identifies unauthorized VPN installation by process name and executable path.
KQL — Defender XDR Advanced Hunting
DeviceProcessEvents | where Timestamp > ago(24h) | where FileName in~ ("openvpn.exe", "wireguard.exe", "nordvpn.exe", "expressvpn.exe", "mullvad.exe", "protonvpn.exe", "torapp.exe", "tor.exe", "psiphon.exe", "lantern.exe") | summarize ProcessCount = count(), Executables = make_set(FolderPath, 5), LastSeen = max(Timestamp) by DeviceName, FileName, AccountName | order by LastSeen desc
DETECTS: VPN and anonymizing proxy client processes in Splunk endpoint telemetry — flags known VPN tool executables running on corporate hosts.
SPL — Splunk
index=* sourcetype=wineventlog EventCode=4688 | where process_name IN ("openvpn.exe","wireguard.exe","nordvpn.exe", "expressvpn.exe","mullvad.exe","tor.exe","psiphon.exe") | stats count as launches, values(process_path) as paths, latest(_time) as last_seen by host user process_name | sort -last_seen

If an insider threat scenario is suspected (user attempting to exfiltrate data via Tor), preserve forensic evidence before blocking: export the Device Timeline, capture running process list via Live Response, and notify HR and Legal before confronting the user.

🚫

03 — CONTAINMENT

IMMEDIATE ACTION
C1
Verdict & Escalation Decision
DECISION GATE
▶ Triage Verdict — Select One
CONFIRMED Exit node IP match or relay port connection, non-browser process, or data exfiltration pattern → Block Tor ports at firewall, isolate host if active exfil, escalate to L2
PARTIAL VPN client process found, user claims business use, no data staging observed → Disable VPN client, verify business justification with manager, policy warning to user
FALSE POSITIVE Authorized privacy researcher or penetration tester with manager approval → Document authorization, add exception to detection rule, close ticket

If Tor usage coincides with a sensitive data access event (SharePoint bulk download, email attachment exfiltration) — escalate immediately to SEV1 insider threat IR regardless of business justification claims.

C2
Block Tor Ports & Remove VPN Client
CONTAINMENT
📍 Portal Navigation — Azure Firewall Rules / Defender Indicators
portal.azure.com› Azure Firewall› Rules → Network Rule Collection
  • 1Add a network deny rule in Azure Firewall: block outbound TCP/UDP on ports 9001, 9030, 9050, 9150, 9051 from all internal subnets.
  • 2Add Defender for Endpoint indicators to block VPN client binaries by hash: Settings → Endpoints → Indicators → Files.
  • 3Run a Live Response session on the affected host: Device → Actions → Initiate Live Response → kill the Tor/VPN process and delete the binary.
  • 4Check browser history on the source host for any dark web (.onion) URLs visited — this confirms intentional Tor usage rather than malware-installed Tor.
  • 5Notify HR if the user intentionally installed Tor without authorization. Notify IR team if malware-installed Tor is suspected.
🗑

04 — ERADICATION

CLEANUP
E1
Remove Anonymizing Tools & Harden Egress Controls
ERADICATION
  • 1Uninstall any Tor Browser, VPN client, or anonymizing proxy software from the affected host via Live Response or SCCM software deployment.
  • 2Delete all Tor configuration files and profiles: %APPDATA%\Tor Browser\, %APPDATA%\Roaming\tor\.
  • 3Add Tor executable hashes to Defender for Endpoint custom indicators as Block to prevent re-installation across all managed endpoints.
  • 4Verify egress firewall rules block ports 9001, 9030, 9050, 9150 — confirm no bypass exists via HTTPS port 443 (used by obfs4 bridges).
  • 5Review the Tor exit node watchlist freshness — if older than 24 hours, refresh from the Tor Project's bulk exit list.
  • 6If malware-installed Tor is confirmed, run a full AV scan and treat as an active C2 scenario — escalate per SOP-34 (Outbound TI-Matched Connection).
Eradication Complete When
  • No ASimNetworkSession events on Tor relay ports from affected host in past 2 hours
  • Tor Browser and VPN client binaries removed or quarantined
  • Firewall rule blocking ports 9001/9030/9050/9150 confirmed active
  • Tor executable hash added to Defender indicators as Block
  • HR/manager notified if intentional policy violation confirmed
📢

05 — ESCALATION

ESCALATION PATHS
ES1
Escalation Matrix
ESCALATION
ConditionSeverityActionNotify
Tor + simultaneous bulk data accessSEV1Full IR, insider threat protocol, forensic holdSOC Lead → CISO → HR → Legal
Malware-installed Tor (no user knowledge)SEV1Treat as active C2, isolate host, IR ticketSOC Lead → CISO → IR Team
User-installed Tor, no data stagingSEV3Remove software, policy warning, HR notificationSOC Lead → HR Manager
Authorized security researcherINFODocument approval, add exception, close ticketNone

Tor usage by a privileged user (admin, finance, HR with PII access) must be treated as SEV1 insider threat regardless of whether data staging is confirmed — the risk of undetected exfiltration is too high to wait for further evidence.


Stay Threat-Ready

Follow CyberHawk Threat Intel for daily SOC analyst playbooks, detection engineering guides, and threat intelligence.

📺 YouTube 🎤 TikTok 🐦 X / Twitter 📡 Telegram
All SOPs Blog Web App (Free)
They can't exploit you if you are the Exploit.