Windows系統密碼破解

作者:hackest [H.S.T.]
來源:hackest's blog

http://www.hackest.cn/post/102/

引子

我一直在想,到底用什麼樣的方式才能較長時間地控制已經得到了權限的目標呢?留後門,種木馬,甚至是Rootkit?留的Webshell痕跡太明顯,哪怕是一句話的Webshell,都極容易被管理員清除。放了木馬,也容易被有經驗的管理員查出來,畢竟現在能做到無聲無色的木馬還是比較少。早期的是自己建個進程,結束掉進程就over了,後來有了注入進程的木馬,再後來還有了以服務啓動的木馬,還有些是替換某些不要緊的系統自有服務來啓動的……不過上述方法隱蔽性都太差了,不管你的後門留得如何完美,不管你的木馬程序多麼免殺,終究還是做不到不留任何痕跡。

是不是就沒有辦法了呢?非也,某前輩(凋凌玫瑰)的一句名言驚醒了N多彷徨的菜鳥(如我之流):我一般不喜歡在服務器留木馬或是後門,我比較喜歡利用管理員進入的方式來管理服務器(凋凌玫瑰文章原話引用)。管理員的進入方式,怎麼理解呢?換句話說就是,管理員是怎麼進他服務器的,我們就怎麼進他的服務器。如果他是3389終端進入的,我們就終端進入,當然前提是要想辦法得到他的管理員用戶的密碼;如果他是Pcanywhere進入的,我們就想辦法獲取他的Pcanywhere密碼進入;如果他是Radmin進入服務器的,我們也要想辦法搞到他的Ramin密碼進入。這樣的話,隱蔽性就大大提高了,肉雞自然就沒有這麼容易跑掉了。如果他這個密碼是域管理員密碼,如果他這個密碼可以管理整個機房的機器,如果他這個密碼可以通殺他的內網,如果這個密碼還能登錄他的QQ!誇張點說,甚至他重裝系統了,還用的是這個密碼,那你的肉雞又復活了……後果真是太可怕了(擦下汗先)!廢話少說,直入正題——Windows系統密碼破解全攻略。本文所指均爲無物理接觸的系統密碼破解,如果讓黑客物理接觸計算機,根本就沒有什麼系統進不去的,而且操作更加簡單,速度更快,呵呵。

背景

要破解一個程序的密碼,要先了解它的一些背景知識。先來簡單說一下Windows系統密碼的加密算法。早期SMB協議在網絡上傳輸明文口令。後來出現"LAN Manager Challenge/Response"驗證機制,簡稱LM,它是如此簡單以至很容易被破解。微軟提出了WindowsNT挑戰/響應驗證機制,稱之爲NTLM。現在已經有了更新的NTLMv2以及Kerberos驗證體系。Windows加密過的密碼口令,我們稱之爲hash(中文:哈希),Windows的系統密碼hash默認情況下一般由兩部分組成:第一部分是LM-hash,第二部分是NTLM-hash。以下內容摘選自安全焦點:

--------------------------------------引文開始----------------------------------------------

一、如何從明文口令生成LM-Hash?

1、假設明文口令是"Welcome",首先全部轉換成大寫WELCOME,再做如下變換:
"WELCOME" -> 57454C434F4D4500000000000000
先把WELCOME轉換成十六進制形式,在明文口令不足14字節的情況下,後面添加0x00補足14字節。有些書上介紹添加空格(0x20)補足14字節,這是錯誤的,我不清楚是原作者寫錯了,還是譯者的問題。

2、然後切割成兩組7字節的數據,分別經str_to_key()函數(代碼已附光盤)處理得到兩組8字節數據:
57454C434F4D45 -str_to_key()-> 56A25288347A348A
00000000000000 -str_to_key()-> 0000000000000000

3、這兩組8字節數據將做爲DESKEY對魔術字符串"KGS!@#$%"進行標準DES加密(代碼已附光盤):

"KGS!@#$%" -> 4B47532140232425

56A25288347A348A -對4B47532140232425進行標準DES加密-> C23413A8A1E7665F
0000000000000000 -對4B47532140232425進行標準DES加密-> AAD3B435B51404EE

