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