当Windows服务器遇见“隐形钥匙”:rcmd.VBS的另类控制力
在当前的网络环境中,Windows架构的服务器凭借其易于上手的特点,依然占据着相当大的市场份额。但众所周知,易用性与安全性常常难以兼得,Windows系统丰富的功能背后,也伴随着相对较多的漏洞,这使得它成为许多安全研究的焦点。今天,我们要探讨的,并非那些常见的漏洞扫描工具,而是一款风格独特的Windows服务器控制软件——rcmd.VBS。
别看它只是一个用VBScript脚本语言编写的小文件,体积轻巧,不足18KB,但其蕴含的功能却足以让人侧目。远程重启服务器、开关Telnet服务、修改远程桌面端口、清理系统日志、查看并结束进程……这些通常需要复杂操作或专用软件才能实现的功能,它都能办到。感兴趣的朋友可以从指定地址(https://81.heibai.net:81/download/show.php?id=3879)获取其压缩包。需要说明的是,这款工具主要适用于Win2000 Pro/Server、Win XP以及Win2003等平台。接下来,我们就逐一揭开它的面纱。
首先得搞清楚它的运行机制。rcmd.VBS本身并非可执行文件,它需要依赖Windows系统自带的脚本宿主程序——cscript.exe来解析执行。其标准调用格式非常清晰:
cscript rcmd.vbs 服务器IP 用户名 密码
理论说再多也不如实际操作来得直观。我们的目标是获得对远程服务器的控制权,而第一步,自然是建立连接。
假设我们已经通过某些方式(这不在本文详细讨论范围内),获得了目标服务器(例如IP为218.22.123.26)的一个合法账户:用户名为“vbs”,密码为“123456”。那么,真正的行动就从这里开始。
入侵第一步:使用rcmd.vbs连接远程服务器
打开系统的“运行”对话框,输入“CMD”进入命令提示符窗口。接着,在命令行中输入以下指令:
cscript e:\vbs\rcmd.vbs 218.22.123.26 vbs 123456
这里的“e:\vbs\”是rcmd.vbs文件在你本地机器上的存放路径。命令执行后,cscript.exe会开始解析脚本并尝试连接。如果一切顺利,屏幕会显示“Conneting 218.22.123.26....OK!”的提示(如图一所示),这标志着连接已成功建立。紧随其后的,是一个简洁的命令功能列表。
这个列表通过数字代号来对应不同的操作:
- 0 – 退出脚本
- 1 – 远程开启或关闭Telnet服务器
- 2 – 远程修改终端服务器端口
- 3 – 远程删除所有日志(系统、应用、安全日志)
- 4 – 获取服务器系统信息
- 5 – 列出服务器进程
- 6 – 删除服务器进程
- 7 – 远程执行DOS命令
- 8 – 远程重启服务器
有个细节需要提前注意:很多杀毒软件会将此类脚本工具误判为病毒,因此,在客户端执行操作前,可能需要暂时关闭病毒防火墙。
连接建立只是开始,要想深入控制服务器,开启一个远程登录通道是更直接的方法。
入侵第二步:远程开启telnet服务器
在连接成功的“CMD>”提示符下,输入数字“1”。这个指令用来切换Telnet服务的状态。如果目标服务器的Telnet服务原本是关闭的,程序会先后显示“Querying state of telnet server....OK!”和“Changeing state....OK!”,然后提示“plese enter the ntlm:”,要求你选择NTLM身份验证方式。
Windows系统提供了三种NTLM验证选项,分别用数字代表:
- 0 – 不使用NTLM身份验证
- 1 – 先尝试NTLM,失败再用用户名密码
- 2 – 只使用NTLM身份验证(系统默认)
这里我们输入“2”(如图二所示)。接着,程序会提示“plese enter the port:”,输入Telnet默认端口“23”。成功执行后,你会看到一串提示,其中最关键是最后一句:“Now, you can try: telnet 218.22.123.26 23, to get a shell.” 这意味着,现在你已经可以通过Telnet登录这台服务器了。
当然,当你需要关闭Telnet服务时,同样输入“1”,程序会自动检测并将其停止。
除了Telnet,对于管理员偏爱的远程桌面(终端服务),这款工具也能做点手脚。修改掉其广为人知的默认端口,在某种程度上,就等于给自己留了一把“专属钥匙”。
入侵第三步:远程修改终端服务器端口
在“CMD>”下输入数字“2”。程序会询问新的端口号,例如输入“1234”(需确保该端口未被占用)。确认后,工具会远程修改服务器注册表中的两个关键项:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp” 和 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” 下的PortNumber数值。
操作完成后,系统通常会提示需要重启才能生效(如图三所示)。其原理简单直接,就是通过脚本远程操作注册表。
既然已经拿到了相当程度的控制权,那么“管理”一下服务器上正在运行的程序,似乎也顺理成章。
入侵第四步:远程杀掉服务器进程
结束进程的第一步是找到它。输入数字“5”,服务器上当前的进程列表便会呈现出来。找到目标进程及其对应的PID(进程标识符)。例如,发现一个CMD.exe进程的PID是“179676”。
接着,输入数字“6”,在“plese enter the process’s id:”提示后,输入这个PID值“179676”。回车之后,该进程便会从服务器上消失(如图四所示)。
操作完成,痕迹清理是必不可少的一环。Windows完善的日志系统记录着一切,而rcmd.vbs为此提供了便捷的方案。
入侵第五步:远程清空所有日志
在“CMD>”提示符下输入数字“3”。几乎是瞬间,系统便会反馈:“Clearing all logs....OK! All logs ha ve been cleared Successfully!”。这样一来,系统日志、应用程序日志和安全日志都被清空,操作痕迹得以隐匿。
全部操作结束后,输入“0”即可安全退出程序。
值得一提的是,rcmd.vbs还具备远程执行DOS命令、重启服务器以及获取系统信息等功能。尽管其中部分功能(如远程执行DOS命令无法直接回显结果)尚有完善空间,但考虑到它仅仅是一个VBS脚本,能够实现如此多的远程控制功能,已实属不易。其各项功能的使用方法都与此前提及的类似,简单直接,对于感兴趣的研究者而言,不失为一个值得把玩和分析的对象。