4、將加密後的這兩組數據簡單拼接,就得到了最後的LM-Hash

Welcome的LM-Hash: C23413A8A1E7665FAAD3B435B51404EE。

顯然,由於明文口令一開始就全部轉換成大寫,導致多個明文口令對應一個LM-Hash。反過來,在窮舉破解LM-Hash時,得到的有可能不是原始口令,因爲不可能確定大小寫。仔細觀察前述SMB身份驗證過程,即使這裏得到的不是原始口令(大小寫有差別),同樣可以通過SMB身份驗證。這種轉換成大寫的行爲減小了窮舉破解難度。

另一個弱點,當明文口令小於8字節時,LM-Hash後8字節的計算過程總是這樣的:

00000000000000 -str_to_key()-> 0000000000000000

對4B47532140232425進行標準DES加密-> AAD3B435B51404EE

這也將減小窮舉破解難度。

IBM設計了這個LM-Hash算法,魔術字符串"KGS!@#$%"的意義無從考證。這個算法稱之爲"哈希"不怎麼妥當,由於是標準DES加密,完全是可逆的。當然,由於要窮舉的是DESKEY本身,與傳統所說的可逆有區別。

二、如何從明文口令生成NTLM-Hash?

IBM設計的LM-Hash算法存在幾個弱點,微軟在保持向後兼容性的同時提出了自己的挑戰響應機制,所以,NTLM-Hash應運而生。

1、假設明文口令是"123456",首先轉換成Unicode字符串,與LM-Hash算法不同,這次不需要添加0x00補足14字節:

"123456" -> 310032003300340035003600

從ASCII串轉換成Unicode串時,使用little-endian序,微軟在設計整個SMB協議時就沒考慮過big-endian序,ntoh*()、hton*()函數不宜用在SMB報文解碼中。0x80之前的標準ASCII碼轉換成Unicode碼,就是簡單地從0x??變成0x00??。此類標準ASCII串按little-endian序轉換成Unicode串,就是簡單地在原有每個字節之後添加0x00。

2、對所獲取的Unicode串進行標準MD4單向哈希(代碼已附光盤),無論數據源有多少字節,MD4固定產生128-bit的哈希值,16字節:

310032003300340035003600 -進行標準MD4單向哈希-> 32ED87BDB5FDC5E9CBA88547376818D4

3、就得到了最後的NTLM-Hash

123456的NTLM-Hash: 32ED87BDB5FDC5E9CBA88547376818D4。

NTLM-Hash與LM-Hash算法相比,明文口令大小寫敏感,但無法根據NTLM-Hash判斷原始明文口令是否小於8字節,擺脫了魔術字符串"KGS!@#$%"。

MD4是真正的單向哈希函數,窮舉做爲數據源出現的明文,難度較大。問題在於,微軟一味強調NTLM-Hash的強度高,卻避而不談一個事實,爲了保持向後兼容性,NTLM-Hash缺省總是與LM-Hash一起使用的。這意味着NTLM-Hash強調再高也是無助於安全的,相反潛在損害着安全性。增加NTLM-Hash後,首先利用LM-Hash的弱點窮舉出原始明文口令的大小寫不敏感版本,再利用NTLM-Hash修正出原始明文口令的大小寫敏感版本。

--------------------------------------引文結束----------------------------------------------

實戰

理論準備得差不多了,進入實戰階段。當你已經得到Windows的系統權限後,如何才能獲得管理員的密碼hash呢?不同版本的Windows的hash獲取方法不一樣。用到的工具有pwdump7.exe、GetHashes.exe、SAMInside.exe、LC5、Cain、Proactive Password Auditor、Ophcrack。下面將會詳細介紹如何抓取各Windows版本的系統密碼hash。

1、Windows 2000

比較老的一個Windows版本,同時也有好幾個子版本,現在還在不少服務器上跑着,雖然性能和安全性都有點跟不上時代的腳步了,但是我們也不能放過。本文主要針對服務器目標,所以測試系統爲Windows 2000 高級服務器版,打了SP4補丁的,已更新所有補丁,如圖1。

