該書作者周圣韜,曾經(jīng)任職360、百度。
第1章 Android簡(jiǎn)介
Android的開放與安全 :較早的版本會(huì)有一些安全隱患,需要用戶的手機(jī)能夠及時(shí)更新。Google在Android的安全上也做了改善與補(bǔ)救措施,但是,國(guó)內(nèi)的很多Google服務(wù)無法使用,許多第三方應(yīng)用商店監(jiān)管不嚴(yán),導(dǎo)致惡意軟件泛濫的問題難以解決。
第2章 Android地下產(chǎn)業(yè)鏈分析
盈利模式: 只要有足夠的用戶,植入廣告、竊取用戶的隱私、竊取話費(fèi)等。
惡意吸費(fèi) :好奇的用戶點(diǎn)入就有可能造成扣費(fèi)。
廣告、惡意推廣 :
誘騙欺詐 :利用手機(jī)中的親朋好友求助,實(shí)施詐騙。
隱私竊取 :
安裝包分析 :打包黨,將apk反編譯后插入廣告,逆向分析獲取付費(fèi)信息等,攔截開發(fā)者的收入,重新打包進(jìn)入應(yīng)用市場(chǎng)。
Android安全的發(fā)展趨勢(shì) :系統(tǒng)級(jí)別的殺毒 ;應(yīng)用市場(chǎng)的監(jiān)管;智能硬件安全;Google官方ROM中自帶云查殺引擎。
第3章 理解Android系統(tǒng)
Android系統(tǒng)的層級(jí)架構(gòu) :應(yīng)用層 ;框架層 ;核心庫(kù)與運(yùn)行環(huán)境層 ;Linux內(nèi)核層 ;Android系統(tǒng)的分區(qū)結(jié)構(gòu)。
啟動(dòng)過程 :Boot Loader加載階段 ;加載Kernel與initrd階段;初始化設(shè)備服務(wù)階段;加載系統(tǒng)服務(wù)階段(init,pid為1,父進(jìn)程為linux kernel 0號(hào)進(jìn)程,加載init.rc啟動(dòng)核心服務(wù)) ;虛擬機(jī)初始化階段 (zygote創(chuàng)建Delvik VM,啟動(dòng)java組件系統(tǒng)服務(wù)、framework服務(wù));啟動(dòng)完成階段 (home啟動(dòng),發(fā)送ACTION_BOOT_COMPLETED)
系統(tǒng)關(guān)鍵進(jìn)程與服務(wù) :系統(tǒng)1號(hào)進(jìn)程init,ADB進(jìn)程 存儲(chǔ)類守護(hù)進(jìn)程Vold(Volume Daemon), 進(jìn)程母體Zygote(由init啟動(dòng),因?yàn)槠湫袨楹芟袷芫训膹?fù)制自身分裂的行為,故名zygote) ,服務(wù)管理器ServiceMananger, 進(jìn)程復(fù)制Android Fork,進(jìn)程間通信Binder機(jī)制, 匿名共享內(nèi)存機(jī)制Ashmem, 日志服務(wù)Logger。
APK生成 :編譯過程 ,打包過程 ,簽名優(yōu)化過程。
系統(tǒng)安全執(zhí)行邊界 :沙箱隔離機(jī)制(系統(tǒng)使用重定向技術(shù),將應(yīng)用的所有操作都放在一個(gè)虛擬的系統(tǒng)中運(yùn)行,就算有病毒也不會(huì)危害到真實(shí)的系統(tǒng)) ,權(quán)限授予機(jī)制 (API權(quán)限、文件權(quán)限、IPC權(quán)限),數(shù)字簽名機(jī)制;
系統(tǒng)的安全結(jié)構(gòu) :
Android應(yīng)用層:接入權(quán)限、代碼保護(hù)
Android框架層:數(shù)字證書
Dalvik虛擬機(jī)層:沙箱機(jī)制
用戶空間原生代碼層和Linux內(nèi)核層:Linux文件權(quán)限
Android 5.0(Lollipop)的安全架構(gòu) :加強(qiáng)型內(nèi)核SEAndroid ;安全的鎖屏 ;充分的加密 。
Android5.0安全總結(jié) :Google的很多新功能很可能被國(guó)內(nèi)的設(shè)備精簡(jiǎn),國(guó)內(nèi)Android安全的發(fā)展節(jié)奏遠(yuǎn)低于國(guó)外,國(guó)內(nèi)的Android系統(tǒng)安全比Google慢一個(gè)步伐。
第4章 Root你的設(shè)備
獲取Root權(quán)限原理 :su、sudo獲取超級(jí)權(quán)限。被root的系統(tǒng)安裝了superuser.apk,用來管理root權(quán)限。
Root思路 :刷機(jī)將su放入系統(tǒng),或,通過有root權(quán)限的進(jìn)程(adbd、rild、mtpd、vold)。
Root的分類 :臨時(shí)Root (重啟后恢復(fù)非root,還原當(dāng)前用戶的非root級(jí)別),永久Root。
Root之后 :靜默安裝 ()安裝時(shí)無需用戶干預(yù)直接安裝),刪除預(yù)裝 ,鍵盤監(jiān)控 ,短信攔截與靜默發(fā)送 ,電話監(jiān)控。
第5章 APK靜態(tài)分析 :安裝包分析也稱為逆向分析
什么是靜態(tài)分析 :不允許代碼,進(jìn)行詞法分析、語法分析、數(shù)據(jù)分析,對(duì)代碼進(jìn)行掃描。
常用分析利器 :資源逆向工具AXMLPrinter 2 ,查看源碼工具dex2jar、jd-GUI ,APK逆向工具APKTool ,Android逆向助手 ,反匯編工具IDA PRO ,超級(jí)編輯器UltraEdit。
認(rèn)識(shí)APK文件 :App的種類 (Web app, Hybrid App、Native App)
APK反編譯前結(jié)構(gòu) :一個(gè)壓縮包文件
APK反編譯后結(jié)構(gòu) :
分析DEX文件:反匯編的工具很多Dedexer、IDA PRO、dex2jar等。smali不僅提供反匯編,還提供打包反匯編代碼重新生成dex的功能。
分析SO文件 :利用反匯編工具IDA PRO等。
通過反編譯、反匯編重新打包,可以:篡改代碼邏輯 ,廣告植入與去除 ,收費(fèi)限制破解 ,應(yīng)用程序漢化。
第6章 ARM匯編速成
第7章 APK動(dòng)態(tài)分析 :通過在真實(shí)或模擬環(huán)境中執(zhí)行程序進(jìn)行分析,用于性能測(cè)試、功能測(cè)試、內(nèi)存泄漏測(cè)試等
應(yīng)用體系架構(gòu) :代碼安全分析 (apk被篡改、盜版的風(fēng)險(xiǎn),避免被反編譯、重打包),組件安全分析 (四大組件安全隱患),存儲(chǔ)安全分析 (文件安全、敏感隱私數(shù)據(jù))),通信安全分析 (敏感數(shù)據(jù)加密傳輸)
root后的設(shè)備,數(shù)據(jù)庫(kù)信息、私有目錄,都已經(jīng)不再安全
AndBug:可以進(jìn)行斷點(diǎn)調(diào)試 。是一個(gè)開源工具:使用與Android中eclipse ADT調(diào)試插件相同的接口、java線調(diào)試協(xié)議JDWP和ddms允許用戶hookDalvik的方法。可以在沒有源代碼情況下,直接對(duì)apk進(jìn)行斷點(diǎn)調(diào)試。
使用IDA Pro進(jìn)行動(dòng)態(tài)調(diào)試:使用IDA動(dòng)態(tài)調(diào)試原生庫(kù)so dex。
調(diào)試WebViewApp :WebView已知漏洞 (WebView使用JavaScriptInterface,讓遠(yuǎn)程的網(wǎng)頁(yè)通過此漏洞執(zhí)行本地命令)
HTML安全:
網(wǎng)絡(luò)釣魚:偽裝成網(wǎng)絡(luò)銀行、信用卡公司等
第8章 動(dòng)態(tài)注入技術(shù) :
java層級(jí)的hook、native層級(jí)的hook
Hook技術(shù):將自身的代碼“融入”被勾住的程序的進(jìn)程中,成為目標(biāo)進(jìn)程的一部分。
Hook原理 :linux用戶態(tài),每個(gè)進(jìn)程都有自己獨(dú)立的進(jìn)程空間,先注入到hook的進(jìn)程空間,修改其內(nèi)存中的進(jìn)程代碼,替換其過程表的符號(hào)地址。一般通過ptrace函數(shù)附加進(jìn)程,然后向遠(yuǎn)程進(jìn)程注入so庫(kù),從而達(dá)到監(jiān)控以及遠(yuǎn)程進(jìn)程關(guān)鍵函數(shù)掛鉤。
常用的Hook工具 :Xposed框架 ,CydiaSubstrate框架 ,ADBI/DDI框架
HookAndroid應(yīng)用。
Hook原生應(yīng)用程序
Hook檢測(cè)/修復(fù) :hook后的應(yīng)用毫無安全可言。如何檢測(cè)進(jìn)程是否被hook,如何修復(fù)被hook的進(jìn)程以消除安全隱患?
java層Hook檢測(cè):舉例瀏覽器應(yīng)用 ,1),查看應(yīng)用的進(jìn)程pid號(hào),比如5425,2)查看/proc下該進(jìn)程的虛擬地址空間信息。對(duì)于系統(tǒng)應(yīng)用,應(yīng)該在/system@app下,但是該應(yīng)用www.i1766.com過濾結(jié)果,有些是/data@app下,查看地址空間中對(duì)應(yīng)的dex文件有哪些是非系統(tǒng)應(yīng)用提供的。3)該進(jìn)程被附加了很多非系統(tǒng)的dex文件,這個(gè)應(yīng)用已經(jīng)被hook,存在安全隱患。
native層Hook檢測(cè):與java層Hook檢測(cè)實(shí)現(xiàn)原理一樣。查看地址空間中對(duì)應(yīng)的so文件是第三方提供的,該進(jìn)程被附加了很多非系統(tǒng)的so動(dòng)態(tài)庫(kù),這個(gè)應(yīng)用已經(jīng)被hook。
Hook修復(fù):第三方庫(kù)通過dlopen注入應(yīng)用程序進(jìn)程中,可以通過dlclose將第三方函數(shù)卸載。
第9章 應(yīng)用加固與滲透測(cè)試
防止利用系統(tǒng)組件漏洞:Activity編碼安全(exported為false、不聲明LaunchMode等);Broadcast Receiver編碼安全(設(shè)置exported為false,不添加Intent filter,處理后終止廣播);service編碼安全(exported為false,發(fā)送intent注意數(shù)據(jù)敏感性,return時(shí)不放置敏感信息,Signature permission,啟動(dòng)permission);provider編碼安全(exported為false,對(duì)包名和簽名做檢驗(yàn)等)
防止逆向:代碼混淆(proguard,可能出現(xiàn)混淆錯(cuò)誤第三方j(luò)ar調(diào)用出錯(cuò),調(diào)試定位比較痛苦);dex保護(hù)(自定義邏輯注入dex文件,加殼和去殼);so文件保護(hù)(防二次打包,可以用java簽名驗(yàn)證、md5校驗(yàn)等)
防止動(dòng)態(tài)分析:檢測(cè)運(yùn)行環(huán)境,調(diào)試環(huán)境一律拒絕運(yùn)行;so白名單機(jī)制,非本包名so一律拒絕加載。
Android滲透測(cè)試:模擬黑客的攻擊方法進(jìn)行測(cè)試。
第10章 系統(tǒng)安全措施
啟動(dòng)驗(yàn)證
磁盤加密
屏幕安全:屏幕鎖。屏幕鎖密碼/data/system/gesture.key。如果被root,刪除此文件后屏幕鎖會(huì)失效。
USB調(diào)試安全:
增強(qiáng)型內(nèi)核SELinux/SEAndroid
第11章 內(nèi)核攻擊與防護(hù)
Rootkit
本文來自:逍遙右腦記憶 http://m.yy-art.cn/dushubiji/1144530.html
相關(guān)閱讀:《 秘密花園》讀書筆記600字
教師讀書筆記摘抄精選
《愚公移山》讀書心得
三國(guó)關(guān)羽敗走麥城的故事讀書筆記
讀書筆記大全-《海鷗飛處》讀書筆記