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