Windows系統密碼破解全攻略(hash破解)

來源:互聯網
上載者:User

作者: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郵件發我郵箱(436270@qq.com),可以免費代為破解^-^。
(文章中涉及到的工具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代碼已經收錄在光碟片中)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.