Python ARP 攻击检测与地址记录
使用 Python 检测 ARP 攻击并记录攻击源地址
def detect_attack():
with open('clients.txt', 'r') as f:
clients = f.readlines()
for client in clients:
ip = client.split()[0]
mac = client.split()[1]
sniff_filter = 'arp and src host ' + ip
sniff_timeout = 10
sniff_count = 0
sniff_packets = sniff(filter=sniff_filter, timeout=sniff_timeout)
for packet in sniff_packets:
sniff_count += 1
# 判断是否为伪造源攻击
if packet[ARP].op == 1 and packet[ARP].psrc != ip:
messagebox.showwarning('警告', '检测到伪造源攻击!源IP地址为' + packet[ARP].psrc + ',源MAC地址为' + packet[ARP].hwsrc + '!')
with open('detection_log.txt', 'a') as f:
f.write('警告'+ '检测到伪造源攻击!源IP地址为' + packet[ARP].psrc + ',源MAC地址为' + packet[ARP].hwsrc + '!\n')
if sniff_count > 100:
messagebox.showwarning('警告', '检测到攻击源IP地址为' + ip + ',MAC地址为' + mac + '!')
with open('detection_log.txt', 'a') as f:
f.write('警告'+ '检测到攻击源IP地址为' + ip + ',MAC地址为' + mac + '!\n')
else:
messagebox.showinfo('提示', '未检测到攻击源!')
with open('detection_log.txt', 'a') as f:
f.write('提示'+'未检测到攻击源!\n')
return
如何记录伪造源攻击的地址
要记录伪造源攻击的地址,可以在 sniff_packets 循环中添加判断条件,判断该 ARP 包是否是伪造源攻击。如果是,则记录该 ARP 包的源 IP 地址和源 MAC 地址。
代码中已添加判断条件:if packet[ARP].op == 1 and packet[ARP].psrc != ip,如果 ARP 包的类型为请求 (op 为 1) 且源 IP 地址 (psrc) 与目标 IP 地址 (ip) 不一致,则判断为伪造源攻击,并记录源 IP 地址 (packet[ARP].psrc) 和源 MAC 地址 (packet[ARP].hwsrc)。
为什么 ARP 欺骗攻击记录不到地址
ARP 欺骗攻击的源 MAC 地址和目标 MAC 地址都是伪造的,无法准确地确定攻击者的真实 MAC 地址。另外,ARP 欺骗攻击通常是在局域网内进行的,如果使用网络嗅探工具在外网进行监测,可能无法捕获到 ARP 欺骗攻击的数据包。
建议使用以下方法来提高 ARP 欺骗攻击检测的准确率:
- 使用专业的网络安全设备进行监测,例如防火墙、入侵检测系统等。
- 使用 ARP 守护程序,例如 ARPwatch,来监测 ARP 表的异常变化。
- 使用网络流量分析工具,分析网络流量中的 ARP 协议数据包,以识别可能的 ARP 欺骗攻击。
原文地址: https://www.cveoy.top/t/topic/joji 著作权归作者所有。请勿转载和采集!