iOS安全攻防(二十一):废除应用程序的ASLR特性

原文地址:http://blog.csdn.net/yiyaaixuexi/article/details/20391001


ASLR (Address Space Layout Randomization),即地址空间随机布局。大部分主流的操作系统都已实现了ASLR,以防范对已知地址进行恶意攻击。iOS从4.3开始支持ASLR,Android从4.0也支持了ASLR机制。

ASLR的存在,给iOS系统越狱造成了很大的困难,某些不完美越狱方案就是因为攻破不了或者绕不开ASLR,所以每次重新启动后地址再度随机偏移,需要重新进行越狱操作。与此同时,ASLR也给应用层攻击带来了一些困难,不同进程会造成不同的地址空间偏移,而且在运行时才可确定其偏移量,不易锁定攻击地址。


Mach-O文件的文件头会记录二进制的属性标识,有个flag叫做PIE (Position Independent Enable)。开启了PIE的二进制文件,在执行时会产生ASLR。


我们可以使用otool工具,来查看任意应用程序二进制文件的属性,以支付宝为例:

  1. otool -hv Portal  


有PIE标识,表示该程序在启动时会产生随机地址布局。


removePIE 是个去掉PIE flag的工具。

坏消息是,年久失修,它不支持iOS7。
好消息是,我们还有2个变通方法可以走。

  • 利用Theos编译removePIE
  • 改编一个Mac版的MyRemovePIE 

非越狱开发者可能不熟悉Theos,低学习成本的做法是第二种,那么让我们来改编一个Mac版的MyRemovePIE吧。
(懒得动手的可以直接到 这里下载demo)


创建一个Command Line Tool工程,






然后复制  removePIE.c 代码到main.c中,并且修改第43行:
  
  
if ( currentHeader . magic == MH_MAGIC ){ //little endian

添加iOS7的判断条件:
  
  
if ( currentHeader . magic == MH_MAGIC || currentHeader.magic == 0xbebafeca ){ //little endian



编译后生成可执行文件MyRemovePIE.

利用我们编译生成的MyRemovePIE来处理应用程序:
  1. ./MyRemovePIE Portal  




这样以后支付宝Portal再被启动执行就不会具有ASLR特性了





如何验证一下结果呢?

把处理过的Portal二进制拷贝回iPhone,启动支付宝钱包应用,然后gdb该进程,利用info sh命令查看偏移:




偏移量为0,嗯,这下就好了。一些手动处理的过程可以升级为自动了~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值