甜橙安全头条第23期|技术干货之透析中间人攻击
作者:甜橙安全团队

中间人攻击是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。
中间人攻击之ARP欺骗
ARP欺骗,又称ARP毒化或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让局域网内上上特定计算机或所有计算机无法正常连线。
在内网中,部分流量是通过网关进行传输的,在发送数据前必须要知道目标IP,然后将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并确认mac地址。这个时候截获网关数据来冒充对方,使网关缓存一系列错误的内网MAC地址,那么所有的流量就都会被截取,这种叫做网关欺骗型。还有一种是伪造成网关,让被攻击的PC把所有流量都发送到假网关,而不是发送到网关,这种的叫做主机型欺骗。如下图:

示例
攻击者地址:192.168.240.128
被攻击者地址:192.168.240.129
网关地址:192.168.240.2
dsniff工具包中aprspoof这个插件(kail没有该插件,需要手动下载,可以通过命令“apt-get install dsniff” 来下载)。
aprspoof -h可以看到该插件的帮助信息。接下来演示如何实现arp欺骗,输入命令“arpspoof -i 网卡 -t 网关ip 被攻击者ip”或者“arpspoof -i 网卡 -t 被攻击者ip 网关ip”都可以是实现arp欺骗,但这两个命令在实现方式上是不相同的。
第一个命令是主机欺骗型,就是攻击者告诉被攻击者自己是网关,被攻击者arp缓存中网关IP对应的mac就会变成攻击者的mac。
首先看下被攻击者当前arp缓存的数据,可以看见网关的mac地址和攻击者的mac地址。

可以ping成功百度

然后kail这边开启攻击

网关的地址和攻击者的mac地址一样了

而且百度ping也不通了,这是因为所有本该发送给网关的数据包,都发送给攻击机了。


第二种网关欺骗型,就是让网关认为攻击机是被攻击的主机。网关就是把所有本该给被攻击者的流量发送到攻击机这里来。
这里被攻击者的mac缓存是不会变的,但是网关对应的mac会变。
Kail那边开启攻击。

网关对应的mac没变

可以看到这里ping的时候跟上面不太一样,ping的时候有一个是ping成功的。这也说明并不是能100%截包成功的,因为你发送arp请求的同时,对方也在发。

被攻击者所有发送的数据数据包都可以通过Wireshark来获取到。
下面就是被攻击者发的一个dns包,被攻击机截取到了,可以看源地址是192.168.240.129,目的地址是192.168.240.2

ARP欺骗具体能造成那些危害,首先上面写到了,能对其进行断网攻击,其实还可以做到IP转发,监视流量从而达到HTTP嗅探,邮件信息嗅探,密码嗅探等。
开启IP转发功能,使流量能正常传递
echo “1”> /proc/sys/net/ipv4/ip_forward

被攻击机那边可以正常访问了,但是被攻击机的所有流量都会经过攻击机这边。比如被攻击者这边登录phpmyadmin,攻击那边就可以抓到流量分享得到其密码。

最后可以看到账号为root,密码也是root

ftp的账号密码也可以抓到,这边被攻击机登录了ip为192.168.240.133的ftp

攻击机这边抓包也可以看到

账号:Administrator
密码: 123
这些也可以通过一些脚本自动化抓取,比如dsniff密码嗅探,urlsnarf 访问路径嗅探,mailsnarf邮件嗅探等,下图是一个访问路径嗅探的例子

关于dsniff套件中的其它小工具这里就不一一说了,使用都非常简单,大家可以自己在实战中慢慢体会。
中间人攻击之DNS欺骗
DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
DNS欺骗其实是arp欺骗成功的前提下实现的。首先通过向被攻击者发送一个arp答应包,然后抓到被攻击者的dns请求包,每个DNS请求都包含一个独特的识别码,其目的在于辨识查询和响应,并将对应的查询和响应配对在一起。这样只需要做一个包含该识别码的假数据包,目标计算机就会根据识别码而接受发送的查询结果。下图是dns数据包的报文结构,这个标识是唯一的,而且每次都不一样的,所有要伪造dns包必须知道标识是什么。

