目录

基于 ARP 的 DNS 欺骗实现

基于 ARP 的 DNS 欺骗实现

一、背景

DNS 协议基于 UDP 协议且明文传输,这意味着如果能够控制网关,便能够篡改该局域网设备的 DNS 解析结果。

而 ARP 协议是将 IP 地址解析为 MAC 地址的协议,且 ARP 是无认证协议,任何主机都可以发送 ARP 相应,接收方并不会做任何校验。于是,攻击者可以发送虚假 ARP 响应,将自己伪造成网关,即可进一步劫持受害者的 DNS 解析结果。

本文涉及网络攻击手段,不会展示任何具体代码和思路细节。

二、实现思路

1.ARP 欺骗模块

  1. 获取网关 IP 地址
  2. 获取自身 MAC 地址
  3. 构造虚假 ARP 响应,将自身伪装为网关
  4. 受害者收到响应,ARP 表被污染,将攻击者当成网关
  5. 同理,污染网关 ARP 表,将自身伪装为受害者

2.流量转发模块

  1. 维持网络不中断
  2. 进行 IP 转发

3.DNS 欺骗模块

  1. 检查到达报文,寻找 UDP53 端口报文
  2. 解析 DNS 请求报文
  3. 如果是期望的攻击域名,则伪造 DNS 响应结果直接返回,且不转发本报文
  4. 如果不是期望的攻击域名,正常转发报文
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以及网络设备安全能力的提升,本文的攻击手段在真实环境中的成功率已经显著下降。