SOP-35: Azure Firewall Threat Intelligence Alert Response

·

Azure Firewall Premium's Threat Intelligence mode uses Microsoft's curated threat feed to alert or deny traffic to and from known-malicious IPs, domains, and URLs. When an internal host attempts to reach a TI-flagged destination, the firewall logs the event to AzureDiagnostics with Category AzureFirewallThreatIntelLog.

This SOP covers two detection paths: firewall TI deny log analysis to identify the internal source and destination, and IDPS signature correlation to determine if the traffic matched a known exploit or C2 protocol signature.

☰ Table of Contents

01 Background 02 Identification 03 Containment 04 Eradication 05 Escalation
🛠

01 — BACKGROUND

TECHNIQUE OVERVIEW
01
Azure Firewall TI Alert Architecture
T1071 / T1048

Azure Firewall Premium receives Microsoft Threat Intelligence feeds and can be configured in Alert mode (log and allow) or Alert and Deny mode (log and block). A TI alert in Deny mode means the firewall already blocked the traffic — your job is to identify the internal host that initiated the connection and assess whether this was a C2 attempt, malware callback, or scanning activity.

FieldValue
MITRE TechniqueT1071 — Application Layer Protocol (C2 via HTTPS/HTTP)
Sub-techniqueT1048 — Exfiltration Over Alternative Protocol
Log SourcesAzureDiagnostics (Category=AzureFirewallThreatIntelLog), AzureFirewallNetworkRuleLog, AzureFirewallApplicationRuleLog
Key Fieldsmsg_s (action, source, destination, port), Category, TimeGenerated
Firewall ModesAlert only (traffic passes) vs Alert and Deny (traffic blocked)
Detection PriorityHIGH — firewall TI match is a validated indicator, not a heuristic

If Azure Firewall is in Alert mode only (not Deny), the traffic reached its destination despite the TI match. Treat Alert-mode TI logs as confirmed outbound communication, not blocked attempts.

🔍

02 — IDENTIFICATION

2 INDICATORS
▶ Investigation Workflow
I1
Azure Firewall TI Deny Log Analysis
T1071
WHY CHECK

The AzureDiagnostics ThreatIntelLog contains the source IP that triggered the TI match — identifying this host is the critical first step before the attacker rotates their C2 domain and evades the firewall rule.

📍 Portal Navigation — Microsoft Sentinel
portal.azure.com› Microsoft Sentinel› Logs
  • 1Open Sentinel → Logs → ensure AzureDiagnostics table is available and the Azure Firewall is sending diagnostic logs.
  • 2Paste the KQL below; set time range to Last 4 hours.
  • 3Review SourceIP fields — this is the internal host that attempted the TI-matched connection. Map to asset inventory.
  • 4Review Action_s — Deny means firewall blocked it; Alert means the traffic reached its destination and requires urgent escalation.
  • 5Count occurrences per SourceIP — 3 or more attempts to the same TI destination confirms automated beaconing, not a one-time browser redirect.
Field / ValueMeaningAction
Action_s = DenyFirewall blocked the connection — traffic did not reach the TI-matched destinationINVESTIGATE SOURCE
Action_s = AlertAlert-only mode — connection succeeded and reached the malicious destinationESCALATE IMMEDIATELY
Hit count > 3Recurring attempts to the same TI destination — automated process (implant), not browserESCALATE
msg_s IDPSIDPS signature match in addition to TI — known exploit or C2 protocol fingerprint identifiedESCALATE
DETECTS: Azure Firewall threat intelligence deny events from AzureDiagnostics — identifies internal source IPs attempting connections to TI-flagged external destinations.
KQL — Microsoft Sentinel (AzureDiagnostics)
AzureDiagnostics | where TimeGenerated > ago(4h) | where Category == "AzureFirewallThreatIntelLog" | extend SourceIP = extract(@"from\s+(\d+\.\d+\.\d+\.\d+)", 1, msg_s) | extend DestIP = extract(@"to\s+(\d+\.\d+\.\d+\.\d+)", 1, msg_s) | extend DestPort = extract(@":(\d+)\.", 1, msg_s) | extend Action = extract(@"(Alert|Deny)", 1, msg_s) | summarize HitCount = count(), DestinationIPs = make_set(DestIP, 10), Actions = make_set(Action) by SourceIP, bin(TimeGenerated, 15m) | where HitCount > 1 | order by HitCount desc
DETECTS: Azure Firewall TI alert events in Splunk — parses the msg field to extract source and destination from the firewall log format.
SPL — Splunk
index=azure sourcetype=azure:firewall category=AzureFirewallThreatIntelLog | rex field=msg "from (?P\d+\.\d+\.\d+\.\d+)" | rex field=msg "to (?P\d+\.\d+\.\d+\.\d+)" | rex field=msg "(?PAlert|Deny)" | stats count as hit_count, values(dest_ip) as destinations, values(action) as actions by src_ip | where hit_count > 1 | sort -hit_count

If Azure Firewall diagnostic logs are not flowing to Sentinel, navigate to Azure Firewall resource → Diagnostic settings → Add diagnostic setting and enable all log categories to the Sentinel Log Analytics workspace.

I2
IDPS Signature & Repeat Attempt Analysis
T1048
WHY CHECK

Azure Firewall IDPS logs protocol-level signatures (Cobalt Strike over HTTPS, Metasploit stager, known malware C2 patterns) — an IDPS match alongside a TI deny is definitive confirmation of a malicious connection attempt.

