一、了解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桌面 用戶在進入登錄界面時,就進入了Winlogo