http://topic.csdn.net/t/20060301/15/4585911.html#
先說說登入過程吧,首先聲明,winlogon.exe可不是隨意可更換的,我們更換的是GINA,而非winlogon.exe,如果處理不當,可能WINDOWS就起不來了.
在“互動式登入”過程中,Winlogon調用了GINA組檔案,把使用者提供的帳號和密碼傳達給GINA,由GINA負責對帳號和密碼的有效性進行驗證,然後把驗證結果反饋給Winlogon程式。在與Winlogon.exe對話時,GINA會首先確定Winlogon.exe的目前狀態,再根據不同狀態來執行不同的驗證工作。通常Winlogon.exe有三種狀態:
1.已登入狀態
顧名思義,使用者在成功登入後,就進入了“已登入狀態”。在此狀態下,使用者可以執行有控制許可權的任何操作。
2.已登出狀態
使用者在已登入狀態下,選擇“登出”命令後,就進入了“已登出狀態”,並顯示Winlogon案頭,而由GINA負責顯示登入對話方塊或歡迎畫面。
3.鎖定狀態
當使用者按下“Win+L”鍵鎖定電腦後,就進入了“鎖定狀態”。在此狀態下,GINA負責顯示可供使用者登入的對話方塊。此時使用者有兩種選擇,一種是輸入目前使用者的密碼返回“已登入狀態”,另一種是輸入管理員帳號和密碼,返回“已登出狀態”,但原使用者狀態和未儲存資料丟失。
////登入到原生過程
1.使用者首先按Ctrl+Alt+Del按鍵組合。
2.Winlogon檢測到使用者按下SAS鍵,就調用GINA,由GINA顯示登入對話方塊,以便使用者輸入帳號和密碼。
3.使用者輸入帳號和密碼,確定後,GINA把資訊發送給LSA進行驗證。
4.在使用者登入到原生情況下,LSA會調用Msv1_0.dll這個驗證程式包,將使用者資訊處理後產生密鑰,同SAM資料庫中儲存的密鑰進行對比。
5.如果對比後發現使用者有效,SAM會將使用者的SID(Security Identifier--安全標識),使用者所屬使用者組的SID,和其他一些相關資訊發送給LSA。
6.LSA將收到的SID資訊建立安全存取權杖,然後將令牌的控制代碼和登入資訊發送給Winlogon.exe。
7.Winlogon.exe對使用者登入稍作處理後,完成整個登入過程。
////登入到域的過程
登入到域的驗證過程,對於不同的驗證協議也有不同的驗證方法。如果網域控制站是Windows NT 4.0,那麼使用的是NTLM驗證協議,其驗證過程和前面的“登入到原生過程”差不多,區別就在於驗證帳號的工作不是在本地SAM資料庫中進行,而是在網域控制站中進行;而對於Windows 2000和Windows 2003網域控制站來說,使用的一般為更安全可靠的Kerberos V5協議。通過這種協議登入到域,要向網域控制站證明自己的域帳號有效,使用者需先申請允許請求該域的TGS(Ticket-Granting Service--票據授予服務)。獲准之後,使用者就會為所要登入的電腦申請一個會話票據,最後還需申請允許進入那台電腦的本地系統服務。
其過程如下:
1.使用者首先按Ctrl+Alt+Del按鍵組合。
2.Winlogon檢測到使用者按下SAS鍵,就調用GINA,由GINA顯示登入對話方塊,以便使用者輸入帳號和密碼。
3.使用者選擇所要登入的域和填寫帳號與密碼,確定後,GINA將使用者輸入的資訊發送給LSA進行驗證。
4.在使用者登入到原生情況下,LSA將請求發送給Kerberos驗證程式包。通過散列演算法,根據使用者資訊產生一個密鑰,並將金鑰儲存區在認證緩衝區中。
5.Kerberos驗證程式向KDC(Key Distribution Center--密鑰分配中心)發送一個包含使用者身份資訊和驗證預先處理資料的驗證服務要求,其中包含使用者認證和散列演算法加密時間的標記。
6.KDC接收到資料後,利用自己的金鑰組請求中的時間標記進行解密,通過解密的時間標記是否正確,就可以判斷使用者是否有效。
7.如果使用者有效,KDC將向使用者發送一個TGT(Ticket-Granting Ticket--票據授予票據)。該TGT(AS_REP)將使用者的密鑰進行解密,其中包含工作階段金鑰、該工作階段金鑰指向的使用者名稱稱、該票據的最大生命期以及其他一些可能需要的資料和設定等。使用者所申請的票據在KDC的密鑰中被加密,並附著在AS_REP中。在TGT的授權資料部分包含使用者帳號的SID以及該使用者所屬的全域群組和萬用群組的SID。注意,返回到LSA的SID包含使用者的存取權杖。票據的最大生命期是由域策略決定的。如果票據在活動的會話中超到期限,使用者就必須申請新的票據。
8.當使用者試圖訪問資源時,客戶系統使用TGT從網域控制站上的Kerberos TGS請求服務票據(TGS_REQ)。然後TGS將服務票據(TGS_REP)發送給客戶。該服務票據是使用伺服器的密鑰進行加密的。同時,SID被Kerberos服務從TGT複製到所有的Kerberos服務包含的子序列服務票據中。
9.客戶將票據直接提交到需要訪問的網路服務上,通過服務票據就能證明使用者的標識和針對該服務的許可權,以及服務對應使用者的標識。