“域帳號登錄”屬於“交互式登錄”(即用戶通過相應的用戶帳號(User Account)和密碼進行登錄)的一種(另外一種為“本地登錄”)。采用域用戶帳號登錄計算機,系統通過存儲在域控制器的活動目錄中的數據進行驗證。如果該用戶帳號有效,則登錄后可以訪問到整個域中具有訪問權限的資源。 交互式登錄,系統需要以下組件: 1、winlogon.exe winlogon.exe是“交互式登錄”時最重要的組件,它是一個安全進程,負責如下工作: ◇加載其他登錄組件。 ◇提供同安全相關的用戶操作圖形界面,以便用戶能進行登錄或注銷等相關操作。 ◇根據需要,同GINA發送必要信息。 2、GINA GINA的全稱為“Graphical Identification and Authentication”——圖形化識別和驗證。它是幾個動態數據庫文件,被winlogon.exe所調用,為其提供能夠對用戶身份進行識別和驗證的函數,並將用戶的帳號和密碼反饋給winlogon.exe。在登錄過程中,“歡迎屏幕”和“登錄對話框”就是GINA顯示的。 3、LSA服務 LSA的全稱為“Local Security Authority”——本地安全授權,Windows系統中一個相當重要的服務,所有安全認證相關的處理都要通過這個服務。它從 winlogon.exe中獲取用戶的帳號和密碼,然后經過密鑰機制處理,並和存儲在帳號數據庫中的密鑰進行對比,如果對比的結果匹配,LSA就認為用戶的身份有效,允許用戶登錄計算機。如果對比的結果不匹配,LSA就認為用戶的身份無效。這時用戶就無法登錄計算機。 4、SAM數據庫 SAM的全稱為“Security Account Manager”——安全帳號管理器,是一個被保護的子系統,它通過存儲在計算機注冊表中的安全帳號來管理和用戶和用戶組的信息。我們可以把SAM看成一個帳號數據庫。對於沒有加入到域的計算機來說,它存儲在本地,而對於加入到域的計算機,它存儲在域控制器上。 如果用戶試圖登錄本機,那么系統會使用存儲在本機上的SAM數據庫中的帳號信息同用戶提供的信息進行比較;如果用戶試圖登錄到域,那么系統會使用存儲在域控制器中上的SAM數據庫中的帳號信息同用戶提供的信息進行比較。 5、Net Logon服務 Net Logon服務主要和NTLM(NT LAN Manager,Windows NT 4.0 的默認驗證協議)協同使用,用戶驗證Windows NT域控制器上的SAM數據庫上的信息同用戶提供的信息是否匹配。NTLM協議主要用於實現同Windows NT的兼容性而保留的。 6、KDC服務 KDC(Kerberos Key Distribution Center——Kerberos密鑰發布中心)服務主要同Kerberos認證協議協同使用,用於在整個活動目錄范圍內對用戶的登錄進行驗證。如果你確保整個域中沒有Windows NT計算機,可以只使用Kerberos協議,以確保最大的安全性。該服務要在Active Directory服務啟動后才能啟用。 7、Active Directory服務 計算機加入到Windows2000或Windows2003域中,則需啟動該服務以對Active Directory(活動目錄)功能的支持。 登錄到域的驗證過程,對於不同的驗證協議也有不同的驗證方法。如果域控制器是Windows NT 4.0,那么使用的是NTLM驗證協議,其驗證過程和“登錄到本機的過程”差不多,區別就在於驗證帳號的工作不是在本地SAM數據庫中進行,而是在域控制器中進行;而對於Windows2000和Windows2003域控制器來說,使用的一般為更安全可靠的Kerberos v5協議。通過這種協議登錄到域,要向域控制器證明自己的域帳號有效,用戶需先申請允許請求該域的TGS(Ticket-Granting Service——票據授予服務)。獲准之后,用戶就會為所要登錄的計算機申請一個會話票據,最后還需申請允許進入那台計算機的本地系統服務。 登錄前后,winlogon到底干了什么?如果用戶設置了“安全登錄”,在winlogon初始化時,會在系統中注冊一個SAS (Secure Attention Sequence——安全警告序列)。SAS是一組組合鍵,默認情況下為Ctrl-Alt-Delete。它的作用是確保用戶交互式登錄時輸入的信息被系統所接受,而不會被其他程序所獲取。所以說,使用“安全登錄”進行登錄,可以確保用戶的帳號和密碼不會被黑客盜取。要啟用“安全登錄”的功能,可以運行 “control userpasswords2”命令,打開“用戶帳戶”對話框,選擇“高級”。(如圖4)選中“要求用戶按Ctrl-Alt-Delete”選項后確定即可。以后,在每次登錄對話框出現前都有一個提示,要求用戶按Ctrl-Alt-Delete組合鍵,目的是為了在登錄時出現WindowsXP的GINA 登錄對話框,因為只有系統本身的GINA才能截獲這個組合鍵信息。而如前面講到的GINA木馬,會屏蔽掉“安全登錄”的提示,所以如果“安全登錄”的提示無故被屏蔽也是發現木馬的一個前兆。“安全登錄”功能早在Windows2000時就被應用於保護系統安全性。 在winlogon注冊了SAS后,就調用GINA生成3個桌面系統,在用戶需要的時候使用,它們分別為: ◇Winlogon:桌面用戶在進入登錄界面時,就進入了Winlogon桌面。而我們看到的登錄對話框,只是GINA負責顯示的。如果用戶取消以“歡迎屏幕”方式登錄,在進入 WindowsXP中任何時候按下“Ctrl-Alt-Delete”,都會激活Winlogon桌面,並顯示圖5的“Windows安全”對話框。(注意,Winlogon桌面並不等同對話框,對話框只是Winlogon調用其他程序來顯示的) ◇用戶桌面: 用戶桌面就是我們日常操作的桌面,它是系統最主要的桌面系統。用戶需要提供正確的帳號和密碼,成功登錄后才能顯示“用戶桌面”。而且,不同的用戶,winlogon會根據注冊表中的信息和用戶配置文件來初始化用戶桌面。 ◇屏幕保護桌面:屏幕保護桌面就是屏幕保護,包括“系統屏幕保護”和“用戶屏幕保護”。在啟用了“系統屏幕保護”的前提下,用戶未進行登錄並且長時間無操作,系統就會進入 “系統屏幕保護”;而對於“用戶屏幕保護”來說,用戶要登錄后才能訪問,不同的用戶可以設置不同的“用戶屏幕保護”。 在“交互式登錄”過程中, 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進行驗證(Lsa是本地安全授權服務,它從 winlogon.exe中獲取用戶的帳號和密碼,然后經過密鑰機制處理,並和存儲在帳號數據庫中的密鑰進行對比,對於未加域的計算機來說,他存儲在本地,對於加域的計算機來說,他存儲在域控制器上。)。 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、 客戶將票據直接提交到需要訪問的網絡服務上,通過服務票據就能證明用戶的標識和針對該服務的權限,以及服務對應用戶的標識。 |