使用WireShark破解網(wǎng)站密碼
譯文你可曾知道:每當你在網(wǎng)站上輸入用戶名和密碼后敲回車鍵,實際上將你的密碼發(fā)送出去。這個你當然知道。畢竟,除此之外,又有什么辦法可以向網(wǎng)站驗證自己的身份?可是,如果網(wǎng)站允許你使用HTTP(明文格式)驗證身份,捕獲該流量,之后通過局域網(wǎng)(甚至通過互聯(lián)網(wǎng))從任何機器來分析此流量其實很簡單。這意味著,只有網(wǎng)站使用HTTP協(xié)議用于驗證身份,有人就能解使用該網(wǎng)站的密碼。要想通過互聯(lián)網(wǎng)來破解網(wǎng)站密碼,你就需要能夠位于網(wǎng)關(guān)或中央集線器上(如果你獲得訪問權(quán),流量通過其來轉(zhuǎn)發(fā),BGP路由器也可以)。
但是從局域網(wǎng)來破解密碼很容易;與此同時,你不由得想:HTTP到底有多不安全。你可以針對室友、辦公網(wǎng)絡(luò)或者甚至學(xué)校、學(xué)院或大學(xué)網(wǎng)絡(luò),試著破解密碼,假設(shè)網(wǎng)絡(luò)允許廣播流量,你的網(wǎng)卡又可以設(shè)置成混雜模式。
所以我們不妨針對一個簡單的網(wǎng)站試一下。我將隱藏網(wǎng)站名稱的一部分(完全出于尊重對方的隱私)。出于本文的需求,我將在一臺機器上演示每一步過程。至于你,可以在兩臺VirtualBox/VMWare/物理機器之間試一下。
請注意:一些路由器并不廣播流量,所以該方法對那些路由器而言可能不管用。
第1步:開啟Wireshark,捕獲流量
在Kali Linux中,你只要依次進入到Application > Kali Linux > Top 10 Security Tools > Wireshark,即可開啟Wireshark。
在Wireshark中,進入到Capture > Interface,勾選適用于你的接口。以我為例,我使用了無線USB卡,于是我選擇了wlan0。
理想情況下,你在這里只要按Start(開始)按鈕,Wireshark就會開始捕獲流量。萬一你錯過了這一步,總是可以回到Capture > Interface > Start,捕獲流量。
#p#
第2步:過濾已捕獲流量,找出POST數(shù)據(jù)
至此,Wireshark在偵聽并捕獲所有的網(wǎng)絡(luò)流量。我打開了瀏覽器,使用我的用戶名和密碼登錄到某個網(wǎng)站。身份驗證過程完畢、我登錄到網(wǎng)站后,回過去停止用Wireshark捕獲流量。
通常,你會在Wireshark中看到許多數(shù)據(jù)。不過,我們只對POST數(shù)據(jù)有興趣。
為何唯獨對POST數(shù)據(jù)有興趣?
因為你鍵入用戶名和密碼,按登錄按鈕后,它會生成一個POST方法(簡而言之――你將數(shù)據(jù)發(fā)送到網(wǎng)站遠程服務(wù)器)。
為了過濾所有流量、找出POST數(shù)據(jù),在過濾器部分鍵入下列部分
http.request.method == "POST"
屏幕截圖如下所示。它顯示了1個POST事件。
#p#
第3步:分析POST數(shù)據(jù),尋找用戶名和密碼
現(xiàn)在鼠標右擊這一行,選擇Follow TCP Steam
這會打開一個新的窗口,窗口里面含有像這樣的內(nèi)容:
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
我高亮顯示了用戶名和密碼這個字段。
所以在這里
用戶名:sampleuser
密碼:e4b7c855be6e3d4307b8d6ba4cd4ab91
不過等一下,e4b7c855be6e3d4307b8d6ba4cd4ab91不可能是真實的密碼。它肯定是個散列值。
請注意:即便在登錄期間,有些網(wǎng)站也根本不對密碼進行散列處理。針對這樣的網(wǎng)站,你已經(jīng)搞到了用戶名和密碼。而在這里,我們先要找到這個散列值。#p#
第4步:找出散列類型
我將使用散列識別符(hash-identifier),找出那是哪種類型的散列。打開終端,鍵入hash-identifier,然后粘貼散列值。散列識別符會給出可能匹配的結(jié)果。
屏幕截圖如下所示:
現(xiàn)在有一點可以肯定,我們知道它不是域緩存憑據(jù)(Domain Cached Credential)。所以,它肯定是個MD5散列值。
我可以使用hashcat或cudahashcat來破解該值。
第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不費吹灰之力就破解了它。
破解密碼散列
使用Hashcat,破解MD5、phpBB、MySQL和SHA1密碼,詳見http://www.darkmoreops.com/2014/08/14/cracking-md5-phpbb-mysql-and-sha1-passwords-with-hashcat/。
最后結(jié)果類似這樣:
用戶名:sampleuser
密碼:e4b7c855be6e3d4307b8d6ba4cd4ab91:simplepassword
結(jié)束語
坦率地說,每一個網(wǎng)站所有者都實現(xiàn)SSL技術(shù)來保護密碼安全是不可能的,因為采用標準的SSL技術(shù)需要每個URL高達1500美元的費用。但是網(wǎng)站所有者(誰都可以注冊的公共網(wǎng)站)起碼應(yīng)該在登錄過程中實施散列機制。那樣一樣,起碼密碼已經(jīng)過散列處理,那就增添了一道障礙,以免別人輕輕松松就能破解網(wǎng)站密碼。
這篇指南文章純屬供學(xué)習(xí)之用,請勿用于歪道。
原文地址:http://www.darkmoreops.com/2014/11/11/hack-website-password-using-wireshark/