在局域網內要做到這壹點很容易,這不禁使妳驚訝HTTP是有多麽的不安全。妳可以在宿舍網絡、工作網絡,甚至是校園網絡嘗試這種破解方法,不過校園網絡需要允許廣播流量功能,並且要求妳的局域網網卡可以設置為混雜模式。
下面就讓我們在壹個簡單的網站上實驗這種方法,本實驗我是在同壹個電腦上進行的。實踐的時候,妳可以在虛擬機和物理機之間進行。
註意,壹些路由器並不支持廣播流量功能,所以在這種路由器上可能會失敗。
Step 1:運行WireShark並捕獲流量
在Kali Linux中可以按以下步驟運行WireShark:
Application > Kali Linux > Top 10Security Tools > Wireshark
在WireShark中依次點擊 Capture > Interface 選項,然後選中適用的網卡接口,在我的例子中,我使用了壹個USB無線網卡,所以我選擇了 wlan0。
如果壹切順利,那麽接下來妳可以按下開始按鈕,然後Wireshark將開始捕獲流量。如果妳錯過了這壹步,那麽妳通過回到 Capture > Interface > Start開始捕獲流量。
Step 2:過濾POST數據流量
此時,Wireshark開始監聽並捕獲所有的網絡流量。然後我打開瀏覽器並用我的用戶名和密碼登錄壹個網站,當認證過程結束並成功登錄之後,返回並停止Wireshark的流量捕獲。
通常情況下,將會捕獲很多流量數據,然而我們只對POST數據感興趣。為什麽是POST數據呢?
因為當妳輸入用戶名和密碼並點擊登錄按鈕時,將會產生壹個POST方法將妳輸入的數據發送到遠程服務器上。
為了過濾並濾出POST數據,可以在Filter輸入框中輸入以下指令:
http.request.method== "POST"
下圖中顯示了壹個POST事件。
Step 3:分析POST數據以獲取用戶名和密碼
接下來,點擊POST事件那壹行,然後右擊選擇“Follow TCPSteam”。
此時,將會打開壹個新窗口,窗口中包含類似下面的內容:
HTTP/1.1 302 Found
Date: Mon, 10 Nov 2014 23:52:21 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Set-Cookie: non=non; expires=Thu, 07-Nov-2024 23:52:21 GMT; path=/
Set-Cookie: password=e4b7c855be6e3d4307b8d6ba4cd4ab91; expires=Thu, 07-Nov-2024 23:52:21 GMT; path=/
Set-Cookie: scifuser=sampleuser; expires=Thu, 07-Nov-2024 23:52:21 GMT; path=/
Location: loggedin.php
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
即在這個例子中:
1、用戶名:sampleuser
2、密碼:e4b7c855be6e3d4307b8d6ba4cd4ab91
由上面的密碼值可以猜想,“e4b7c855be6e3d4307b8d6ba4cd4ab91”肯定不是真實的密碼值,而應該是壹個哈希值。
需要註意的是,壹些不註重安全的網站並未對用戶發送的密碼值求哈希值,而是直接將密碼明文發送給服務器。對於這種網站,到這壹步就能夠得到用戶名和密碼信息了。而在我分析的例子中,我們還需要更進壹步,即識別該哈希值對應的密碼值。
Step 4:確定哈希類型
在這壹步中,我將使用hash-identifier工具來確定上面的密碼哈希值到底是什麽類型的哈希。打開終端,然後輸入“hash-identifier”並將上面的哈希值粘貼到終端,回車之後hash-identifier將會給出可能的匹配值。
因為有壹件事可以確定,即上面的哈希值不是域緩存憑證(Domain Cached Credential),所以它肯定是MD5哈希值。然後,就可以使用hashcat或者cudahashcat破解該MD5哈希值, 點擊這裏 了解更多。
Step 5:破解MD5哈希密碼
可以使用hashcat或者類似的工具很容易地破解這個密碼。
root@kali:~# hashcat -m 0 -a 0 /root/wireshark-hash.lf /root/rockyou.txt
(or)
root@kali:~# cudahashcat -m 0 -a 0 /root/wireshark-hash.lf /root/rockyou.txt
(or)
root@kali:~# cudahashcat32 -m 0 -a 0 /root/wireshark-hash.lf /root/rockyou.txt
(or)
root@kali:~# cudahashcat64 -m 0 -a 0 /root/wireshark-hash.lf /root/rockyou.txt
因為我測試的密碼存在於我的密碼字典中,所以hashcat可以很容易就能破解出。
結論
其實,不可能確保每個網站都使用SSL來保證密碼的安全,因為對於每壹個URL來說,使用SSL服務都需要花錢。然而,網站所有者(任何人都可以註冊的公***網站)至少應該在登錄環節進行哈希值求解操作,這樣至少在攻擊者破解網站密碼的時候能夠多設置壹道屏障。