基于Linux的ARP攻击检测软件的功能需要哪些 根据这几个规则用Python实现 首先捕获数据包过滤规则设置为ARP包其他则丢弃接着进行分析ARP包分出正常主机和疑似异常主机异常主机的IP地址标为红色。 -同一IP地址对应多个MAC地址; - 多个IP地址对应同一个MAC地址; - 大量的ARP请求或响应包; - ARP包中的源MAC地址和目标MAC地址不匹配;同时满足两种规
。
Python实现:
- 导入必要的模块
import os
import sys
import time
import logging
from scapy.all import *
- 设置日志记录
logging.basicConfig(filename='arp_attack.log', level=logging.INFO, format='%(asctime)s %(message)s')
- 定义捕获数据包的回调函数
def arp_packet_callback(packet):
if packet[ARP].op == 1: # ARP请求包
arp_request_dict[packet[ARP].psrc] = packet[ARP].hwsrc
if packet[ARP].psrc in arp_reply_dict: # 如果已经有ARP响应包,则判断MAC地址是否一致
if arp_reply_dict[packet[ARP].psrc] != packet[ARP].hwsrc:
logging.warning('[!] ARP Spoofing Detected: IP %s has multiple MAC addresses: %s and %s' % (
packet[ARP].psrc, arp_reply_dict[packet[ARP].psrc], packet[ARP].hwsrc))
elif packet[ARP].psrc in arp_request_dict: # 如果已经有ARP请求包,则判断数量是否过多
count = len([x for x in arp_request_dict.values() if x == packet[ARP].hwsrc])
if count > 5:
logging.warning('[!] ARP Spoofing Detected: IP %s has multiple MAC addresses: %s' % (
packet[ARP].psrc, packet[ARP].hwsrc))
else:
arp_request_dict[packet[ARP].psrc] = packet[ARP].hwsrc
elif packet[ARP].op == 2: # ARP响应包
arp_reply_dict[packet[ARP].psrc] = packet[ARP].hwsrc
if packet[ARP].hwsrc in arp_reply_dict.values(): # 如果已经有其他IP地址对应该MAC地址,则判断是否一致
for ip, mac in arp_reply_dict.items():
if mac == packet[ARP].hwsrc and ip != packet[ARP].psrc:
logging.warning('[!] ARP Spoofing Detected: MAC address %s corresponds to multiple IP addresses: %s and %s' % (
packet[ARP].hwsrc, packet[ARP].psrc, ip))
break
if len(arp_reply_dict) > 10: # 如果ARP响应包数量过多,则清空字典
arp_reply_dict.clear()
if len(arp_request_dict) > 10: # 如果ARP请求包数量过多,则清空字典
arp_request_dict.clear()
- 定义主函数
def main():
if os.geteuid() != 0: # 检查是否以root权限运行
print('[-] Please run as root')
sys.exit(1)
logging.info('ARP attack detection started')
sniff(filter='arp', prn=arp_packet_callback, store=0)
- 运行主函数
if __name__ == '__main__':
arp_request_dict = {}
arp_reply_dict = {}
main()
运行后,程序将开始捕获ARP包,并根据规则进行分析,如果发现ARP攻击,则输出警告信息并保存在日志中
原文地址: http://www.cveoy.top/t/topic/fyJm 著作权归作者所有。请勿转载和采集!