Windows Script Host在渗透测试中的安全性影响分析

5 人参与

在企业内部网络的安全评估过程中,Windows Script Host(WSH)常被忽视,却是攻击链中的关键节点。它本身是 Windows 系统自带的脚本执行引擎,支持 JScript、VBScript 等语言,几乎在所有受支持的版本中默认开启,这为渗透测试提供了“低门槛”入口。

WSH 的攻击面为何被放大

安全研究者发现,WSH 的两大特性最容易被滥用:其一是可以直接通过 cscript.exewscript.exe 执行本地脚本;其二是脚本本身可以调用 COM 对象,进而实现文件操作、网络请求甚至进程注入。换句话说,只要攻击者在目标机器上落下一个 .js.vbs.wsf 文件,便可以在不触发 UAC 的前提下完成横向移动或提权。

渗透测试常见利用路径

  • 利用钓鱼邮件或共享文件夹投放恶意 .vbs,受害者双击即触发 wscript.exe
  • 通过 PowerShell 的 Invoke-Expression 直接调用 cscript.exe //B //Nologo payload.js,实现内存马。
  • 借助 WMI 远程执行 cscript.exe,在无交互的系统上植入持久化脚本。
  • 利用注册表的 HKCUSoftwaremicrosoftWindowsCurrentVersionRun 写入 cscript.exe 启动项,实现开机自启。

防御与检测要点

从防御角度看,禁用 WSH 并非唯一方案,关键在于监控其异常行为。安全团队可以通过以下手段提升可视性:

  • 在 EDR 中创建基于进程路径的规则,捕获 cscript.exewscript.exe 的异常参数组合。
  • 审计注册表写入 RunRunOnce 项,尤其是指向脚本解释器的值。
  • 使用 PowerShell 脚本对网络流量进行嗅探,检测是否有 http://https:// 的外部资源被 WSH 拉取。

案例剖析:利用 MSHTA 结合 WSH 的双层马

一次红队演练中,团队先通过公开的 FTP 服务器放置一段 .wsf,受害机器的用户在浏览器中打开链接后,MSHTA 自动下载并执行该脚本。脚本内部调用 WScript.shell 对象,进一步启动 cscript.exe 运行隐藏的 JScript 负载,最终在内存中写入 PowerShell 逆向 shell。整个过程没有任何可执行文件落盘,传统的文件完整性监控几乎捕捉不到。

该案例说明,WSH 本身的“合法”特性正是攻击者的隐蔽利器。只有在检测层面同时关注脚本解释器的调用、COM 对象的滥用以及异常的网络行为,才能在渗透测试的早期阶段发现潜在风险。

参与讨论

5 条评论
  • 绣工董

    这玩意儿默认开真的坑,上次内网就被搞了

    回复
  • 西瓜头少女

    有人试过禁用WSH后业务系统炸了吗?

    回复
  • 淘气猴子

    感觉企业里根本不敢关,一堆老脚本依赖

    回复
  • 铁锈诗人

    刚用EDR抓到wscript.exe连外网,原来还能这么玩

    回复
  • Mossy Moor

    是不是只要限制Run注册表项就能防住大部分?

    回复