Windows XP登錄方式解析

Windows XP登錄方式解析
 

平時我們在使用Windows XP時,總要先進行登錄。Windows XP的登錄驗證機制比Windows 98嚴格很多,理解並掌握Windows XP的登錄驗證機制和原理對我們來說很重要,能增強對系統安全的認識,並能夠有效預防、解決黑客和病毒的入侵。

  一、瞭解Windows XP的

  幾種登錄類型

  1. 交互式登錄

  交互式登錄是我們平常登錄時最常見的類型,就是用戶通過相應的用戶賬號(User Account)和密碼在本機進行登錄。有些網友認爲“交互式登錄”就是“本地登錄”,其實這是錯誤的。“交互式登錄”還包括“域賬號登錄”,而“本地登錄”僅限於“本地賬號登錄”。

  這裏有必要提及的是,通過終端服務和遠程桌面登錄主機,可以看做“交互式登錄”,其驗證的原理是一樣的。

  在交互式登錄時,系統會首先檢驗登錄的用戶賬號類型,是本地用戶賬號(Local User Account),還是域用戶賬號(Domain User Account),再採用相應的驗證機制。因爲不同的用戶賬號類型,其處理方法也不同。

  ◇ 本地用戶賬號

  採用本地用戶賬號登錄,系統會通過存儲在本機SAM數據庫中的信息進行驗證。所以也就是爲什麼Windows2000忘記Administrator密碼時可以用刪除SAM文件的方法來解決。不過對於Windows XP則不可以,可能是出於安全方面的考慮吧。用本地用戶賬號登錄後,只能訪問到具有訪問權限的本地資源。(圖1)


  圖1

  ◇域用戶賬號

  採用域用戶賬號登錄,系統則通過存儲在域控制器的活動目錄中的數據進行驗證。如果該用戶賬號有效,則登錄後可以訪問到整個域中具有訪問權限的資源。

  小提示:如果計算機加入域以後,登錄對話框就會顯示“登錄到:”項目,可以從中選擇登錄到域還是登錄到本機。

2. 網絡登錄

  如果計算機加入到工作組或域,當要訪問其他計算機的資源時,就需要“網絡登錄”了。如圖2,當要登錄名稱爲Heelen的主機時,輸入該主機的用戶名稱和密碼後進行驗證。這裏需要提醒的是,輸入的用戶賬號必須是對方主機上的,而非自己主機上的用戶賬號。因爲進行網絡登錄時,用戶賬號的有效性是由受訪主機控制的。


  圖2

  3. 服務登錄

  服務登錄是一種特殊的登錄方式。平時,系統啓動服務和程序時,都是先以某些用戶賬號進行登錄後運行的,這些用戶賬號可以是域用戶賬號、本地用戶賬號或SYSTEM賬號。採用不同的用戶賬號登錄,其對系統的訪問、控制權限也不同,而且,用本地用戶賬號登錄,只能訪問到具有訪問權限的本地資源,不能訪問到其他計算機上的資源,這點和“交互式登錄”類似。

  從圖3的任務管理器中可以看到,系統的進程所使用的賬號是不同的。當系統啓動時,一些基與Win32的服務會被預先登錄到系統上,從而實現對系統的訪問和控制。運行Services.msc,可以設置這些服務。由於系統服務有着舉足輕重的地位,一般都以SYSTEM賬號登錄,所以對系統有絕對的控制權限,因此很多病毒和木馬也爭着加入這個貴族體系中。除了SYSTEM,有些服務還以Local Service和Network Service這兩個賬號登錄。而在系統初始化後,用戶運行的一切程序都是以用戶本身賬號登錄的。


  圖3

  從上面講到的原理不難看出,爲什麼很多電腦文章告訴一般用戶,平時使用計算機時要以Users組的用戶登錄,因爲即使運行了病毒、木馬程序,由於受到登錄用戶賬號相應的權限限制,最多也只能破壞屬於用戶本身的資源,而對維護系統安全和穩定性的重要信息無破壞性。

  4. 批處理登錄

  批處理登錄一般用戶很少用到,通常被執行批處理操作的程序所使用。在執行批處理登錄時,所用賬號要具有批處理工作的權利,否則不能進行登錄。

  平常我們接觸最多的是“交互式登錄”,所以下面筆者將爲大家詳細講解“交互式登錄”的原理。