示例
攻击者地址:192.168.240.128
被攻击者地址:192.168.240.129
钓鱼服务器地址:192.168.240.1
首先启动kail的apache服器,可以看到已经启动成功了

这次用到的工具是Ettercap,可以先配置ettercap DNS文件。
输入vi /etc/ettercap/etter.dns
*代表任意字符,意思是所有域名都解析为192.168.240.128(攻击者ip)

然后输入 ettercap -i eth0 -T -P dns_spoof -M arp /被攻击者ip///
用到的命令选项
-i, –iface < IFACE > (手动选择网卡)
在控制台模式下(-T),对整个局域网执行ARP毒化攻击(-M arp)
-P, –plugin < PLUGIN >(加载插件)
开启攻击,执行成功

然后被攻击机这边ping一下www.hao123.com,然后访问一下,可以看到访问的是攻击者的ip


Kail这边开启wireshark抓包,抓到了被攻击者发给dns服务器的dns数据包,

这个是构造好的包,标识跟上面一样,而且ip也变成了攻击者的ip。

接下来演示一下如何钓鱼,获取对方的账号密码。
这是一个官方正常的充值页面

先修改etter.dns文件,然后保存。
pay.qq.com改成钓鱼网页的ip(192.168.240.1)

Kail开启dns欺骗

之前王者荣耀的充值地址是https://pay.qq.com/ipay/mobile-game/index.shtml?game=wzry
现在被攻击机访问到的是钓鱼网页,下图是钓鱼页面

用户输入账号密码后,后台就可以记录下了。
用户输入账号密码,点击登录

登录后台看一下,账号已经被记录下来了

上面讲到arp欺骗也可以抓到数据包,从而获取账号密码。但是现在很多企业都将账号密码等重要数据加密传输或者是https传输的,抓到数据包也很难分析出来。而dns欺骗是诱使用户输入账号密码,直接把账号密码保存到钓服器者的后台中,是比arp欺骗更加危险的攻击手段。
如何防御
首先是ARP静态绑定,但是不可能所有mac地址都绑定!然后是安装ARP防火墙,这样也可以有效的防止中间人攻击。还有就是交换机上启用DAI技术,这里简单的说下DAI功能原理:在用户PC动态获取IP地址的过程中,通过接入层交换机的DHCP Snooping功能将用户DHCP获取到的,正确的IP与MAC信息记录到交换机的DHCP Snooping软件表;然后使用DAI功能(纯CPU方式)校验进入交换机的所有ARP报文,将ARP报文里面的Sender IP及Sender MAC字段与DHCP Snooping表里面的IP+MAC 记录信息进行比较,如果一致则放通,否则丢弃。这样如果合法用户获取IP地址后试图进行ARP欺骗,或者是非法用户私自配置静态的IP地址,他们的ARP校验都将失败,这样的用户将无法使用网络。目前在企业级的交换机都有支持!可以将ARP攻击欺骗拍死在萌芽之中!
———— / END / ————
那些年甜橙安全给你分享过的干货
- 甜橙安全头条 -
- 甜橙安全小课堂 -
- 热点追踪-
热点追踪 | 使用“民生”相关App请认准“官方版”,防范“山寨/高仿App”套取个人信息!

-更多精彩,请关注下方公众号-

关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 1 长江的美丽变奏 7995611
- 2 中央一号文件:推进农村高额彩礼治理 7902740
- 3 DeepSeek预测《哪吒2》最终票房 7816762
- 4 小包裹折射中国经济澎湃动能 7793671
- 5 不允许城镇居民到农村买农房、宅基地 7615590
- 6 王曼昱4比0胜孙颖莎 首夺亚洲杯冠军 7580038
- 7 马库斯被北京的空气质量震惊了 7473796
- 8 终于有部剧还原了我的高清童年 7360285
- 9 泽连斯基:愿为和平放弃总统职位 7290532
- 10 贵阳IMAXGT影厅火爆出圈 7109426