T1557.003

DHCP Spoofing

Adversaries may redirect network traffic to adversary-owned systems by spoofing Dynamic Host Configuration Protocol (DHCP) traffic and acting as a malicious DHCP server on the victim network. By achieving the adversary-in-the-middle (AiTM) position, adversaries may collect network communications, including passed credentials sent over insecure, unencrypted protocols. Rogue DHCP servers can distribute malicious DNS server addresses, default gateway settings, or WPAD proxy configuration that silently routes victim traffic through attacker-controlled infrastructure. DHCPv6 spoofing extends this to IPv6 networks via INFORMATION-REQUEST responses. Adversaries may also abuse DHCP to perform starvation attacks by exhausting the DHCP allocation pool with spoofed DISCOVER messages.

Microsoft Sentinel / Defender
kusto
let RogueDHCPTools = dynamic(["yersinia", "dhcpig", "gobbler", "dhcpstarv", "ettercap", "bettercap", "mitm6", "dhcp6"]);
let ScriptInterpreters = dynamic(["python.exe", "python3", "python", "ruby", "perl", "bash", "sh", "pwsh.exe", "powershell.exe"]);
let DHCPKeywords = dynamic(["dhcp", "rogue", "responder", "bootp", "dhcpig", "dhcpstarv", "dhcp6", "mitm6"]);
// Branch 1: Unauthorized processes binding to UDP port 67 (DHCP server port)
DeviceNetworkEvents
| where Timestamp > ago(24h)
| where LocalPort == 67 or RemotePort == 67
| where Protocol == "Udp" or isnull(Protocol)
| where InitiatingProcessFileName !in~ ("svchost.exe", "System")
| extend IsKnownTool = InitiatingProcessFileName has_any (RogueDHCPTools)
| extend IsInterpreterWithDHCP = (InitiatingProcessFileName has_any (ScriptInterpreters)
    and InitiatingProcessCommandLine has_any (DHCPKeywords))
| extend DetectionType = "DHCP_Port67_Binding"
| project Timestamp, DeviceName,
         AccountName = InitiatingProcessAccountName,
         ProcessName = InitiatingProcessFileName,
         CommandLine = InitiatingProcessCommandLine,
         LocalIP, RemoteIP, LocalPort, RemotePort,
         IsKnownTool, IsInterpreterWithDHCP, DetectionType
| union (
    // Branch 2: Known DHCP attack tool execution
    DeviceProcessEvents
    | where Timestamp > ago(24h)
    | where FileName has_any (RogueDHCPTools)
        or (FileName has_any (ScriptInterpreters) and ProcessCommandLine has_any (DHCPKeywords))
        or ProcessCommandLine has_any (RogueDHCPTools)
        or (ProcessCommandLine has "mitm6" or ProcessCommandLine has "dhcp6")
    | extend IsKnownTool = FileName has_any (RogueDHCPTools)
    | extend IsInterpreterWithDHCP = FileName has_any (ScriptInterpreters)
    | extend DetectionType = "DHCP_Tool_Execution"
    | project Timestamp, DeviceName, AccountName,
             ProcessName = FileName, CommandLine = ProcessCommandLine,
             LocalIP = "", RemoteIP = "", LocalPort = int(null), RemotePort = int(null),
             IsKnownTool, IsInterpreterWithDHCP, DetectionType
)
| union (
    // Branch 3: DNS configuration registry changes (DHCP-pushed malicious DNS indicator)
    DeviceRegistryEvents
    | where Timestamp > ago(24h)
    | where RegistryKey has "Tcpip\\Parameters\\Interfaces"
    | where RegistryValueName in~ ("DhcpNameServer", "NameServer", "DhcpDefaultGateway", "DhcpSubnetMaskOpt")
    | where InitiatingProcessFileName !in~ ("svchost.exe", "System", "lsass.exe")
    | extend IsKnownTool = false
    | extend IsInterpreterWithDHCP = false
    | extend DetectionType = "DHCP_DNS_Config_Change"
    | project Timestamp, DeviceName,
             AccountName = InitiatingProcessAccountName,
             ProcessName = InitiatingProcessFileName,
             CommandLine = strcat("Registry: ", RegistryKey, " => ", RegistryValueName, "=", RegistryValueData),
             LocalIP = "", RemoteIP = "", LocalPort = int(null), RemotePort = int(null),
             IsKnownTool, IsInterpreterWithDHCP, DetectionType
)
| sort by Timestamp desc
high severity medium confidence

Data Sources

Network Traffic: Network Traffic Flow Process: Process Creation Windows Registry: Windows Registry Key Modification Microsoft Defender for Endpoint

Required Tables

DeviceNetworkEvents DeviceProcessEvents DeviceRegistryEvents

False Positives

  • Legitimate DHCP servers (Windows Server DHCP role, ISC DHCP) running on authorized servers — svchost.exe hosts the Windows DHCP service but other dedicated DHCP daemons may appear as unexpected processes
  • Network virtualization software (VMware Workstation, Hyper-V, VirtualBox) running internal DHCP services for virtual networks on developer or lab machines
  • Docker Desktop or Podman Desktop on developer workstations running DHCP for container bridge networks
  • Network testing tools used by administrators for DHCP scope capacity planning or network auditing (dhcpdump, dhcplease-watch)
  • pfSense, OPNsense, or similar software router appliances if monitored as endpoints in the EDR environment

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections