T1614

System Location Discovery

Discovery Last updated:

This detection identifies adversaries enumerating system locale, time zone, keyboard layout, language settings, and geographic location data to determine whether a target host falls within a desired operational geography. Attackers use this technique to implement geo-fencing logic — avoiding infection of hosts in certain regions, targeting specific populations, or evading sandbox environments. Detection covers three vectors: (1) process-based locale enumeration via PowerShell cmdlets, registry queries against NLS/TimeZoneInformation keys, and WinAPI locale functions called by suspicious parent processes; (2) outbound network connections to IP geolocation lookup services such as ipinfo.io and ip-api.com; and (3) cloud instance metadata service (IMDS) queries to 169.254.169.254 from non-cloud-management processes. Correlated alerts from multiple sub-techniques or combined with process injection and C2 beacon indicators significantly increase confidence.

What is T1614 System Location Discovery?

System Location Discovery (T1614) maps to the Discovery tactic — the adversary is trying to figure out your environment in MITRE ATT&CK.

This page provides production-ready detection logic for System Location Discovery, covering the data sources and telemetry it touches: Microsoft Defender for Endpoint, Microsoft Sentinel. The queries below are rated medium severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Discovery
Technique
T1614 System Location Discovery
Canonical reference
https://attack.mitre.org/techniques/T1614/
Microsoft Sentinel / Defender
kusto
let GeoIPDomains = dynamic(["ipinfo.io", "ip-api.com", "ipgeolocation.io", "freegeoip.app", "ipstack.com", "geoplugin.net", "geoip.ubuntu.com", "api.ipify.org", "ifconfig.me", "checkip.amazonaws.com", "myexternalip.com", "ipapi.co"]);
let SuspiciousParents = dynamic(["cmd.exe", "powershell.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe", "regsvr32.exe", "wmic.exe"]);
// Vector 1: Process-based locale/timezone discovery
let LocaleProcessEvents =
    DeviceProcessEvents
    | where TimeGenerated > ago(1h)
    | where (
        // PowerShell locale cmdlets
        (FileName =~ "powershell.exe" or FileName =~ "pwsh.exe")
        and ProcessCommandLine has_any ("Get-WinSystemLocale", "Get-Culture", "Get-UICulture", "Get-TimeZone", "CultureInfo", "CurrentCulture", "CurrentUICulture", "[System.Globalization", "GetLocaleInfo", "GetSystemDefaultLCID", "GetSystemDefaultUILanguage")
    )
    or (
        // Registry queries for NLS/locale/timezone
        FileName =~ "reg.exe"
        and ProcessCommandLine has_any ("Nls\\", "TimeZoneInformation", "Keyboard Layout", "International", "MUI", "Language")
        and ProcessCommandLine has "query"
    )
    or (
        // tzutil timezone query
        FileName =~ "tzutil.exe"
        and ProcessCommandLine has "/g"
    )
    or (
        // WMIC locale queries
        FileName =~ "wmic.exe"
        and ProcessCommandLine has_any ("timezone", "locale", "os get locale", "win32_operatingsystem")
    )
    | where InitiatingProcessFileName has_any (SuspiciousParents)
       or InitiatingProcessParentFileName has_any (SuspiciousParents)
    | extend DetectionVector = "ProcessLocaleDiscovery"
    | extend RiskScore = case(
        InitiatingProcessParentFileName has_any (SuspiciousParents), 75,
        InitiatingProcessFileName has_any (SuspiciousParents), 60,
        50
    )
    | project TimeGenerated, DeviceId, DeviceName, AccountName, AccountDomain,
              FileName, ProcessCommandLine, FolderPath,
              InitiatingProcessFileName, InitiatingProcessCommandLine,
              InitiatingProcessParentFileName, DetectionVector, RiskScore;
