你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> [原]iOS安全攻防(二十一):廢除應用程序的ASLR特性

[原]iOS安全攻防(二十一):廢除應用程序的ASLR特性

編輯:關於IOS

廢除應用程序的ASLR特性

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工具,來查看任意應用程序二進制文件的屬性,以支付寶為例:

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行:

<div>        <span>if</span><span>(</span><span>currentHeader</span><span>.</span><span>magic</span> <span>==</span> <span>MH_MAGIC</span><span>){</span> <span>//little endian</span></div>
添加iOS7的判斷條件:
<div>        <span>if</span><span>(</span><span>currentHeader</span><span>.</span><span>magic</span> <span>==</span> <span>MH_MAGIC || currentHeader.magic == 0xbebafeca </span><span>){</span> <span>//little endian</span></div>
編譯後生成可執行文件MyRemovePIE.

利用我們編譯生成的MyRemovePIE來處理應用程序:
./MyRemovePIE Portal

 這樣以後支付寶Portal再被啟動執行就不會具有ASLR特性了  如何驗證一下結果呢?

把處理過的Portal二進制拷貝回iPhone,啟動支付寶錢包應用,然後gdb該進程,利用info sh命令查看偏移:  偏移量為0,嗯,這下就好了。一些手動處理的過程可以升級為自動了~

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved