MobileSubstrate 可以幫助我們加載自己的動態(tài)庫,于是開發(fā)者們謹(jǐn)慎的采取了對 MobileSubstrate 的檢索和防御措施。
那么,除了依靠 MobileSubstrate 幫忙注入 dylib ,還有別的攻擊入口嗎?
http://wiki.jikexueyuan.com/project/ios-security-defense/images/script-injection1.png" alt="sript-injection1" />
理理思路,條件、目的很明確:
1)必須在應(yīng)用程序啟動之前,把 dylib 的環(huán)境變量配置好
2)dylib 的位置必須能被應(yīng)用程序放問到
3)最后再啟動應(yīng)用程序
http://wiki.jikexueyuan.com/project/ios-security-defense/images/script-injection2.png" alt="sript-injection2" />
啊哈,原汁原味,走 bash!
在點(diǎn)擊應(yīng)用程序圖標(biāo)-->程序啟動這個(gè)過程中,在我們看來程序是被動執(zhí)行的。為了讓特定功能的腳本被執(zhí)行,我們可以把腳本改成應(yīng)用程序二進(jìn)制的名字偽裝成應(yīng)用程序,讓系統(tǒng)調(diào)用啟動。在腳本中,配置好 dylib ,然后再手動啟動真的應(yīng)用程序,假裝什么也沒發(fā)生,揮一揮衣袖不帶走一片云彩~ 將真的支付寶程序改名為 oriPortal :
mv Portal oriPortal
將待執(zhí)行的腳本改名為支付寶:
mv Portal.sh Portal
腳本代碼:
#!/bin/bash
#得到第一個(gè)參數(shù)
C=$0
#第一個(gè)參數(shù)是二進(jìn)制的絕對路徑 比如 :
#/private/var/mobile/Applications/4763A8A5-2E1D-4DC2-8376-6CB7A8B98728/Portal.app/
#截取最后一個(gè) / 之前的內(nèi)容
C=${C%/*}
#庫和二進(jìn)制放在一起
export DYLD_INSERT_LIBRARIES=${C:-.}/wq.dylib
#執(zhí)行原來APP $@ 別忘了把原來的參數(shù)保留
exec "${C:-.}"/oriPortal "$@"
結(jié)果不盡人意,失敗了……h(huán)ttp://wiki.jikexueyuan.com/project/ios-security-defense/images/script-injection3.png" alt="sript-injection3" />
錯(cuò)誤信息如下: http://wiki.jikexueyuan.com/project/ios-security-defense/images/script-injection6.png" alt="sript-injection6" />
在打開某個(gè)加密信息時(shí)出了錯(cuò)誤,大概猜一下應(yīng)該是類似加密簽名校驗(yàn)的步驟,但是我們無法去了解其中詳細(xì)的操作到底是什么樣的,沒關(guān)系,那么就把原始的可執(zhí)行文件環(huán)境全部給他造出來,因?yàn)闄z驗(yàn)文件屬性肯定不會帶著路徑信息的。
備份一份 Portal.app 目錄 Portal_ori.app ,修改腳本為:
#!/bin/bash
C=$0
C=${C%/*}
export DYLD_INSERT_LIBRARIES=${C:-.}/wq.dylib
exec "${C:-.}"/../Portal_ori.app/Portal "$@"
運(yùn)行支付寶 app 驗(yàn)證一下, 好消息是,在 iOS6 上,成功加載了動態(tài)庫 wq.dylib 壞消息是,在 iOS7 上,失敗了
錯(cuò)誤信息如下: http://wiki.jikexueyuan.com/project/ios-security-defense/images/script-injection7.png" alt="sript-injection7" />
應(yīng)該是因?yàn)?iOS7 的沙盒機(jī)制升了級,把我們這套小把戲攔在門外了……
http://wiki.jikexueyuan.com/project/ios-security-defense/images/script-injection8.png" alt="sript-injection8" />
那又怎么樣,面包總會有的~