// Vector 2: Network-based IP geolocation lookups
let GeoIPNetworkEvents =
    DeviceNetworkEvents
    | where TimeGenerated > ago(1h)
    | where RemoteUrl has_any (GeoIPDomains)
       or (RemoteIP == "169.254.169.254" and RemotePort in (80, 443)  // Cloud IMDS
           and InitiatingProcessFileName !in~ ("AzureGuestAgent.exe", "aws-cfn-bootstrap", "google_guest_agent", "waagent", "WindowsAzureGuestAgent.exe"))
    | extend DetectionVector = case(
        RemoteIP == "169.254.169.254", "CloudIMDSQuery",
        "GeoIPLookup"
    )
    | extend RiskScore = case(
        RemoteIP == "169.254.169.254"
        and InitiatingProcessFileName !in~ ("AzureGuestAgent.exe", "waagent", "google_guest_agent"), 80,
        RemoteUrl has_any ("ipinfo.io", "ip-api.com", "ipgeolocation.io"), 70,
        55
    )
    | project TimeGenerated, DeviceId, DeviceName,
              InitiatingProcessAccountName, InitiatingProcessFileName,
              InitiatingProcessCommandLine, InitiatingProcessParentFileName,
              RemoteUrl, RemoteIP, RemotePort, Protocol, DetectionVector, RiskScore;
// Combine and surface high-risk events
union LocaleProcessEvents, GeoIPNetworkEvents
| where RiskScore >= 55
| sort by RiskScore desc, TimeGenerated desc

Detects two primary attack vectors for System Location Discovery: (1) suspicious process chains invoking locale/timezone enumeration via PowerShell cmdlets (Get-WinSystemLocale, Get-Culture, Get-TimeZone), registry queries against HKLM\SYSTEM\CurrentControlSet\Control\Nls and TimeZoneInformation, tzutil.exe queries, and WMIC locale lookups — all initiated from high-risk parent processes; (2) outbound network connections to known IP geolocation services (ipinfo.io, ip-api.com, ipgeolocation.io, etc.) and unauthorized queries to the cloud instance metadata service (169.254.169.254) from non-cloud-agent processes. Each event is scored by risk based on process ancestry and destination specificity.

medium severity medium confidence

Data Sources

Microsoft Defender for Endpoint Microsoft Sentinel

Required Tables

DeviceProcessEvents DeviceNetworkEvents

False Positives

  • IT administration scripts using Get-TimeZone or tzutil.exe for asset inventory or time synchronization audits run by sysadmin accounts
  • Legitimate cloud management agents (AzureGuestAgent.exe, waagent, google_guest_agent) querying IMDS at 169.254.169.254 for instance identity and configuration metadata
  • Security monitoring tools and EDR agents that enumerate system locale to normalize event timestamps or support multi-region SIEM deployments
  • Software installers and update managers checking system locale to select appropriate language packs or regional configurations
  • Penetration testing frameworks executing discovery modules (Metasploit post-exploitation, CobaltStrike Beacon commands) during authorized red team engagements

Sigma rule & cross-platform mapping

The detection logic for System Location Discovery (T1614) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: process_creation
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 5 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.

  1. Test 1PowerShell System Locale and Timezone Enumeration

    Expected signal: Sysmon EventCode 1 with Image=powershell.exe and CommandLine containing Get-WinSystemLocale, Get-Culture, Get-UICulture, Get-TimeZone. Windows Security EventID 4688 if process creation auditing is enabled.

  2. Test 2Registry Query for NLS Locale and Keyboard Layout

    Expected signal: Sysmon EventCode 1 with Image=reg.exe and CommandLine containing 'Nls', 'Locale', 'TimeZoneInformation', 'Keyboard Layout'. Sysmon EventCode 12/13 (registry query events) if registry monitoring is enabled.

  3. Test 3IP Geolocation Lookup via HTTP API

    Expected signal: Sysmon EventCode 3 with DestinationHostname containing 'ip-api.com' and 'ipinfo.io'. Sysmon EventCode 22 (DNS query) for both domains. Network proxy logs showing HTTP GET requests to those endpoints.

  4. Test 4Linux Locale and Timezone Discovery

    Expected signal: Auditd EXECVE records for locale, localectl, timedatectl commands. Syslog entries for process execution. EDR process creation events showing bash executing these commands.

  5. Test 5Cloud Instance Metadata Service Geographic Discovery

    Expected signal: Sysmon EventCode 3 with DestinationIP=169.254.169.254 and DestinationPort=80, InitiatingProcess=powershell.exe. Network events confirming TCP connection attempt to link-local metadata address.


