Android安全之旅系列部落格導讀

來源:互聯網
上載者:User

標籤:

    總結下近一年的學習經曆,以中國的新年為節點。時間從2015年年後到今天,2015年年末。

    首先我必須要感謝前輩的書籍和高品質的部落格。

    1、重新學習了一遍《Linux核心原始碼情景分析上下冊》,毛德操著,並記錄學習曆程,寫下了部落格。

    2、重新學習了一遍《Android系統原始碼情景分析》,羅昇陽著,並記錄從開機啟動到Home介面的展示整個流程。

    3、學習了一個小型java虛擬機器的原始碼,並調試修改原始碼中的錯誤,最後可以運行了。參考連結https://github.com/cloudsec/ajvm。

    4、學習了Dalvik虛擬機器的工作原理,參考的部落格是老羅寫的,列出來:

    1)Dalvik虛擬機器簡要介紹和學習計劃。

    2)Dalvik虛擬機器的啟動過程分析。

    3)Dalvik虛擬機器的運行過程分析。

    4)Dalvik虛擬機器JNI方法的註冊過程分析。

    5)Dalvik虛擬機器進程和線程的建立過程分析。

    6)Dalvik虛擬機器垃圾收集機制簡要介紹和學習計劃。

    7)Dalvik虛擬機器Java堆建立過程分析。

    8)Dalvik虛擬機器為新建立對象分配記憶體的過程分析。

    還有就是鄧老師最近寫的深入理解Dalvik虛擬機器,在看鄧老師的文章前,最好先看老羅的文章,老羅的文章具有系統性,鄧老師的文章是看完虛擬機器的總結,直接看鄧老師的不容易看懂。

    為了看懂Dalvik虛擬機器,最好理解java虛擬機器,不過市面上講java虛擬機器的幾乎都不涉及源碼,沒有什麼用,所以推薦大家去看看上面github實現的小型jvm,對應解釋代碼的部落格請參考http://club.alibabatech.org/article_detail.htm?articleId=6。

    我的學習思路就是多看源碼,少看理論,這可能是低手學習的比較好的途徑,高手一般願意看理論,看理論的時候代碼就已經在心裡產生了。

     5、學習Android安全,並已經寫下了幾篇文章,涉及到Android安全機制,反編譯等。

     6、下面要說重點了,從十一後就沒有更新部落格,這段時間我一直在研究Android安全,我打算接下來的三個禮拜把近期研究的成果分享出來。現在簡單的梳理一下,方便後續寫部落格。

     以下每個標題都會獨立寫成部落格。所有部落格都會給出原始碼。

     Android逆向分析

     0x00

     研究了Android加固的原理,網上大多隻給多了源碼,參考Android中的Apk的加固(加殼)原理解析和實現,但沒有說明為什麼,我從系統的源碼的角度來分析目前常用加殼脫殼的原理,使用Android2.3源碼。

    0x01

    我們在分析阿里殼子的時候,發現脫殼根本不涉及java層的代碼,可見核心脫殼的程式寫在了native層。這篇部落格中我會把所有的脫殼程式通過JNI移到native層,並在Android2.3的類比機上運行成功,並會公開原始碼。

    0x02

    講解DexClassLoader、PathClassLoader原理,adb install和開機自動時載入dex,都是通過PathClassLoader。而動態加殼脫殼則使用的是DexClassLoader。

    講解上面的整個流程,包括最佳化dex。簡單的脫殼都是在dvmDexFileOpenPartial下斷點,結合下面一篇文章你就能明白為什麼要在這個函數下斷點。

    0x03

    講解dex檔案最佳化,dex檔案解析為DexFile,運行時載入資料為ClassObject到最後啟動並執行流程。基於Android2.3源碼進行講解。

    0x04

    講解Davlik虛擬機器運行時篡改位元組碼,參考apk自我保護的一種實現方式——運行時自篡改dalvik指令。

    0x05

    阿里的殼子會用一種技巧導致反編譯dex,看到的方法都被替換為throw exception(),這是怎麼做到的,運行時又是怎麼樣動態修複的呢?在這篇文章中,我會拋磚引玉,把其中一個方法修改為throw exception(),並且在運行時動態修複。當然所有的代碼都會放在github上。

    0x06

    講解一個開源的脫殼機,DexHunter,參考從Android運行時出發,打造我們的脫殼神器。進一步理解Dalvik虛擬機器執行流程。其實就是一張圖:



    0x07

    使用ida靜態和動態調試so,網上有很多這樣的文章,為了在init_array下斷點,每個人都不一樣,其中最有效率的一個是安卓動態調試七種武器之孔雀翎-ida-pro,除了分析動態調試so,還要分析so調用函數的堆棧,方便看懂so的arm組合語言。

    0x08

    講解常用的native反調試的方法,並且講解如何通過修改so來過掉這些反調試。

    0x09

    使用ida動態調試dex的smali源碼,有兩種方式,一種是反編譯apk + eclipse中調試smali,一種是直接使用ida調用dex。

    0x0a

    講解常用的防反編譯的方式,比如通過驗證簽名,驗證是否運行在虛擬機器中等方式。這部分代碼可能在java層,也可能在native層。

    0x0b

    講解通過smali注入log或者注入方法的調用棧,來動態剖析器的運行。

    0x0c

    講解so加殼,一是對section加殼,一個是對函數加殼。參考Android逆向之旅---基於對so中的section加密技術實現so加固,Android逆向之旅---基於對so中的函數加密技術實現so加固。

    0x0d

    講解so注入和c/c++利用GOT表進行hook。參考Android中的so注入(inject)和掛鈎(hook) - For both x86 and arm。

    0x0e

    講解dex注入,參考dex注入實現詳解。

    0x0f

    講解java攔截技術,最簡單的攔截就是替換,在加殼脫殼程式中我們已經看到了。還有一種方式是通過Dalvik虛擬機器的方式,如果我們能把一個Java函數修改為Native函數,並且將nativeFunc指標設定為自訂的函數,那麼就可以實現攔截了,參考注入安卓進程,並hook java世界的方法。

    0x10

    講解從system.loadlibrary到執行init_array的流程。


    Android APP漏洞挖掘

    組件公開安全性漏洞

    Content Provider檔案目錄遍曆漏洞

    AndroidManifest.xml配置安全檢測

    Intent劫持風險安全檢測

    資料存放區安全檢測

    WebView高危介面安全檢測:webview高危介面漏洞,有漏洞利用代碼和詳細的講解。

    拒絕服務的攻擊安全檢測

    WebView明文儲存密碼漏洞

    隨機數產生函數使用錯誤

    WebView不檢驗認證漏洞

    中間人攻擊漏洞: 有漏洞代碼和詳細的講解。

    從sdcard載入dex漏洞

    Activity被劫持風險

    file跨域訪問:webview跨域訪問訪問檔案,有漏洞利用代碼和詳細的講解。

    連接埠開發:主要分析Baidu地圖和高德地圖,並有漏洞利用代碼,展示實際的效果。並且通過反編譯smali分析了為什麼漏洞利用代碼要這麼寫。

    明文儲存,明文傳輸

     

    Android系統漏洞

    0x00

    講解了Linux下ROP,參考一步一步學ROP之linux_x86篇。

    0x01

    講解了android下ROP,DEP,ASLR,Information Leak,參考一步一步學rop之android-arm-32位篇。

    0x02

    講解了cve-2014-7911,講解了Dalvik-Heap Spray,C++反編譯後代碼的利用,參考Cve-2014-7911安卓提權漏洞分析,再論CVE-2014-7911安卓序列化漏洞。

    0x03

    講解部分Android Libcutils庫中整數溢出導致的堆破壞漏洞的發現與利用,漏洞利用代碼比較複雜,只講解其中一部分。

    實際的部落格可能還有出入,我也在學習中,歡迎交流,每條回複我都會認真回。

Android安全之旅系列部落格導讀

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.