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