Response Playbook

Triage

  1. Step 1: Identify the detection vector — process-based locale enumeration, GeoIP network lookup, or cloud IMDS query. Pull the full process tree using DeviceProcessEvents filtered by DeviceId and TimeGenerated ±5 minutes to establish parent-child chain.
  2. Step 2: Examine the initiating process. If parent is powershell.exe, wscript.exe, mshta.exe, or rundll32.exe with an unusual command line, treat as high confidence. If parent is explorer.exe or a known admin tool (e.g., SCCM client), lower confidence.
  3. Step 3: For GeoIP network lookups, check if the initiating process is a browser, script interpreter, or unknown binary. Browser-initiated lookups from user home directories are lower risk; script-initiated lookups from temp/AppData paths are high risk.
  4. Step 4: Correlate with other discovery technique alerts in the same 15-minute window on the same host. Co-occurrence of T1033 (System Owner Discovery), T1016 (System Network Configuration Discovery), and T1614 strongly suggests automated malware discovery phase.
  5. Step 5: Review the user account context. If the account is a service account, machine account, or non-interactive logon, escalate immediately. If interactive user account, check whether the timing matches working hours and whether the user has admin tools legitimately installed.
  6. Step 6: For cloud IMDS queries (169.254.169.254), confirm the initiating process against a known-good whitelist of cloud management agents. Any other process querying IMDS is highly suspicious in an enterprise environment.

Containment

  1. If malware is confirmed: isolate the endpoint immediately using EDR network isolation to prevent C2 beaconing and lateral movement while investigation continues.
  2. Revoke any credentials (tokens, passwords) that the compromised process had access to, particularly if it ran under a service account or privileged user.
  3. Block outbound access to identified GeoIP lookup domains at the network proxy or firewall layer to disrupt automated geo-fencing checks by any other infected hosts.
  4. If cloud IMDS was queried by an unauthorized process, rotate all instance credentials and IAM roles associated with the affected cloud instance to prevent credential abuse.
  5. Preserve memory forensics before isolating if the suspicious process is still running — use EDR live response to capture a process memory dump for offline analysis.

Evidence Collection

  1. Collect the full command-line history from the affected process and its parent chain via EDR live response: download PowerShell history from %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt.
  2. Export Sysmon EventCode 1, 3, 11, and 22 logs from the endpoint covering a 2-hour window around the detection time to capture process creation, network activity, file drops, and DNS queries.
  3. Retrieve prefetch files from C:\Windows\Prefetch\ — look for .pf files corresponding to reg.exe, tzutil.exe, wmic.exe, or any unknown executables that appeared during the incident window.
  4. For GeoIP lookups, extract the full HTTP request/response from network capture or proxy logs to identify what data was returned to the attacker — this reveals the external IP and potentially the C2 operator's geo-fencing logic.
  5. Collect the Windows Registry key HKLM\SYSTEM\CurrentControlSet\Control\Nls and HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation and compare against baseline to identify any unauthorized modifications.
  6. If the suspicious process wrote any files to disk, collect those artifacts from the download and temp directories for malware analysis.

