基于 ARP 的 DNS 欺骗实现
目录
基于 ARP 的 DNS 欺骗实现
一、背景
DNS 协议基于 UDP 协议且明文传输,这意味着如果能够控制网关,便能够篡改该局域网设备的 DNS 解析结果。
而 ARP 协议是将 IP 地址解析为 MAC 地址的协议,且 ARP 是无认证协议,任何主机都可以发送 ARP 相应,接收方并不会做任何校验。于是,攻击者可以发送虚假 ARP 响应,将自己伪造成网关,即可进一步劫持受害者的 DNS 解析结果。
本文涉及网络攻击手段,不会展示任何具体代码和思路细节。
二、实现思路
1.ARP 欺骗模块
- 获取网关 IP 地址
- 获取自身 MAC 地址
- 构造虚假 ARP 响应,将自身伪装为网关
- 受害者收到响应,ARP 表被污染,将攻击者当成网关
- 同理,污染网关 ARP 表,将自身伪装为受害者
2.流量转发模块
- 维持网络不中断
- 进行 IP 转发
3.DNS 欺骗模块
- 检查到达报文,寻找 UDP53 端口报文
- 解析 DNS 请求报文
- 如果是期望的攻击域名,则伪造 DNS 响应结果直接返回,且不转发本报文
- 如果不是期望的攻击域名,正常转发报文
flowchart LR
subgraph ARP[ARP 欺骗模块]
A1[污染ARP表]
A2[双向欺骗]
end
subgraph FORWARD[流量转发模块]
B1[IP 转发]
B2[数据中继]
end
subgraph DNS[DNS 欺骗模块]
C1[拦截 DNS 请求]
C2{目标域名判断}
C3[伪造响应]
C4[正常转发]
end
ARP --> FORWARD
FORWARD --> DNS
C2 -->|是 | C3
C2 -->|否 | C4
三、防护措施
从上述思路可看出,ARP欺骗与DNS欺骗的成立,根因在于协议本身的安全缺陷:
- ARP和DNS均无认证机制
- DNS采用明文传输
1.ARP防护
- 手动绑定网关IP与MAC地址
- 持续监测异常ARP报文
2.DNS防护
- 使用加密DNS
- 使用DNSSEC
3.应用层防护
- 启用HTTPS
4.非技术防护
- 不可信网络中避免访问敏感数据
- 使用VPN等加密通信
随着 HTTPS、加密 DNS以及网络设备安全能力的提升,本文的攻击手段在真实环境中的成功率已经显著下降。