中间人攻击手法详解
中间人攻击简介
中间人攻击(Man-in-the-Middle Attack,简称MITM攻击)是一种网络安全攻击,攻击者通过在通信的两端之间插入恶意节点,从而达到监视、篡改或劫持通信流量的效果。
常见中间人攻击手法
-
ARP欺骗(ARP Spoofing): 攻击者发送ARP欺骗包,让受害者误认为攻击者的MAC地址是目的IP对应的MAC地址,从而将流量导向攻击者。
-
DNS欺骗(DNS Spoofing): 攻击者篡改DNS服务器的记录,使受害者访问网站时被重定向到攻击者控制的网站。
-
SSL压制(SSL Stripping): 攻击者压制受害者和服务器之间的SSL/TLS加密连接,使用明文传输窃取信息。
-
WiFi伪装(Evil Twin): 攻击者设置一个与正规WiFi相似的假冒网络,诱使用户连接,获取网络流量。
-
会话劫持(Session Hijacking): 攻击者通过获取会话标识符,接管受害者与服务器之间的会话。
ARP欺骗攻击详解
ARP协议原理
地址解析协议(ARP)是根据IP地址获取物理地址的TCP/IP协议。主机发送包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息确定目标的物理地址。
ARP欺骗手法
- 攻击者使用ARP欺骗工具发送ARP响应报文,声称自己的MAC地址是受害者要找的IP的MAC。
- 受害者接收到响应后会更新自己的ARP缓存,之后发往该IP的流量就会发往攻击者。
ARP欺骗效果
- 窃听通信内容
- 劫持会话
- 进行网站钓鱼等攻击
- 控制受害者和服务器之间的通信
- 修改传输的数据包内容
- 选择性劫持部分特定流量
实际操作步骤
-
网络拓扑准备:
- 受害者:192.168.243.128 (00-0C-29-12-DC-7A)
- 攻击者:192.168.243.129 (00:0c:29:f7:fb:a8)
- 提前开启抓包工具对虚拟网卡进行抓包
-
执行ARP欺骗命令:
arpspoof -i <网卡接口> -t <目标的内网地址> <网关ip> -
验证攻击效果:
- 在抓包软件中可以看到攻击者发出大量ARP response包
- 检查受害者设备的ARP表,发现网关地址的MAC已被污染为攻击者的MAC
-
流量转发设置:
su - echo 1 >/proc/sys/net/ipv4/ip_forward- 0为不转发,1为启用流量转发
- 启用后受害者可以正常上网,同时流量被攻击者截获
DNS劫持攻击详解
DNS劫持原理
DNS劫持通过伪造DNS响应欺骗受害者,将域名解析到攻击者控制的IP地址。
DNS劫持手法
- 欺骗受害者的DNS服务器,发送虚假的域名解析响应
- 中毒本地网络的DNS缓存服务器
- 通过ARP欺骗成为"中间人"
- 攻击域名注册商或云服务器
DNS劫持效果
- 受害者连接到攻击者指定的错误IP地址
- 流量重定向到钓鱼网站或恶意服务器
- 中间人攻击受害者与服务器的通信
- 选择性劫持特定域名
- 记录受害者的上网记录
实际操作步骤
-
搭建DNS服务器:
- 使用AdGuard搭建DNS服务器
- 关闭过滤规则、DNS黑白名单
- 项目地址: https://github.com/AdguardTeam/AdGuardHome
-
ARP欺骗下的DNS劫持:
- 首先完成ARP欺骗成为中间人
- 使用wireshark确认受害者默认DNS服务器(如192.168.243.2)
- 使用iptables重定向DNS流量:
iptables -t nat -A PREROUTING -p udp --dport 53 -d 192.168.243.2 -j DNAT --to-destination 192.168.243.129:53 - 检查nat表规则:
iptables -t nat -L iptables -L - 删除规则命令:
iptables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to-port 5353 iptables -t nat -D PREROUTING -p udp --dport 53 -d 8.8.8.8 -j DNAT --to-destination 127.0.0.1:53
-
直接修改受害者DNS:
- 控制受害者网络出口路由器或其电脑权限
- 修改电脑或路由器上的DNS为攻击者的DNS服务器
HTTP/HTTPS流量劫持详解
工具准备 - mitmproxy
mitmproxy是一个交互式的中间代理HTTP和HTTPS的控制台界面。
特点
- 中间人代理,拦截和修改流量
- 保存完整的HTTP会话
- 重放HTTP对话
- 反向代理模式
- 透明代理模式
- 使用Python脚本化更改HTTP流量
- SSL/TLS证书即时生成
工具使用
mitmproxy: 命令行界面mitmdump: 命令行模式,类似tcpdumpmitmweb: Web界面
启动命令: mitmweb (默认监听8080端口)
流量重定向方法
-
ARP欺骗后的流量重定向:
# 将所有访问80和443流量转发至8080端口 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080 # 只转发指定IP的流量 iptables -t nat -A PREROUTING -s 192.168.243.128 -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -s 192.168.243.128 -p tcp --dport 443 -j REDIRECT --to-ports 8080 -
DNS劫持后的流量重定向:
- 对要劫持的域名进行DNS重写
-
非标准端口的流量重定向:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8443 -j REDIRECT --to-port 8080
信任根证书后的流量劫持
证书安装方法
-
自动安装:
- 启动mitmproxy并配置目标设备代理设置
- 在设备浏览器访问mitm.it
- 选择对应平台的证书安装
-
手动安装:
- mitmproxy CA证书位于
~/.mitmproxy - 包含以下文件:
mitmproxy-ca-cert.pem: PEM格式证书mitmproxy-ca-cert.p12: PKCS12格式证书(用于Windows)mitmproxy-ca-cert.cer: 与.pem相同(某些Android设备需要)
- mitmproxy CA证书位于
具体安装步骤
-
手动导入根证书:
- 双击证书文件导入本地计算机
- 选择"受信任的根证书颁发机构"
-
命令行导入根证书(需要管理员权限):
CertUtil -enterprise -f -addstore Root .\mitmproxy-ca-cert.cer
防护措施
-
不忽略HTTPS证书警告:
- 当出现证书错误时不要强行继续访问
-
加强根证书管控:
- 不安装可疑的根证书
- 监控证书存储位置:
- 当前用户证书:
HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates - 本地计算机证书:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
- 当前用户证书:
-
使用HIPS工具:
- 如火绒等工具监控相关注册表变更
-
网络层防护:
- 使用静态ARP表
- 部署ARP防护软件
- 使用DNSSEC保护DNS查询
-
安全意识:
- 不连接可疑WiFi网络
- 定期检查网络设置
- 使用VPN加密所有流量