【技术原创】渗透技巧——通过WSUS进行横向移动( 二 )


文章插图
3.推送补丁
在WSUS服务器的Windows Server Update Services页面,选择指定补丁,右键点击Approve...,在弹出的对话框中选择计算机组即可
等待客户端到达补丁更新时间,即可完成补丁的推送
0x03 利用思路
如果我们能够生成一个带有Payload的补丁,就能够通过补丁进行横向移动,但是在利用上需要注意补丁文件的签名问题:Windows的补丁文件需要带有微软的签名
通常的利用方法是使用带有微软签名的程序,例如psexec,通过psexec执行命令或者添加一个管理员用户
0x04 实现工具
开源的工具有以下三个:
https://github.com/nettitude/SharpWSUS
https://github.com/AlsidOfficial/WSUSpendu
https://github.com/ThunderGunExpress/Thunder_Woosus
以上三个工具的实现原理基本相同,都是创建一个调用psexec执行命令的补丁,将补丁推送至指定计算机,等待目标计算机更新补丁
创建补丁的操作需要连接SQL数据库,依次实现以下操作:
ImportUpdate
PrepareXMLtoClient
InjectURL2Download
DeploymentRevision
PrepareBundle
PrepareXMLBundletoClient
DeploymentRevision
1.创建补丁
SharpWSUS在创建补丁时需要注意转义字符,命令示例:
这条命令将会在Updates的Security Updates页面下创建WSUSDemo,如下图

【技术原创】渗透技巧——通过WSUS进行横向移动

文章插图
2.补丁部署
将补丁部署到指定计算机组,命令示例:
这条命令会创建计算机组Demo Group,并且把win-iruj9k30gr7移动到该组下面,如下图
【技术原创】渗透技巧——通过WSUS进行横向移动

文章插图
接下来需要等待客户端安装这个补丁
3.查看补丁状态
查看补丁是否被安装,命令示例:
补丁未安装的输出如下:
【技术原创】渗透技巧——通过WSUS进行横向移动

文章插图
还有一种查看方法是查看计算机的补丁更新时间,示例命令:SharpWSUS.exe inspect
输出示例:
【技术原创】渗透技巧——通过WSUS进行横向移动

文章插图
为了便于测试,可以强制客户端更新补丁,看到新的补丁信息,如下图
【技术原创】渗透技巧——通过WSUS进行横向移动

文章插图

4.清除补丁信息
命令示例:
这条命令会删除补丁,删除添加的计算机组
在整个补丁更新过程中,WSUS服务器会将psexec.exe保存在WSUS服务器本地C:wsuswuagent.exe和C:wsusWsusContent8EFD7980D3E437F28000FA815574A326E569EB548E.exe,需要手动清除
在测试WSUSpendu时,为了便于分析细节,可以修改以下代码:
【技术原创】渗透技巧——通过WSUS进行横向移动

文章插图
命令行执行:powershell -ep bypass -f WSUSpendu.ps1 -Verbose,将会输出完整的信息
0x05 行为检测
客户端的补丁历史更新记录会保存所有的补丁安装信息:
如下图
【技术原创】渗透技巧——通过WSUS进行横向移动

文章插图
但是,攻击者如果获得了系统的管理员控制权限,可以通过命令行卸载补丁的方式清除历史更新记录,命令行卸载补丁的命令示例:
【【技术原创】渗透技巧——通过WSUS进行横向移动】查看更新:wmic qfe list brief/format:table
卸载指定更新:wusa /uninstall /kb:976902 /quiet /norestart
0x06 小结
本文介绍了通过WSUS进行横向移动的方法和实现工具,结合利用思路,给出行为检测的建议 。
参考资料:
https://www.blackhat.com/docs/us-15/materials/us-15-Stone-WSUSpect-Compromising-Windows-Enterprise-Via-Windows-Update.pdf
https://www.gosecure.net/blog/2020/09/03/wsus-attacks-part-1-introducing-pywsus/


推荐阅读