Escalation Criteria

  • ! Escalate to Incident Response if System Location Discovery co-occurs within 15 minutes with credential access (T1003, T1555), lateral movement (T1021), or exfiltration (T1041, T1048) indicators on the same host.
  • ! Escalate immediately if the alert fires on a Tier-0 asset (domain controller, PKI server, identity provider) or a cloud control plane instance.
  • ! Escalate if multiple hosts trigger this detection simultaneously — suggests automated malware performing fleet-wide geo-fencing checks during initial infection phase.
  • ! Escalate if cloud IMDS was queried by a non-agent process, as this may indicate a server-side compromise seeking to harvest cloud credentials from instance metadata.
  • ! Escalate if the initiating process is a known malware family (matches threat intelligence on DarkWatchman, PlugX, Gootloader, Cuckoo Stealer, or RAT samples) via hash lookup in threat intel platforms.

Investigation Guide

Forensic Artifacts

  • > PowerShell ScriptBlock logs (Event ID 4104) in Microsoft-Windows-PowerShell/Operational channel containing locale enumeration cmdlets
  • > Windows Prefetch files for reg.exe, tzutil.exe, wmic.exe, and any unknown executable present in the incident timeframe
  • > Windows Registry keys: HKLM\SYSTEM\CurrentControlSet\Control\Nls, HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation, HKCU\Control Panel\International
  • > Network proxy or DNS resolver logs showing queries to GeoIP lookup domains (ipinfo.io, ip-api.com, etc.)
  • > Windows Event ID 4688 (process creation with command line auditing enabled) in Security log
  • > Sysmon EventCode 22 (DNS query) logs for geolocation domain resolution
  • > HTTP request/response content from web proxy logs if available, capturing GeoIP API response body
  • > Cloud provider audit logs (AWS CloudTrail, Azure Activity Log) if IMDS was queried — look for GetInstanceIdentityDocument or IMDS token requests from unexpected processes
  • > Memory strings from suspicious process dumps containing geolocation API URLs or locale API function names

Tuning Guidance

Start by whitelisting known cloud management agents (AzureGuestAgent.exe, waagent, google_guest_agent, EC2Launch.exe) from the IMDS query detection — these are always legitimate. For process-based locale discovery, add process name and parent process whitelists for IT management tools deployed in your environment (SCCM client, Ansible, Chef, Puppet — verify exact binary names). For GeoIP network detections, exclude traffic from known browsers (chrome.exe, firefox.exe, msedge.exe, safari) if geolocation is used for content delivery or analytics in your organization. Tune RiskScore thresholds upward if you have a large admin population using PowerShell locale cmdlets for asset management. Consider adding time-of-day context — locale checks during off-hours from non-interactive sessions have much higher fidelity. If you deploy security awareness testing tools that check locale as part of phishing simulation, exclude their known IP ranges or process hashes.


Hunting Queries

Hunts for DNS resolution of IP geolocation services, scoped to single-process queries which are more likely malware than browser traffic. Identifies hosts performing geo-fencing checks over a 7-day window.

Hunting — KQL
kql
// Hunt: Processes making external HTTP calls to IP geolocation APIs via DNS
DeviceEvents
| where TimeGenerated > ago(7d)
| where ActionType == "DnsQueryResponse"
| where AdditionalFields has_any ("ipinfo.io", "ip-api.com", "ipgeolocation.io", "ipapi.co", "freegeoip.app", "ipstack.com", "geoplugin.net", "myexternalip.com", "checkip.amazonaws.com")
| extend DnsQuery = tostring(parse_json(AdditionalFields).DnsQueryString)
| summarize QueryCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated), UniqueProcesses = dcount(InitiatingProcessFileName) by DeviceName, DnsQuery, InitiatingProcessFileName, InitiatingProcessAccountName
| where UniqueProcesses == 1  // Single process querying — less likely to be a common browser
| sort by QueryCount desc
Hunting — SPL
spl
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=22
| where match(lower(QueryName), "ipinfo\.io|ip-api\.com|ipgeolocation\.io|ipapi\.co|freegeoip\.app|ipstack\.com|geoplugin\.net|myexternalip\.com")
| stats count AS query_count, dc(Image) AS unique_processes, values(Image) AS processes, min(_time) AS first_seen, max(_time) AS last_seen BY host, QueryName
| where unique_processes = 1
| sort -query_count

