0


(SEED-Lab) ARP Cache Poisoning Attack Lab

(SEED-Lab) ARP Cache Poisoning Attack Lab

欢迎大家访问我的GitHub博客

https://lunan0320.cn

文章目录

一、实验目标

掌握ARP协议
利用ARP缓存污染攻击
应用中间人攻击
编写嗅探程序

二、实验原理

ARP是用于主机去根据目标IP寻找MAC地址的方法,ARP常见的利用攻击的方法有缓存污染攻击和中间人攻击。
缓存污染攻击中,可以接收伪造的IP对应的MAC地址,从而将自己的ARP Cache污染成了错误的映射关系,继而在后续的数据包的转发中将数据包发送到错误的主机。
中间人攻击是先对靶机的ARP缓存污染,继而接收到靶机发送出去的数据包,中间人对其进行篡改后,然后重新发送。

三、实验过程

3.1 Task 1: ARP Cache Poisoning

首先使用ARP请求发送数据包,可以看到,回显sent 1 packets 说明构造的ARP包可以成功send。
在这里插入图片描述
在这里插入图片描述
Host A 、HostB、以及中间人M的IP地址以及MAC地址如下表
Host IP HWaddr
A 10.0.2.5 08:00:27:e1:e7:55
B 10.0.2.6 08:00:27:90:ba:d6
M 10.0.2.8 08:00:27:78:9a:1e

3.1.1 Task1A(using ARP request)

在发送之前,查看攻击机M的ARP信息,攻击机M的IP地址为10.0.2.8,此时有10.0.2.3以及10.0.2.1host对应发送的硬件地址。
在这里插入图片描述
此时查看hostA的相关信息,可以看到IP地址为10.0.2.5
在这里插入图片描述
同理,可以查看B的arp以及IP地址为10.0.2.6
在这里插入图片描述
在中间人M中构造arp request数据包,使得src_ip是中间人M的IP地址,dst_ip是honstA的ip地址
在这里插入图片描述
此时在中间人M中运行request代码,可以看到能够成功发送伪造的ARP数据包。
在这里插入图片描述
在host A中通过wireshark抓包,查看伪造的数据包的去向。可以看到,内容是who has 10.0.2.5?Tell 10.0.2.6。其中,10.0.2.5是host A的IP地址,10.0.2.6是host B的IP地址。说明伪造了一条从host B发出的,想要得到host A 的 IP地址的ARP数据包。
在这里插入图片描述
此时,查看host A中的ARP Cache中的信息如下。
可以看到,成功完成了ARP request方向的ARP_Attack。因为host A的ARP Cache中已经添加了伪造的IP地址10.0.2.6(host A)以及其对应的硬件地址08:00:27:78:9a:1e(中间人M)。
在这里插入图片描述

3.1.2 Task 1B (using ARP reply)

在主机M上,构建一个ARP应答包并发送到主机A。检查M的MAC地址是否已映射到A的ARP缓存中的B的IP地址
在进行Task1B之前,由于在Task1A中已经使得host A中有了host B(10.0.2.6)的缓存。因此需要先在host A的ARP Cache中删除host B的相关信息。
在这里插入图片描述
首先在中间人M中构造ARP_Reply数据包,其中构造的src_ip是host B的IP地址,dst_ip是host A的IP地址,但是需要伪造的是src的MAC地址。
需要将src的硬件地址设置为中间人M的硬件地址。dst_mac是正常的host A的MAC地址。
在这里插入图片描述
在中间人M中运行此代码,伪造ARP_reply的数据包。可以看到,成功发送到了host A.
在这里插入图片描述
在host A中使用wireshark 抓包查看数据信息,可以看到这个reply数据包告知host A,10.0.2.6的MAC地址是“08:00:27:78:9a:1e”
在这里插入图片描述
此时,再次查看host A的ARP Cache信息,可以看到,新增了10.0.2.6的硬件地址,即是伪造的M的MAC地址。伪造成功!
在这里插入图片描述

3.1.3 Task 1C (using ARP gratuitous message)

