Dedication |
|
v | |
Foreword |
|
xiii | |
Preface |
|
xv | |
About the Authors |
|
xvii | |
Acknowledgments |
|
xix | |
|
|
1 | (16) |
|
|
1 | (4) |
|
1.2 Evolution of Mobile Threats |
|
|
5 | (6) |
|
|
11 | (2) |
|
|
13 | (2) |
|
|
15 | (2) |
|
Chapter 2 Android Architecture |
|
|
17 | (30) |
|
2.1 Android Architecture Overview |
|
|
17 | (11) |
|
|
18 | (7) |
|
|
25 | (1) |
|
|
26 | (1) |
|
2.1.4 Application Framework |
|
|
26 | (1) |
|
|
27 | (1) |
|
2.2 Android Start Up and Zygote |
|
|
28 | (1) |
|
2.3 Android SDK and Tools |
|
|
28 | (11) |
|
2.3.1 Downloading and Installing the Android SDK |
|
|
29 | (2) |
|
2.3.2 Developing with Eclipse and ADT |
|
|
31 | (1) |
|
|
31 | (3) |
|
|
34 | (1) |
|
|
35 | (1) |
|
|
35 | (4) |
|
2.4 Anatomy of the "Hello World" Application |
|
|
39 | (4) |
|
2.4.1 Understanding Hello World |
|
|
39 | (4) |
|
|
43 | (4) |
|
Chapter 3 Android Application Architecture |
|
|
47 | (24) |
|
3.1 Application Components |
|
|
47 | (14) |
|
|
48 | (3) |
|
|
51 | (6) |
|
3.1.3 Broadcast Receivers |
|
|
57 | (1) |
|
|
58 | (2) |
|
|
60 | (1) |
|
|
61 | (9) |
|
|
70 | (1) |
|
Chapter 4 Android (in)Security |
|
|
71 | (26) |
|
4.1 Android Security Model |
|
|
71 | (1) |
|
4.2 Permission Enforcement-Linux |
|
|
72 | (3) |
|
4.3 Android's Manifest Permissions |
|
|
75 | (11) |
|
4.3.1 Requesting Permissions |
|
|
76 | (3) |
|
4.3.2 Putting It All Together |
|
|
79 | (7) |
|
4.4 Mobile Security Issues |
|
|
86 | (2) |
|
|
86 | (1) |
|
|
86 | (1) |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
87 | (1) |
|
4.4.6 Application Security |
|
|
87 | (1) |
|
|
88 | (1) |
|
4.5 Recent Android Attacks-A Walkthrough |
|
|
88 | (5) |
|
4.5.1 Analysis of DroidDream Variant |
|
|
88 | (2) |
|
|
90 | (1) |
|
4.5.3 Analysis of Zitmo Trojan |
|
|
91 | (2) |
|
|
93 | (4) |
|
Chapter 5 Pen Testing Android |
|
|
97 | (22) |
|
5.1 Penetration Testing Methodology |
|
|
97 | (3) |
|
5.1.1 External Penetration Test |
|
|
98 | (1) |
|
5.1.2 Internal Penetration Test |
|
|
98 | (1) |
|
5.1.3 Penetration Test Methodologies |
|
|
99 | (1) |
|
|
99 | (1) |
|
5.1.5 Steps to Pen Test Android OS and Devices |
|
|
100 | (1) |
|
5.2 Tools for Penetration Testing Android |
|
|
100 | (6) |
|
|
100 | (1) |
|
|
101 | (2) |
|
|
103 | (1) |
|
5.2.4 Vulnerabilities in the Android OS |
|
|
103 | (3) |
|
5.3 Penetration Testing-Android Applications |
|
|
106 | (11) |
|
5.3.1 Android Applications |
|
|
106 | (7) |
|
5.3.2 Application Security |
|
|
113 | (4) |
|
|
117 | (1) |
|
|
118 | (1) |
|
Chapter 6 Reverse Engineering Android Applications |
|
|
119 | (28) |
|
|
119 | (2) |
|
|
121 | (1) |
|
6.3 Identifying Android Malware |
|
|
122 | (1) |
|
6.4 Reverse Engineering Methodology for Android Applications |
|
|
123 | (21) |
|
|
144 | (3) |
|
Chapter 7 Modifying the Behavior of Android Applications without Source Code |
|
|
147 | (22) |
|
|
147 | (1) |
|
7.1.1 To Add Malicious Behavior |
|
|
148 | (1) |
|
7.1.2 To Eliminate Malicious Behavior |
|
|
148 | (1) |
|
7.1.3 To Bypass Intended Functionality |
|
|
148 | (1) |
|
|
148 | (2) |
|
7.3 Case Study: Modifying the Behavior of an Application |
|
|
150 | (11) |
|
7.4 Real World Example 1-Google Wallet Vulnerability |
|
|
161 | (1) |
|
7.5 Real World Example 2-Skype Vulnerability (CVE-2011-1717) |
|
|
162 | (1) |
|
|
163 | (5) |
|
7.6.1 Perform Code Obfuscation |
|
|
163 | (4) |
|
7.6.2 Perform Server Side Processing |
|
|
167 | (1) |
|
7.6.3 Perform Iterative Hashing and Use Salt |
|
|
167 | (1) |
|
7.6.4 Choose the Right Location for Sensitive Information |
|
|
167 | (1) |
|
|
168 | (1) |
|
|
168 | (1) |
|
|
168 | (1) |
|
Chapter 8 Hacking Android |
|
|
169 | (24) |
|
|
169 | (1) |
|
|
170 | (3) |
|
|
170 | (1) |
|
|
170 | (1) |
|
8.2.3 Directory Structure |
|
|
170 | (3) |
|
8.3 Android Application Data |
|
|
173 | (5) |
|
|
173 | (3) |
|
|
176 | (2) |
|
8.4 Rooting Android Devices |
|
|
178 | (3) |
|
|
181 | (2) |
|
8.6 Accessing Application Databases |
|
|
183 | (4) |
|
8.7 Extracting Data from Android Devices |
|
|
187 | (1) |
|
|
187 | (6) |
|
Chapter 9 Securing Android for the Enterprise Environment |
|
|
193 | (20) |
|
9.1 Android in Enterprise |
|
|
193 | (6) |
|
9.1.1 Security Concerns for Android in Enterprise |
|
|
193 | (4) |
|
|
197 | (1) |
|
9.1.3 Compliance/Audit Considerations |
|
|
197 | (1) |
|
9.1.4 Recommended Security Practices for Mobile Devices |
|
|
198 | (1) |
|
|
199 | (12) |
|
9.2.1 Deploying Android Securely |
|
|
199 | (9) |
|
9.2.2 Device Administration |
|
|
208 | (3) |
|
|
211 | (2) |
|
Chapter 10 Browser Security and Future Threat Landscape |
|
|
213 | (10) |
|
10.1 Mobile HTML Security |
|
|
213 | (5) |
|
10.1.1 Cross-Site Scripting |
|
|
216 | (1) |
|
|
217 | (1) |
|
10.1.3 Cross-Site Request Forgery |
|
|
217 | (1) |
|
|
217 | (1) |
|
10.2 Mobile Browser Security |
|
|
218 | (2) |
|
10.2.1 Browser Vulnerabilities |
|
|
218 | (2) |
|
10.3 The Future Landscape |
|
|
220 | (2) |
|
10.3.1 The Phone as a Spying/Tracking Device |
|
|
220 | (1) |
|
10.3.2 Controlling Corporate Networks and Other Devices through Mobile Devices |
|
|
221 | (1) |
|
10.3.3 Mobile Wallets and NFC |
|
|
221 | (1) |
|
|
222 | (1) |
|
|
223 | (10) |
|
|
233 | (6) |
|
|
233 | (2) |
|
|
235 | (1) |
|
|
236 | (1) |
|
|
236 | (3) |
|
|
239 | (2) |
Glossary |
|
241 | (10) |
Index |
|
251 | |