在大型网络中,由于网络环境复杂,因此服务器之间往往通过远程终端来维护和管理。这种管 理的方向不太固定,多是发散的,有的可能通过一台主机登录多台主机,有的可能通过多台主机登 录同一台主机,也可能是交叉登录。黑客在入侵网络中的一台主机后,肯定会想办法收集网络内部 或者与外部独立主机之间的远程终端登录用户名和密码,收集方法不外乎以下 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 终端服务器。
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.查看密码记录 可以直接打开 boot.dat 文件查看,也可以运行 ReadLog.bat 脚本,移动密码文件到当前目录中查 看。本例中的操作系统是 Windows Server 2003,直接通过 Radmin 的 Telnet 执行“dir boot.dat /a”命 令,查看是否有远程登录。如图 2-42 所示,boot.dat 大小为 5762 字节。使用“type boot.dat”命令可 以看到登录时间、用户、域名、密码及旧密码(显示两个密码主要用于用户更改了密码的情况)。
3.卸载 WinlogonHack 运行 Uninstall.bat 即可自动卸载该程序。如果%systemroot%\system32\wminotify.dll 文件未能删 除,可以在重启后将其删除。 |