- Web滲透技術及實戰案例解析
- 陳小兵 范淵 孫立偉編著
- 2618字
- 2018-12-26 19:37:01
1.8 使用WinlogonHack獲取系統密碼
在網絡安全事件頻發的今天,很多人都在抱怨,為什么我的系統被入侵了,我的主頁被修改了,在被入侵后,我采取了一些安全加固措施,可是沒過幾天又發現系統被入侵了!分析其根本原因就是系統存在安全隱患,可能是沒有徹底清除系統后門,可能是系統的密碼一直都掌握在黑客手中,下面將全面分析遠程終端密碼的截取和防范。
1.8.1 遠程終端技術APP和遠程終端密碼泄露分析
(1)遠程終端技術APP
對于大型企業來說,一般都部署有遠程終端,微軟的服務器操作系統Windows 2008 Server中更是重點打造遠程終端。遠程終端技術APP是Windows Server 2008中新的遠程應用演示方法。在遠程連接的一些參數上進行了調整,增加了一些新的功能,據說性能也有較大提高!
(2)遠程終端密碼泄露分析
在大型網絡中,由于網絡環境復雜,因此服務器之間往往通過遠程終端來維護和管理,這種管理在方向上不太固定,多數是發散式的。有的通過一臺主機登錄多臺主機,也有的通過多臺主機來登錄同一臺主機,還有的混亂交叉登錄。黑客在入侵網絡某一臺主機后,肯定會想辦法收集網絡內部或者跟外部獨立主機之間的遠程終端登錄用戶名稱和密碼。收集方法不外乎三種:
①使用GetHashes、Pwdump等工具獲取系統的Hash密碼值,然后通過LC5以及彩虹表來進行破解,破解成功后得到系統密碼,這些密碼極有可能是遠程終端的密碼。
②在被控制計算機上安裝鍵盤記錄,通過鍵盤記錄來獲取用戶在登錄3389遠程終端過程所輸入的用戶名和密碼。這種方法有一定的限制,鍵盤記錄在遠程終端窗口最大化時有可能無法記錄遠程終端的登錄密碼。
③使用WinlogonHacK工具軟件截取遠程登錄時所輸入的正確密碼。這也是本文要重點介紹的部分。當然除了以上三種外,還有其他的一些密碼泄露途徑。
1.8.2 使用WinlogonHack工具軟件截取密碼原理
(1)Gina.dll與Msgina.dll
Gina.dll在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(加了Ms表示是微軟的,嘿嘿!)。Msgina.dll在Windows XP系統中默認大小為967,680字節(945KB),在Windows 2003中其大小為1,180,672字節(1153KB),如果不是這個大小,估計就有問題了。
(2)Msgina.dll文件被損壞和修改將導致嚴重錯誤
在dll知識庫(http://www.dofile.com/dlllibrary/msgina/)中是這樣描述的:Msgina.dll是Windows登錄認證策略相關模塊,該模塊用于完成所有用戶登錄和驗證功能,如果系統中的這個文件被修改或者破壞,將導致系統無法使用3389進行登錄,如圖1-55所示,這個系統的Msgina.dll文件就被破壞了,從而導致用戶無法遠程登錄3389終端服務器。
(3)WinlogonHack截取密碼原理
WinlogonHack通過掛鉤系統中Msgina.dll的WlxLoggedOutSAS函數,記錄登錄賬戶密碼!WinLogon初始化時會創建3個桌面。
①Winlogon桌面:主要顯示Windows 安全等界面,如你按下“Ctrl+Alt+Del”快捷鍵看所出現的登錄的界面等。
②應用程序桌面:我們平時見到的那個有我的電腦的界面。
③屏幕保護桌面:屏幕保護顯示界面。
在默認情況下,Gina.dll或者Msgina.dll顯示登錄對話框,用戶輸入用戶名及密碼。所以要獲得用戶名和密碼,則可以寫一個新的Gina.dll或者Msgina.dll,其中提供接口調用Msgina.dll的函數是WlxLoggedOutSAS。啟動就用Winlogon通知包,當有3389連上服務器時。新創建的Winlogon.exe會在登錄前加載,注冊了“Startup”的dll,Hook了函數,登錄成功后,將密碼記錄到boot.dat 文件,并取消Hook。退出3389后,dll文件即可刪除。在實現時只要Msgina.dll中WlxLoggedOutSAS函數的前五個字節:

圖1-55 Msgina.dll被損壞或者被修改導致無法遠程登錄遠程終端
mov edi,edi push ebp mov ebp,esp
關于WinlogonHack工具如何具體實現3389遠程終端密碼的截取,請查看WinlogonHack的源代碼以及程序(http://www.antian365.com/bbs/forumdisplay.php?fid=180)。
1.8.3 使用WinlogonHack獲取密碼實例
在WinlogonHack之前有一個Gina木馬主要用來截取Windows 2000下的密碼,WinlogonHack主要用于截取Windows XP以及Windows 2003 Server。
(1)執行install.bat安裝腳本
一種方法是將WinlogonHack的安裝程序文件Hookmsgina.dll、install.bat、On.reg以及ReadLog.bat復制到一個相同文件夾下面,然后在DOS提示符或者GUI界面寫直接運行install.bat即可。執行完畢后不需要重啟,當有3389登上時,自動加載dll,并且記錄登錄密碼!保存在系統System 32目錄的boot.dat文件中,另外一種方法是將所有文件都放在同一個文件夾中,然后執行install命令即可,如圖1-56所示,表示安裝正確的一些提示。
(2)查看密碼記錄
可以直接打開boot.dat文件查看,也可以運行“ReadLog.bat”腳本,移動密碼文件到當前目錄查中查看。在本例中的操作系統是Windows 2003 Server,直接通過Radmin的telnet,然后先執行“dir boot.dat /a”命令,查看是否有人進行遠程登錄,如圖1-57所示,boot.dat文件的大小為5762字節,有貨!使用“type boot.dat”可以看到記錄的登錄時間、用戶、域名、密碼以及舊密碼。出現兩個密碼主要是用于記錄用戶更改了密碼的情況。

圖1-56 遠程安裝WinlogonHack軟件截取3389登錄密碼

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

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

圖1-59 獲取3389登錄地址列表
1.8.5 防范方法探討
(1)在系統目錄查找“wminotify.dll”文件,如果發現有這個文件,則說明系統中一定安裝了WinlogonHack工具,可以通過登錄一個3389終端來測試,系統目錄下是否存在boot.dat文件,如果存在,則可以嘗試使用“Uninstall.bat”批處理來卸載它,如果還不能卸載,可以重啟后再次卸載。
(2)直接到注冊表的鍵值“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\wminotify”下進行查看,如果存在,則刪除即可。
(3)對于定制的WinlogonHack比較難于清除,一個好的辦法就是在系統安全狀態下做一次文件名稱列表備份,以后每次檢測系統時通過比較系統目前狀態下的文件列表的異同來查看。
(4)如果使用3389遠程終端登錄多臺服務器進行管理,最好在管理完畢后,及時清除3389登錄地址列表。
(5)定期殺毒,殺毒軟件在一定程度上能夠防范一些已知的病毒,因此勤殺毒,勤看日志,在確認系統被入侵后,一定要仔細徹底地做一遍系統的安全檢測。