- 安卓Frida逆向與協(xié)議分析
- 陳佳林
- 1384字
- 2023-09-15 17:59:15
前言
安卓操作系統(tǒng)目前在中國乃至世界范圍內(nèi)占據(jù)主流,大量互聯(lián)網(wǎng)、市政、金融、O2O、出租車等公司及部門將業(yè)務(wù)依托于App的方式交付給最終用戶,這些App真的安全嗎?前有各類爬蟲軟件對票務(wù)、市政企業(yè)個人信息等App內(nèi)容的瘋狂抓取,后有拼多多被薅數(shù)十億羊毛的事件,因此App的安全、逆向工程及自動化利用技術(shù)越來越受到App開發(fā)者的關(guān)注。
自從Frida于2014年年末問世以來,迅速在全球安全社區(qū)掀起了“Frida熱潮”,借助Frida動態(tài)修改內(nèi)存的特性實現(xiàn)了快速逆向和算法調(diào)用功能,安卓應(yīng)用安全分析和對抗技術(shù)從未像如今這樣成熟和自動化。
作為安卓應(yīng)用安全測評工程師,或者大數(shù)據(jù)平臺采集工程師,逆向研究員對于App的逆向分析研究及其算法的還原和接口調(diào)用的熱愛仿佛是刻在骨子里的。
與逆向技術(shù)的發(fā)展相對應(yīng)的是,很多大型軟件和平臺的開發(fā)者也逐漸把算法藏得越來越深,越來越難以逆向。這里面最具有代表性的是強混淆框架Ollvm和Arm層的虛擬機保護(hù)技術(shù)Vmp,前者注重增加算法本身的復(fù)雜度,后者通過增加一套中間層將算法保護(hù)起來,使得逆向工作變得更加困難,顯然,逆不出中間層也就還原不出算法。
面對這種情況我們該如何應(yīng)對呢?解決辦法是采用黑盒調(diào)用的方式,忽略算法的具體細(xì)節(jié),使用Frida把SO加載起來,直接調(diào)用里面的算法得到計算結(jié)果,構(gòu)造出正確的參數(shù),將封包傳給服務(wù)器。也可以將調(diào)用過程封裝成API暴露給同事使用,甚至搭建計算集群,加快運行速度,提高運行效率。本書詳細(xì)地介紹了基于Frida和Xposed的算法批量調(diào)用和轉(zhuǎn)發(fā)實踐,并給出了具體的案例分析。
如果App對Frida或Xposed進(jìn)行了檢測,我們還可以采用編譯安卓源碼的方式打造屬于自己的抓包沙箱。對于系統(tǒng)來說,由于App的全部代碼都是依賴系統(tǒng)去完成執(zhí)行的,因此無論是加固App在運行時的脫殼,還是App發(fā)送和接收數(shù)據(jù)包,對于系統(tǒng)本身來說App的行為都是沒有隱私的。換句話說,如果在系統(tǒng)層或者更底層對App的行為進(jìn)行監(jiān)控,App的很多關(guān)鍵信息就會暴露在“陽光”之下一覽無余。之后可以直接修改系統(tǒng)源碼,使用r0capture工具為Hook的那些API中加入一份日志,即可把處于明文狀態(tài)的包打印出來,從而實現(xiàn)無法對抗的抓包系統(tǒng)沙箱。
Frida以其簡潔的接口和強大的功能迅速俘獲了安卓應(yīng)用安全研究員以及爬蟲研究員的芳心,成為逆向工作中的絕對主力,筆者也有幸在Frida普及的浪潮中做了一些總結(jié)和分享,建立了自己的社群,與大家一起跟隨Frida的更新腳步共同成長和進(jìn)步。
本書翔實地介紹了如何安裝和使用Frida、基本的環(huán)境搭建、Frida-tools、Frida腳本、Frida API、批量自動化Trace和分析、RPC遠(yuǎn)程方法調(diào)用,并包含大量App逆向與協(xié)議分析案例實戰(zhàn),此外,還介紹了更加穩(wěn)定的框架Xposed的使用方法,以及從安卓源碼開始定制屬于自己的抓包沙箱,打造無法被繞過的抓包環(huán)境等內(nèi)容。
本書技術(shù)新穎,案例豐富,注重實操,適合以下人員閱讀:
· 安卓應(yīng)用安全工程師。
· 安卓逆向分析工程師。
· 爬蟲工程師。
· 大數(shù)據(jù)收集和分析工程師。
在本書完稿時,F(xiàn)rida版本更新到15,安卓也即將推出版本12,不過請讀者放心,本書中的代碼可以在特定版本的Frida和安卓中成功運行。
安卓逆向是一門實踐性極強的學(xué)科,讀者在動手實踐的過程中難免會產(chǎn)生各式各樣的疑問,因此筆者特地準(zhǔn)備了GitHub倉庫更新和勘誤,讀者如有疑問可以到倉庫的issue頁面提出,筆者會盡力解答和修復(fù)。筆者的GitHub:https://github.com/r0ysue/AndroidFridaSeniorBook。
最后,在這里感謝筆者的父母,感謝中科院信工所的Simpler,感謝看雪學(xué)院和段鋼先生,感謝寒冰冷月、imyang,感謝xiaow、bxl、寄予藍(lán)、白龍,感謝葫蘆娃、智障、NWMonster、非蟲,成就屬于你們。
陳佳林
2022年1月
- VMware vSphere 7.0云平臺運維與管理(第2版)
- Netty權(quán)威指南
- DevOps:企業(yè)級CI/CD實戰(zhàn)
- Android插件化開發(fā)指南
- 實用軟件工程
- AIDevOps:智能微服務(wù)開發(fā)、運維原理與實踐
- 3D打印創(chuàng)意小創(chuàng)客
- 卡爾曼濾波原理及應(yīng)用:MATLAB仿真(第2版)
- 微服務(wù)架構(gòu)原理與開發(fā)實戰(zhàn)
- 基于Pro/Engineer Wildfire的直齒圓錐齒輪虛擬設(shè)計與制造
- 鋒利的jQuery
- 深入淺出Spring Boot 3.x
- Kubernetes Operator開發(fā)進(jìn)階
- 深入理解Prometheus監(jiān)控系統(tǒng)
- 云原生應(yīng)用開發(fā)實戰(zhàn):基于.NET開發(fā)框架及Kubernetes容器編排技術(shù)