iOS安全攻防(十九):基於指令碼實現動態庫注入

發表於2014-03-07

MobileSubstrate可以幫助我們載入自己的動態庫,於是開發者們謹慎的採取了對MobileSubstrate的檢索和防禦措施。

那麼,除了依靠MobileSubstrate幫忙注入dylib,還有別的攻擊入口嗎?

gfbfghrg20140221221506046

理理思路,條件、目的很明確:
1)必須在應用程式啟動之前,把dylib的環境變數配置好
2)dylib的位置必須能被應用程式放問到
3)最後再啟動應用程式

regergerg20140221221640500

啊哈,原汁原味,走bash!

在點選應用程式圖示–>程式啟動這個過程中,在我們看來程式是被動執行的。為了讓特定功能的指令碼被執行,我們可以把指令碼改成應用程式二進位制的名字偽裝成應用程式,讓系統呼叫啟動。在指令碼中,配置好dylib,然後再手動啟動真的應用程式,假裝什麼也沒發生,揮一揮衣袖不帶走一片雲彩~

將真的支付寶程式改名為oriPortal:

將待執行的指令碼改名為支付寶:

指令碼程式碼:

 

結果不盡人意,失敗了……fdbdfbd20140221221850218

錯誤資訊如下:

efwefwefg20140221221939968

在開啟某個加密資訊時出了錯誤,大概猜一下應該是類似加密簽名校驗的步驟,但是我們無法去了解其中詳細的操作到底是什麼樣的,沒關係,那麼就把原始的可執行檔案環境全部給他造出來,因為檢驗檔案屬性肯定不會帶著路徑資訊的。

備份一份Portal.app目錄Portal_ori.app,修改指令碼為:

執行支付寶app驗證一下,
好訊息是,在iOS6上,成功載入了動態庫wq.dylib
壞訊息是,在iOS7上,失敗了,錯誤資訊如下:

rgergerg20140221222151125

應該是因為iOS7的沙盒機制升了級,把我們這套小把戲攔在門外了……regergeg20140221222248750

那又怎麼樣,麵包總會有的~

相關文章