不想学习,所以自己随便写写,不一定对,看个乐呵
Task 1: ARP Cache Poisoning
前面的大意是构造arp数据包的方法,此处略过
Task 1.A (using ARP request)
在M上的volume文件夹下,设计发包程序,让A的arp表中B的ip解析到M的mac
程序完整代码如图,注意主要是mac和ip对应关系的填充
注意源地址和目的地址的填充:
发起中间人攻击
可以看到现在10.9.0.6的mac已经成为py脚本中的mac,中间人攻击成功
Task 1.B (using ARP reply)
上个实验发的是arp请求报文,这个是arp响应报文,本质没什么区别
首先构造arp reply数据包发送程序
主要的区别其实还是在几个源和目的地址上面 ,而且这次已知了A的mac,故不是广播(FF:FF:FF:FF:FF:FF)
– Scenario 1: B’s IP is already in A’s cache.
首先保证B的mac在arp缓存中
然后发送reply报文
Arp表中的Mac再次发生了改变
-Scenario 2: B’s IP is not in A’s cache
删除arp表项命令:
arp -d $ip
删除表项之后arp缓存应该是空的
在此情况下再次发送reply报文无法成功,攻击失败
Task 1C (using ARP gratuitous message)
其实就需要修改一下刚才的request报文,要注意按照以下规则修改程序的ip数据报头的src,dst;MAC头的src,dst地址:
– The source and destination IP addresses are the same, and they are the IP address of the host issuing the gratuitous ARP.
– The destination MAC addresses in both ARP header and Ethernet header are the broadcast MAC address (FF:FF:FF:FF:FF:FF).
– No reply is expected.
省流:改IP为B的IP,改两个dst为广播,MAC还是M的MAC
在无缓存的情况下发包:
好像无效
有缓存之后发包
攻击生效,但是说实话跟我想的不太一样,可能这里我实现的有问题。但是懒得细琢磨了 ,看的时候图一乐得了
Task 2: MITM Attack on Telnet using ARP Cache Poisoning
Step 1 (Launch the ARP cache poisoning attack).
首先让B的arp表也映射错误,mac映射为M的mac
就改一下task1的程序ip就好,结果如下:
要求我们每5s发一个假的报文,否则攻击表项可能被真的替代
利用之前的程序,加一个while循环,并且每隔5s给两边都发一次假的arp报文
这里只贴修改部分,其余不动(我没动)
Step 2 (Testing).
关闭IP forwarding时:
命令:
sysctl net.ipv4.ip_forward=0
执行py脚本,A ping B
B ping A
可以看出丢包率奇高
Step 3 (Turn on IP forwarding).
sysctl net.ipv4.ip_forward=1
A ping B 正常
B ping A
可以看到不丢包了,并且可以收到105的重定向报文
Step 4 (Launch the MITM attack)
首先让A远程登陆到B,注意此时arp表中B的mac应该是M的mac
远程登陆成功
编写mimt_telnet.py程序
完整代码见书,注意第二页开篇还有一行代码
书上的代码有提示,要自己加一种数据填充,自己试了一下如果不加填充会报错
这里仅展示修改的数据填充:
if pkt[TCP].payload:
data = pkt[TCP].payload.load # The original payload data
# newdata = data # No change is made in this sample code
data_list=list(data)
for i in range(0,len(data_list)):
if chr(data_list[i]).isalpha():
data_list[i]=ord('@')
newdata=bytes(data_list)
send(newpkt/newdata)
代码逻辑: 把接收到的输入信息中的字母替换为"@"
注意题目还要求了改下面的过滤器
测试:M端开启arp攻击,开启路由转发(sysctl net.ipv4.ip_forward=1) --> A远程登陆到B --> 开启监听(即执行telnet攻击脚本) --> sysctl net.ipv4.ip_forward=0 --> 看结果
测试结果如下图所示:
可以看到在远程登陆时输入的字母全变成了@字符,攻击生效
Task 3: MITM Attack on Netcat using ARP Cache Poisoning
此实验与前序实验相似,甚至不用改代码,只是用nc命令测试
当开启路由(sysctl net.ipv4.ip_forward = 1),并停止运行telnet攻击脚本时,nc的内容都能正常被接收
但是一旦关闭路由(置0),再次执行telnet,即可看到仍旧是所有字母都被替换成了@,攻击成功
Task 4 Summary
整个task2和3中我的arp攻击脚本一直在运行,也懒得琢磨有没有必要
开了好多窗口找起来好麻烦
没了。
以上