前言
大家可能對PPPOE不是很熟悉,但是肯定對撥號上網非常熟悉,撥號上網就是用的這種通信協議。一般PPPOE認證上網主要用於校園網或者小區網中,撥號界面如下圖所示。
但是PPPOE這種通信協議,是有一些安全漏洞的。下面從三個方面講解一下PPPOE的攻擊方式,以及如何使用Python實現攻擊工具。
純粹技術分享,切莫違反國家法律。
第一種方式:賬號密碼竊取
對於PPPOE認證上網的過程如下圖所示,分為發現階段和會話階段,發現階段分為PADI,PADO,PADR,PADS。
其中竊取賬號密碼的問題就出現在第一步PADI。PPPOE客戶端進行連接時,在PADI階段會發送一個廣播包,尋找局域網中的PPPOE服務器,從而完成認證。
這時候我們需要做的是偽裝成PPPOE服務器,回復請求信息,搶先和客戶端通信,並強制客戶端使用明文傳輸方式,從而獲取賬號和密碼。下面我們通過wireshark抓一下數據包,更加直觀的觀察一下尋找PPPOE服務器的過程。點擊寬帶連接,使用Wireshark監聽,會發現廣播包,這時候pppoe服務器會進行回復。
攻擊場景:在本機電腦上開啟PPPOE欺騙程序,開始進行監聽,並在局域網中的其他電腦上進行寬帶連接,觀察欺騙效果。如下圖所示,已經成功欺騙出了賬號和密碼。
竊取賬號的部分代碼內容如下:
第二種方式:客戶端斷網攻擊
撥號客戶端(寬帶連接)與 PPPOE服務器成功連接后,那服務器是如何表示客戶端呢?通俗的說,服務器必須要知道客戶端是哪一個,這樣通信才不能錯亂。PPPOE采用的是分配ID的方式,也就是給每個客戶端隨機分配一個int型的整數。通過wireshark抓包,我們可以清晰地看到ID的分配。
乍一聽是沒有問題,但是問題正在於ID的范圍,為int類型。PPPOE服務器通過分配給客戶端一個1-65535的值來唯一標識客戶端。只要知道對方電腦MAC地址,循環發送65535個PADT斷網包,即可以實現斷網攻擊,而對方電腦的MAC可以通過ARP請求獲得。
什么是PADT斷網包?通過wireshark抓包,咱們看一下斷網包的內容。斷開寬帶連接,使用Wireshark監聽,會發現PADT斷網包,進行數據幀分析和模擬即可。
攻擊場景:一台電腦運行斷網程序,通過ARP請求獲取對方電腦MAC地址,模擬PADT包,將另外一台電腦的寬帶連接斷掉。
斷網攻擊的部分代碼內容如下:
第三種方式:服務器DoS攻擊
DoS攻擊是針對PPPOE服務器的,其實原理很簡單。現在基本上高級點的路由,對ARP洪水攻擊都做了很好的防護,對大量的arp包進行了過濾,但是對PPPOE包卻沒有做防護,使大量的PPPOE包可以直達PPPOE服務器,從而打垮服務器,這樣會導致大規模的斷網。
Dos攻擊的部分代碼內容如下:
最后 完整代碼
Python實現的PPPOE攻擊工具,使用了scapy包,可不要和爬蟲框架scrapy混淆了。scapy是一款非常優秀的網絡協議工具包,具有發包和收包的功能,非常強大。接下來我們會接着講解這個scapy包,至於PPPOE攻擊工具的完整代碼,歡迎加入公眾賬號,查看原文。