zoukankan      html  css  js  c++  java
  • APR欺骗


    ARP欺骗简介

      ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监听、篡改、重放、钓鱼等攻击方式。


    ARP原理

      ARP是地址转换协议,它是一个链路层协议,工作在OSI模型的第二层,在本层和硬件接口间进行联系,同时对上层(网络层)提供服务。我们知道二层的以太网交换设备并不能识别32位的IP地址,它们是以48位以太网地址(MAC地址)传输以太网数据包的。也就是说IP数据包在局域网内部传输并不是靠IP地址而是靠MAC地址来识别目标的,因此IP地址与MAC地址之间就必须存在一种对应关系,而ARP协议就是用来确定这种对应关系的协议。

      ARP工作时,首先请求主机会发送一个含有所希望到达的IP地址的以太网广播数据包,然后目标IP的所有者会以一个含有IP和MAC地址对的数据包应答请求主机。这样请求主机就能获得要到达的IP地址对应的MAC地址,同时请求主机会将这个地址对放入自己的ARP表缓存起来,以节约不必要的ARP通信。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除。


    ARP欺骗原理

      攻击者主动发送ARP报文,发送的MAC地址为攻击者主机的MAC地址,发送者的IP地址为被攻击主机的IP地址。通过不断发送这些伪造的ARP报文,让局域网上所有的主机和网关ARP表,其对应的MAC地址均为攻击者的MAC地址,这样所有的网络流量都会发送给攻击者主机。由于ARP欺骗攻击导致了主机和网关的ARP表的不正确,这种情况我们成为ARP中毒。


    Scapy库

    1. get_if_hwaddr()  获取本机网络接口的函数
    2. getmacbyip()    通过IP地址获取MAC地址
    3. sendp                在第二层发送数据包

     Ether参数:

      dst  :  DestMACField  =  (None)

      src  :  SourceMACField  =  (None)

      type  :  XShortEnumField  =  (36864)

      构造一个以太网数据包通常需要指定目标和源MAC地址,如果不指定,默认发出的就是广播包。

      ARP类构造函数的参数列表:

      hwtype  :  XShortField  =  (1)      # 为1 代表以太网

      ptype  :  XShortEnumField  =  (2048)  # 0x0800为要映射的IP协议类型

      hwlen  :  ByteField  =  (6)

      plen  :  ByteField  =  (4)

      op  :  ShortEnumField  =  (1)       # 1代表ARP请求,2代表ARP响应

      hwsrc  :  ARPSourceMACField  =  (None)

      psrc  :  SourceIPField  =  (None)

      hwdst  :  MACFiled  =  ('00:00:00:00:00:00')

      pdst  :  IPField  =  ('0.0.0.0')


    定向欺骗

      192.168.1.23和192.168.1.18进行通信,我们想告诉192.168.1.23这台主机网关地址为192.168.1.102所在的主机,构造数据包:

      pkt = Ether(src=[1.102的MAC],dst=[1.18的MAC]) / 

          ARP(hwsrc=1.102的MAC,psrc=1.18地址,hwdst=1.18MAC, pdst=1.18 IP地址,op=2)

      上面的代码我们不论是以太网数据包还是ARP数据包,我们都明确指定了来源和目标,在ARP数据包中,我们将1.102的MAC地址和网关的IP地址进行了绑定,op取值为2,作为一个响应包被1.18接到,这样1.18会更新自己的ARP缓存表,造成中毒,从而1.18发往网关的数据包都会被发往1.102.

      如果要欺骗网关,把网关发往1.18的数据包都发送到1.102上,根据上面的代码稍作修改即可:

      pkt = Ether(src=[1.102的MAC],dst=[网关的Mac]) /

          ARP(hwsrc=1.102的MAC,psrc=1.18地址,hwdst=网关MAC,pdst=网关IP地址,op=2)

      上面构造的两个数据包都是ARP响应包,其实发送请求包也可以进行毒化,请求毒化的原理是,我们请求时候使用假的源IP和MAC地址,目标主机同样会更新自己的路由表。

      ARP请求的方式欺骗主机,构造ARP包如下:

      pkt = Ether(src=[1.102的MAC],dst=[1.18的Mac]) /

           ARP(1.102的MAC,网关IP地址,hwdst=1.18 MAC, pdst=1.18 IP地址,op=1)

      ARP请求的方式欺骗网关,构造ARP包如下:

      pkt = Ether(src=[1.102的MAC], dst=[网关的MAC])/

          ARP(1.102的MAC,1.18的地址,hwdst=网关MAC,pdst=网关IP地址,op=1)


    广播欺骗

      广播欺骗,首先以太网数据包直接构造一个广播包,ARP包不用填写目标主机的信息即可。

      ARP广播响应包的构造方式:

      pkt = Ether(src=mac, dst='ff:ff:ff:ff:ff:ff')/ARP(hwsrc=mac, psrc=args[0],op=2)

      

      广播欺骗公式:

      pkt = Ether(src=攻击者MAC,dst=被欺骗主机(或网关)MAC) / 

        ARP(hwsrc=毒化记录中的MAC,psrc=毒化记录中的IP,hwdst=被欺骗主机MAC,pdst=被欺骗主机IP地址, op =1 (或2))


    参考链接

    http://www.cnblogs.com/xuanhun/p/5802573.html

  • 相关阅读:
    poj 2352 Stars (树状数组)
    一.C语言:关键字、标识符和注释
    运算符:三目运算符,运算符优先级,sizeof,自增自减,取余
    ios app 上架AppStore
    为ios app添加广告条
    谓词
    正则表达式
    日期处理
    第一次往github上传文件步骤
    codeforce 375_2_b_c
  • 原文地址:https://www.cnblogs.com/blacksunny/p/7018190.html
Copyright © 2011-2022 走看看