首先在开始任务之前,同样需要先在host A的ARP Cache中清除之前已经有的10.0.2.6的缓存MAC地址
在这里插入图片描述
在host M中写gratutious的代码。其中根据题目要求,需要设置的src地址和dst地址需要是相同的。
在这里插入图片描述
还需要注意的是其中的dst MAC地址是需要设置为ff:ff:ff:ff:ff:ff。这样的MAC地址表示发送的是广播包,即broadcast。
在这里插入图片描述
因此,可以在host M中得到如下代码。
在这里插入图片描述
在中间人M中运行gratuitous.py代码,可以看到成功sent数据包。
在这里插入图片描述
在host A中打开wireshark抓包分析,可以看到收到了广播包,内容是关于10.0.2.6的gratuitous数据包。
在这里插入图片描述
此时,再在host A中查看arp情况,发现host A中成功缓存了10.0.2.6对应的中间人M的MAC地址。攻击成功!
在这里插入图片描述

3.2 Task 2: MITM Attack on Telnet using ARP Cache Poisoning

3.2.1 Step1

此处需要实施的是中间人攻击,这部分可以参考Task1的scapy使用方法,可以通过伪造ARP数据包来完成。
Poisoning host A的思路是,src的IP地址是host B的IP地址,dst的IP地址是host A的IP地址。src的MAC地址是中间人M的MAC地址,dst的MAC地址是广播broadcast的MAC地址,即’ff:ff:ff:ff:ff:ff’。这样做的目的是使得host A将自己的ARP Cache设置为host B的IP对应到了中间人M的MAC地址,这样就成功使A的ARP Cache中毒。
同理,对于host B的Poisoning的思路也一样。可以使用如下代码来实现。
首先是对一些已知信息的定义。
在这里插入图片描述
对Poisoning host A的定义如下。
在这里插入图片描述
同理,Poisoning host B的定义如下。
在这里插入图片描述

此时即可在中间人M中运行cache_poisoning.py的代码。
此处需要注意的是此处构造ARP数据包是需要较高的权限的,在seed普通用户下是无法运行成功的。

因此,转换到root用户,重新运行。可以看到,成功运行了代码。并发送了两个数据包。
在这里插入图片描述
在host A中查看ARP Cache,发现在sent packet之后,A中成功达到了ARP缓存污染的效果,使得host B的IP对应了中间人M的MAC地址。
在这里插入图片描述
此处可以到host B上查看,发现host B的ARP Cache也被成功污染了。其中host A的IP地址对应了
在这里插入图片描述

3.2.2 Step2

使用host B去ping host A的IP地址:可以看到100%的丢包率,说明host A的连通性是不具备的。
在这里插入图片描述
此时在host A中使用wireshark抓包工具去查看:可以看到,源地址是host B的IP,目的IP是host A的IP,发送的都是request请求包,但是都没有reply包的回显。显示的均为no response found!
在这里插入图片描述

使用host A去ping host B的IP地址,同理。
可以看到100%的丢包率,说明host A的连通性是不具备的。
在这里插入图片描述
在host B中使用wireshark抓包的数据包也均为not found!
在这里插入图片描述

3.2.3 Step3

在中间人M中打开IP forwarding 功能。
在这里插入图片描述
此时,与Step2相同,再次测试host A和host B的连通性。
host A去ping host B:
此时发现是可行的,没有数据包的丢失。
在这里插入图片描述

在host B中使用wireshark抓包查看情况:
可以看到,host A发送出去的ICMP包都得到的reply,其中黑色部分即是forward IP 的情况,对host的一个重定向过程。
在这里插入图片描述
同理,尝试host B去ping host A的IP地址。
可以看到,数据包也是没有丢失的,均得到了reply。
在这里插入图片描述
在host A中使用wireshark查看数据包情况,如下图:
在这里插入图片描述

3.2.4 Step 4

1、在host A中telnet连接Server B
在这里插入图片描述

成功连接,输入命令查看ip地址。如图,在host A中显示的是Server B的IP地址,说明连接成功。.
在这里插入图片描述
在Server中使用wireshark查看数据包
在这里插入图片描述
当在中间人M中关闭forwarding功能。
在这里插入图片描述

