先說(shuō)說(shuō)登錄過(guò)程吧,首先聲明,winlogon.exe可不是隨意可更換的,我們更換的是GINA,而非winlogon.exe,如果處理不當,可能WINDOWS就起不來(lái)了.
在“交互式登錄”過(guò)程中,Winlogon調用了GINA組文件,把用戶(hù)提供的賬號和密碼傳達給GINA,由GINA負責對賬號和密碼的有效性進(jìn)行驗證,然后把驗證結果反饋給Winlogon程序。在與Winlogon.exe對話(huà)時(shí),GINA會(huì )首先確定Winlogon.exe的當前狀態(tài),再根據不同狀態(tài)來(lái)執行不同的驗證工作。通常Winlogon.exe有三種狀態(tài):
1.已登錄狀態(tài)
顧名思義,用戶(hù)在成功登錄后,就進(jìn)入了“已登錄狀態(tài)”。在此狀態(tài)下,用戶(hù)可以執行有控制權限的任何操作。
2.已注銷(xiāo)狀態(tài)
用戶(hù)在已登錄狀態(tài)下,選擇“注銷(xiāo)”命令后,就進(jìn)入了“已注銷(xiāo)狀態(tài)”,并顯示W(wǎng)inlogon桌面,而由GINA負責顯示登錄對話(huà)框或歡迎屏幕。
3.已鎖定狀態(tài)
當用戶(hù)按下“Win+L”鍵鎖定計算機后,就進(jìn)入了“已鎖定狀態(tài)”。在此狀態(tài)下,GINA負責顯示可供用戶(hù)登錄的對話(huà)框。此時(shí)用戶(hù)有兩種選擇,一種是輸入當前用戶(hù)的密碼返回“已登錄狀態(tài)”,另一種是輸入管理員賬號和密碼,返回“已注銷(xiāo)狀態(tài)”,但原用戶(hù)狀態(tài)和未保存數據丟失。
////登錄到本機的過(guò)程
1.用戶(hù)首先按Ctrl+Alt+Del組合鍵。
2.Winlogon檢測到用戶(hù)按下SAS鍵,就調用GINA,由GINA顯示登錄對話(huà)框,以便用戶(hù)輸入賬號和密碼。
3.用戶(hù)輸入賬號和密碼,確定后,GINA把信息發(fā)送給LSA進(jìn)行驗證。
4.在用戶(hù)登錄到本機的情況下,LSA會(huì )調用Msv1_0.dll這個(gè)驗證程序包,將用戶(hù)信息處理后生成密鑰,同SAM數據庫中存儲的密鑰進(jìn)行對比。
5.如果對比后發(fā)現用戶(hù)有效,SAM會(huì )將用戶(hù)的SID(Security Identifier--安全標識),用戶(hù)所屬用戶(hù)組的SID,和其他一些相關(guān)信息發(fā)送給LSA。
6.LSA將收到的SID信息創(chuàng )建安全訪(fǎng)問(wèn)令牌,然后將令牌的句柄和登錄信息發(fā)送給Winlogon.exe。
7.Winlogon.exe對用戶(hù)登錄稍作處理后,完成整個(gè)登錄過(guò)程。
////登錄到域的過(guò)程
登錄到域的驗證過(guò)程,對于不同的驗證協(xié)議也有不同的驗證方法。如果域控制器是Windows NT 4.0,那么使用的是NTLM驗證協(xié)議,其驗證過(guò)程和前面的“登錄到本機的過(guò)程”差不多,區別就在于驗證賬號的工作不是在本地SAM數據庫中進(jìn)行,而是在域控制器中進(jìn)行;而對于Windows 2000和Windows 2003域控制器來(lái)說(shuō),使用的一般為更安全可靠的Kerberos V5協(xié)議。通過(guò)這種協(xié)議登錄到域,要向域控制器證明自己的域賬號有效,用戶(hù)需先申請允許請求該域的TGS(Ticket-Granting Service--票據授予服務(wù))。獲準之后,用戶(hù)就會(huì )為所要登錄的計算機申請一個(gè)會(huì )話(huà)票據,最后還需申請允許進(jìn)入那臺計算機的本地系統服務(wù)。
其過(guò)程如下:
1.用戶(hù)首先按Ctrl+Alt+Del組合鍵。
2.Winlogon檢測到用戶(hù)按下SAS鍵,就調用GINA,由GINA顯示登錄對話(huà)框,以便用戶(hù)輸入賬號和密碼。
3.用戶(hù)選擇所要登錄的域和填寫(xiě)賬號與密碼,確定后,GINA將用戶(hù)輸入的信息發(fā)送給LSA進(jìn)行驗證。
4.在用戶(hù)登錄到本機的情況下,LSA將請求發(fā)送給Kerberos驗證程序包。通過(guò)散列算法,根據用戶(hù)信息生成一個(gè)密鑰,并將密鑰存儲在證書(shū)緩存區中。
5.Kerberos驗證程序向KDC(Key Distribution Center--密鑰分配中心)發(fā)送一個(gè)包含用戶(hù)身份信息和驗證預處理數據的驗證服務(wù)請求,其中包含用戶(hù)證書(shū)和散列算法加密時(shí)間的標記。
6.KDC接收到數據后,利用自己的密鑰對請求中的時(shí)間標記進(jìn)行解密,通過(guò)解密的時(shí)間標記是否正確,就可以判斷用戶(hù)是否有效。
7.如果用戶(hù)有效,KDC將向用戶(hù)發(fā)送一個(gè)TGT(Ticket-Granting Ticket--票據授予票據)。該TGT(AS_REP)將用戶(hù)的密鑰進(jìn)行解密,其中包含會(huì )話(huà)密鑰、該會(huì )話(huà)密鑰指向的用戶(hù)名稱(chēng)、該票據的最大生命期以及其他一些可能需要的數據和設置等。用戶(hù)所申請的票據在KDC的密鑰中被加密,并附著(zhù)在A(yíng)S_REP中。在TGT的授權數據部分包含用戶(hù)賬號的SID以及該用戶(hù)所屬的全局組和通用組的SID。注意,返回到LSA的SID包含用戶(hù)的訪(fǎng)問(wèn)令牌。票據的最大生命期是由域策略決定的。如果票據在活動(dòng)的會(huì )話(huà)中超過(guò)期限,用戶(hù)就必須申請新的票據。
8.當用戶(hù)試圖訪(fǎng)問(wèn)資源時(shí),客戶(hù)系統使用TGT從域控制器上的Kerberos TGS請求服務(wù)票據(TGS_REQ)。然后TGS將服務(wù)票據(TGS_REP)發(fā)送給客戶(hù)。該服務(wù)票據是使用服務(wù)器的密鑰進(jìn)行加密的。同時(shí),SID被Kerberos服務(wù)從TGT復制到所有的Kerberos服務(wù)包含的子序列服務(wù)票據中。
9.客戶(hù)將票據直接提交到需要訪(fǎng)問(wèn)的網(wǎng)絡(luò )服務(wù)上,通過(guò)服務(wù)票據就能證明用戶(hù)的標識和針對該服務(wù)的權限,以及服務(wù)對應用戶(hù)的標識。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。