局域网渗透(I)·Arp欺骗与本地DNS劫持
Introducing
This article discusses how to perform ARP spoofing and local DNS hijacking in an IPv4 LAN environment. ARP spoofing is a common Man-in-the-Middle (MITM) attack that can be combined with DNS hijacking to redirect traffic within a network, potentially leading to further malicious actions. The article provides an overview of the techniques, the setup needed for the attack, and suggestions on how to defend against it.
在使用了IPv4的局域网内,我们可以使用ARP欺骗的手段来实现对整个互联网内的攻击,作为一种常见的中间人攻击手段,我们常常将它与其他技术绑定在一起以实现我们的目的。如和DNS劫持相互配合可以实现将局域网内对特定网站的解析请求全部解析为其他网站的IP地址以进行更进一步的攻击。这篇文章将会从原理以及实践来展示这种攻击手段的实行方式,并对该种攻击方式的防范提出一些建议。
Tips:在您执行攻击、测试前请先取得同事或朋友的同意,任何未经允许的渗透行为都将触犯法律!
I. 技术清单
在开始学习之前,我们会用到以下知识:
II. 环境搭建
为了这次渗透,我们需要:
- 一台攻击机(你也可以使用虚拟机连接到本地网络进行攻击)
- 至少一台靶机用来测试效果
- 和靶机处在同一个局域网中
我在这次的渗透测试中准备了基于Kali Liux的攻击机一台,靶机59台(因为在集训qwq)以及所在机房的提前配置好的本地局域网。
III. 攻击流程
III.(1) ARP欺骗
以下这张图片展示了中间人攻击的思路:
换句话说,中间人攻击就是攻击者在受害者与路由器之间进行欺骗,使得受害者的所有数据包被转发到攻击者的电脑中,而攻击者在收到数据包后就可以将其篡改后交由网关进一步处理,或是直接丢弃数据包,从而达到切断网络连接的效果。
让我们举一个简单的例子。例如在以下的网络环境中,各个设备对应的IP地址以及MAC地址如下:
Devices | IPv4 Addr | MAC |
---|---|---|
User | 192.168.1.120 | 00:11:22:33:44:55 |
Attacker | 192.168.1.125 | 55:44:33:11:45:14 |
Gateway | 192.168.1.255 | AA:AA:AA:AA:AA:AA |
在攻击开始之前,User
的Arp缓存表表中应该是类似于这样的形式:
IPv4 Addr | MAC Addr | Type |
---|---|---|
192.168.1.255 | AA:AA:AA:AA:AA:AA | Dynamic |
192.168.1.125 | 55:44:33:11:45:14 | Dynamic |
. . . | . . . | . . . |
可以看到,User
当前的Arp缓存表中正确地记录了网关的物理地址。User
的数据包将会正常地通过真正的网关进行转发与处理。此时,局域网中的一位Attacker
在他的终端运行了如下指令:
arpspoof -i eth0 -t 192.168.1.120 192.168.1.255
此时便完成了Arp欺骗。这条指令向局域网中持续发送将192.168.1.255
解析为55:44:33:11:45:14
的Arp报文,就好比Attacker
在整个局域网内大喊道:
192.168.1.255
的MAC地址是55:44:33:11:45:14
由于Arp缓存表采取了动态更新的机制,所有类型设置为Dynamic
的记录在收到Arp报文后都会对其进行更新,因此,Attacker
成功地欺骗了User
,将User
的网关MAC地址篡改为了自己的MAC地址。此时再次查看User
的Arp缓存表:
Devices | IPv4 Addr | MAC |
---|---|---|
User | 192.168.1.120 | 00:11:22:33:44:55 |
Attacker | 192.168.1.125 | 55:44:33:11:45:14 |
Gateway | 192.168.1.255 | 55:44:33:11:45:14 |
便会发现成功的实行了Arp欺骗
。此时,User
发送的任何数据包都将会被截获,并由Attacker
进行下一步的处理。