T1016.001

Internet Connection Discovery

Adversaries may check for Internet connectivity on compromised systems as part of automated discovery. This can be performed using ping, tracert, HTTP GET requests to known websites (e.g., bing.com, google.com, ifconfig.me), or bandwidth/speed tests. Adversaries use the results to confirm C2 reachability, identify proxy servers or redirectors, and determine network routing before establishing full C2 communications.

Microsoft Sentinel / Defender
kusto
let KnownConnectivityTargets = dynamic([
  "8.8.8.8", "8.8.4.4", "1.1.1.1", "1.0.0.1",
  "bing.com", "google.com", "microsoft.com", "ifconfig.me",
  "ipinfo.io", "icanhazip.com", "checkip.amazonaws.com",
  "whatismyip.com", "ipecho.net", "myexternalip.com",
  "wtfismyip.com", "api.ipify.org", "ip-api.com",
  "ifconfig.co", "ipv4.icanhazip.com"
]);
let PingTracertCommands = dynamic([
  "ping", "tracert", "traceroute", "pathping", "nslookup",
  "Test-NetConnection", "Test-Connection", "Invoke-WebRequest",
  "curl", "wget", "bitsadmin"
]);
// Detection 1: Process-based — ping/tracert/curl to connectivity check targets
let ProcessBased = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName in~ ("ping.exe", "tracert.exe", "traceroute", "pathping.exe", "nslookup.exe", "curl.exe", "wget.exe", "bitsadmin.exe", "powershell.exe", "pwsh.exe", "cmd.exe")
| where ProcessCommandLine has_any (KnownConnectivityTargets)
      or ProcessCommandLine has_any ("ifconfig.me", "ipinfo.io", "icanhazip", "wtfismyip", "api.ipify", "ip-api.com", "ifconfig.co", "checkip.amazonaws")
| extend DetectionType = "ProcessCommandLine"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
          InitiatingProcessFileName, InitiatingProcessCommandLine,
          InitiatingProcessId, ProcessId, DetectionType;
// Detection 2: Network-based — direct HTTP/DNS connections to connectivity-check services
let NetworkBased = DeviceNetworkEvents
| where Timestamp > ago(24h)
| where RemoteUrl has_any (KnownConnectivityTargets)
      or RemoteUrl has_any ("ifconfig.me", "ipinfo.io", "icanhazip", "wtfismyip", "api.ipify", "ip-api.com", "ifconfig.co", "checkip.amazonaws")
      or RemoteIP in ("8.8.8.8", "8.8.4.4", "1.1.1.1", "1.0.0.1")
| where InitiatingProcessFileName !in~ ("chrome.exe", "firefox.exe", "msedge.exe", "iexplore.exe", "opera.exe", "brave.exe")
| extend DetectionType = "NetworkConnection"
| project Timestamp, DeviceName, AccountName = InitiatingProcessAccountName,
          FileName = InitiatingProcessFileName,
          ProcessCommandLine = InitiatingProcessCommandLine,
          RemoteIP, RemoteUrl, RemotePort, DetectionType,
          InitiatingProcessFileName, InitiatingProcessCommandLine,
          InitiatingProcessId;
union ProcessBased, NetworkBased
| sort by Timestamp desc
medium severity medium confidence

Data Sources

Process: Process Creation Network Traffic: Network Connection Creation Command: Command Execution Microsoft Defender for Endpoint

Required Tables

DeviceProcessEvents DeviceNetworkEvents

False Positives

  • IT administrators or network engineers running ping/tracert diagnostics for legitimate troubleshooting
  • Monitoring and observability agents (Datadog, New Relic, SolarWinds) that periodically check internet reachability
  • Automated health check scripts in CI/CD pipelines or deployment automation that verify outbound connectivity before deploying updates
  • Operating system components and update services (Windows Update, Microsoft Defender signature updates) that contact Microsoft infrastructure
  • Network diagnostic tools used by help desk staff confirming connectivity for remote users

Unlock Pro Content

Get the full detection package for T1016.001 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections