利用SeTakeOwnershipPrivilege权限攻击System Shield杀毒软件任意写入漏洞
Iolo Technologies公司的"System Shield AntiVirus and AntiSpyware"产品存在内核漏洞。这是一个由于输入缓冲区未经验证而导致的任意内存覆盖漏洞,已被分配CVE ID CVE-2018-5701。测试的产品版本为5.0.0.136,易受攻击的驱动程序"amp.sys"版本为5.4.11.1。
由于供应商在过去几周内没有回应,我决定公开此漏洞。他们的另一款产品"System Mechanic Pro"版本15.5.0.61也受此漏洞影响,因为它捆绑了与"System Shield AntiVirus and AntiSpyware"相同版本的驱动程序。不过,网站上提供了"System Mechanic Pro"的更新下载链接,可升级到17.5.0.116版本,该版本已移除易受攻击的驱动程序。
要实现任意写入,需要满足多个子程序中的一系列条件,主要反汇编截图如下所示。
为了利用此漏洞,我使用固定值0xFFFFFFFE覆盖了_SEP_TOKEN_PRIVILEGES结构。您可以通过调整偏移量来获取不同数量的权限,但使用我选择的偏移量后,结果如下所示:
|
|
查看获得的权限数量,我们可以选择其中一些进行利用:
|
|
我决定使用"SeTakeOwnershipPrivilege"权限进行利用。我的想法是获取Windows服务注册表键的所有权并具备启动它的能力。我找到的服务是"Windows Installer"服务。
具体步骤如下:
- 获取HKLM\SYSTEM\CurrentControlSet\services\msiserver注册表键的所有权
- 将"ImagePath"值更改为我们想要运行的命令或可执行文件
- 通过运行"msiexec.exe /i poc.msi /quiet"启动服务
- 恢复所有设置
这里的poc.msi实际上并不存在,但通过启动msi安装将启动服务并运行我们的命令。尝试获取交互式shell是另一个问题,因为我们必须处理"Session 0 Isolation",我还没有深入研究这个问题,因此决定使用net命令将帐户添加到本地管理员组。
漏洞利用代码可以从此处下载[zip]
@ParvezGHH
评论
Vonnie说: 2018年1月31日 晚上10:02 很好的文章 - 我在哪里可以找到易受攻击的应用程序?我检查了IOLO的网站和exploitdb,但找不到5.0.0.136版本
Parvez回复: 2018年2月1日 上午9:48 对于"System Shield AntiVirus and AntiSpyware",您需要运行下载器来下载主安装包,但然后您还需要申请许可证。最好只下载"System Mechanic Pro"并安装试用版,这会下载整个包且安装不需要许可证 http://download.iolo.net/sm/15/pro/en/iolo/trial/SystemMechanicPro_15.5.0.61.exe
Alex说: 2018年2月10日 下午5:18 你好。 感谢这个演示! 我有个问题。使用这个漏洞利用,我们可以访问winlogon.exe并打开读写内存的句柄吗? 诚挚问候,
Parvez回复: 2018年2月11日 下午2:31 是的,您可以,因为"SeDebugPrivilege"也已启用
Alex说: 2018年2月11日 晚上11:57 为什么它不能与csrss.exe一起工作? pHandle = OpenProcess(PROCESS_VM_READ, 0, 428); //我的csrss PID printf("> pHandle: %d || %s\n", pHandle, pHandle); 我得到:0 || (null)
Parvez回复: 2018年2月12日 下午12:13 它应该可以工作,很可能没有获得必要的权限
Alex说: 2018年2月12日 下午12:45 哦是的,谢谢。但是你能帮我处理"SeDebugPrivilege"吗?什么偏移量? 诚挚问候,
Parvez回复: 2018年2月12日 下午5:02 SeDebugPrivilege在此漏洞利用中已经启用,您可以做的是使用我之前的一个漏洞利用,该漏洞利用将shellcode注入到winlogon进程中。
mppo说: 2018年7月17日 上午9:07 感谢这么好的文章。我想研究这个案例,所以我下载了链接 http://download.iolo.net/sm/15/pro/en/iolo/trial/SystemMechanicPro_15.5.0.61.exe 并用IDA pro打开了amp.sys文件,但我找不到与ctl代码0x00226003相关的代码。我该如何找到它?
Parvez回复: 2018年7月17日 下午4:50 最好只对226003进行文本搜索,只会列出一个条目
mppo说: 2018年7月18日 凌晨2:33 谢谢!我在IDA搜索中找到了它的十六进制字节'03 60 22’并找到了易受攻击的函数。