點擊在新窗口中瀏覽此圖片

2000下可以用pwdump7.exe來抓取系統用戶的hash,命令格式:pwdump7.exe >2000hash.txt,意思爲抓取所有用戶hash,並寫入2000hash.txt這個文本文件,如圖2。

點擊在新窗口中瀏覽此圖片

也可以用SAMInside自帶的小工具GetHashes.exe,命令格式:GetHashes.exe $local >2000.txt,意思是抓取所有用戶hash並寫入2000.txt這個文本文件,如圖3。

點擊在新窗口中瀏覽此圖片

還可以用圖形界面的SAMInside,打開SAMInside,點擊“File”,然後點擊“Import local Users via Scheduler”,稍等一會就成功抓取到hash了,如圖4、圖5。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

因爲這個是利用Windows的計劃任務來抓取的,所以Task Scheduler服務必須啓動,否則抓不出來。抓到hash之後還要導出,以方便用其它更強大的破解工具進行破解工作。如果要導出所有用戶的hash,就點擊“File”,然後點擊“Export Users to PWDUMP File...”,然後保存爲txt文本即可。如果只需要其中一個用戶的hash,就選“Export Selected Users to PWDUMP File...”,同樣保存爲txt文本即可,如圖6。

點擊在新窗口中瀏覽此圖片

操作都比較簡單吧。SAMInside同時也是一個破解工具,可以對抓取的hash進行簡單的破解工作,還自帶了一個常用字典,還可以結合彩虹表進行破解,如果密碼不是太複雜,在這裏就可以得到密碼明文了。


順便提一下Windows 2000下的另一個得到管理員密碼的方法,用aio.exe(aio是All In One的縮寫,是一些小工具的集合)直接讀取內存中的密碼,Windows 2003 SP1、SP2補丁沒有打的話,也可以這樣讀取出來密碼明文。命令格式:aio.exe -findpassword,成功讀出了密碼,密碼爲2000,如圖7。

點擊在新窗口中瀏覽此圖片

此方法只有在管理員登錄了,而又沒有註銷的情況下纔可以成功讀出密碼

2、Windows XP&Windows 2003

參照上面抓2000的,步驟都差不多。不過比較推薦用SAMInside抓取,因爲pwdump7不太穩定,有時候抓到的hash不一定正確,甚至還有可能抓不出來……圖開界面下用SAMInside抓取,命令行下用SAMInside自帶的那個小工具GetHashes.exe抓取,hash一般保存爲txt文件即可。下面再介紹一些上面沒提到的工具如何抓取hash,這些工具自己能抓,也能破解,比較強大。聰明的讀者可能會發現上面提到的工具只出場了一部分,還有好幾個都還沒有露面,嘿嘿……下面就來介紹下另外幾個強大的工具。

LC5

如果要用LC5抓取本機的hash,就依次打開“Session”->“Import”->“Local machine”稍等片刻就可以成功抓取到hash了,如果你要導入破解hash,就選“Import from file”->“From PWDUMP file”導入即可進行破解,如圖8、圖9。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

再點擊小三角形按鈕就可以開始破解了。當然你還可以對破解做一些調整,“Session”->“Session Options...”,在“Btute Force Crack”選項裏的“Character Set:”裏可以設置字符集,默認選的是alphabet+numbers,字母和數字,如圖10、圖11。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

LC5是非常強大的,可以這麼說,只要你的hash是正確的,就沒有破不出來的密碼,前提是你有足夠的時間,我曾經試過跑一個密碼用了17天(不必驚訝,以寫本文之前,我已經找到了比LC5更強大的工具,破解時間大大縮短,後面將會提到^-^)!

Cain