二、交互式登錄,系統用了哪些組件

  1. Winlogon.exe

  Winlogon.exe是“交互式登錄”時最重要的組件,它是一個安全進程,負責如下工作:

  
  ◇加載其他登錄組件。

  ◇提供同安全相關的用戶操作圖形界面,以便用戶能進行登錄或註銷等相關操作。

  ◇根據需要,同GINA發送必要信息。

  2. GINA

  GINA的全稱爲“Graphical Identification and Authentication”——圖形化識別和驗證。它是幾個動態數據庫文件,被Winlogon.exe所調用,爲其提供能夠對用戶身份進行識別和驗證的函數,並將用戶的賬號和密碼反饋給Winlogon.exe。在登錄過程中,“歡迎屏幕”和“登錄對話框”就是GINA顯示的。

  一些主題設置軟件,例如StyleXP,可以指定Winlogon.exe加載商家自己開發的GINA,從而提供不同的Windows XP的登錄界面。由於這個可修改性,現在出現了盜取賬號和密碼的木馬。

  一種是針對“歡迎屏幕”登錄方式的木馬,它模擬了Windows XP的歡迎界面。當用戶輸入密碼後,就被木馬程序所獲取,而用戶卻全然不知。所以建議大家不要以歡迎屏幕來登錄,且要設置“安全登錄”。

  另一種是針對登錄對話框的GINA木馬,其原理是在登錄時加載,以盜取用戶的賬號和密碼,然後把這些信息保存到%systemroot%\system32下的WinEggDrop.dat中。該木馬會屏蔽系統以“歡迎屏幕”方式登錄和“用戶切換”功能,也會屏蔽“Ctrl-Alt-Delete”的安全登錄提示。

  用戶也不用太擔心被安裝了GINA木馬,筆者在這裏提供解決方案給大家參考:

  ◇正所謂“解鈴還需繫鈴人”,要查看自己電腦是否安裝過GINA木馬,可以下載一個GINA木馬程序,然後運行InstGina -view,可以查看系統中GinaDLL鍵值是否被安裝過DLL,主要用來查看系統是否被人安裝了Gina木馬作爲登錄所用。如果不幸被安裝了GINA木馬,可以運行InstGina -Remove來卸載它。

  3. LSA服務

  LSA的全稱爲“Local Security Authority”——本地安全授權,Windows系統中一個相當重要的服務,所有安全認證相關的處理都要通過這個服務。它從Winlogon.exe中獲取用戶的賬號和密碼,然後經過密鑰機制處理,並和存儲在賬號數據庫中的密鑰進行對比,如果對比的結果匹配,LSA就認爲用戶的身份有效,允許用戶登錄計算機。如果對比的結果不匹配,LSA就認爲用戶的身份無效。這時用戶就無法登錄計算機。

  怎麼看這三個字母有些眼熟?對了,這個就是和前陣子鬧得沸沸揚揚的“震盪波” 扯上關係的服務。“震盪波”蠕蟲就是利用LSA遠程緩衝區溢出漏洞而獲得系統最高權限SYSTEM來攻擊電腦的。解決的方法網上很多資料,這裏就不多講了。

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服務

  如果計算機加入到Windows 2000或Windows 2003域中,則需啓動該服務以對Active Directory(活動目錄)功能的支持。


  三、登錄前後,Winlogon到底幹了什麼

  如果用戶設置了“安全登錄”,在Winlogon初始化時,會在系統中註冊一個SAS (Secure Attention Sequence——安全警告序列)。SAS是一組組合鍵,默認情況下爲Ctrl-Alt-Delete。它的作用是確保用戶交互式登錄時輸入的信息被系統所接受,而不會被其他程序所獲取。所以說,使用“安全登錄”進行登錄,可以確保用戶的賬號和密碼不會被黑客盜取。要啓用“安全登錄”的功能,可以運行“Control userpasswords2”命令,打開“用戶賬戶”對話框,選擇“高級”。(如圖4)選中“要求用戶按Ctrl-Alt-Delete”選項後確定即可。以後,在每次登錄對話框出現前都有一個提示,要求用戶按Ctrl-Alt-Delete組合鍵,目的是爲了在登錄時出現Windows XP的GINA登錄對話框,因爲只有系統本身的GINA才能截獲這個組合鍵信息。而如前面講到的GINA木馬,會屏蔽掉“安全登錄”的提示,所以如果“安全登錄”的提示無故被屏蔽也是發現木馬的一個前兆。“安全登錄”功能早在Windows 2000時就被應用於保護系統安全性。


  圖4

  在Winlogon註冊了SAS後,就調用GINA生成3個桌面系統,在用戶需要的時候使用,它們分別爲:

  ◇Winlogon桌面 用戶在進入登錄界面時,就進入了Winlogon桌面。而我們看到的登錄對話框,只是GINA負責顯示的。

  如果用戶取消以“歡迎屏幕”方式登錄,在進入Windows XP中任何時候按下“Ctrl-Alt-Delete”,都會激活Winlogon桌面,並顯示圖5的“Windows安全”對話框(注意,Winlogon桌面並不等同對話框,對話框只是Winlogon調用其他程序來顯示的)。


  圖5

  ◇用戶桌面 用戶桌面就是我們日常操作的桌面,它是系統最主要的桌面系統。用戶需要提供正確的賬號和密碼,成功登錄後才能顯示“用戶桌面”。而且,不同的用戶,Winlogon會根據註冊表中的信息和用戶配置文件來初始化用戶桌面。

  ◇屏幕保護桌面 屏幕保護桌面就是屏幕保護,包括“系統屏幕保護”和“用戶屏幕保護”。在啓用了“系統屏幕保護”的前提下,用戶未進行登錄並且長時間無操作,系統就會進入“系統屏幕保護”;而對於“用戶屏幕保護”來說,用戶要登錄後才能訪問,不同的用戶可以設置不同的“用戶屏幕保護”。

