我们如何缓解 Windows 机器下未修补的漏洞“AtomBombing”代码注入?

信息安全 视窗 脆弱性 注射
2021-08-15 10:12:48

被称为Atombombing的未修补漏洞能否通过执行程序绕过安全系统malicious.exe,还是有多种注入恶意代码的方法?

缓解 Windows 机器下未修补漏洞的最佳实践是什么?

Securityweek报道,无法修补代码注入漏洞:

用户的问题是 AtomBombing 无法修复——这是 Windows 的工作方式。由于没有机会打补丁,解决方案是其他形式的缓解措施。

3个回答

据我猜测(不完全确定):

未修补的名为 Atombombing 的漏洞能否仅通过执行恶意.exe 程序绕过安全系统,还是有多种注入恶意代码的方法?

首先我们必须考虑原子轰炸是如何工作的:

它通过在 Windows Atom 表中注入一些恶意代码来工作。Atom 表是一种表,任何程序都可以在其中“保存”一些数据字符串以供以后使用或与任何其他应用程序共享。

因此,它使任何潜在的攻击者都有机会将此方法用作劫持或特权升级向量,但不能用于直接攻击或入侵。

为什么?好吧,除非使用另一个漏洞/错误,否则只能在本地修改 Atom 表。这意味着:只有当你已经进入时,你才能在原子表中添加一些东西来注入恶意代码。

所以,有多种方法可以利用这个漏洞,但是,当你已经进入时(使用malicious.exe,利用另一个漏洞进入系统,然后使用 Atombombing 进行权限提升等)。

缓解 Windows 机器下未修补漏洞的最佳实践是什么?

Microsoft 团队修补此问题的唯一方法是删除 Atom 表,或添加许多额外的安全措施。

防御这种威胁的最简单方法是在使用它之前检查任何保存的原子数据(在程序上)和/或任何安全系统/程序/模块不断查看这些原子条目。

解决这个问题的方法是使用一个定期检查 Atom 表条目的软件,寻找恶意代码。这可能会被一些反恶意软件(或防病毒)公司添加。

您可以查看这些文章以获取更多信息:

其他评论忘记了什么。如果攻击者运行到实际上来自管理员的帐户,则攻击者可以从非特权上下文(无管理员权限)提升到特权上下文(管理员权限)。这称为 UAC 绕过。

攻击

正如您所料,这种攻击涉及代码注入技术,例如 AtomBombombing(但实际上任何其他方法,即使是简单的 CreateRemoteThread 也可以使用)。

这分两步完成。首先要做的是,有效地将代码注入以用户模式运行的某些进程。有一些易受攻击的进程,但我将讨论explorer.exe哪个也是最稳定的。这个过程与其他过程不同,它很特别,因为它有很多用途。这就是为什么它有一些特殊的特权。例如,可以提升 COM IFileOperation 接口;这意味着它将以某种类似管理员的权限运行。这可能看起来没用,因为您只能写入具有管理员权限的文件。但事实并非如此!因为您可以使用它来执行另一次攻击;DLL 劫持。这是第 2 步。基本上你会放置你的evil.dll,它可能嵌入在evil.exe,进入自动提升过程所在的同一位置;自动提升的程序或进程是一旦执行将自动获得管理员权限的程序。很快,这是由 Microsoft 完成的,因为这些程序必须具有这些权限才能正确运行并执行诸如自动化任务之类的事情。最后,我们将执行该程序,该程序将加载evil.dll然后自动提升,从而授予攻击者代码管理员权限。

减轻

微软过去曾尝试通过将 .dll 文件列入白名单和类似技术来修补第二步,但它们失败了,因为在某些情况下我们可以通过替换现有的 .dll 文件轻松绕过它。

第一步根本不会打补丁。微软还没有修补 CreateRemoteThread 等其他注入方法,他们为什么要修补 Atombombing?这将需要巨大的努力和对操作系统的大量修改,而这很可能不会发生。防止这种情况发生的唯一方法是从资源管理器等程序中删除这些特殊权利,但似乎这也不会发生。所以基本上它依赖于 AV 来检测恶意程序是否会尝试使用任何方法注入代码。

您可以在此处查看上述漏洞利用的 POC

编辑:我忘记了问题的一些要点。因此,这是防止原子轰炸成功的技术方法: -API 挂钩:防病毒解决方案可能会拦截并扫描所有修改原子表的尝试。函数 GlobalAddAtom() 和 GlobalGetAtomName() 是用于执行此攻击的函数。他们可以拦截调用并扫描将要添加到 Atom 表中的数据,搜索关键字或更可能尝试分析数据(如果它是 shellcode)。

对这次攻击的快速回顾在我的脑海中点击了以下几点:

第一点

受害者必须逃跑evil.exe才能被利用。即使攻击者以某种方式说服受害者运行evil.exe,由于这种攻击的性质,evil.exe也只能将代码注入在与正在运行的相同安全上下文中evil.exe运行的进程中。因此,仅通过使用此攻击就不会提升权限。(也许说服受害者以evil.exe管理员身份运行?如果受害者已经被说服运行它,这并不太难)

第二点

需要代码注入,因为evil.exe可能会因可疑活动而被防病毒软件阻止。因此,代码被注入到合法进程中。但是,浏览器和其他应用程序也不在防病毒白名单中。当恶意活动的第一来源是网络时,为什么 AV 会信任浏览器?只有我见过的白名单进程svchost.exe和其他系统进程。现在,攻击需要一个可更改的线程来注入代码。但是在系统进程(在用户安全上下文中运行)中获得一个可变线程是很困难的。但同样,并非不可能。将 shellcode 注入正常进程也可以。所以这种攻击还是有可能的。

第三点

这次攻击的核心是ROP链没有检查如何实现 ROP 链的详细信息,但现在大多数进程都启用了 ASLR。

减轻

我看到的可能缓解措施是安装 EMET。EMET 甚至监视低级别的VirtualAlloc函数以查找可能的 ROP。我自己没有检查过,但我很确定 EMET 会阻止这次攻击的 ROP 链。