Cain我相信很多喜歡嗅探的朋友都會知道,但是你知不知道它除了嗅探之外還具備了強大的密碼破解功能呢?如何用Cain來抓取hash呢,同樣十分簡單(試想像一下,你一邊開着Cain嗅同網段其它機器的時候,一邊破解已控制目標的管理員密碼是一件多麼酷的事情)。安裝Cain所需驅動WinPcap,才能啓動Cain,不過如果你只是用它來破解密碼,而不需要嗅探類操作的話,打開Cain的時候它提示缺少什麼文件就在安裝目錄建一個同名dll文件即可打開(欺騙Cain,讓它爲我們服務,不過這樣做當然不具備嗅探類功能)。點選“Cracker”->“LM&NTLM Hashes”,然後點下右邊空白處,藍色+號按鈕即可激活,然後點擊它,彈出“Add NT Hashes from”->“Import Hashes from local system”->勾選“Include Password History Hashes”,然後Next,hash就抓出來了,如圖12、圖13。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

右鍵單擊你要破解的用戶,“Brute-Force Attack”->“NTLM Hashes”->“Start”,就會開始暴力破解了,如果你的密碼足夠簡單,很快就有得出結果,當然你同樣可以像LC5一樣選擇你覺得可能的字符集,以改善破解速度,還可以自定義字符集。Administrator的密碼爲2009,輕鬆破解,如圖14、圖15。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

3、Windows Vista&Windows 7&Windows 2008

眼尖的朋友可以會發現還有兩個工具沒有露面,難道它們更加強大?沒錯,讀完本文你就知道它們到底強大到了什麼樣的程度,或者前面所提到的東西不足以引起你的興趣,那下面的東西將會讓你對密碼破解有一個更深刻的認識。爲什麼要把Vista及其後面的Windows系統版本分開說明呢,當然是有原因的。在Windows 2008中,微軟對SAM和SYSKEY採取了與之前版本Windows不同的加密方法,尤其加密採用的NTLM-Hash算法遠比之前的LM-Hash更復雜得多,這使得之前用於Windows NT/2000/XP上的破解管理員密碼的方法統統失效了(其實只是Windows 2008默認狀態下把LM-hash禁用了,所以就增加了破解難度)。

先來試下2000/XP/2003下的那些工具,測試系統版本:Windows Server Enterprise SP1(企業版),已更新所有補丁程序。pwdump7.exe可以運行,但是抓出來的hash明顯與之前的不同,LM-hash那段都是星號,原因就是前面說過的Windows 2008禁用了LM-hash,如圖16。

點擊在新窗口中瀏覽此圖片

GetHashes.exe沒有成功抓到hash,生成的txt文件爲空白,如圖17。

點擊在新窗口中瀏覽此圖片

SAMInside也可以運行,成功抓取到了hash,不過LM-hash段全爲0,要注意使用最新版本,如圖18。

點擊在新窗口中瀏覽此圖片

再來看看LC5,安裝運行,N久後提示“Couldn't impersonate system account.You do not have the privileges to perform this operation.”確定之後繼續提示“Error importing passwords from the registry.You may have insufficient permissions to perform this action.”大致意思是說我沒有權限執行這個操作,可是我是以管理員身份運行的LC5的,它自己不行所以就很委婉地推託說是我權限不夠。不過LC5的公司已經被人收購了N久,版本也沒有再更新,在新的Windows 2008下表現令人失望也情有可願,如圖19、圖20。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

而且拿pwdump7.exe和SAMInside抓取的hash導入LC5也同樣無法破解,一點小三角形開始按鈕便馬上停止。這一輪,LC5被淘汰。

接下來輪到Cain了,輕鬆抓取,不過Windows 2008的密碼默認不允許使用簡單密碼,所以給密碼破解提高了難度,細心的朋友可能會發現,LM-hash段顯示的並不是SAMInside的一串0,而是清一色的AAD3B435B51404EEAAD3B435B51404EE,具體原因聰明的朋友自己分析下爲什麼,呵呵,如圖21。

點擊在新窗口中瀏覽此圖片

這裏要提的一點是Cain抓的hash格式和別的工具抓的不太一樣,需要自己處理下才能導入破解,要不然別的工具直接導入的話,會無法識別。示例如下:

SAMInside:
Administrator:500:NO PASSWORD*********************:03937006E74E63318B23D01A6E29A4FB:::

Cain:
Administrator:"":"":AAD3B435B51404EEAAD3B435B51404EE:03937006E74E63318B23D01A6E29A4FB
爲了加強通用性,在此提醒大家hash格式統一以第一種爲準,也就是SAMInside所抓取的那個格式!

