ARP Poisoning
Man-in-the-middle attack via ARP spoofing with DNS, SNI, HTTP, and FTP interception.
Perform ARP poisoning attacks to intercept network traffic between hosts and the gateway.
Overview
The ARP poisoning attack:
- Performs bidirectional ARP spoofing (victim ↔ gateway)
- Uses ICMP ping sweep + ARP scan for fast host discovery
- Passively discovers new hosts at runtime
- Intercepts and logs all DNS queries
- Extracts TLS Server Name Indication (SNI) from HTTPS connections
- Captures HTTP Host headers and request URLs
- Captures HTTP cookies for session hijacking
- Captures HTTP Authorization headers (Basic auth, Bearer tokens)
- Captures FTP credentials (USER/PASS commands)
- Proxies DNS using the network’s actual DNS server
- Forwards IP packets for transparent MITM
Starting the Attack
ethpoison start
This will:
- Scan the /24 subnet using ICMP ping and ARP requests
- Discover active hosts and their MAC addresses
- Begin bidirectional ARP poisoning
- Start DNS proxy on port 53
- Enable passive host discovery
- Enable packet inspection for SNI, HTTP, and FTP
Stopping the Attack
ethpoison stop
This will:
- Stop all poisoning tasks
- Restore ARP tables to correct values
- Display captured counts
Viewing Status
Check current attack status:
ethpoison status
Shows:
- Running state
- Number of poisoned hosts
- Number of captured domains (DNS + SNI + HTTP URLs)
- Number of captured cookies
- Number of captured credentials
Viewing Captured Domains
List all domains/URLs that were intercepted:
ethpoison list
Viewing Captured Cookies
List all HTTP cookies that were captured:
ethpoison cookies
Viewing Captured Credentials
List all credentials that were captured (HTTP Auth, FTP):
ethpoison creds
How It Works
- Host Discovery: ICMP echo requests wake up hosts, followed by ARP scanning
- ARP Spoofing: Sends forged ARP replies claiming to be the gateway (to victims) and each victim (to the gateway)
- DNS Interception: Receives DNS queries on port 53, logs them, forwards to the real DNS server
- SNI Extraction: Parses TLS ClientHello packets to extract server names from HTTPS connections
- HTTP Inspection: Extracts request URLs, Host headers, Cookies, and Authorization from HTTP traffic
- FTP Capture: Monitors port 21 for USER and PASS commands
- Packet Forwarding: Relays non-local traffic to maintain connectivity
- Passive Discovery: Monitors network traffic to discover new hosts without rescanning
Requirements
- Ethernet connection must be active
- IP forwarding should be enabled in firmware (
CONFIG_LWIP_IP_FORWARD=y) - Target hosts must use the gateway as their DNS server (common default)
Notes
- The attack automatically uses the network’s DNS server from DHCP
- New hosts discovered passively are automatically added to the poison list
- Stopping the attack restores ARP tables to prevent network disruption
- SNI extraction works even with HTTPS (encrypted content, but server name is visible)
- Cookies and Authorization are captured from unencrypted HTTP traffic only
- FTP credentials are captured in plaintext on port 21
