使用winlogonhack获取系统密码

  • 来源: 51CTO 作者: xuqingzhong   2008-12-22/10:35
  •  

     

     

     

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

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

        1.最新远程终端技术APP

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

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

        在大型网络中,由于网络环境复杂,因此服务器之间往往通过远程终端来维护和管理,这种管理在方向不太固定,多是发散。有的可能是通过一台主机登录多台主机,也有的可能是通过多台主机来登录同一台主机,也可能是混乱交叉登录,黑客在入侵网络某一台主机后,肯定会想办法收集网络内部或者跟外部独立主机之间的远程终端登录用户名称和密码。收集方法不外乎三种:

        (1)使用GetHashes、Pwdump等工具获取系统的Hash密码值,然后通过LC5以及彩虹表来进行破解,破解成功后得到系统密码,这些密码极有可能是远程终端的密码。

        (2)在被控制计算机上安装键盘记录,通过键盘记录来获取用户在登录3389远程终端过程所输入的用户名和密码。这种方法有一定的限制,键盘记录在远程终端窗口最大化时有可能无法记录远程终端登录密码。

        (3)使用WinlogonHacK工具软件截取远程登录时所输入的正确密码。这也是本文要重点介绍的部分。当然除了以上三种外,还有一些其它的泄露途径。

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

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

        在DLL知识库(http://www.dofile.com/dlllibrary/msgina/)中是这样描述的: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的源代码以及程序(http://www.antian365.com/bbs/forumdisplay.php?fid=180)。

        三、使用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所示,表示安装正确的一些提示。

    图2 远程安装WinlogonHack软件截取3389登录密码

        2 .查看密码记录

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

    图3 查看密码记录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文件,使其能够绕过杀毒软件。

    图4 杀毒软件会自动查杀wminotify.dll文件

        (3)WinlogonHack在攻击中应用

        WinlogonHack工具软件主要用于截取3389登录密码,因此在被入侵计算机上运行mstsc后,如果发现在mstsc的计算机地址栏目中出现有多个登录IP地址列表,如图5所示,那么在该计算机上就有安装WinlogonHack软件的必要,通过它来记录在服务器上管理员所登录的3389用户名和密码。

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


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多