T1557.002

ARP Cache Poisoning

Adversaries may poison Address Resolution Protocol (ARP) caches to position themselves between the communication of two or more networked devices. ARP Cache Poisoning enables adversary-in-the-middle attacks by associating the adversary's MAC address with a legitimate IP address in the ARP caches of victim devices, allowing interception and manipulation of network traffic. The stateless, unauthenticated nature of ARP means devices accept unsolicited replies, enabling gratuitous ARP broadcast attacks against entire subnets. Used by threat groups including Operation Cleaver (Iranian APT) for credential theft via custom tooling, and LuminousMoth for traffic redirection to actor-controlled infrastructure. Primary use cases include credential harvesting from unencrypted protocols (HTTP, FTP, SMTP, NTLM), session hijacking, and data manipulation as a precursor to Transmitted Data Manipulation (T1565.002) or Network Sniffing (T1040).

Microsoft Sentinel / Defender
kusto
let ARPPoisoningTools = dynamic(["arpspoof", "ettercap", "bettercap", "nemesis", "arp-sk", "arpflood", "yersinia", "cain"]);
let ScapyARPPatterns = dynamic(["ARP(", "arp_poison", "arp-poison", "sendp(", "Ether(dst", "scapy"]);
// Known ARP poisoning tool execution
let ToolExecution = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (ARPPoisoningTools)
    or ProcessCommandLine has_any (ARPPoisoningTools)
| extend DetectionType = "Known ARP Poisoning Tool";
// Python scapy-based ARP packet injection
let ScapyARP = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName in~ ("python.exe", "python3.exe", "python", "python3")
| where ProcessCommandLine has_any (ScapyARPPatterns)
| extend DetectionType = "Python Scapy ARP Manipulation";
// Static ARP entry manipulation via arp.exe (Windows)
let ARPStaticEntry = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName =~ "arp.exe"
| where ProcessCommandLine has_any ("-s ", "/s ")
| extend DetectionType = "ARP Static Entry Modification";
// IP forwarding enablement via netsh (Windows MITM prerequisite)
let IPForwardingNetsh = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName =~ "netsh.exe"
| where ProcessCommandLine has "forwarding"
    and ProcessCommandLine has_any ("enable", "enabled")
| extend DetectionType = "IP Forwarding Enabled via Netsh";
// IP forwarding enablement via sysctl (Linux MITM prerequisite)
let LinuxIPForward = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName in~ ("sysctl", "bash", "sh", "zsh", "tee")
| where ProcessCommandLine has "ip_forward"
    and (ProcessCommandLine has "=1" or ProcessCommandLine has "= 1")
| extend DetectionType = "Linux IP Forwarding Enabled";
union ToolExecution, ScapyARP, ARPStaticEntry, IPForwardingNetsh, LinuxIPForward
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
         InitiatingProcessFileName, InitiatingProcessCommandLine, DetectionType
| sort by Timestamp desc
high severity medium confidence

Data Sources

Process: Process Creation Command: Command Execution Microsoft Defender for Endpoint

Required Tables

DeviceProcessEvents

False Positives

  • Network administrators using arp.exe -s to configure static ARP entries as a legitimate defense against ARP poisoning or to maintain persistent MAC-to-IP mappings for critical infrastructure devices such as printers and servers
  • Authorized penetration testers or red teams executing ettercap, bettercap, or arpspoof during sanctioned network security assessments — always verify against active change management or pen test engagement tickets covering the source device and network segment
  • Multi-homed Linux servers, container orchestration nodes (Kubernetes, Docker Swarm), and VPN gateway hosts that legitimately require ip_forward=1 for packet routing and NAT functionality
  • Python network automation engineers or security researchers using scapy for legitimate packet crafting, NIDS signature testing, or network protocol development in lab environments
  • Network monitoring solutions (arpwatch, XArp, commercial NAC products) that use ARP-related binary names or scapy internally for passive ARP anomaly detection without injecting forged replies

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections