zoukankan      html  css  js  c++  java
  • 用python实现ARP欺骗

    首先介绍一个python第三方库--Scapy,这个库不是标准库,默认是没有的,需要安装,不过在kali-linux里边是默认安装的,

    这里我用kali做攻击者,xp做受害者

    关于Scapy

    Scapy是一个功能强大的交互式数据包操作程序。它能够伪造或解码大量协议的数据包,通过线路发送它们,捕获它们,匹配请求和回复等等。它可以轻松处理大多数经典任务,如扫描,跟踪路由,探测,单元测试,攻击或网络发现(它可以取代hping,85%的nmap,arpspoof,arp-sk,arping,tcpdump,tethereal,p0f等)。它还能在许多其他工具无法处理的其他特定任务中表现良好,例如发送无效帧,注入自己的802.11帧,组合技术(VLAN跳跃+ ARP缓存中毒,WEP加密通道上的VOIP解码,...... )等。

    首先我们学习下Scapy的几个函数用法,

    getmacbyip----查找ip的Mac地址

    get_if_hwaddr----查找网卡的Mac地址

    看下图:受害者的ip地址为192.168.122.136,网关是192.168.122.2,攻击者ip:192.168.122.129

    关于ARP欺骗
    由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输。所以,MAC地址在A上被伪造成一个不存在的MAC地址,这样就会导致网络不通,A不能Ping通C!这就是一个简单的ARP欺骗。

     

    本来受害者是通过将请求发给网关,然后网关去访问外面,这里ARP欺骗是将攻击者Mac地址假装成网关的Mac地址,完成ARP欺骗

     了解ARP

    我们需要用到的是下边5个,

    op---   接收包数(默认为1)

    hwsrc---    仿作的Mac地址(也就是攻击者的Mac地址)

    psrc---   网关的ip地址

    hwsrc---    受害者的Mac地址

    pdst ---     受害者的ip地址

    因为是以太网,因此要了解下Ether()

    三个参数,目的主机MAC地址,攻击者Mac地址,

    部分代码:

    这里包的地方有个/号

    这是将两者连接的意思,例子如下:

     

     接下来构造一直发送请求,来认识sendp

    sendp(x, inter=0, loop=0, iface=None, iface_hint=None, count=None, verbose=None, realtime=None, return_packets=False, *args, **kargs)

    x为包,inter为请求间隔,iface为网络接口

     完整代码:

    这时我们来测试一下

    不开启ARP欺骗,ping是畅通的

    开启后:

    要想恢复通讯,改一下网关所指的Mac地址

    将pack包里边的psrc改为网关Mac :gmac即可

     这里仅仅只能让受将害者断网,要想进一步学习

    来举个例子

     接收受害者的图片

    用到的  软件 driftnet

    开启ip转发代码

    sysctl net.ipv4.ip_forward=1

     

    再输入driftnet,打开窗口

    然候在受害者电脑上打开图片链接,即可在driftnet里边显示

    快去试试吧!

  • 相关阅读:
    数据结构 括号法二叉树转化为二叉链表链式存储结构
    数据结构 二叉树的非递归遍历算法再回顾
    C语言算法 设计一个算法,将数组m个元素循环右移。要求算法空间复杂度为O(1)
    JAVA 递归输出所有可能的出栈序列
    C语言数据结构 头尾指针数组的综合应用
    C语言 重写strcmp函数
    C语言数据结构 判断出栈序列合法性
    PMD执行Java代码分析的原理
    Redis缓存和MySQL数据一致性方案详解
    mybtais 源码分析
  • 原文地址:https://www.cnblogs.com/ls-pankong/p/9544455.html
Copyright © 2011-2022 走看看