seedlab实验ARP缓存中毒攻击
一、实验目标
使用ARP中毒进行中间人攻击(代码位于底部)
二、实验原理
地址解析协议(ARP)是一种通信协议,用于发现给定IP地址的链路层地址,例如MAC地址。ARP协议是一个非常简单的协议,它没有实现任何安全措施。ARP缓存中毒攻击是针对ARP协议的常见攻击。在这种攻击下,攻击者可以欺骗受害者以接受伪造的IP到MAC映射。这可能导致受害者的数据包使用伪造的MAC地址重定向到计算机。
此实验就是在ubuntu下模拟该机制
。
三、实验步骤及运行结果
Task1.ARP缓存中毒
A、使用ARP请求报文,攻击者向A发送ARP请求报文,观察attacker的MAC地址是否和B的IP匹配。
发现除了attacker向A发之外,B也要向A发,这样ARP表中才有B的IP地址。
发现并不匹配。
B、使用ARP请求报文,攻击者向A发送ARP响应报文,观察attacker的MAC地址是否和B的IP匹配。
依旧不匹配。
C、发送无故ARP报文。
该报文作用就是告诉局域网内其他主机该更新ARP表了。
Task2.利用ARP缓存中毒对Telnet的MITM攻击
Step1:
启动ARP缓存中毒攻击。主机缓存先中毒攻击A和B,使得在A的ARP缓存中,B的IP地址映射到M的MAC地址,而在B的ARP缓存,A的IP地址也映射到M的MAC地址。在这一步之后,在A和B之间发送数据包。我们将使用任务1的ARP缓存中毒攻击来实现这个目标。
首先发送源IP和目的IP都为A,MAC地址为attacker的地址的无故ARP报文。
发现在B中,A的IP地址对应为attacker的MAC地址。
之后,发送源IP和目的IP都为B,MAC地址为attacker的地址的无故ARP报文。
发现在A中,B的IP地址对应为attacker的MAC地址。
Step2:
攻击成功后,请尝试在主机A和主机B之间互相ping,并且报告你的观察结果。请在报告中显示Wireshark的结果。
此时A ping到B 的话,一开始会有几个无响应的ICMP报文发出,之后发出ARP包更新为可用的MAC地址。
A:
B:
step3:
现在我们打开主机M上的IP转发,因此它将转发A和B之间的数据包。请运行以下命令并重复步骤2。请描述一下你的观察。
一开始会由attacker转发报文,表示能够转发,但是时间一长,依旧会发送ARP包,更新地址。所以需要在实验中一直发送无故ARP报文。
A:
B:
step4:
建立telnet连接,对A到B的tcp包的数据进行修改,对B到A的包不做修改。因为修改ARP之后,一段时间内会自动变回来,所以在实验过程中要一直发ARP修改报文。
之后对于伪造程序而言,需要修改filter以过滤出只有这A和B之间转发的报文,可以通过过滤端口来实现。
最后实验效果如下:
在键盘上敲下4个a
之后关闭M的转发机制:
再次重复上述步骤,结果如下:
只要ARP无故报文一直在发,那么M就不会转发报文,那么就会一直没有回显。同样也不会有B到A的报文,因为B都不知道。
Task3:利用ARP缓存中毒对Netcat的MITM攻击
利用上图的方式建立Netcat连接
一旦建立了连接,就可以在A上键入消息。每行消息都将被放入发送到B的TCP数据包中,后者只显示消息。任务是用a序列替换消息中出现的每个名字。该序列的长度应该与名字的长度相同,否则将弄乱TCP序列号,从而弄乱整个TCP连接。
之后对于伪造程序而言,需要修改filter以过滤出只有这A和B之间转发的报文,可以通过过滤MAC地址来实现。
成功之后,在客户端输入名字长度的字符,在服务端有名字的回显。
攻击成功
四、代码
Task1、
1 | 1、 |
Task2:
1 | from scapy.all import * |
Task3:
1 | from scapy.all import * |
- 本文作者: 李小混
- 本文链接: https://lixiaohun.github.io/post/4.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!