ppa

下面輪到Proactive Password Auditor(以下簡稱ppa),這是一個商業軟件(就是要錢的那種),不過官方提供60天試用版本,功能無限制,低版本有破解版。該軟件需要安裝,界面如圖22。

點擊在新窗口中瀏覽此圖片

如果你要抓取Windows 2008的本機hash,那直接點擊Dump即可抓取,默認是從“Memory of local computer”本地計算機內存抓取。該軟件還支持註冊表抓取,SAM文件抓取,同時支持遠程抓取hash,輕鬆抓到hash,如圖23。

點擊在新窗口中瀏覽此圖片

也支持導入hash破解,同時還支持暴力破解、字典破解、彩虹表破解。這裏着重介紹下彩虹表破解。首先要明白,彩虹表是什麼東西呢?

小知識:什麼是彩虹表?

彩虹表就是一個龐大的、針對各種可能的字符組合預先計算好的哈希值的集合,不一定是針對MD5算法的,各種算法的都有,有了它可以快速的破解各類密碼。越是複雜的密碼,需要的彩虹表就越大,現在主流的彩虹表都是100G以上。

要用ppa配合彩虹表破解的方法也比較簡單,Attack選擇“Rainbow”->“NTLM attack”->“Rainbow tables list...”->“Add”選擇導入彩虹表文件,格式一般爲*.rt,我下載了國外一個免費的彩虹表,目前大小爲207GB,完整表還會更大。導入所有彩虹表後,點擊“Recovery”->“Start recovery”開始破解,如圖24、圖25。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

這個軟件個人感覺跑純數學密碼超級快,即使是14位長的純數字密碼,也用不了幾秒鐘!ppa支持Vista和2008下破解。

Ophcrack

下面該輪到本文最有價值的軟件——Ophcrack出場了!Ophcrack是一個免費的在配合彩虹表的基礎上破解Windows系統密碼的工具。效率相當可觀,它配備了一個Windows下的圖形用戶界面並且支持多平臺運行。而且還可以下載官方的Ophcrack LiveCD刻錄成光盤,就可以走到哪破到哪了!其官方網站爲http://Ophcrack.sourceforge.net/,可以到官方下載安裝,如圖26。

點擊在新窗口中瀏覽此圖片

Ophcrack所用的彩虹表和常規的彩虹表不太一樣,它識別不了*.rt格式的彩虹表,只認官方的彩虹表。常規的彩虹表無法破解Vista、Windows 7、Windows 2008的密碼hash。免費的彩虹表官方只提供三個:XP free small (380MB)、XP free fast (703MB)、Vista free (461MB),其它更爲強大的一些彩虹表則需要收取一定費用。安裝的時候需要注意,可以選擇是否下載官方彩虹表,如果你想安裝好軟件後另外自己下載則去掉勾選的選項即可,如圖27。

點擊在新窗口中瀏覽此圖片

安裝完畢,界面比較清爽吧,如圖28。

點擊在新窗口中瀏覽此圖片

因爲官方收費的一些表被國外的一些網站公佈了,所以我下了兩個比較常用的表:一個是XP special (7.5GB);另一個是Vista special (8.0GB),官方標價爲99美元/個。至於更大的表則沒有下載,其實有這兩個表基本上都夠用的了。別看它表體積不大,但威力不容小覷。似乎是做過某種優化和壓縮,打開Ophcrack,“Load”->“Local SAM”,然後一個黑窗口閃過(其實到Ophcrack的安裝目錄就可以發現,它其實是用pwdump6來抓取hash的,不過pwdump6相對pwdump7來說比較穩定)成功抓取hash,圖是在Windows 2003下操作的,因爲Ophcrack用的是pwdump6,無法在Windows 2008及Vista下抓取hash(可以考慮替換pwdump6爲pwdump7來改善這一功能,不過我沒有成功,技術有限啊-_-),如圖29、圖30。

點擊在新窗口中瀏覽此圖片

點擊在新窗口中瀏覽此圖片

