概述
这篇文章将解释如何在 Windows 上找到似乎没有人在寻找的提权漏洞,因为很容易找到一堆。在解释了如何找到它们之后,我将介绍一些可以以不同方式部分缓解问题的防御措施。但我希望看到的变化是开发人员开始以我描述的方式寻找这些漏洞,以便他们一开始就停止引入它们。
当我们第一次发布 CERT BFF时,针对内存损坏漏洞进行概念验证利用的通常过程是:
- 对目标进行模糊测试,直到您控制了指令指针。
- 使用BFF string minimization找出哪些字节可用于存储您的 shellcode 。
- 根据需要使用 ROP 来修改程序流,以便它执行您的 shellcode。
使用 CERT BFF从 Start 到 PoC 通常相对简单 。随着时间的推移,利用内存损坏漏洞的门槛越来越高。这可能归因于多年来发生的两件事:
- 发布软件的各方增加了模糊测试。
- 在软件及其运行的平台中增加了漏洞利用缓解措施。
我最近研究了一种漏洞发现技术,这让我想起了早期的 BFF 日子。无论是发现漏洞的难易程度,还是利用漏洞的难易程度。事实上,这个概念是如此微不足道,以至于我对它在发现漏洞方面的成功程度感到惊讶。就像直接从使用 BFF 进行模糊测试到有效利用的想法随着时间的推移变得越来越不可行一样,我希望使用这种技术可以轻松找到更少的唾手可得的果实。
在这篇文章中,我将分享我的一些发现以及过滤器本身,用于使用 Sysinternals Process Monitor (Procmon) 查找权限提升漏洞。
这个概念
在 Windows 平台上安装软件时,它的某些组件可能会以特权运行,而与当前登录系统的用户无关。这些特权组件通常采用两种形式:
- 已安装的服务
- 计划任务
我们如何在 Windows 系统上实现权限提升?每当特权进程与非特权用户可能影响的资源进行交互时,这就为特权升级漏洞打开了可能性。
要找什么
检查可能会受到非特权用户影响的特权进程的最简单方法是使用进程监视器过滤器,该过滤器根据以下属性显示操作:
- 不存在的文件或目录。
- 具有提升权限的进程。
- 非特权用户可写的位置。
检查 1 和 2 可以在 Process Monitor 中轻松实现。检查 3 稍微复杂一些,如果我们将工具限制为严格限制使用 Process Monitor Filter 可以完成的工作,可能会导致一些误报。但是我创建了一个过滤器 ,它似乎在使权限提升漏洞非常明显方面做得很好。
使用过滤器
使用 Privesc.PMF Process Monitor 过滤器相对简单:
- 启用进程监视器启动日志(选项 → 启用启动日志)
- 重新启动并登录
- 运行进程监视器
- 出现提示时保存引导日志