“怪异机器”模式:漏洞利用编程的深入剖析
1 隐式自动机与漏洞利用编程视角
隐式自动机融入目标执行环境或成为其一部分,对精心构造的输入进行处理,这属于“恶意计算”的一部分,通常是初始攻击环节,此后攻击者就能用常规手段对目标编程。构造的输入既是该自动机的程序,也是其存在的建设性证明。
从漏洞利用编程角度看,可将目标视为拥有虚拟计算架构,输入数据如同字节码,就像编译后的 Java 字节码驱动 Java 虚拟机。开发者眼中的“惰性数据”,如输入或元数据,实际上可作为对目标编程的工具,攻击者将数据视为作用于目标程序的主体。
隐式漏洞利用执行环境及其中的计算,需与原生预期计算在持续时间和效果上可靠共存。这并非易事,尤其是在利用计算线程借用的状态被其他部分同时使用的系统中,需要剖析和简化接口,找出其实现原语的意外稳定属性。
2 恢复上下文、符号和结构
为与目标进行计算组合,漏洞利用程序需引用虚拟地址空间(或其他命名空间)中的所需对象。除简单情况外,通常需要某种“名称服务”来重建缺失信息。
早期漏洞利用和 rootkit 安装脚本依赖硬编码的固定对象地址,因为当时大量目标的内存虚拟空间布局相同。随着目标多样性增加,漏洞利用技术发展为精心设计的地址空间布局重建方案,利用系统的动态链接和调试机制。
以下是一些相关技术示例:
- Cesare :通过仔细研读 ELF 标准,揭示了 ELF 链接背后的基本机制,为后续有效利用技术奠定基础。
- Mayhem :深入研究 ELF 的 .dynamic 符号的重要性和优先级,进一
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



