安全攻防实战:使用winlogonhack
获取系统密码
S.S.F  simeon
摘要 
在网络安全事件频发的今天,很多人都在抱怨,为什么我的系统被入侵了,我的主页被修改了,在入侵后,我采取了一些安全加固措施,可是没过几天又发现系统被入侵了!分析根本原因就是系统仍然存在安全隐患,可能是没有彻底清除系统后门,可能是系统的密码一直都掌握在黑客手中,本文作为安天365
团队“系统口令攻击与防范”安全研究中的一个子课题,将全面分析远程终端密码的截取和防范。

一、远程终端密码泄露分析

1.最新远程终端技术APP

对于大型企业来说,一般都部署有远程终端,微软最新的服务器操作系统Windows 2008 Server
中更是重点打造远程终端。终端服务器远程APP
Windows Server 2008
中新的远程应用演示方法。在远程连接的一些参数上进行了调整,增加了一些新的功能,据说性能也有较大提高!

2.远程终端密码泄露分析

在大型网络中,由于网络环境复杂,因此服务器之间往往通过远程终端来维护和管理,这种管理在方向不太固定,多是发散。有的可能是通过一台主机登录多台主机,也有的可能是通过多台主机来登录同一台主机,也可能是混乱交叉登录,黑客在入侵网络某一台主机后,肯定会想办法收集网络内部或者跟外部独立主机之间的远程终端登录用户名称和密码。收集方法不外乎三种:
1
)使用GetHashes
Pwdump
等工具获取系统的Hash
密码值,然后通过LC5
以及彩虹表来进行破解,破解成功后得到系统密码,这些密码极有可能是远程终端的密码。
2
)在被控制计算机上安装键盘记录,通过键盘记录来获取用户在登录3389
远程终端过程所输入的用户名和密码。这种方法有一定的限制,键盘记录在远程终端窗口最大化时有可能无法记录远程终端登录密码。
3
)使用WinlogonHacK
工具软件截取远程登录时所输入的正确密码。这也是本文要重点介绍的部分。当然除了以上三种外,还有一些其它的泄露途径。

二、WinlogonHack工具软件截取密码原理

1.Gina.dllMsgina.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
WindowsXP
系统中默认大小为967,680 
字节(945K
),在Windows 2003
中其大小为1,180,672 
字节(1153K
),如果不是这个大小,估计就有问题了。

2.Msgina.dll文件被损坏和修改将导致严重错误

DLL
知识库(
)中是这样描述的:msgina.dll
Windows
登陆认证策略相关模块,该模块用于完成所有用户登陆和验证功能,如果系统中的这个文件被修改或者破坏,将导致系统无法使用3389
进行登录,如图1
所示,这个系统的Msgina.dll
文件就被破坏了,从而导致用户无法远程登录3389
终端服务器。
1 Msgina.dll
被损坏或者被修改导致无法远程登录远程终端

3.WinlogonHack截取密码原理

WinlogonHack
通过挂钩系统中的msgina.dll
WlxLoggedOutSAS
函数,记录登录账户密码!WinLogon
初始化时会创建3
个桌面:
1
Winlogon
桌面:主要显示Windows 
安全等界面,如你按下“CTRL+ALT+DEL
”快捷看所出现的登陆的界面等。
2
)应用程序桌面:我们平时见到的那个有我的电脑的界面。
3
)屏幕保护桌面:屏幕保护显示界面。
在默认情况下,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
函数的前五个字节:
mov edi,edi
push ebp
mov ebp,esp
   
关于WinlogonHack
工具如何具体实现3389
远程终端密码的截取,请查看Winlogonhack
的源代码以及程序([url]http://www.antian365.com/bbs/forumdisplay.php?fid=180[/url]
)。

三、使用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
,并且记录登录密码!保存在系统system32
目录的boot.dat
文件中,另外一种方法是将所有文件都放在同一个文件夹中,然后执行install
命令即可,如图2
所示,表示安装正确的一些提示。
远程安装WinlogonHack
软件截取3389
登录密码

2.查看密码记录

可以直接打开boot.dat
文件查看,也可以运行“ReadLog.bat
”脚本移动密码文件到当前目录查中查看。在本例中的操作系统是Windows 2003 Server
,直接通过Radmin
telnet
,然后先执行“dir boot.dat /a
”命令,查看是否有人远程进行登录,如图3
所示,boot.dat
大小为5762
字节,有货!使用“type boot.dat
”可以看到记录的登录时间、用户、域名、密码以及旧密码。出现两个密码主要是用于记录用户更改了密码的情况下。
查看密码记录boot.dat
文件

3.卸载WinlogonHack

执行“Uninstall.bat
”即可自动卸载该程序,如果“%systemroot%\system32\wminotify.dll
”文件未能删除,可以重启后删除!

四、攻击与防范方法探讨

1.攻击方法探讨

1
)定制化开发
WinlogonHack
代码是开源的,因此入侵者可以定制它,即在“lstrcat( LogPath , "\\boot.dat");
”代码中将boot.dat
换成其它一个文件,执行Winlogonhack
后,一般人员很难发觉。入侵者还可以在此基础上增加一个邮件发送功能,将记录下来的3389
远程终端用户名和密码发送到指定的邮箱,笔者在安全加固过程中就曾经碰到过具有这种功能的3389
密码截取木马软件。
2
)对WinlogonHack
软件做免杀处理
由于WinlogonHack
工具软件在网络入侵中扮演了一个重要的辅助角色,因此一些厉害的杀毒软件会自动查杀wminotify.dll
文件,如图4
所示,我在做试验时,我的avast!
杀毒软件就能查出来,作为病毒处理。因此可以通过加花指令、修改特征码等方法修改wminotify.dll
文件,使其能够绕过杀毒软件。
杀毒软件会自动查杀wminotify.dll
文件
3
WinlogonHack
在攻击中应用
WinlogonHack
工具软件主要用于截取3389
登录密码,因此在被入侵计算机上运行mstsc
后,如果发现在mstsc
的计算机地址栏目中出现有多个登录IP
地址列表,如图5
所示,那么在该计算机上就有安装WinlogonHack
软件的必要,通过它来记录在服务器上管理员所登录的3389
用户名和密码。
获取3389
登录地址列表
 

2.防范方法探讨

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

参考文献

1. WlxLoggedOutSAS [url]http://hi.baidu.com/ccyuankai/blog/item/5ef6dd[/url]80a8eeacd59023d906.html