第1章 實驗環境搭建 1
1.1 安裝工具 1
1.2 Android Studio 4
1.3 安裝安卓虛擬機 13
1.3.1 真實設備 15
1.3.2 Apktool 16
1.3.3 Dex2jar/JD-GUI 17
1.3.4 Burp Suite 18
1.4 配置安卓虛擬機 19
1.4.1 Drozer 20
1.4.2 QARK(不支持Windows) 24
1.4.3 Chrome瀏覽器的Advanced REST Client擴展程序 25
1.4.4 Droid Explorer 26
1.4.5 Cydia Substrate和Introspy 27
1.4.6 SQLite browser 28
1.4.7 Frida 30
1.4.8 易受攻擊的應用 32
1.4.9 Kali Linux 33
1.5 adb入門 33
1.5.1 檢查已連接的設備 33
1.5.2 啓動shell 34
1.5.3 列齣軟件包 34
1.5.4 推送文件到設備 35
1.5.5 從設備中拉取文件 35
1.5.6 通過adb安裝應用 35
1.5.7 adb連接故障排除 36
1.6 小結 36
第2章 安卓ROOT 37
2.1 什麼是ROOT 37
2.1.1 為什麼要ROOT設備 38
2.1.2 ROOT的好處 38
2.1.3 ROOT的壞處 39
2.2 鎖定的和已解鎖的boot loader 41
2.2.1 確定索尼設備是否已解鎖boot loader 41
2.2.2 按照供應商提供的方法解鎖索尼設備的boot loader 43
2.2.3 ROOT已解鎖boot loader的三星設備 46
2.3 官方recovery和第三方recovery 46
2.4 ROOT流程和安裝第三方ROM 49
2.5 ROOT三星Note 2手機 53
2.6 嚮手機刷入第三方ROM 55
2.7 小結 60
第3章 安卓應用的基本構造 61
3.1 安卓應用的基礎知識 61
3.1.1 安卓應用的結構 61
3.1.2 APK文件的存儲位置 63
3.2 安卓應用的組件 67
3.2.1 activity 67
3.2.2 服務 68
3.2.3 廣播接收器 69
3.2.4 內容提供程序 69
3.2.5 安卓應用的構建過程 69
3.3 從命令行編譯DEX文件 72
3.4 應用運行時發生瞭什麼 74
3.5 理解應用沙盒 75
3.5.1 一個應用對應一個UID 75
3.5.2 應用沙盒 78
3.5.3 是否有方法打破沙盒限製 80
3.6 小結 80
第4章 安卓應用攻擊概覽 81
4.1 安卓應用簡介 81
4.1.1 Web應用 81
4.1.2 原生應用 82
4.1.3 混閤應用 82
4.2 理解應用攻擊麵 82
4.3 客戶端存在的威脅 84
4.4 後端存在的威脅 84
4.5 移動應用測試與安全指南 85
4.5.1 OWASP移動應用十大風險(2014) 85
4.5.2 M1:弱服務器端控製 86
4.5.3 M2:不安全的數據存儲 86
4.5.4 M3:傳輸層保護不足 87
4.5.5 M4:意外的數據泄漏 87
4.5.6 M5:糟糕的授權和身份認證 87
4.5.7 M6:被破解的加密技術 88
4.5.8 M7:客戶端注入 88
4.5.9 M8:通過不受信任的輸入進行安全決策 88
4.5.10 M9:會話處理不當 88
4.5.11 M10:缺乏二進製文件保護 89
4.6 自動化工具 89
4.6.1 Drozer 89
4.6.2 使用Drozer進行安卓安全評估 90
4.7 識彆攻擊麵 92
4.8 QARK 94
4.8.1 以交互模式運行QARK 94
4.8.2 以無縫模式運行QARK 100
4.9 小結 102
第5章 數據存儲與數據安全 103
5.1 什麼是數據存儲 103
5.2 共享首選項 107
5.3 SQLite數據庫 110
5.4 內部存儲 111
5.5 外部存儲 113
5.6 用戶字典緩存 115
5.7 不安全的數據存儲——NoSQL數據庫 115
5.8 備份技術 118
5.8.1 使用adb backup命令備份應用數據 119
5.8.2 使用Android Backup Extractor將.ab格式轉換為.tar格式 120
5.8.3 使用pax或star工具解壓TAR文件 122
5.8.4 分析解壓內容並查找安全問題 122
5.9 確保數據安全 125
5.10 小結 125
第6章 服務器端攻擊 126
6.1 不同類型的移動應用及其威脅模型 127
6.2 移動應用服務器端的攻擊麵 127
6.3 移動後端測試方法 128
6.3.1 設置用於測試的Burp Suite代理 128
6.3.2 繞過證書鎖定 136
6.3.3 使用AndroidSSLTrustKiller繞過證書鎖定 137
6.3.4 後端威脅 139
6.4 小結 145
第7章 客戶端攻擊——靜態分析技術 146
7.1 攻擊應用組件 146
7.1.1 針對activity的攻擊 146
7.1.2 針對服務的攻擊 151
7.1.3 針對廣播接收器的攻擊 153
7.1.4 對內容提供程序的攻擊 155
7.1.5 注入測試 160
7.2 使用QARK進行靜態分析 164
7.3 小結 166
第8章 客戶端攻擊——動態分析技術 167
8.1 使用Drozer進行安卓應用自動化測試 167
8.1.1 列齣全部模塊 168
8.1.2 檢索包信息 169
8.1.3 查找目標應用的包名 170
8.1.4 獲取包信息 170
8.1.5 轉儲AndroidManifes.xml文件 171
8.1.6 查找攻擊麵 172
8.1.7 針對activity的攻擊 173
8.1.8 針對服務的攻擊 175
8.1.9 廣播接收器 176
8.1.10 使用Drozer引起內容提供程序泄漏和進行SQL注入 177
8.1.11 使用Drozer進行SQL注入攻擊 179
8.1.12 內容提供程序目錄遍曆攻擊 182
8.1.13 利用可調試的應用 184
8.2 Cydia Substrate簡介 186
8.3 使用Introspy進行運行時監控與分析 187
8.4 使用Xposed框架進行hook 191
8.5 使用Frida進行動態插樁 198
8.6 基於日誌的漏洞 201
8.7 WebView攻擊 203
8.7.1 通過file scheme訪問本地敏感資源 203
8.7.2 其他WebView問題 206
8.8 小結 207
第9章 安卓惡意軟件 208
9.1 編寫安卓惡意軟件 209
9.2 注冊權限 216
9.3 惡意應用分析 226
9.3.1 靜態分析 226
9.3.2 動態分析 232
9.4 自動化分析工具 236
9.5 小結 236
第10章 針對安卓設備的攻擊 237
10.1 中間人攻擊 237
10.2 來自提供網絡層訪問的應用的威脅 239
10.3 利用現有漏洞 243
10.4 惡意軟件 246
10.5 繞過鎖屏 247
10.5.1 利用adb繞過圖案鎖 247
10.5.2 使用adb繞過密碼或PIN碼 249
10.5.3 利用CVE-2013-6271漏洞繞過鎖屏 252
10.6 從SD卡拉取數據 252
10.7 小結 253
· · · · · · (
收起)