一次解决一个问题:从安全顾问到功能性利用
当你听到“利用开发”这个词时,第一反应可能是恐惧,想起那些邪恶黑客攻击系统并偷窃无辜者的新闻。然而,正如锁匠和小偷都可以利用锁具工具,利用开发也是一种可以用于伦理和不伦理目的的技能。
想象一下,如果只有攻击者会创建利用,防御者又如何能够识别他们所面对的威胁呢?网络安全是一场军备竞赛,防御能力往往来自学习如何创建利用。实际上,有一个道德利用开发者的行业正在研究一些最大的目标,比如桌面操作系统、移动设备,甚至是运行电动车的
软件,以确保在攻击者能够利用之前,漏洞可以被修补。
关键要点
- 利用开发 是一项双向技能,既可用于不道德目的也可用于保护。
- 零日漏洞 提供的时间窗口几乎为零,导致攻击者能够在补丁发布之前利用。
- 一日漏洞 在供应商发布补丁后仍会存在风险,因为许多用户未及时更新软件。
- 本文以Nimbuspwn漏洞为例,探讨如何在公开披露后的24小时内开发出一个功能完整的利用脚本。
理解一日漏洞
在这篇博客中,我们将探讨一个经常被忽视的漏洞类型——一日漏洞,或称为N日漏洞。你可能会想:“一日漏洞?我听说过零日漏洞,这是某种令人失望的续集吗?”实际上,零日和一日利用是相关的,但它们的发现和开发方式是不同的,各有各的用途。
零日漏洞是指供应商只能“零天”内进行修补的漏洞,通常是由于发现该漏洞的第三方未能及时披露。这意味着恶意行为者可以在任何修复可用之前利用这些漏洞。在大多数情况下,这些漏洞因其潜在的毁灭性影响而备受关注。
相比之下,一日漏洞则是供应商有时间进行修复的漏洞。虽然这使得一日漏洞看似没什么用,但并不是所有用户都能保持软件的完全更新,因此对一日漏洞开发的利用如果落入不法之手,可能会产生严重的后果(例如,ZeroLogon或EternalBlue)。
假设我们的一日漏洞将用于伦理目的。我们将关注在2022年4月末由微软披露的Nimbuspwn漏洞。微软发布了一份
,描述了该漏洞的根本原因及其一些利用技术;但没有提供公共利用脚本,同时缺少创建利用所需的关键实现细节。
ImmersiveLabs的CTI团队致力于为这一漏洞创建利用脚本,并开发了一些有用工具,帮助蓝队员检测他们系统上是否存在漏洞被利用的情况。继续阅读以发现如何将原始的微软顾问信息转化为一个功能完整的利用脚本(在Ubuntu20.04上测试),仅用了公开披露后的24小时。
主要来源:您最好的朋友
在开发一日利用时,诱惑可能是快速触发脆弱的代码路径,规划利用路径,甚至开始编写利用脚本。时间是编写一日利用的关键因素,自然会渴望迅速进入看似最有效的部分。然而,首先放慢速度,专注于你所掌握的漏洞的主要来源通常是最好的做法。
想想看,在大多数情况下,这些顾问/博客/主题线程是你了解漏洞工作原理的唯一具体信息,通常是由发现漏洞和开发利用的人编写的。这样的资源还有什么能够比这更好呢?
在此情况下,漏洞的主要来源是微软发布的顾问。值得庆幸的是,这份顾问详细描述了漏洞的工作原理以及实现本地权限提升所需的利用路径。这为我们提供了开发PoC的良好基础。
通过对顾问的初步阅读,我们得到了以下关键核心信息以进入下一阶段:
- 漏洞是在networkd-dispatcher中发现的,这是systemd的一个调度守护进程。
- 此守护进程通过D-Bus进行工作,D-Bus是许多Unix操作系统中存在的一种进程