搭载Arp攻击实验分析

研究生课程-信安实验报告整理

前言

ARP是什么?

ARP(Address Resolution Protocol)是地址解析协议。作用是将32位IP地址解析为48位MAC(硬件地址)的协议。

ARP的工作流程

第一步

假设主机A想和主机B通信,主机A根据路由表的内容,找到主机B的IP,然后在自己的ARP高速缓冲中,查看有无主机B的MAC地址。如果没有,主机A会发送一个ARP请求广播包,本地网络上的每台主机都接收到主机A的ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

第二步

主机B在ARP请求分组中看到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。同时,主机B还把主机A的IP地址和MAC地址的映射关系也保存到自己的ARP高速缓存中。

第三步

主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。这样,主机A、B都有了彼此的IP和硬件地址,双方可以通信了。

ARP的缺陷分析

无状态

ARP高速缓存根据所接收到的ARP协议包随时进行动态更新,它是无状态的协议,不会检查自己是否发过请求包,只要收到目标MAC发送的ARP响应数据包或ARP广播包,都会接受并缓存。

不认证

ARP协议没有认证机制,只要接收到的协议包是有效的,主机就无条件地根据协议包的内容刷新本机ARP缓存,并不检查该协议包的合法性。

实验探索

实验环境

WinXP:装有WinArpAttack与WireSharp

win7: 靶机

实验工具在文末给出

实验流程

打开WinArpAttacker工具,点击[扫描],就能获取整个局域网的信息

搭载Arp攻击实验分析_第1张图片
界面

其中:
红色方框就是靶机(Win7)的信息
蓝色方框是默认的网关
IP为192.168.248.132就是宿主机XP的信息
选中靶机,进行 [不断IP] 的攻击,打开WireSharp,由下面的图,可以观察到:

搭载Arp攻击实验分析_第2张图片

网络中涌现了大量Arp包,我们随意点一个进去看(下图)。

搭载Arp攻击实验分析_第3张图片

可以看到源地址的MAC地址(Sender MAC address )是伪造的(01:01:01:01:01:01),目的地址(Target MAC address)就是靶机的地址。

这样同一个IP地址就有两个不一样的MAC地址,我们知道IP地址是唯一的,并且对应的MAC地址也应该是唯一的。当网络中出现一个IP地址对应多个MAC地址时,就会产生IP冲突,严重还会导致宕机!

由分析的结果,我们可以了解到 [不断IP冲突] 这种攻击模式的原理就是:

保持靶机的IP地址不变,修改MAC地址,并在网络中发送大量这样的包。

另外,我们可以看到靶机的ARP相关请求数目不断增多。

搭载Arp攻击实验分析_第4张图片

我们再选择[禁止上网]的攻击模式,抓包分析得到如下结果:

搭载Arp攻击实验分析_第5张图片

可以看到,有两个可疑的包。

打开第一个包,发现伪装成IP地址与靶机相同的一个包,但是修改了mac地址,然后发送给网关(192.168.248.2),因为网关不会辨别是否是真的靶机传送来的,所以网关收到arp包以后,将IP地址与mac地址存储在自己的高速Arp缓存中。此时靶机在网关的ARP对应关系就被修改成错误的了。

同时在第二个包中,我们可以发现:这个Arp包伪装成网关的IP地址,将自己的mac地址改变,然后发送给靶机,靶机就会将其存储在缓存中。这样靶机的高速Arp缓冲中存储的网关对应关系就是错误的。

由此,我们可以知道该次攻击进行了一次双向欺骗,网关中存储的是错误的靶机信息,靶机中存储的是错误的网关信息。

搭载Arp攻击实验分析_第6张图片

为了更好地看到结果,在攻击之前,我们在靶机中输入' arp -a ' ,可以看到正确的映射关系。

搭载Arp攻击实验分析_第7张图片

攻击之后,我们在靶机下再次执行' arp -a ',此时,就会发现网关的mac地址变了。由此可见,[禁止上网]攻击的原理就是:

发包欺骗网关,告诉网关错误的靶机MAC地址,这样会导致靶机无法接受到网关发送的信息,进而不能上网。

搭载Arp攻击实验分析_第8张图片

值得一提的是,当我们在靶机上再次输入' arp -a ',此时会发现网关的mac地址又自动回复成原来的,这是因为每隔一段时间会发送广播包,重新建立映射关系,这样又能回到正确的映射关系了。

搭载Arp攻击实验分析_第9张图片

编程部分

接下来,我们基于Winpcap编写程序,对指定的目标IP地址进行ARP欺骗攻击。

在我们使用Wincap来手动构造Arp包时,可以从网上找来Arp的包信息,也可以去WireSharp中抓取一个Arp包,来获取Arp包的信息,这样对我们在使用代码构造Arp包时有很大的帮助。

搭载Arp攻击实验分析_第10张图片
搭载Arp攻击实验分析_第11张图片

打开WireSharp,可以看到发送的很多包,任意选取一个Arp包,然后双击打开。

搭载Arp攻击实验分析_第12张图片

可以看到目的地址是ff:ff:ff:ff:ff:ff,源地址是 00:50:56:C0:0C:08,当我们点击某个条目是,下面自动对应到数字,非常直观。

搭载Arp攻击实验分析_第13张图片

在构造Arp包之前,首先获取设备名称,在ifirst下直接运行即可,红色方框里面就是项目名,记住要全部复制,同时\要改为\,这是为了防止转义字符做。

搭载Arp攻击实验分析_第14张图片

在使用vc++较低版本的时候,在项目[右键],点击 Set as Start Up Project然后可以看是运行了。

当我们清楚arp包的结构之后,就能够实现Arp攻击,我们先进行 [IP冲突] 攻击,假设我们要攻击的目标IP 为192.168.227.135,我们就能伪造一个假的mac地址来,我们设为1.1.1.1.1.1,然后设立目的mac: 00:50:56:C0:0C:08, 依次,再设立硬件协议等等,设置完毕以后开始设置ip地址。根据上述IP的冲突原理,源ip地址和目的ip地址都设置成靶机的192.168.227.135,源mac地址设置成为1.1.1.1.1.1,目的mac地址设置为00:50:56:C0:0C:08。

单单一个包肯定是不够的,在这里我们设置flood的数,表示发送包的数量。可以看到如下结果,我们设定的flood的数目为10,那么发送了10次冲突。

可以看到如下结果,我们设定的flood的数目为10,那么发送了10次冲突

搭载Arp攻击实验分析_第15张图片

再点进包里面,可以包的信息(目的mac地址,目的ip地址等)与我们设置的是一摸一样的。由此就造成了IP冲突,我们还可以模拟禁止上网,照葫芦画瓢即可。

搭载Arp攻击实验分析_第16张图片

修改代码,主要是修改sendpack.c
代码地址

工具

关注[微信公众号] 文无第一,回复 arp 就能获取云盘连接。
工具仅作学习交流之用,请勿滥用。

搭载Arp攻击实验分析_第17张图片

参考文章:

捣鼓软件之:网络抓包利器-wireshark

Wireshark-ARP数据包

网络攻击神器:WinArpAttacker使用说明

你可能感兴趣的:(搭载Arp攻击实验分析)