內容大鋼
隨著移動互聯網的持續發展和移動智能終端的不斷普及,面向我國龐大的移動互聯網產業以及基於《網路安全法》《數據安全法》《個人信息保護法》等法律法規針對移動應用持續合規的網路安全監管要求下,移動安全攻防這一課題逐漸被產業界和學術界所關注。基於我國核心信息技術應用創新的大背景,本書分4篇向讀者呈現了移動安全攻防領域進階階段的逆向理論與實戰案例,並配套有立體化資源,包括電子資料、教學課件、源代碼與視頻教程等。
本書從Android虛擬機的技術原理開始,著重解析了Java層Dalvik虛擬機和ART虛擬機的Android系統中的運行機制,從而引出Native層的Native開發和ARM彙編語言等更底層的技術棧。在攻防全局觀上主要介紹ATT & CK框架的技戰術,將攻防過程中的技術點映射到矩陣中,ATT & CK框架中的移動安全攻防框架可以作為移動安全攻防的全局指導。通過對移動應用第一代加固殼到第三代加固殼的技術原理的剖析及技術實現的講解,可以看到攻防對抗逐漸走向底層的原生層,通過學習基於OLLVM的加固殼開發以及VMP加固殼的代碼實現,全面掌握主流應用加固的技術方案。通過對真實世界實網攻防中遭遇的惡意程序、APT攻擊樣本等進行逆向分析,詳細介紹其中的技術原理和代碼實現,以幫助讀者從一線攻防案例中獲取攻防對抗經驗。
本書適合作為高等院校網路空間安全學科及相關專業中移動安全、軟體逆向、代碼安全等專業課程的教材,也可以作為網路安全研究員與移動應用開發者的自學參考書。
目錄
基礎篇
第1章 Android虛擬機
1.1 Dalvik虛擬機
1.1.1 DVM的特點
1.1.2 DVM虛擬機啟動流程
1.1.3 DVM虛擬機運行過程
1.2 odex文件
1.3 ART虛擬機
1.3.1 ART虛擬機的創建
1.3.2 ART虛擬機的啟動
1.4 dex2oat
1.4.1 概述
1.4.2 Oat文件格式介紹
1.4.3 ART文件介紹
1.4.4 Oat與ART文件關係
1.5 ART虛擬機類的鏈接與初始化
1.6 本章小結
第2章 Native層
2.1 Native開發
2.1.1 JNI介紹
2.1.2 JNI數據類型轉換
2.1.3 Native調用Java代碼
2.2 ARM彙編
2.2.1 ARM彙編介紹
2.2.2 ARM彙編數據類型
2.2.3 ARM寄存器
2.2.4 ARM模式與Thumb模式
2.2.5 ARM指令
2.3 Native Hook
2.3.1 Got/ Plt Hook
2.3.2 inline Hook
2.4 本章小結
第3章 iOS基礎知識
3.1 iOS包結構分析
3.1.1 CodeSignature文件夾
3.1.2 lproj文件夾
3.1.3 xcent文件
3.1.4 mobileprovision文件
3.1.5 info, plist文件
3.2 iOS應用啟動過程分析
3.3 本章小結
理論篇
第4章 ATT & CK框架
4.1 ATT&CK框架背景介紹
4.2 ATT&.CK框架的使用
4.3 本章小結
第5章 ATT&CK for mobile框架
5.1 初始訪問技術
5.2 執行戰術
5.3 持久化戰術
5.4 許可權提升戰術
5.5 防禦規避
5.6 憑證訪向戰術
5.7 發現戰術
5.8 橫向移動戰術
5.9 收集戰術
5.10 命令控制戰術
5.11 滲濾技術
5.12 衝擊戰術
5.13 本章小結
第6章 LLVM編譯框架
6.1 LLVM概論
6.1.1 LLVM介紹
6.1.2 LLVM功能
6.1.3 LLVM的主要子項目
6.1.4 LLVM周邊項目
6.1.5 LLVM目錄結構
6.2 LLVM安裝與編譯
6.2.1 LLVM的下載與安裝
6.2.2 LLVM的編譯
6.2.3 LLVM的使用
6.2.4 編寫LLVM Pass
6.3 IR入門
6.4 本章小結
實戰篇
第7章 整體加固實戰
7.1 第一代加固技術簡介
7.1.1 早期靜態?
7.1.2 後期動態載入殼
7.2 APK包的結構
7.2.1 APK打包過程
7.2.2 軟體安裝過程
7.2.3 軟體啟動流程
7.2.4 AndroidManifest, xml
7.2.5 resource, arsc
7.3 原理介紹
7.4 加固流程
7.5 代碼實現
7.6 本章小結
第8章 指令抽取加固實戰
8.1 第二代加固技術簡介
8.2 Dex文件結構
8.3 指令抽取恢復介紹
8.4 加固流程
8.5 代碼實現
8.6 本章小結
第9章 so文件加固
9.1 第三代加固技術
9.1.1 Dex2C
9.1.2 VMP
9.2 upx
9.3 50文件格式
9.8.13 2位EI文件解析
9.3.26 4位E文件解析
9.4 upx的編譯
9.5 本章小結
第10章 基於OLLVM的加固殼開發
10.1 OLLVM基礎
10.2 OLLVM編譯與使用
10.3 OLLVM殼原理
10.3.1 指令替換混淆源碼分析
10.3.2 控制流平展混淆源碼分析
10.3.3 偽造控制流混淆源碼分析
10.4 本章小結
第11章 VMP 加固技術
11.1 .VMP 加固原理
11.2 Dex VMP
11.2.1 Dex VMP介紹
11.2.2 Dvm虛擬機的解釋流程
11.2.3 Advmp功能與源碼解析
11.3 ARM VMP
11.3.1 ARM VMP介紹
11.3.2 編寫ARM VMP解釋器
11.3.3 ARM VMP的加固流程
11.4 本章小結
第12章 iOS逆向工具的使用
12.1 硬?工具
12.1.1 Clutch
12.1.2 CrackerXI
12.2 Classdump工具
12.3 Tweaks工具
12,3.1 Theos的前置環境
12.3.2 安裝Theos
12.3.3 編寫Tweaks程序
12.3.4 Tweaks程序的編譯與安裝
12.4 Cycript工具
12.4.1 Cycript的安裝使用
12.4.2 使用Cycript分析應用
12.4.3 Cycript腳本
12.5 本章小結
第13章 進階逆向技巧
13.1 使用Frida繞過SSL-Pinning
13.1.1 HTTPS協議簡介
13.1.2 SSL-Pinning技術
13.1.3 繞過證書綁定
13.1.4 使用SSLContext導人自定義證書
13.2 終極抓包腳本
13.2.1 抓包的攻防
13.2.2 r0capture抓包原理
13.2.3 r0capture抓包實踐
13.3 Frida追蹤雨數調用
13.3.1 Frida Trace腳本解析
13.3.2 Frida Trace腳本使用
13.4 本章小結
案例篇
第14章 Android惡意軟體分析
14.1 遠程操控手機App分析
14.1.1 配置MSF框架
14.1.2 生成Android payload
14.1.3 逆向分析木馬
14.2 分析鎖機勒索軟體樣本
14.2.1 勒索軟體的初步分析
14.2.2 分析危險行為
14.2.3 分析軟體釋放出來的應用
14.2.4 鎖機軟體的解除
14.3 可自我擴散的手機簡訊蠕蟲分析
14.3.1 蠕蟲病毒分析
14.3.2 分析木馬的本體
14.3.3 分析結果
14.4 本章小結
第15章 APT攻擊案例分析
15.1 APT簡介
15.2 KONNI遠控木馬病毒
15.2.1 KONNI惡意行為分析
15.2.2 KONNI源碼逆向分析
15.2.3 遠程控制機制解析
15.3 GravityRAT間諜軟體
15.3.1 GravityRAT惡意行為分析
15.3.2 GravityRAT源碼逆向分析
15.4 Anubis木馬
15.4.1 Anubis木馬的功能與發展
15.4.2 Anubis樣本行為逆向分析
15.5 本章小結
參考文獻