前言
在数字化浪潮之中,移动互联网的应用场景及应用深度将进一步提升,移动应用已经完全渗透到人们的工作和生活中。随着移动终端的发展,移动应用隐含的安全问题逐渐浮出水面,并愈发深远地影响着人们的切身利益。
据统计,全球每年至少新增150万种移动端恶意软件,造成了超1600万件移动端恶意攻击事件。近年来,工信部针对移动应用长期存在的违规收集用户个人信息、违规获取终端权限、隐私政策不完整等行为开展了多次综合整治行动,网络安全等级保护2.0制度也增加了移动安全拓展标准,移动安全将会成为未来我国网络安全人才培养的核心内容板块。
本书以移动安全攻防实战技战术为基础,以实战化案例为依托,将移动安全攻防实战进行体系化的知识体系输出,深入地展现移动安全领域中实网攻防的技战术及案例。书中的理论阐述、体系构筑以及实践沉淀体系化地展现了移动安全攻防领域的魅力。
本书内容及结构
本书分4篇,共16章。
基础篇
基础篇包括第1~3章,目的是让读者快速建立对Android应用安全分析的基本概念。
第1章介绍构建Android应用安全分析环境的基本方法与工具。通过第1章的学习,读者能够掌握NDK工具链、Android手机刷机、系统Root等移动安全分析中的环境构建技术。
第2章通过对一个Android应用Apk文件的反编译破解,修改Smali代码文件后再重编译并签名的过程,帮助读者直观地了解Android应用逆向及二次打包的全过程,从而对移动应用逆向工程有个整体概念。
第3章介绍iOS应用包的结构以及应用启动的流程。由于iOS的封闭性,大部分逆向人员很难接触iOS的底层,因此大部分的攻防还是集中在应用层面上,读者通过该章的学习能够更好地了解iOS应用。
理论篇
理论篇包括第4~6章,目的是通过介绍移动应用安全基线及移动安全测试框架帮助读者建立起移动安全攻防的理论基础,形成移动应用安全分析的知识体系框架。
第4章主要介绍移动应用安全基线,包括应用的评估思路、Android系统的安全问题与常见漏洞。通过本章的学习,读者可以掌握Android应用逆向分析的常见切入点,也可以从中得到警示,在开发移动应用时规避这些安全问题。
第5章主要介绍在AI大模型时代移动安全攻防的新趋势和新挑战。以当今前沿攻防案例的解析,介绍通过生成式人工智能用于短信钓鱼、利用大模型对移动应用进行代码审计,以及移动设备端侧搭载大模型面临的风险等。
第6章主要对MobSF移动应用安全测试框架进行分析。该框架是面向移动应用静态逆向和动态调试的自动化分析调试框架,通过对该框架的拆解,使读者全面了解Android应用逆向分析全过程中的关注点,掌握在逆向一个具有多个功能模块的复杂应用时应关注哪些行为容易导致应用遭到恶意攻击,哪些代码实现使用了不安全的API,进而造成数据的泄露或者文件被篡改等。通过对MobSF框架的二次开发改造,可以加快对于上万行代码的App进行安全概况排查,以便后续有的放矢地进行深度分析。
工具篇
工具篇包括第7~11章。“工欲善其事,必先利其器”,工具虽然不是解决问题的唯一决定因素,但使用一个合适的工具往往能达到事半功倍的效果。
第7章介绍静态逆向所使用的工具。静态逆向是最简单、最直接的逆向方式,主要目的是将Apk软件包进行解包,将包内的文件逐一进行解码,最为关键的是,将保存代码的进制文件反编译成我们能直接阅读的源代码形式。
第8章介绍动态调试所使用的工具。这些工具和开发环境中的断点调试功能类似,可以让我们看到程序运行过程中的各种变化,只不过在开发环境中我们面对的是自己编写的源代码,逆向时我们面对的是反编译的伪源代码,甚至是汇编代码。
第9章主要介绍两种最常见的Hook工具。Hook是一种可以在不直接修改程序源代码的前提下改变程序运行逻辑的手段,能够避免为了动态调试而将Apk拆得七零八落又费尽心思组装回去的复杂操作,提高动态调试的效率。
第10章介绍针对Native层的C++代码的调试手段。UnicornEngine是一个神奇的工具,它可以模拟各种CPU平台、内存与堆栈。逆向工程师不需要运行整个App,使用Unicorn就可以单独运行调试so文件的一部分汇编代码,而且可以随意设置寄存器与堆栈的值。
第11章介绍几种针对iOS应用的逆向工具,基本覆盖了iOS应用分析的流程。当逆向人员获取iOS应用包时,通过Cycript工具获取应用的Controller信息,使用砸壳工具去除应用的加固,使用Classdump工具提取头文件代码,最后利用头文件的函数定义编写Hook程序对应用进行动态调试。
实战篇
实战篇包括第12~16章,是全书的重点内容。读者运用前面理论篇与工具篇的知识点进行实操,在操作的过程中加深读者对移动应用逆向分析与安全开发的理解。
第12章的主要内容是脱壳实战。本章也是移动应用逆向攻防色彩最重的一章。进行Android应用逆向分析时,通常通过反编译的手段获取代码逻辑,从代码逻辑中找到程序的漏洞或者恶意行为,而Android应用加固会将App的代码逻辑隐藏起来,虽然加固手段本身是一种安全性保护,但是这种保护是不会分辨应用本身是否存在恶意行为的。因此,如果需要通过逆向分析判断应用是否木马,就需要对加固壳进行破解。本章针对两种Java代码加固方案以及C++混淆方案探讨对抗破解的方法。
第13章的主要内容是逆向实战,介绍针对Android应用中Java层与Native层的逆向手段,包括逆向分析Smali代码,并进行篡改重编译、逆向分析so文件等。本章结合两个经典的CTF比赛题目进行实战讲解。
第14章的主要内容是Hook实战,介绍在不改变Android应用程序代码的情况下修改程序逻辑,使用工具篇介绍的两种主流Hook框架——Xposed框架和Frida框架进行具体的攻防实战。本章结合一个经典的CTF比赛题目进行分析讲解。
第15章的主要内容是调试实战,本章将使用网络上已发布且功能复杂的App作为例子,使用静态调试和动态调试两种方式分析该App的具体业务逻辑。同时也介绍了使用一个基于Unicorn的代码调试工具Unidbg,通过该工具对Native层逻辑进行逆向调试实战。
第16章的主要内容是IoT(物联网)安全分析实战。当前大量的物联网设备采用Android操作系统,本章通过对物联网移动应用进行逆向调试分析实战,介绍使用抓包的方式截取应用的互联网请求。
适用对象
读者需要具备一定程度的Java编程语言基础和C++开发基础。由于本书包含“攻”和“防”两部分实战内容,则在安全攻防和软件开发领域有不同的读者定位。
在“安全攻防”领域,适合阅读本书的读者包括:
* 高校信息安全相关专业的学生;
* 软件安全研究员;
* 软件逆向工程师。
在“软件开发”领域,适合阅读本书的读者包括:
* 高校信息安全相关专业的学生;
* 高校软件工程相关专业的学生;
* 移动应用开发工程师。
学习建议
本书作为网络空间安全方面的新形态教材,在内容规划上充分考虑各个技术点的“学习曲线”。通过更多承上启下的内容设置,高校学生可以学习更多的前置知识以及知识点之间的关联,构建全局的知识体系,以更深入地理解技术原理,更好地消化知识点。
以本书为移动安全学习的蓝图,有如下学习建议。
1. 循序渐进、夯实基础
移动安全涉及的技术面较广,以操作系统划分主要是Android和iOS,在攻防进阶阶段,核心的攻防技术都涉及底层的原理,这需要读者跟随基础篇和理论篇的内容顺序,循序渐进地吃透每个知识点,打牢基础知识和理论知识,在后面的实战和案例中才能融会贯通。
2. 注重实践、以练促学
攻防技术的核心在于实践,在实战篇中,不仅要跟随书中内容去理解知识,还要在实验环境中去实践,通过练习巩固学习成果。本书的随书资源提供了实战篇中涉及的工具、样本等文件,读者可以下载到本地进行操作练习。
3. 案例分析、举一反三
本书对移动安全攻防对抗中不同类型的案例进行了深入的分析,帮助读者将理论和实战在案例分析中融合,尽快积累真实攻防对抗中的经验。在本书的随书资源中,提供了若干恶意程序的样本文件,读者可根据书中内容自行分析实践。
配书资源
为方便读者高效学习,快速掌握移动安全攻防理论与逆向分析的实践,作者精心制作了学习资料(超过500页)、完整的教学课件PPT(共16章超过 400页)、参考开源项目源代码(超过70万行),以及丰富的配套视频教程(27课时)等资源,可扫描下方二维码获取。
配书资源
特别致谢
感谢公安部全国网络警察培训基地、网络安全110智库、国家网络空间安全人才培养基地、中国网络犯罪治理协会(筹)、中国下一代网络安全联盟、广东省信息与网络安全通报中心对本书的大力支持。感谢所有业内推荐专家给予本书的专业修订建议及赞誉。
感谢我的太太庄雪英老师,给予我始终如一的支持,在幕后默默付出。感谢我的父亲和母亲,用爱和辛劳将我养育栽培,并始终认可我所热爱的事业。
最后,谨以此书献给所有奋斗在中国网络空间安全事业中的工程师,让我们一起为我国的网络空间安全建设添砖加瓦!
对于本书存在的疏漏之处,欢迎读者反馈斧正。
叶绍琛2025年4月于深圳
