Android安全攻防實戰

Android安全攻防實戰

Android是目前最為主流的移動設備作業系統,占據了全球近84%的市場份額。因此,Android系統中的安全問題也就變得十分重要。

內容提要

Android是目前最為主流的移動設備作業系統,占據了全球近84%的市場份額。因此,Android系統中的安全問題也就變得十分重要。

本書通過大量極富針對性的實驗,通過對常見的安全場景中解決方案的講解,幫助讀者全面掌握各種攻-防實用技能。因而,本書的實用性也很強,即使是一時不能完全理解其中的技術原理的新手,根據作者給出的方法,也能解決實踐中遇到的大部分問題;而高手也能從中借鑑到一些好的做法。

全書共分九章,涵蓋了基本的Android開發環境和工具;app組件之間及它們與系統的互動方式;Android安全評估框架“drozer”;app及Android原生代碼的逆向技巧;各類漏洞的利用及防護方式;使用SSL在網路通信中進行更有效的驗證;利用第三方代碼庫或Android中新增的特性,通過加密和在開發時使用設備管理策略,加固app等內容。

《Android安全攻防實戰》寓教於練,可供安全技術研究人員,軟體開發人員,電子取證人員學習使用,對於各類高等院校中網路安全相關專業的師生也有較高的參考價值。

作者簡介

Keith Makan,曾是計算機科學和物理學專業的學生,現今是業餘愛好者和安全研究員。他把絕大多數業餘時間都用在了閱讀源碼、逆向工程、fuzz測試和編寫Web套用技術中的相關漏洞的利用代碼上。

Keith工作起來就像是一個IT安全評估專家一樣專業。他的個人研究已經使他入選“谷歌套用安全名人堂”(Google Application Security Hall of Fame)。他還編寫了谷歌Chrome的WebKitXSSAuditor,火狐瀏覽器的NoScript外掛程式中漏洞的利用代碼。此外,他還數次報告了WordPress外掛程式中的漏洞,並寫出了相應的利用工具。

目錄

第1章 Android開發工具 1

1.1 簡介 1

1.2 安裝Android開發工具(ADT) 2

1.3 安裝Java開發包(JDK) 5

1.4 更新API資源 9

1.5 另一種安裝ADT的方法 11

1.6 安裝原生開發包(Native Development Kit,NDK) 15

1.7 虛擬Android設備 16

1.8 使用命令行創建Android虛擬設備(AVD) 19

1.9 使用Android調試橋(ADB)與AVD互動 21

1.10 從AVD上複製出/複製入檔案 22

1.11 通過ADB在AVD中安裝app 23

第2章實踐app安全 24

2.1 簡介 24

2.2 檢查app的證書和簽名 24

2.3 對Android app簽名 33

2.4 驗證app的簽名 37

2.5 探索AndroidManifest.xml檔案 37

2.6 通過ADB與activity管理器互動 47

2.7 通過ADB提取app里的資源 50

第3章 Android安全評估工具 56

3.1 簡介 56

3.2 製作Santoku啟動盤和安裝Santoku 58

3.3 安裝drozer 62

3.4 運行一個drozer會話 71

3.5 枚舉已安裝的包(package) 72

3.6 枚舉activity 78

3.7 枚舉content provider 80

3.8 枚舉service 83

3.9 枚舉broadcast receiver 85

3.10 確定app的受攻擊面(attack surface) 87

3.11 運行activity 89

3.12 編寫drozer模組——一個驅動枚舉模組 91

3.13 編寫一個app證書枚舉器 94

第4章利用app中的漏洞 98

4.1 簡介 98

4.2 收集logcat泄露的信息 101

4.3 檢查網路流量 106

4.4 通過activity manager被動嗅探intent 111

4.5 攻擊service 117

4.6 攻擊broadcast receiver 121

4.7 枚舉有漏洞的content provider 123

4.8 從有漏洞的content provider中提取數據 126

4.9 向content provider插入數據 129

4.10 枚舉有SQL-注入漏洞的content provider 131

4.11 利用可調試的app 134

4.12 對app做中間人攻擊 139

第5章保護app 146

5.1 簡介 146

5.2 保護app的組件 147

5.3 通過定製許可權保護組件 149

5.4 保護content provider的路徑(path) 152

5.5 防禦SQL注入攻擊 155

5.6 驗證app的簽名(防篡改) 157

5.7 通過檢測安裝程式、模擬器、調試標誌位反逆向工程 161

5.8 用ProGuad刪除所有日誌訊息 164

5.9 用GexGuard進行高級代碼混淆 168

第6章逆向app 173

6.1 簡介 173

6.2 把Java源碼編譯成DEX檔案 175

6.3 解析DEX檔案的格式 177

6.4 解釋Dalvik位元組碼 194

6.5 把DEX反編譯回Java 202

6.6 反編譯app的原生庫 205

6.7 使用GDB server調試Android進程 207

第7章網路安全 211

7.1 簡介 211

7.2 驗證SSL自簽名證書 212

7.3 使用OnionKit庫中的StrongTrustManager 221

7.4 SSL pinning——限定受信SSL的範圍 223

第8章原生代碼中漏洞的利用與分析 231

8.1 簡介 231

8.2 檢查檔案的許可權 232

8.3 交叉編譯原生可執行程式 241

8.4 利用競爭條件引發的漏洞 249

8.5 棧溢出漏洞的利用 254

8.6 自動fuzzing測試Android原生代碼 261

第9章加密與在開發時使用設備管理策略 274

9.1 簡介 274

9.2 使用加密庫 275

9.3 生成對稱加密密鑰 277

9.4 保護SharedPreferences數據 281

9.5 基於口令的加密 283

9.6 用SQLCipher加密資料庫 287

9.7 Android KeyStore provider 290

9.8 在開發時使用設備管理策略 293

相關詞條

熱門詞條

聯絡我們