以下是使用 Python 和 Scapy 库检测 ARP 攻击并记录攻击源信息的代码示例,其中包含对伪造源攻击的识别和日志记录功能。

def detect_attack():
    with open('clients.txt', 'r') as f:
        clients = f.readlines()
        for client in clients:
            ip = client.split()[0]
            mac = get_mac(ip)
            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.haslayer(ARP) and packet[ARP].op == 2:  # 判断是否为ARP响应包
                    src_mac = packet[ARP].hwsrc  # 获取源MAC地址
                    dst_mac = packet[ARP].hwdst  # 获取目标MAC地址
                    if src_mac != get_mac(ip) and src_mac != '00:00:00:00:00:00':  # 判断是否存在伪造源MAC地址的情况
                        messagebox.showwarning('警告',
                                               '检测到伪造源攻击!攻击源IP地址为' + ip + ',MAC地址为' + mac + ',伪造源MAC地址为' + src_mac + '!')
                        # 将攻击源信息写入日志文件
                        with open('detection_log.txt', 'a') as f:
                            f.write('警告' + '检测到伪造源攻击!攻击源IP地址为' + ip + ',MAC地址为' + mac + ',伪造源MAC地址为' + src_mac + '!\n')
                        return
            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

这段代码中,在 if src_mac != get_mac(ip) and src_mac != '00:00:00:00:00:00': 这个条件语句中,我们检测到伪造源攻击后,会将攻击源的 IP 地址、MAC 地址和伪造源 MAC 地址写入名为 detection_log.txt 的日志文件中。

代码说明:

  1. 读取目标主机信息:代码首先从 clients.txt 文件中读取目标主机的 IP 地址信息,这些信息可以是需要监控的网络中的所有主机 IP 地址。

  2. 使用 Scapy 库嗅探 ARP 包:代码使用 Scapy 库的 sniff 函数来嗅探网络中的 ARP 包。嗅探条件是 arp and src host + 目标主机 IP 地址,这样可以只捕获目标主机的 ARP 包。

  3. 判断 ARP 包类型:代码检测 ARP 包的类型,如果是 ARP 响应包,则继续分析包内容。

  4. 检测伪造源 MAC 地址:代码比较 ARP 包中的源 MAC 地址和目标主机真实的 MAC 地址,如果两者不一致,并且源 MAC 地址不是默认的 00:00:00:00:00:00,则判断为伪造源攻击。

  5. 记录攻击源信息:代码会将攻击源的 IP 地址、MAC 地址和伪造源 MAC 地址记录到日志文件中。

这段代码能够有效地检测 ARP 攻击,并记录攻击源的详细信息,帮助安全分析人员进行攻击追踪和溯源。

注意:

  1. 代码中需要先安装 Scapy 库,可以使用 pip install scapy 命令安装。
  2. 代码中的 get_mac(ip) 函数需要根据实际情况进行定义,用来获取目标主机的真实 MAC 地址。
  3. 为了更有效地检测攻击,建议使用更长的嗅探时间和更强的安全策略。
  4. 为了避免代码被恶意利用,建议在使用代码前仔细阅读并理解代码逻辑,并确保代码运行环境的安全。
Python ARP 攻击检测代码:记录伪造源攻击地址

原文地址: https://www.cveoy.top/t/topic/jojO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录