Tables標籤下可以看到已安裝的彩虹表,如果安裝軟件的時候沒有下載官方彩虹表,後期下載完彩虹表後可以在Tables裏進行安裝,如圖31。

點擊在新窗口中瀏覽此圖片

然後就可以按Crack進行破解了。雖然說Ophcrack抓取hash的能力有所不足,相對在Vista下而言,但是我們可以用其他的hash抓取工具獲得hash後再導入破解。來看看Ophcrack的破解成果圖吧,密碼14位,如圖32。

點擊在新窗口中瀏覽此圖片

需要注意的是,Vista下抓取的hash需要用Vista的彩虹表來破解,否則會破解失敗!不過據說BitLocker加密也被國外黑客破解了,不過找不到相關資料,所以不再深入討論,有興趣的朋友可以自己測試。

在線查詢

如果你覺得上面提到的這麼多東西都太麻煩,有沒有在線查詢hash的網站呢?答案是肯定的!國外有一個在線查詢hash的網站:http://www.objectif-securite.ch/en/products.php,和Ophcrack的官方有點關係的哦,嘿嘿……不過在線查詢只允許查tables XP free的表,有點可惜……同時特別要指出的是,在線查詢的時候需要注意hash的格式。比如用戶名和密碼都是hackest的hash爲:
hackest:1011:7831A0FFABEE5FB3AAD3B435B51404EE:D78DF6E868E606E442313C5DF93216F1:::
我們只需要把7831A0FFABEE5FB3AAD3B435B51404EE:D78DF6E868E606E442313C5DF93216F1複製填入hash後面的框,再點擊submit hash即可進行查詢,同時也支持輸入密碼返回hash值,如圖33。

點擊在新窗口中瀏覽此圖片

Vista如果開啓BitLocker則以上方法均無效,根本無法抓取到hash,不過好在BitLocker默認是關閉的,不是特別需要的用戶一般不會開啓它。

後記

當然了,破解至關重要的主hash的正確性,限制是密碼的長度是否超過14位,還有密碼所組成的字符集,甚至是中文的密碼就無法破解。爲什麼密碼長度超過14位也無法破解呢,因爲NTLM-hash只支持到14位,目前還沒有突破的方法。只要你認真閱讀過本文,我相信你已經能破解絕大部分的Windows系統密碼hash了,當然如果管理員用了組策略限制某個用戶的密碼有限期限爲24小時,而第二天又自動啓用另一個隨機的密碼,那破解密碼就完全沒有意義了(曾在美國某服務器遇到過這種變態級的管理員)。Windows下的密碼就差不多說完了,那Linux下的系統密碼又如何破解呢?其實更加簡單(曾經在Ubuntu8.10下用john秒殺了我自己的密碼),不過不在本文討論範圍之內,希望有興趣的朋友自己去嘗試。可能這篇文章會讓不少朋友頭疼,因爲這裏面介紹的軟件沒有一個是中文的!這說明了什麼問題呢?國內與國外的技術還是有一個實際性的差距!其實有些軟件也有漢化版,爲什麼不選用呢?漢化版大多數不乾淨,而且如果你是一個自強的技術人員的話,不可以連一點點英文都不會,如果你對英文軟件感覺頭疼,呵呵,還需要加強英語水平哦(雖然我自己的英語水平都很爛-_-別說我崇洋媚外啊,好東西就是要學習嘛)。不需要你英語多少級,但最起碼你得明白軟件上寫的是什麼意思,能讀懂部份英文技術文檔,從中獲取自己所需要的技術細節,從而達到加強自身的目的!本文僅作技術交流,切勿用於非法用途,否則後果自負,如果你沒有條件破解,也可以把hash郵件發我郵箱([email protected]),可以免費代爲破解^-^。
(文章中涉及到的工具PwDump7.exe、GetHashes.exe、aio.exe、SAMInside.exe、LC5、Cain、Ophcrack、Proactive Password Auditor、Ophcrack XP Special Tables.torrent、Ophcrack Vista Special NTHASH Table.torrent、函數C代碼已經收錄在光盤中)

發佈了2 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章