(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

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Poison frogs! targeted clean-label poisoning attacks on neural networks”这是一个关于对神经网络进行有针对性的干净标签中毒攻击的研究项目。在这种攻击中,研究人员通过修改训练数据集中的特定标签,以欺骗神经网络模型以误分类输入样本。 干净标签中毒攻击是一种隐蔽的攻击方式,因为攻击者不需要修改图像本身或添加任何可见的攻击标记。相反,他们通过对训练数据集进行精心设计的修改,使神经网络在应用中出现错误分类。这种攻击方法可能会导致严重后果,例如在自动驾驶汽车或安全系统中造成事故或功能失效。 这个项目的目的是研究这种攻击方法的可行性和效果,并提出对抗这种攻击的解决方案。研究人员首先对训练数据集进行修改,以使特定类别的图像被误分类为其他类别。然后,他们使用已经训练好的神经网络模型,通过修改训练数据集中的特定图像标签,使模型在测试阶段错误地将这些特定图像分类为不同的类别。 结果表明,即使在高性能的神经网络上进行干净标签中毒攻击也是可行的。这些攻击可以在不影响模型在其他正常输入上性能的情况下,误导模型对特定图像的分类。这使得攻击者能够操纵模型的行为,甚至可能导致系统的安全漏洞和错误决策。 为了对抗这种攻击,研究人员提出了一种改进的训练策略,称为“防御机制”。这种方法可以增强模型对干净标签中毒攻击的鲁棒性,并提供了一种有效的方法来检测和解决这种攻击。 总体而言,这个项目揭示了干净标签中毒攻击在神经网络中的潜在威胁,并提供了对抗这种攻击的解决方案。这有助于进一步加强神经网络模型在面临安全挑战时的鲁棒性,并推动相关领域的研究和技术发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值