劉景云
對(duì)于本本用戶來(lái)說(shuō),為了提高安全性,都會(huì)給本本設(shè)置盡可能復(fù)雜的密碼,這樣在登錄系統(tǒng)時(shí),沒(méi)有密碼是無(wú)法操作的。但是,對(duì)于一些比較馬虎的用戶,免不了碰到丟三落四的情況。比如,當(dāng)本本用戶更改了登錄密碼,并對(duì)一些文件進(jìn)行了EFS加密處理后,如果忘記了密碼,不僅無(wú)法登錄系統(tǒng),連加密的文件都找不回來(lái)。雖然可以使用WinPE U盤引導(dǎo)系統(tǒng),利用其內(nèi)置的工具清除密碼,但是這會(huì)造成EFS加密的文件無(wú)法打開(kāi)的問(wèn)題??磥?lái),最好的辦法就是將正確的密碼找回來(lái),這樣問(wèn)題就會(huì)迎刃而解。
Windows的密碼存儲(chǔ)機(jī)制分析
要想找回遺忘的密碼,就必須先了解Windows的密碼管理機(jī)制。在所有的Windows版本中,每個(gè)用戶都有唯一的賬號(hào)和與之關(guān)聯(lián)的登錄密碼,用戶使用自己的賬號(hào)密碼才能進(jìn)入系統(tǒng)。登錄密碼由字符、數(shù)字和各種符號(hào)組成。當(dāng)用戶設(shè)置或改變登錄密碼時(shí),Windows并不單純的存儲(chǔ)這些字符串,Windows使用 DES、MD4等加密算法對(duì)密碼字符串進(jìn)行加密形成LM hash(LAN Manager hash)散列和NTLM hash(Windows NT hash)散列。其中LM hash散列相對(duì)于NTLM hash散列而言比較脆弱,主要用于與老版本的Windows兼容?,F(xiàn)在新版本的Windows又提供了NTLMv2以及Kerberos密碼驗(yàn)證技術(shù)。
Windows將這些Hash散列值存儲(chǔ)在本地安全賬戶數(shù)據(jù)庫(kù)中(security accounts manager database,SAM),對(duì)于Windows2003/2008等域控制器而言,密碼Hash散列值保存在活動(dòng)目錄(active directory)中。對(duì)于NTLM hash散列來(lái)說(shuō)是不可逆的,也就是說(shuō)不可能根據(jù)散列值直接得到登錄密碼。但是,只要得到了LM hash散列或NTLM hash散列,利用窮舉法或者利用字典法,測(cè)試所有可能的密碼值,仍可能找回遺忘的密碼。Windows的密碼Hash在默認(rèn)情況下通常由兩部分組成,第一部分是LM-Hash,第二部分是NTLM-Hash。下面我們簡(jiǎn)單談?wù)剝煞NHash的設(shè)生成機(jī)制。
禁用LM散列,提高密碼安全性
說(shuō)到這里,我們就會(huì)想到,如果能夠阻止Windows存儲(chǔ)LM-Hash密碼散列,僅僅存儲(chǔ)安全性很高的NTLM-Hash散列,不就可以有效提高密碼的安全性了?具體實(shí)現(xiàn)方法是運(yùn)行“gpedit.msc”程序,再組策略窗口左側(cè)點(diǎn)擊“計(jì)算機(jī)配置”→“Windows設(shè)置”→“安全設(shè)置”→“本地策略”→“安全選項(xiàng)”分支,在右側(cè)窗口中雙擊“網(wǎng)絡(luò)安全:不要在下次更改密碼時(shí)存儲(chǔ)LAN Manager的哈希值”項(xiàng),在彈出的窗口中選擇“已啟動(dòng)”項(xiàng),保存后退出。之后雙擊“網(wǎng)絡(luò)安全:LAN Manager身份驗(yàn)證級(jí)別”項(xiàng),在彈出窗口(圖1)中的列表中選擇“僅發(fā)送NTLM響應(yīng)”項(xiàng)。重啟系統(tǒng)后,就實(shí)現(xiàn)了七述要求。此外,最簡(jiǎn)單的方法是設(shè)置長(zhǎng)度最少為15位的密碼,讓系統(tǒng)自動(dòng)存儲(chǔ)無(wú)法用于驗(yàn)證用戶身份的LM-Hash值,也可以實(shí)現(xiàn)異曲同工的目的。當(dāng)然,為了防止破解者使用SAMinside這款工具來(lái)獲取Hash值,最好禁用“Task Schduler”服務(wù)讓破譯者無(wú)功而返。
在老本本中找回密碼
我們知道,Windows將密碼加密后,存儲(chǔ)到了系統(tǒng)路徑下的“System32\Config”文件夾下的“SAM”文件中。只要得到了該文件,通過(guò)各種密碼分析軟件,就有可能讓密碼重見(jiàn)天日。雖然密碼遺忘無(wú)法直接進(jìn)入系統(tǒng),但是我們可以通過(guò)WinPE U盤啟動(dòng)系統(tǒng),在WinPE環(huán)境中將上述SAM文件復(fù)制出來(lái),然后就可以深入解析密碼了。這里為了講解方便,我們先來(lái)介紹在Windows XP和Windows 2003中,如何使用各種工具軟件找回密碼。對(duì)于Windows XP等老本本來(lái)說(shuō),可以使用LOphtCrack v5、Cain等工具來(lái)找回密碼。例如,使用LOphtCrack v5(簡(jiǎn)稱LC5)這款工具軟件,它不僅可以用來(lái)檢測(cè)Windows、UNIX等系統(tǒng)中賬戶密碼的安全性,而巨可以在您忘記密碼的時(shí)候,快速高效地將其找回。在LC5主界面工具欄中點(diǎn)擊第一個(gè)按鈕,創(chuàng)建新的會(huì)話環(huán)境,之后點(diǎn)擊菜單“會(huì)話”→“會(huì)話選項(xiàng)”項(xiàng),在彈出窗口中的“字典破解”欄中勾選“使用”項(xiàng),表示使用基于字典的破解方式,點(diǎn)擊“字典列表”按鈕,可以管理所需的字典,包括新建、編輯、刪除字典等操作。所謂字典,就是包括很多密碼的文本文件。LC5會(huì)從字典中逐個(gè)提取密碼,將其變成散列后和獲得的密碼Hash進(jìn)行比對(duì),來(lái)找到實(shí)際的密碼。
勾選“破解NTLM認(rèn)證口令”項(xiàng),可以檢測(cè)NTLM-Hash類型的密碼。為了實(shí)現(xiàn)全面破解,可以在“暴力破解”欄中勾選“使用”項(xiàng),在“字符設(shè)置”列表中選擇可能的密碼字符組合樣式,包括字母、字母加數(shù)字、字母+數(shù)字+普通符號(hào)、字母+數(shù)字+所有符號(hào)、自定義等。LC5會(huì)根據(jù)選定的密碼字符組成樣式,來(lái)窮舉所有可能的密碼散列,執(zhí)行對(duì)比操作,來(lái)獲得真實(shí)密碼。點(diǎn)擊菜單“會(huì)話”→“導(dǎo)入,項(xiàng),在彈出窗口(圖2)中選擇“本地電腦”和“從SAM文件”項(xiàng),點(diǎn)擊“瀏覽”按鈕,選擇事先獲得SAM文件,之后通過(guò)對(duì)該SAM文件的分析,LC5會(huì)讀取其中所有的賬戶信息,并將其顯示在“運(yùn)行”面板中。之后點(diǎn)擊F4鍵,執(zhí)行密碼分析破譯操作。當(dāng)破譯完成后,會(huì)顯示對(duì)應(yīng)賬戶的密碼。應(yīng)該說(shuō),LC5的功能是非常強(qiáng)大的,只要有足夠的時(shí)間和耐心,完全可以找回密碼。
在Windows 7/8/10本本中找回密碼
使用上述工具,對(duì)于找回Windows XP的密碼沒(méi)有問(wèn)題。但是,對(duì)于之后的Vista、Windows?/8/2008等系統(tǒng)來(lái)說(shuō),就有些力不從心了。因?yàn)樵谶@些新版本的Windows中,微軟采用了更安全的密碼存儲(chǔ)機(jī)制。例如,在新版Windows中,不僅禁用了LM-Hash散列,而且不允許使用簡(jiǎn)單密碼,這導(dǎo)致了SAMinside、LC5、Cain等工具,不是無(wú)法運(yùn)行,就是面對(duì)復(fù)雜的密碼無(wú)計(jì)可施。那么,如何才能從這些系統(tǒng)中找回遺忘的密碼呢?這就需要使用Proactive Password Auditor(PPA)、ophcrack等更加高級(jí)的工具了。
例如,PPA這款軟件提供了多種密碼破澤機(jī)制。在其主窗口打開(kāi)“Hashes”面板,可以看到其預(yù)設(shè)了DUMP file、Registry of local computer、Registry files(SAM,SYSTEM)、Memory of local computer、Memoryof remote computer等5種得到Windows密碼Hash散列數(shù)據(jù)的方法。我們這里需要針對(duì)SAM文件進(jìn)行破譯。如果Windows系統(tǒng)沒(méi)有使用活動(dòng)目錄的話,那么所有用戶的賬號(hào)以及密碼信息都保存在注冊(cè)表中。即使用戶使用了Syskey命令對(duì)賬號(hào)數(shù)據(jù)庫(kù)進(jìn)行了加密,PPA依然能夠從注冊(cè)表中分析賬號(hào)及密碼信息,從而得到密碼的Hash散列值。
在Hashes面板中選擇“Registry of localcomputer”項(xiàng),點(diǎn)擊Dump按鈕,在彈出窗口中的“SAMRegistry”欄中點(diǎn)擊“Browse”按鈕,選擇事先取得的Vista,Windows 7/8/2008等系統(tǒng)的SAM文件,勾選“File name of the SYSTEM Registry file”項(xiàng),點(diǎn)擊“Browse”按鈕,選擇事先取得的SYSTEM文件。點(diǎn)擊“DUMP”按鈕,PPA根據(jù)對(duì)SAM的分析,并嘗試進(jìn)行簡(jiǎn)單破解,然后將賬號(hào)及密碼的詳細(xì)信息顯示出來(lái)。同時(shí),會(huì)顯示所有賬戶的基本信息,例如名稱、賬戶ID、散列類型等(圖3)。
對(duì)于簡(jiǎn)單的密碼,PPA能迅速破譯,如果密碼比較復(fù)雜,PPA還提供了窮舉法、字典猜測(cè)法、Rainbow彩虹表算法等破解方法。以窮舉法為例,首先在PPA的用戶賬號(hào)分析列表中選中一個(gè)賬戶名,根據(jù)其密碼Hash散列的類型(例如LM+NTLM),在Attack面板中選中“Brute-force”,同時(shí)設(shè)定破解的類型(LM Attack或NTLM attack)。然后選中“Brute-forceAttack”面板,根據(jù)需要勾選“All Latin”(所有的字符)、“All Digits”(所有的數(shù)字)、“Special”(特殊符號(hào)),或者勾選“Custom charset”(自定義字符),點(diǎn)擊“Define”按鈕在自定義字符窗口中輸入任意字符串即可。在Password中設(shè)置密碼的最小和最大長(zhǎng)度。設(shè)置完成后,點(diǎn)擊菜單“Recovery”→“Start Recovery”項(xiàng),PPA就可以進(jìn)行密碼分析操作了。PPA的效率很高,普通的密碼很快就會(huì)被猜解出來(lái)。點(diǎn)擊菜單“Recovery”→“Stop Recovery”停止破譯。
為了提高破譯的速度,可以借助于彩虹表進(jìn)行操作。所謂彩虹表,其實(shí)就是體積龐大的、針對(duì)各種可能的密碼組合預(yù)設(shè)的Hash值的集合。彩虹表針對(duì)各種加密算法,都提供對(duì)應(yīng)的文件。對(duì)于簡(jiǎn)單的彩虹表來(lái)說(shuō),體積只有幾十或MR幾百M(fèi)B。對(duì)于大型的彩虹表來(lái)說(shuō),體積可能高達(dá)100GB。有了彩虹表,PPA可以快速地進(jìn)行Hash值比對(duì),來(lái)找到真實(shí)的密碼。對(duì)于不太復(fù)雜的密碼,使用彩虹表可以瞬間破譯,即使對(duì)于我們自己覺(jué)得很復(fù)雜的密碼,在彩虹表面前,破譯所花費(fèi)的時(shí)間不過(guò)幾卜秒而已。
在PPA主界面中的“Attack”欄中選擇“Rainbow”項(xiàng),在“Rainbow attack”面板中點(diǎn)擊“Rainbow tables list”按鈕,在彩虹表管理窗口中點(diǎn)擊“Add”按鈕,導(dǎo)入事先準(zhǔn)備好的彩虹表文件,彩虹表文件的后綴一般為“.rc”。對(duì)于一般的密碼破譯來(lái)說(shuō),使用免費(fèi)版的彩虹表足矣。添加好彩虹表文件后,在PPA中選擇目標(biāo)賬戶,點(diǎn)擊菜單Recovery”→“Start Recovery”項(xiàng),就可以決速找回失落的密碼了。此外,使用LOphcrack這款解密軟件,配之以彩虹表這一強(qiáng)大的密碼字典,也可以決速找回丟失的Windows密碼。