Android ROP利用技术

出发点

早期的缓冲区溢出攻击,因为当时终端都未使用ALSR缓解技术,攻击者通常会把“邪恶代码”部署在栈中,劫持PC指针后指向栈中的部署好的代码进行执行。后来为了应对这种缓冲区溢出攻击,操作系统安全厂商开发了防止数据执行(XN)缓解技术,部分弥补了冯·诺依曼计算机体系结构中数据和代码在内存未进行区分的问题,使进程虚拟空间中的数据区、栈区和堆栈区不能再执行机器代码,
这里写图片描述

从而有效的缓解了早期的缓冲区溢出攻击,但攻防双方就像军备竞赛一样不停的进步,攻击方很快的找到了对抗XN的技术。XN技术使进程的用户空间难以再找到满足条件部署“邪恶代码”的内存位置,这迫使攻击者转换了攻击思路—不再部署自己的“邪恶代码”,而是使用进程空间现存的代码来替代。例如使用进程空间中加载的各种动态链接库中的函数,更进一步在内存空间中找到“邪恶代码”所需的指令,通过一种方法串联起来执行,其实就达到最终的目的。

Ret2Lib

首先被提出突破XN机制的技术叫Return-to-library technique,简称“Ret2Lib”。该技术的核心思想:虽然堆栈中不能再部署“邪恶代码”,但进程虚拟空间中加载了各种各样的动态链接库,包括程序自己的第三方库以及操作系统平台提供的C运行时库,这些库中充斥着大量实现了各种功能的函数,攻击者可以使用这些函数来替代“邪恶代码”的功能,或者调用一些系统函数来关闭操作系统的缓解机制后再部署“邪恶代码”。

这里以溢出后调用Glibc库中的system为例,简单的描述一些Ret2Li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值