四、想登錄,也要過GINA這一關

  在“交互式登錄”過程中,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. 客戶將票據直接提交到需要訪問的網絡服務上,通過服務票據就能證明用戶的標識和針對該服務的權限,以及服務對應用戶的標識。

  七、我要偷懶——設置自動登錄

  爲了安全起見,平時我們進入Windows XP時,都要輸入賬號和密碼。而一般我們都是使用一個固定的賬號登錄的。面對每次煩瑣的輸入密碼,有的朋友乾脆設置爲空密碼或者類似“123”等弱口令,而這些賬號也多數爲管理員賬號。殊不知黑客用一般的掃描工具,很容易就能掃描到一段IP段中所有弱口令的計算機。 ---www.bianceng.cn

  所以,還是建議大家要把密碼儘量設置得複雜些。如果怕麻煩,可以設置自動登錄,不過自動登錄也是很不安全的。因爲自動登錄意味着能直接接觸計算機的人都能進入系統;另一方面,賬號和密碼是明文保存在註冊表中的,所以任何人,只要具有訪問註冊表的權限,都可以通過網絡查看。因此如果要設置登錄,最好不要設置爲管理員賬號,可以設置爲USERS組的用戶賬號。設置自動登錄的方法是:運行“Control userpasswords2”,在“用戶賬戶”窗口中取消“要使用本機,用戶必須輸入用戶名和密碼”選項,確定後會出現一個對話框,輸入要自動登錄的賬號和密碼即可。注意,這裏不對密碼進行驗證,用戶要確保密碼和賬號的正確性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章