實驗所屬系列:作業系統安全
實驗物件: 本科/專科資訊保安專業
相關課程及專業:資訊網路安全概論、計算機網路
實驗時數(學分):2學時
實驗類別:實踐實驗類
實驗目的
1、瞭解Windows2000/XP/Server 2003系統密碼的加密機制及其脆弱性;
2、學會使用Windows本地密碼破解工具來破解密碼跟審計密碼的安全性;
3、瞭解設定健壯的Windows口令,以及配置強壯的密碼策略的必要性。
預備知識
Windows NT 系統密碼儲存的基本原理
SAM(Security Accounts Manager 安全賬戶管理器)是Windows NT 核心作業系統,包括Windows2000/XP/Server 2003/Vista/7的使用者賬戶資料庫,所有使用者的登入名及口令等相關資訊都儲存在這個檔案中。系統在儲存sam資訊之前對sam資訊進行了壓縮處理,因此,sam檔案中的資訊不可讀取。此外,在系統執行期間,sam檔案被system賬號鎖定,即使是administartor賬號也無法開啟。sam資料庫位於登錄檔HKLM\SAM\SAM下,受到ACL保護,可以使用regedt32.exe開啟登錄檔編輯器並設定適當許可權檢視SAM中的內容。SAM資料庫在磁碟上就儲存在%systemroot%system32\config\目錄下的SAM檔案中,在這個目錄下還包括一個security檔案,是安全資料庫的內容,兩者有較少的關係。SAM資料庫中包括所有組,賬戶的資訊,包括密碼HASH、賬戶的SID等。
Windows系統在SAM中採用了兩種密碼的加密機制,所以,在sam檔案中儲存著兩個口令字,一個是LanMan版本的雜湊值(LM),另一個是NT版本的雜湊值(NTLM)。
◆ LanMan 雜湊演算法(LM)
LanMan雜湊演算法處理使用者口令的過程是:將使用者口令分成兩半,每一半都是7個字元(不足7個字元的以0x00補齊),然後分別對這另個口令進行加密,最後將加密後得到的雜湊值串連在一起,得到最終的LM雜湊值。
◆ NT雜湊演算法(NTLM)
密碼雜湊有兩部分組成:一部分是通過變現DES演算法,使用密碼的大寫OEM格式作為金鑰(分成2個KEY,每個KEY7位元組,用0補足14個位元組),通過DESECB方式獲得一個128位的金鑰,加密特殊字串"KGS!@#$%"獲得一個16位元組長度的值。另一部分則是使用MD4對密碼的UNICODE形式進行加密獲得的一個雜湊。
從上述LM演算法流程來看,可以發現LM安全性上的幾點不足:
1)LM演算法將14個位元組的密碼分為兩組分別進行加密,使得兩組密文可以分別破解,並且明文空間從95^14減少到了95^7;
2)LM演算法不區分密碼的大小寫字元,使得明文空間從95^7減少到69^7;
3)LM演算法不像其他雜湊演算法一樣包含隨機的初始向量IV,使得用空間換取時間的字典攻擊(如彩虹表)等成為可能,2^43的明文空間使用彩虹表最多隻需幾個小時便能破解。
雖然LM非常不安全,但Windows為了保持前後相容性,是許多以前支援LM認證的經典應用不至於突然不能使用,所以LM扔存在於相當Windows各種版本的作業系統中,不過Vista/7已經預設不使用LM儲存賬戶密碼雜湊。
NTLM雜湊的安全性較LM有所提升,因為其明文空間擴充套件到了95^128,採用暴力破解的時間複雜度大大增加。但是NTLM雜湊和LM雜湊一樣,都沒有在演算法中包含隨機資料(salt),所以仍然會受到字典攻擊。但由於NTLM的明文空間較大,其欄位佔用的空間也會呈幾何級數增長(NTLM的彩虹表大小為200G左右,而LM的彩虹表只需幾百兆即可),破解時間自然也較LM要長很多。
SAM的匯出方法
SAM檔案系統執行時受到保護,僅對是可讀寫的system,所以在系統執行時不能將SAM檔案複製出來,必須使用別的系統啟動才能複製SAM檔案。
SAM檔案的獲取方法大致有一下四種:
◆ 通過物理接觸主機,啟動其他作業系統來獲取windows分割槽上的SAM檔案。
◆ 獲取%SystemRoot%\repair\sam檔案。
◆ 使用pwdump等工具從登錄檔中匯出SAM雜湊值,轉儲成類似與UNIX系統的password格式檔案。
◆從網路中嗅探分析SMB報文,從中獲取密碼雜湊字串。
在Windows NT 4.0 SP3 之前,所有的密碼雜湊是以非常簡單的DES加密來實現安全儲存,DES的金鑰只是從使用者賬戶的SID來匯出的,所以只需要SAM檔案便能破解加密的雜湊。
但是在NT 4.0 SP3 之後的版本中,Windows引入了SysKey,並且在2000之後作為預設執行的加密手段。所以要破解經過SysKey加密的SAM雜湊,必須要先從system檔案中匯出boot key,然後利用MD5匯出hashed boot key,再用hashed boot key匯出RC4 key,用此RC4 key 便能解密出和Windows NT的 SAM中一樣的雜湊密文。最後用NT中的解密手段即可獲得能夠進行字典攻擊的密碼雜湊。
SAMInside破解軟體
SAMInside 為一款俄羅斯人出品的密碼破解軟體,支援Windows NT/2000/XP/Server 2003/Vista/7等作業系統,主要用來恢復Windows的使用者登入密碼。與一般的Windows密碼破解軟體有所不同的是。多數的Windows密碼恢復軟體都是將Windows使用者密碼重置,比如Passware Kit 系列中的Windows Key 等等。SAMInside 則是將使用者密碼以可閱讀的明文方式破解出來,而且SAMInside可以使用分散式方式攻擊方式同時使用多臺計算機進行密碼的破解,大大提高破解速度。
SAMInside的離線使用方式需要sam檔案盒syskey檔案匯入後才能進行破解,而線上方式則可以直接從本機獲取,可以從LSASS程式直接匯入所需要的資訊,然後對指定的使用者進行破解即可。
實驗環境
學生實驗主機:WindowsXP。
實驗目標伺服器:無。
網路環境:區域網。
實驗內容和步驟
開啟 Windows 實驗臺,執行 WindowsXP 系統。
1. 首先檢視本地主機的密碼策略。
在"開始"選單中開啟"執行"對話方塊,輸入"secpol.msc"開啟"本地安全策略編輯器"。
1)禁用"密碼必須符合複雜性要求"。
2)設定"密碼長度最小值":8位以上。
然後訪問"安全設定" -->"本地策略"-->"安全選項",然後再右側找到"網路安全:不要在下次更改密碼是儲存LAN Manager的雜湊值"的設定,確認或更改其為"禁用"(預設為“禁用”)。
2. 在本地計算機中新建一個使用者。密碼設定為8-14的隨機純數字組合,如使用者名稱為“test”,密碼為“13678954376”。
可開啟一個命令提示符,輸入如下命令直接新增使用者。
net user test 13678954376 /add
當然,也可以通過控制皮膚中的使用者賬戶元件來新增新使用者併為其設定密碼。
3. 開啟一個命令提示符,進入實驗工具目錄中的“pwdump7”,執行Pwdump7.exe後即可直接顯示本地計算機上所有使用者及其密碼雜湊值(包括LM雜湊值和NTLM雜湊值)。
上述輸出的使用者資訊基本格式如下:
“使用者名稱:安全相對錶示符(RID):LM雜湊:NTLM雜湊”
接著,我們使用如下命令將上述使用者雜湊資訊儲存到磁碟上的“C:\sam.txt”檔案中去。
注:這裡的sam.txt 檔案要注意一下,直接輸入是不對的,要在前面pwdump跑出來的使用者資訊複製貼上成sam.txt的文字文件進行儲存
4. 進入實驗工具目錄中的“SAMInside2.6.1”,雙擊執行SAMInside程式(SAMInside.exe),顯示主介面如下所示。
5. 點選選單項:“File”——>“Import From PWDUMP -file ……”。然後選擇前面儲存的本機使用者密碼雜湊檔案“C:\sam.txt”,點選“開啟”按鈕返回主介面。
6. 在“User”欄中僅選擇我們剛才新增的臨時使用者(“如“test”)。
7. 點選選單項“Audit”,確認勾選“LM-Hash Attack”,確認勾選“Brute-force Attack”,即暴力破解方式。
8. 點選選單項“Service”->“option”,在左側選擇“Brute-force Attack”,然後在右側定製暴力破解的字符集。
為了保證實驗的時間,因此我們在前面新增得的臨時測試使用者的密碼為8-14位的隨機純數字組合,所以我們在這裡僅選擇[0...9]字符集,點選“oK”按鈕後回到主介面。再點選“Audit”選擇“Start attack”開始暴力破解。破解後顯示的使用者LM-password即為之前設定的使用者密碼。
實驗到這裡就成功了,歐耶!!
越努力越幸運,諸君共勉~~