碳基体

奋斗在产品安全第一线的安全妹子

去处iOS应用的ASLR功能(即PIE flag)

曾在《ASLR》中介绍了address space layout random的部分功能,如main可执行文件地址随机化。(ASLR具体可参照wiki介绍)iOS 4.3开始在预装的iOS应用中部分开启ASLR功能。而本文以iOS 5.1.1上的用户自安装应用为例,介绍如何去处掉ASLR。


首先,ssh到iOS设备中,使用otool命令查看任意mach-o可执行文件头的flag,本文以Facebook应用为例,可以看到开启了PIE,PIE的特性就是ASLR

dani-2:Downloads leedani$ ssh root@10.1.xx.xx(iOS设备的ip地址)
root@10.1.35.74's password:

danimato-iPod:~ root# cd /private/var/mobile/Applications/B313FF38-2CCD-4CA8-8422-7E4E01B43A19/Facebook.app/

danimato-iPod:/private/var/mobile/Applications/B313FF38-2CCD-4CA8-8422-7E4E01B43A19/Facebook.app root# otool -hV Facebook
Facebook:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
   MH_MAGIC     ARM          9  0x00     EXECUTE    46       5100   NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE


接下来,我们使用removePIE,来使得ASLR实效,即关闭PIE,首先将removePIE拷贝到iOS设备中(removePIE源码

dani-2:Downloads leedani$ scp removePIE root@10.1.xx.xx(iOS设备的ip地址):/tmp/
root@10.1.35.74's password: 
removePIE                                     100%   23KB  22.7KB/s   00:00

然后将存放在iOS设备/tmp目录下的removePIE拷贝到待去处ASLR功能的mach-o可执行文件所在的文件夹下,以Facebook应用为例

dani-2:Downloads leedani$ ssh root@10.1.xx.xx(iOS设备的ip地址)
root@10.1.35.74's password:

danimato-iPod:~ root# cp /tmp/removePIE /private/var/mobile/Applications/B313FF38-2CCD-4CA8-8422-7E4E01B43A19/Facebook.app/ 

danimato-iPod:~ root# cd /private/var/mobile/Applications/B313FF38-2CCD-4CA8-8422-7E4E01B43A19/Facebook.app/


运行removePIE,格式为./removePIE <mach-o可执行文件名>,注意removePIE不能使用可执行文件的全路径作为参数

danimato-iPod:/private/var/mobile/Applications/B313FF38-2CCD-4CA8-8422-7E4E01B43A19/Facebook.app root# ./removePIE Facebook
loading header

backing up application binary...

binary backed up to:Facebook.bak

mach_header:cefaedfe0c00000009000000020000002e000000ec13000085802100
original flags:85802100
Disabling ASLR/PIE ...
new flags:85800100
ASLR has been disabled for Facebook


最后,我们检查去处后的结果,可以看到没有了PIE flag

danimato-iPod:/private/var/mobile/Applications/B313FF38-2CCD-4CA8-8422-7E4E01B43A19/Facebook.app root# otool -hV Facebook
Facebook:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
   MH_MAGIC     ARM          9  0x00     EXECUTE    46       5100   NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK


参考:

http://www.securitylearn.net/2013/05/23/disable-aslr-on-ios-applications/?utm_source=rss&utm_medium=rss&utm_campaign=disable-aslr-on-ios-applications

http://www.peterfillmore.com/2013/01/removepie-tool-for-disabling-aslr-on.html

https://github.com/peterfillmore/removePIE

来源:碳基体

评论