为了让 Windows 系统和其他 Microsoft 产品能够更安全、更稳定,因此 Microsoft 会不定期在其网站上推出最新的更新程序供用户下载与安装,而用户可以通过以下方式来取得这些程序:
然而以上两种方式对企业内部来说,都可能会有以下缺点。
WSUS 是一个可以解决上述问题的产品,企业内部可以通过 WSUS 服务器集中从 Microsoft update 网站下载更新程序,并且在完成这些更新程序的测试工作,确定对企业内部计算机没有不良影响后,在通过网管审批程序,将程序部署到客户机上。本段文字简述来自 利用WSUS部署更新程序
Sytem:Windows Server 2012 R2 Standard x64
Domain: rcoil.me
一路点击默认即可。
此时等待安装完成即可,后续选择 WSUS 配置向导继续配置即可,详细安装过程请参考以下链接。
安装步骤参考:wsus服务器搭建和客户端设置
打开更新服务,进行几个必要配置。
同步过程。
在 Default Domain Policy 做一个影响全域计算机的自动更新策略,也可以新建个 GPO。
步骤1:在组策略管理控制台 (GPMC) 中,浏览到默认的 Default Domain Policy的 GPO,然后单击“编辑”。
步骤2:在 GPMC 中,依次展开“计算机配置”—>“策略”—>“管理模板”—>“Windows 组件”—>“Windows 更新”。
步骤3:根据自己的需求分别设置“配置自动更新”、“指定 Intranet Microsoft 更新服务位置”、“自动更新检测的频率”、“对于已登录用户的计算机,计划的自动更新安装不执行重新启动”、“允许自动更新立即安装”
步骤4:gpupdate /force 更新组策略,同时也可以顺便去域用户机器手动更新组策略。
默认情况下,在 WSUS 控制台中是无法查看状态报告的,如果想正常的查看状态报告,需要一些插件和功能的支持,这个自行解决。
WSUS 由三个基本组成
WSUS 在安装的时候提供了 2 种可选择的 数据库类型:SQL Server数据库
和 WID
。默认情况下使用 WID,该数据库仅用命名管道进行连接访问(文中有例子),该数据库也可以看作是一个轻量级的 SQL Server数据库,其中 SQL命令都是相同的。
该数据库包含了 WSUS 的元数据更新、部署日志、客户端机器信息、客户端配置信息等关系表。但是由于有统一的触发器对数据进行检测,所以插入的野生数据可能会被拒绝。
从注册表项中可以获取更新服务器地址、更新频率、提高非管理员等等等。
在客户端上确定 WSUS 地址
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
reg query "HKLM\SOFTWARE\Microsoft\Update Services\Server\setup" /v SqlDatabaseName reg query "HKLM\SOFTWARE\Microsoft\Update Services\Server\setup" /v SqlServerName
在这里就遇到一个问题,在连接 Windows内部数据库的时出现无法连接的情况,使用管理员权限即可。
sqlcmd.exe -S "np:\\.\pipe\MICROSOFT##SSEE\tsql\query" # 2008
sqlcmd.exe -S "np:\\.\pipe\MICROSOFT##WID\tsql\query" # 2012以后
```
详细过程参考以下链接:
us-15-Stone-WSUSpect-Compromising-Windows-Enterprise-Via-Windows-Update
更新是必要的修补安全漏洞的方式
通过网络获取安全的代码执行
内核启动程序
特权服务和其他代码
那我估计大概或许可以这样做:
在这一过程,获取相关请求数据及扩展元数据,其实要想做 MITM,需要去了解一下这里的 SOAP协议,这个协议的内部交流是没有认证的。
客户端与 WSUS 的认证是依靠 SSL,所以说没有使用 SSL的可以做 MITM。
在更新过程中,更新包
以下是做 MITM 的示意图
过程也很简单,因为我们的程序充当了中间人,传话内容随意更改:
连接数据库,方便之后修改数据;
准备个自定义 XML 文件,写上更新的先决条件,用于被下载更新的可执行文件及其参数;
使用数据库的存储过程以添加新的更新基础数据
创建更新包
客户端发起更新请求
将请求内容进行拦截,并且修改成自个儿的。
审批和更新部署
假设使用 psexec.exe,但是 psexec 本身的安全性也是个问题,现在多数 AV 程序都将其标记为 恶意软件。嘤嘤嘤。
PsExec.exe /accepteula cmd /c whoami > c:\whoami.txt
在元数据中则为
0x05 利用工具
Black Hat USA 2015
认识的,当时的 SUSpect – Compromising the Windows Enterprise via Windows Update 议题演示很是亮眼。Paul Stone(@ pdjstone)和来自 Context 的 Alex Chapman 明确指出,WSUS 默认使用的是 HTTP 协议,并没有SSL,所以任何人都可以对更新过程进行中间人攻击,以提供恶意的更新包。但是这个更新包必须是有 Microsoft 签名。但是这个也很好解决:SysInternals 的 PsExec 允许攻击者从已签名的 Windows 二进制文件执行任意 Windows 命令。0x06 WSUS 建议
0x07 参考
Windows Server 2012 R2下补丁服务器部署与配置
us-15-Stone-WSUSpect-Compromising-Windows-Enterprise-Via-Windows-Update
WSUS pendu — Romain Coltel, Yves Le Provost
SSTIC2017-Article-wsus_pendu-coltel_le-provost