Hunts for unusual registry queries against NLS, keyboard layout, timezone, and locale keys from processes outside the standard Windows process whitelist. High query counts suggest automated enumeration rather than incidental access.

Hunting — KQL
kql
// Hunt: Registry queries targeting NLS/Locale/TimeZone keys from non-standard processes
DeviceRegistryEvents
| where TimeGenerated > ago(7d)
| where RegistryKey has_any ("\\Control\\Nls\\", "TimeZoneInformation", "\\Keyboard Layout\\", "\\International", "\\MUI\\")
| where ActionType in ("RegistryKeyQueried", "RegistryValueQueried")
| where InitiatingProcessFileName !in~ ("svchost.exe", "explorer.exe", "SearchIndexer.exe", "audiodg.exe", "spoolsv.exe", "lsass.exe", "csrss.exe", "winlogon.exe", "fontdrvhost.exe", "dwm.exe")
| summarize QueryCount = count(), RegistryKeys = make_set(RegistryKey, 20), FirstSeen = min(TimeGenerated) by DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName
| where QueryCount >= 3
| sort by QueryCount desc
Hunting — SPL
spl
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode IN (12, 13)
| where match(TargetObject, "\\\\Control\\\\Nls\\\\|TimeZoneInformation|Keyboard Layout|\\\\International|\\\\MUI\\\\")
| where NOT match(lower(Image), "svchost\.exe|explorer\.exe|searchindexer\.exe|audiodg\.exe|spoolsv\.exe|lsass\.exe|csrss\.exe|winlogon\.exe")
| stats count AS query_count, values(TargetObject) AS registry_keys, min(_time) AS first_seen BY host, Image, CommandLine, User
| where query_count >= 3
| sort -query_count

Hunts for unauthorized access to cloud Instance Metadata Service (169.254.169.254) from processes that are not known cloud management agents. IMDS access by unexpected processes is a strong indicator of cloud-aware malware seeking instance identity, region, and credentials.

Hunting — KQL
kql
// Hunt: Cloud IMDS access from non-infrastructure processes across fleet
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemoteIP == "169.254.169.254"
| where InitiatingProcessFileName !in~ ("AzureGuestAgent.exe", "WindowsAzureGuestAgent.exe", "waagent", "google_guest_agent", "amazon-ssm-agent", "ec2config.exe", "EC2Launch.exe", "aws-cfn-bootstrap", "AwsSignInHelper.exe")
| summarize IMDSAccessCount = count(), DistinctPorts = make_set(RemotePort), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName
| sort by IMDSAccessCount desc
Hunting — SPL
spl
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=3
| where DestinationIp="169.254.169.254"
| where NOT match(lower(Image), "azureguestagent\.exe|windowsazureguestagent\.exe|waagent|google_guest_agent|amazon-ssm-agent|ec2config\.exe|ec2launch\.exe")
| stats count AS imds_count, values(DestinationPort) AS ports, min(_time) AS first_seen, max(_time) AS last_seen BY host, Image, CommandLine, User
| sort -imds_count

Atomic Red Team Tests

Test 1 PowerShell System Locale and Timezone Enumeration
windows

Simulates malware using PowerShell to enumerate system locale, culture, UI culture, and timezone — techniques used by DarkWatchman, PlugX, and Cuckoo Stealer to determine target geography before proceeding with infection.

Command

powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-WinSystemLocale; Get-Culture; Get-UICulture; Get-TimeZone; [System.Globalization.CultureInfo]::CurrentCulture; [System.Globalization.CultureInfo]::InstalledUICulture"

Cleanup

powershell
No cleanup required — read-only enumeration.

Expected Telemetry

Sysmon EventCode 1 with Image=powershell.exe and CommandLine containing Get-WinSystemLocale, Get-Culture, Get-UICulture, Get-TimeZone. Windows Security EventID 4688 if process creation auditing is enabled.

Expected Detection