📍 Portal Navigation — Azure Firewall IDPS Logs
portal.azure.com› Azure Firewall Resource› Logs → IDPSSignatureHitCountLog
  • 1Navigate to the Azure Firewall resource in the portal → Logs → use the IDPSSignatureHitCountLog table or query AzureDiagnostics with Category AzureFirewallIDPSLog.
  • 2Paste the KQL below to cross-reference IDPS hits against the source IP identified in I1.
  • 3Review SignatureName — entries mentioning Cobalt Strike, Metasploit, Mimikatz, or known malware families confirm active exploitation tooling.
  • 4Check Severity — Critical or High IDPS severity triggers immediate SEV1 declaration.
  • 5Cross-reference source IP against Defender for Endpoint device inventory to identify hostname, owner, and recent process activity.
DETECTS: Azure Firewall IDPS signature hits correlated against TI-matched source IPs — confirms protocol-level malware signatures in the blocked traffic stream.
KQL — Microsoft Sentinel (AzureDiagnostics IDPS)
AzureDiagnostics | where TimeGenerated > ago(4h) | where Category == "AzureFirewallIDPSLog" | extend SrcIP = extract(@"(\d+\.\d+\.\d+\.\d+):\d+\s*->", 1, msg_s) | extend SignatureName = extract(@"signature:\s*([^,]+)", 1, msg_s) | extend Severity = extract(@"severity:\s*(\w+)", 1, msg_s) | where isnotempty(SrcIP) | summarize IDPSHits = count(), Signatures = make_set(SignatureName, 10), MaxSeverity = max(Severity) by SrcIP, bin(TimeGenerated, 30m) | order by IDPSHits desc
DETECTS: IDPS signature hits from the Azure Firewall in Splunk — extracts signature name and severity from firewall IDPS log entries.
SPL — Splunk
index=azure sourcetype=azure:firewall category=AzureFirewallIDPSLog | rex field=msg "(?P\d+\.\d+\.\d+\.\d+):\d+\s*->" | rex field=msg "signature:\s*(?P[^,]+)" | rex field=msg "severity:\s*(?P\w+)" | stats count as idps_hits, values(sig_name) as signatures by src_ip severity | sort -idps_hits

Cross-reference the firewall source IP against Entra ID Sign-in logs — if the same IP was used to log into Azure services in the past 24 hours, the compromised machine may already have valid Azure credentials cached, dramatically expanding the blast radius.

🚫

03 — CONTAINMENT

IMMEDIATE ACTION
C1
Verdict & Escalation Decision
DECISION GATE
▶ Triage Verdict — Select One
CONFIRMED Recurring TI deny AND IDPS signature match, or Alert mode (traffic reached destination) → Isolate source host, open SEV1 IR, investigate for lateral movement
PARTIAL Single TI deny, no IDPS, Deny mode (traffic blocked) → Investigate source host process activity, monitor for recurrence, 4-hour re-check
FALSE POSITIVE Known legitimate service misidentified (CDN, update server) → Add IP to firewall exclusion, document business justification, close ticket

Alert-mode TI events (Action = Alert) mean the connection succeeded. This is a confirmed exfiltration or C2 attempt — do not treat Alert-mode logs as lower priority than Deny-mode logs.

C2
Isolate Source Host & Add Firewall Rule
CONTAINMENT
📍 Portal Navigation — Defender Device Isolation + Azure Firewall Rules
security.microsoft.com› Assets› Devices → Isolate
  • 1Identify the hostname from the source IP via Assets → Devices in security.microsoft.com → search by IP.
  • 2Isolate the device: Actions → Isolate device.
  • 3In Azure portal, navigate to Azure Firewall → Rules (classic) → Network rule collection → add an explicit deny rule for the source IP to all outbound destinations.
  • 4If Alert mode is enabled on TI, switch to Alert and Deny immediately: Azure Firewall → Threat intelligence → Alert and deny.
  • 5Open IR ticket with: source IP/hostname, TI destination IP, Action type (Alert/Deny), IDPS signatures, hit count, and first/last seen timestamps.
🗑

04 — ERADICATION

CLEANUP
E1
Remove Implant & Harden Firewall Policy
ERADICATION
  • 1Run a full Defender AV scan on the isolated source host to identify and quarantine the malicious process.
  • 2Review the host's Device Timeline in Defender for Endpoint — trace back 48 hours from the first firewall TI hit to identify initial access.
  • 3Check scheduled tasks, registry run keys, and WMI subscriptions for persistence established by the implant.
  • 4Verify Azure Firewall Threat Intelligence is set to Alert and Deny (not Alert only) in Firewall Policy → Threat intelligence.
  • 5Enable IDPS in Signature mode = Alert at minimum, Alert and Deny preferred — navigate to Firewall Policy → IDPS.
  • 6Review all other internal hosts that contacted the same TI destination IP in the same timeframe — scope potential lateral spread.
Eradication Complete When
  • No new AzureFirewallThreatIntelLog events from source IP in past 2 hours
  • Source host AV scan complete — implant quarantined
  • Firewall TI mode confirmed as Alert and Deny
  • IDPS enabled on Azure Firewall Policy
  • All hosts that contacted TI destination IP investigated
📢

05 — ESCALATION

ESCALATION PATHS
ES1
Escalation Matrix
ESCALATION
ConditionSeverityActionNotify
Alert mode — connection reached TI destinationSEV1Full IR, isolate host, treat as active C2SOC Lead → CISO
Deny mode, recurring hits, IDPS matchSEV1Isolate host, IR ticket, malware removalSOC Lead → IR Team
Deny mode, single hit, no IDPSSEV3Investigate source host, 4-hour monitoringSOC Lead (async)
Legitimate service misidentified by TI feedINFOFirewall exclusion, document, closeNone

Ensure Azure Firewall is never left in Alert-only mode for TI-matched traffic. Alert-only mode provides visibility but no protection — change to Alert and Deny as part of every SOP-35 resolution.


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.