PPTP通訊協定因為簡單好用,所以很多企業至今仍在使用,其實只須配合適當的工具,要破解PPTP的帳號密碼,真的是輕而易舉。為了讓大家深刻體認事情的嚴重性,本文將實地攔截及監聽PPTP封包,並示範如何加以破解。
arpspoof的使用方式看起來很簡單,但根據實測的結果,其實它很容易造成使用者的誤解,因此還是加以說明。在執行arpspoof後,可以看到其版本及使用的提示:
在使用arpspoof之前,為了避免封包沒有轉發,建議先開啟封包轉發功能:
以本例來說,要攔截10.0.0.1送往10.0.0.2的封包,可以執行以下的指令:
可以這樣解釋,把從10.0.0.1往10.0.0.2送的封包都加以攔截(告訴10.0.0.1我就是10.0.0.2),其中-i選項指的是所使用的網路卡,此例為eth0,請自行
代換。
同樣地,要攔截10.0.0.2送往10.0.0.1的封包,則使用下列的指令:
arpspoof在新的版本中有提供-r這個選項,可同時取得兩個方向的封包,包括10.0.0.1 to 10.0.0.2及10.0.0.2 to 10.0.0.1,所以使用一行指令就能取代上述的兩行指令。
在執行「arpspoof -i eth0 -t 10.0.0.2 10.0.0.1」後,會有如下輸出:
這些訊息的意思是,透過此程式宣告10.0.0.1的MAC Address是48:5b:39:d6:xx:xx(就是執行「arpspoof -i eth0」指令中eth0的網卡硬體位址),而48:5b:39:f4:yy:yy則是10.0.0.2的網卡硬體位址。
可以這樣解釋,亦即告訴來自48:5b:39:f4:yy:yy的封包:10.0.0.1目前的MAC Address是48:5b:39:d6:xx:xx。事實上,48:5b:39:d6:xx:xx是執行arpspoof的電腦,因此就可以取得來自10.0.0.2的封包了。冒充10.0.0.2的觀念也是相同的,在此不再贅述。
Wireshark
在Ubuntu下執行Wireshark,可能會遇到權限問題,處理起來滿麻煩的。因此為簡化測試過程,先執行以下的指令,之後就可以順利進行測試。但這並不是一個很好的處理方式,若有此需求,建議自行做功課採取更好的處理方式:
在10.0.0.2建立PPTP連線之前,先檢視一下相關設定,如圖2所示。這裡先以可省略加密的方式進行測試,並且選擇使用CHAP、MS-CHAP、MS-CHAP V2通訊協定進行身分驗證。
|
▲圖2 PPTP安全性設定。 |
在執行arpspoof後,開啟Wireshark。並且,在filter部分輸入CHAP再按下「Apply」,如圖3所示。接著,從10.0.0.2建立PPTP連線。
|
▲圖3 過濾chap封包。 |
在取得CHAP的封包後,將CHAP Challenge及CHAP Response的字串以Hex String的方式依序取出存檔備用,如圖4所示。先選擇Info欄位有Challenge字眼的封包,將它點開之後,然後找到PPTP Challenge最下方的Data,再找到Value欄位。
|
▲圖4 取出Challenge及Response的字串。 |
接著按下滑鼠右鍵,選擇快速選單中的【Copy】,再依序選擇【Bytes】→【Hex Stream】,然後開啟一個文字檔將其貼上備用。同樣地,也取得Response的Hex Steam並加以留存備用。
建立連線後,確認一下相關資訊。如圖5所示,由此可以看出,在建立連線時使用MS CHAP V2方式進行身分驗證,另外伺服器位址是10.0.0.1。由於使用MS CHAP V2進行身分驗證,因此在Wireshark中Filter部分輸入的是CHAP。
|
▲圖5 PPTP連線建立後資訊。 |
chap2asleap及asleap
chap2asleap.py和asleap請自行搜尋下載,為避免有鼓吹犯罪之嫌,這裡並不提供。下載asleap後,必須進行編譯及安裝。在筆者使用的Ubuntu 14.04.3 LTS中,可以順利地完成編譯及安裝,但記得先安裝build-essential套件。一般來說,操作方式如下:
然後,chap2asleap.py要修改相關設定,請依自己的現況進行調整:
此外,還需要一個密碼檔,請自行尋找。同樣地,也要編輯chap2asleap.py,並且修改wordlistPath的內容,同樣請依現況調整: