一、序
無(wú)論是逆向分析還是漏洞利用,我所理解的攻防博弈無(wú)非是二者在既定的某一階段,以高維的方式進(jìn)行對(duì)抗,并不斷地升級(jí)維度。比如,逆向工程人員一般會(huì)選擇在Root的環(huán)境下對(duì)App進(jìn)行調(diào)試分析,其是以root的高權(quán)限對(duì)抗受沙盒限制的低權(quán)限;在arm64位手機(jī)上進(jìn)行root/越獄時(shí),ret2usr利用技術(shù)受到PXN機(jī)制的約束,廠商從修改硬件特性的高維度進(jìn)行對(duì)抗,迫使漏洞研究者提高利用技巧。
下文將在Android逆向工程方面,分享鄙人早期從維度攻擊的角度所編寫(xiě)的小工具。工具本身可能已經(jīng)不能適應(yīng)現(xiàn)在的攻防,“授人以魚(yú)不如授人以漁”,希望能夠給各位讀者帶來(lái)一些思路,構(gòu)建自己的分析利器。
二、正
0x00 自定義Loader
早期Android平臺(tái)對(duì)SO的保護(hù)采用畸形文件格式和內(nèi)容加密的方式來(lái)對(duì)抗靜態(tài)分析。隨著IDA以及F5插件地不斷完善和增多,IDA已經(jīng)成為了逆向人員的標(biāo)配工具。正因如此,IDA成為了畸形文件格式的對(duì)抗目標(biāo)?;畏绞綇臏p少文件格式信息到構(gòu)造促使IDA加載crash的變化正應(yīng)證了這一點(diǎn)。對(duì)此,鄙人研究通過(guò)重建文件格式信息的方式來(lái)讓IDA正常加載。
在完成編寫(xiě)修復(fù)重建工具不久之后,鄙人在一次使用IDA的加載bin文件時(shí),猛然意識(shí)到畸形文件格式的對(duì)抗目標(biāo)是IDA對(duì)ELF文件的加載的默認(rèn)loader。既然防御的假象和維度僅僅在于默認(rèn)loader,那么以自定義的loader加載實(shí)現(xiàn)高維攻擊,理論是毫無(wú)敵手的。
那如何來(lái)實(shí)現(xiàn)IDA自定義loader呢?
以Segment加載的流程對(duì)ELF文件進(jìn)行解析,獲取和重建Section信息(參看上面所說(shuō)貼子)。
把文件信息在IDA中進(jìn)行展示,直接調(diào)用對(duì)應(yīng)的IDAPython接口
實(shí)現(xiàn)加載bin文件的py代碼見(jiàn)文末github鏈接,直接放置于IDA/loaders目錄即可。由于早期少有64位的安卓手機(jī),加載腳本僅支持arm 32位格式,有興趣讀者可以改寫(xiě)實(shí)現(xiàn)全平臺(tái)通用。不同ndk版本所編譯文件中與動(dòng)態(tài)加載無(wú)關(guān)的Section不一定存在,注釋相應(yīng)的重建代碼即可。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26
