加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

那么,什么是Windows Atom表?

发布时间:2020-12-14 02:52:42 所属栏目:Windows 来源:网络整理
导读:安全领域一直在讨论一种名为“原子轰炸”的新代码注入技术(见 Injection Attack Description和 Information Security Stack Exchange Question).简单地说,攻击者可以使用原子表来存储可执行代码. 值得关注的是,全局原子表功能存在于所有版本的Windows中,并且
安全领域一直在讨论一种名为“原子轰炸”的新代码注入技术(见 Injection Attack Description和 Information Security Stack Exchange Question).简单地说,攻击者可以使用原子表来存储可执行代码.

值得关注的是,全局原子表功能存在于所有版本的Windows中,并且是一个有意识的功能,而不是一个错误.目前尚不清楚如何通过更改Windows来缓解威胁.

Windows原子表用于什么?如果微软简单地说“那就是它,不再有原子表”,会有什么影响呢?

解决方法

TL; DR:我个人认为微软不会对全局原子表进行任何更改,因为它只是一个小问题.

原子表允许您将字符串与16位数字相关联.你给Windows你的字符串,它会给你一个数字.然后,您只需知道分配的号码即可再次检索字符串.

每个正常进程都有自己的本地原子表,但它通常是空的,不是安全问题.

有多个“全局”原子表由同一个window station中的所有进程共享.其中1个被记录,它被称为全局原子表. MSDN对tell us也很好,RegisterClipboardFormat和RegisterClass在其当前实现中也在内部使用自己的原子表.像SetProp这样的其他函数也使用原子,但我们只对利用的原子表感兴趣,并使用GlobalAddAtom函数将原子添加到该表中.

这个原子表的主要目的是充当一个简单的存储位置,以便不同的进程可以在一个名为DDE的协议中相互通信.当一个进程想要在另一个进程中向一个窗口发送一条消息时,你不能发送超过8个字节(2个参数,每个4个字节),这个空间不足以传输文件系统路径或URL.

要解决此限制,应用程序通过调用GlobalAddAtom将字符串/路径/ URL存储在公共全局原子表中. GlobalAddAtom返回应用程序可以发送给其他进程的数字.当另一个进程收到DDE消息时,它只是将数字传递给GlobalGetAtomName函数以检索字符串.

这有什么安全问题?事实证明,这种过度使用(恕我直言)利用uses全局原子表来完成该表的设计目的;将字符串从一个进程传输到另一个进程.

将代码注入到另一个过程中,你通常会调用OpenProcess得到的句柄所需的过程,VirtalAllocEx分配在这个过程中一些内存,WriteProcessMemory的填补了这一与您的代码新分配的内存终于远程线程开始执行该代码.

该漏洞利用基本上以复杂的方式调用GlobalGetAtomName(NtQueueApcThread)以避免使用WriteProcessMemory.更令人印象深刻的是它如何构建一个ROP链并使用NtQueueApcThread执行它,但这与原子表并不真正相关,原子表只是一种不寻常/聪明的传输内存的方式.

该漏洞不允许邪恶的代码来提升或以其他方式获得的特权源的过程还没有因为NtQueueApcThread不能对任何随机过程中使用,仍然需要适当的权限来访问所需的目标进程. NtQueueApcThread可能已经引起了一些反病毒公司猝不及防时,漏洞就出来了,但作为一个独立的一段代码,必须由某人首先,它无法做到对自己的伤害被执行,它必须与其他组合代码是可怕的.

微软可以删除原子表吗?不,不是真的,其他表太重要了.

他们可以删除全局原子表吗?不,它是一个文档化的API,已经超过20年,微软不喜欢打破兼容性.

然而,他们可以稍微中性化全局原子表.根据调用过程的integrity level,它们可以通过将其划分为多个隔离区来降低全局性.这不会改变有问题的漏洞,因为它无法首先访问具有更高完整性级别的进程.

如果我们假装Microsoft更改了全局原子表以使其充当每个进程表,会发生什么?

微软开始在Windows XP中脱离DDE,但在Vista / 7中却更加认真.在此Windows 8.1计算机上,Internet Explorer仍将DDE用于“在同一窗口中打开”命令,但这不是.html文件的默认动词.在注册表中搜索ddeexec以查找使用DDE处理其文件关联的所有应用程序.好的一面是,文件关联DDE仅在应用程序的实例已打开时使用.最坏的情况;双击新文件之前关闭应用程序.

DDE也可用于做其他事情,但很难说哪些应用程序和/或功能会破坏以及它们会如何破坏.

全局原子表可以用于除DDE以外的其他东西,但很难说它是多么常见.

如果全局原子表被限制为仅将其字符串共享到具有相同文件名的进程,则许多这些问题将消失,因为它通常用于与同一应用程序的其他实例进行通信.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读