Alert fires on ProcessLocaleDiscovery vector with medium risk score when parent process is cmd.exe or calling shell. Increases to high risk if spawned from script host.

Test 2 Registry Query for NLS Locale and Keyboard Layout
windows

Simulates malware enumerating Windows locale configuration via registry queries to NLS and Keyboard Layout keys — a common technique in ransomware geo-fencing (Ragnar Locker) to avoid infecting CIS-region hosts.

Command

powershell
cmd.exe /c "reg query HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language && reg query HKLM\SYSTEM\CurrentControlSet\Control\Nls\Locale && reg query HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation && reg query \"HKCU\Keyboard Layout\Preload\""

Cleanup

powershell
No cleanup required — read-only registry queries.

Expected Telemetry

Sysmon EventCode 1 with Image=reg.exe and CommandLine containing 'Nls', 'Locale', 'TimeZoneInformation', 'Keyboard Layout'. Sysmon EventCode 12/13 (registry query events) if registry monitoring is enabled.

Expected Detection

Alert fires on ProcessLocaleDiscovery vector. Multiple reg.exe executions within short window from cmd.exe parent increases risk score.

Test 3 IP Geolocation Lookup via HTTP API
windows

Simulates malware querying an IP geolocation service to determine the host's geographic location — used by Gootloader, Transparent Tribe, and other threat actors to implement geo-specific payload delivery.

Command

powershell
powershell.exe -NoProfile -Command "(Invoke-WebRequest -Uri 'http://ip-api.com/json' -UseBasicParsing).Content; (Invoke-WebRequest -Uri 'https://ipinfo.io/json' -UseBasicParsing).Content"

Cleanup

powershell
No cleanup required.

Expected Telemetry

Sysmon EventCode 3 with DestinationHostname containing 'ip-api.com' and 'ipinfo.io'. Sysmon EventCode 22 (DNS query) for both domains. Network proxy logs showing HTTP GET requests to those endpoints.

Expected Detection

Alert fires on GeoIPLookup vector with high risk score (70+). Both DNS and network connection events should correlate on same host within seconds.

Test 4 Linux Locale and Timezone Discovery
linux

Simulates an adversary on a Linux host enumerating locale, language, and timezone settings to determine geographic region of the target system, as done by cross-platform malware families.

Command

bash
locale; localectl status; timedatectl status; cat /etc/timezone; cat /etc/locale.conf; ls -la /etc/localtime; date +%Z; echo $LANG $LANGUAGE $LC_ALL

Cleanup

bash
No cleanup required — read-only enumeration.

Expected Telemetry

Auditd EXECVE records for locale, localectl, timedatectl commands. Syslog entries for process execution. EDR process creation events showing bash executing these commands.

Expected Detection

Lower confidence alert if these commands fire from interactive shell. High confidence if they fire from a non-interactive session, cron job, or unexpected parent process like a web server.

Test 5 Cloud Instance Metadata Service Geographic Discovery
windows

Simulates cloud-aware malware querying the AWS/Azure Instance Metadata Service to determine availability zone and region — used by cloud-targeting adversaries to understand their victim's cloud infrastructure geography.

Command

powershell
powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/placement/availability-zone' -UseBasicParsing -TimeoutSec 2).Content } catch { 'Not AWS IMDS' }; try { (Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/instance/compute/location?api-version=2021-02-01' -Headers @{'Metadata'='true'} -UseBasicParsing -TimeoutSec 2).Content } catch { 'Not Azure IMDS' }"

Cleanup

powershell
No cleanup required.

Expected Telemetry

Sysmon EventCode 3 with DestinationIP=169.254.169.254 and DestinationPort=80, InitiatingProcess=powershell.exe. Network events confirming TCP connection attempt to link-local metadata address.

Expected Detection

Alert fires on CloudIMDSQuery vector with risk score 80. Alert should fire immediately — any non-whitelisted process connecting to 169.254.169.254 is high priority in enterprise environments.

Related Detections

Tactic Hub