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)定期杀毒,杀毒软件在一定程度上能够防范一些已知的病毒,因此勤杀毒,勤看日志,在确认系统被入侵后,一定要仔细彻底地做一遍系统的安全检测。