此时当在host A中输入命令的时候没有显示。即host A与Server B无法通信,无法在host A中键入信息。
在这里插入图片描述

2、首先在中间人M中设置IP forward使得 hostA可以连通hostB
在这里插入图片描述

接着在中间人M中运行污染ARP缓存的程序,每3秒就转发一次ARP更新的数据包,将host A 和host B中的缓存一直保持是对应的中间人M的MAC地址的情况。
在这里插入图片描述
在中间人M中抓包分析;可以看到构造的广播包成功污染了host主机的ARP对应关系
在这里插入图片描述
查看执行程序后host A和host B的IP的对应的MAC地址,发现均是对应了M的MAC地址。
在这里插入图片描述
在这里插入图片描述
在host A中telnet连接host B
抓包可以看到,显示了重定向的功能,比如说从A到B的数据包,先到了中间人M这里,M使用了IP_forward功能,再发给了B
在这里插入图片描述
可以看到,在hostA中可以成功连接hostB,并且成功执行了pwd的指令
在这里插入图片描述
此时,在中间人M中取消IP forward功能
在这里插入图片描述

在中间人M中运行sniff_spoof.py程序,并且再次在hostA中键入pwd指令,可以观察到,此时显示出来的是ZZZ
在这里插入图片描述
抓包分析这个过程,过滤tcp包,分析一个过程。由10.0.2.5(host A)发送到10.0.2.6(host B)。
在这里插入图片描述
抓包分析这个过程,可以看到,此时从A发送到B的报文,显示的目标MAC地址是M的MAC地址,数据包是先去了M,可以看到,我们发送的pwd中的p被组装成一个tcp数据包发送了过去,先到中间人M被中间人处理。
在这里插入图片描述
可以看到,host A发送到host B的数据被中间人M处理后转发了出来,转发给host B,虽然此时的目标IP是host A,但是他的目标MAC地址是中间人M的MAC地址,因此,这个数据包还是会被中间人M截获,但是由于我们设置了对于源地址是host B,目标地址是host A。但是此时的数据Data字段均被置为了Z,我们输入的p被处理为了Z,其他数据包也均是这种情况。说明攻击是成功的!
在这里插入图片描述

3.3 Task 3: MITM Attack on Netcat using ARP Cache Poisoning

本实验与Task2类似,只需对Z变换为遇到first_name“lunan”改为AAAAA即可。
首先是开启IP的forward功能,使得host A可以与host B连接。
在这里插入图片描述

此时打开ARP污染程序,使之每隔3秒发送一次数据包,这样做的目的是为了使得从A发送到B以及从B发送到A的数据包能够第一时间发送到中间人M,使得数据包先被M处理。
在这里插入图片描述
此时在host B中开启端口9090,并且host A中运行nc程序,目的IP是host B的地址,端口为9090。
此时发现host A发送什么,host B就收到什么,即使是first_name也没有什么改变。
在这里插入图片描述
此时,关闭中间人M的IP数据包的forward功能
在这里插入图片描述

此时再次在host A中输入内容,在host B中得到回显。
发现输入python内容时候,回显不变。
但是输入的内容如果包括first_name “lunan”的话,返回结果会将first_name替换为“AAAAA”。说明攻击成功!
在这里插入图片描述

四、参考文献

[1] ARP欺骗原理及实现 - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/374650070
[2] ARP 协议详解 ARP报文结构_u010069213的专栏-CSDN博客_arp请求报文采用什么方式传播
https://blog.csdn.net/u010069213/article/details/17999757
[3] ARP报文格式详解 (biancheng.net)
http://c.biancheng.net/view/6389.html
[4]中间人攻击——ARP欺骗的原理、实战及防御 - 简书 (jianshu.com)
https://www.jianshu.com/p/d6f84e2e88c6

标签: 网络 http 安全

本文转载自: https://blog.csdn.net/qq_51927659/article/details/122982901
版权归原作者 lunan0320 所有, 如有侵权,请联系我们删除。

“(SEED-Lab) ARP Cache Poisoning Attack Lab”的评论:

还没有评论