描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302643944
网络空间是继陆海空天后的第五主权空间,网络空间安全事关国家安全。近年来,随着《网络安全法》和网络安全等级保护标准的推进落实,我国网络空间安全产业逐渐发展成熟,广大高等院校也相继开设网络安全相关专业。鉴于软件逆向工程方向技术原理复杂、实战难度大,为满足广大读者对于移动安全的学习需求,作者充分结合理论技术和攻防实战,编著此书。
本书根据移动安全攻防的技术栈脉络,从移动操作系统内核及移动应用开发技术,到移动应用安全测试及逆向分析的实战,帮助读者形成关于移动安全攻防系统全面的知识体系。
本书呈现了以下移动安全攻防的理论、技术与应用:
Android ART虚拟机原理
Native层及ARM汇编开发
ATT&CK for mobile框架
LLVM编译框架
整体加固代码实现
指令抽取加固代码实现
so文件加固技术原理
OLLVM加固壳开发
VMP加固原理和技术
随着移动互联网的持续发展和移动智能终端的不断普及,面向我国庞大的移动互联网产业以及基于《网络安全法》《数据安全法》《个人信息保护法》等法律法规针对移动应用持续合规的网络安全监管要求下,移动安全攻防这一课题逐渐被产业界和学术界所关注。基于我国核心信息技术应用创新的大背景,本书分4篇向读者呈现了移动安全攻防领域进阶阶段的逆向理论与实战案例,并配套有立体化资源,包括电子资料、教学课件、源代码与视频教程等。
本书从Android虚拟机的技术原理开始,着重解析了Java层Dalvik虚拟机和ART虚拟机的Android系统中的运行机制,从而引出Native层的Native开发和ARM汇编语言等更底层的技术栈。在攻防全局观上主要介绍ATT&CK框架的技战术,将攻防过程中的技术点映射到矩阵中,ATT&CK框架中的移动安全攻防框架可以作为移动安全攻防的全局指导。通过对移动应用第一代加固壳到第三代加固壳的技术原理的剖析及技术实现的讲解,可以看到攻防对抗逐渐走向底层的原生层,通过学习基于OLLVM 的加固壳开发以及VMP加固壳的代码实现,全面掌握主流应用加固的技术方案。通过对真实世界实网攻防中遭遇的恶意程序、APT攻击样本等进行逆向分析,详细介绍其中的技术原理和代码实现,以帮助读者从一线攻防案例中获取攻防对抗经验。
本书适合作为高等院校网络空间安全学科及相关专业中移动安全、软件逆向、代码安全等专业课程的教材,也可以作为网络安全研究员与移动应用开发者的自学参考书。
基础篇
第1章Android虚拟机
1.1Dalvik虚拟机
1.1.1DVM的特点
1.1.2DVM虚拟机启动流程
1.1.3DVM虚拟机运行过程
1.2odex文件
1.3ART虚拟机
1.3.1ART虚拟机的创建
1.3.2ART虚拟机的启动
1.4dex2oat
1.4.1概述
1.4.2Oat文件格式介绍
1.4.3ART文件介绍
1.4.4Oat与ART文件关系
1.5ART虚拟机类的链接与初始化
1.6本章小结
第2章Native层
2.1Native开发
2.1.1JNI介绍
2.1.2JNI数据类型转换
2.1.3Native调用Java代码
2.2ARM汇编
2.2.1ARM汇编介绍
2.2.2ARM汇编数据类型
2.2.3ARM寄存器
2.2.4ARM模式与Thumb模式
2.2.5ARM指令
2.3Native Hook
2.3.1Got/Plt Hook
2.3.2inline Hook
2.4本章小结
第3章iOS基础知识
3.1iOS包结构分析
3.1.1_CodeSignature文件夹
3.1.2lproj文件夹
3.1.3xcent文件
3.1.4mobileprovision文件
3.1.5info.plist文件
3.2iOS应用启动过程分析
3.3本章小结
理论篇
第4章ATT&CK框架
4.1ATT&CK框架背景介绍
4.2ATT&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.1LLVM概论
6.1.1LLVM介绍
6.1.2LLVM功能
6.1.3LLVM的主要子项目
6.1.4LLVM周边项目
6.1.5LLVM目录结构
6.2LLVM安装与编译
6.2.1LLVM的下载与安装
6.2.2LLVM的编译
6.2.3LLVM的使用
6.2.4编写LLVM Pass
6.3IR入门
6.4本章小结
实战篇
第7章整体加固实战
7.1第一代加固技术简介
7.1.1早期静态壳
7.1.2后期动态加载壳
7.2APK包的结构
7.2.1APK打包过程
7.2.2软件安装过程
7.2.3软件启动流程
7.2.4AndroidManifest.xml
7.2.5resource.arsc
7.3原理介绍
7.4加固流程
7.5代码实现
7.6本章小结
第8章指令抽取加固实战
8.1第二代加固技术简介
8.2Dex文件结构
8.3指令抽取恢复介绍
8.4加固流程
8.5代码实现
8.6本章小结
第9章so文件加固
9.1第三代加固技术
9.1.1Dex2C
9.1.2VMP
9.2upx
9.3so文件格式
9.3.132位Elf文件解析
9.3.264位Elf文件解析
9.4upx的编译
9.5本章小结
第10章基于OLLVM的加固壳开发
10.1OLLVM基础
10.2OLLVM编译与使用
10.3OLLVM壳原理
10.3.1指令替换混淆源码分析
10.3.2控制流平展混淆源码分析
10.3.3伪造控制流混淆源码分析
10.4本章小结
第11章VMP加固技术
11.1VMP加固原理
11.2Dex VMP
11.2.1Dex VMP介绍
11.2.2Dvm虚拟机的解释流程
11.2.3Advmp功能与源码解析
11.3ARM VMP
11.3.1ARM VMP介绍
11.3.2编写ARM VMP解释器
11.3.3ARM VMP的加固流程
11.4本章小结
第12章iOS逆向工具的使用
12.1砸壳工具
12.1.1Clutch
12.1.2CrackerXI
12.2Classdump工具
12.3Tweaks工具
12.3.1Theos的前置环境
12.3.2安装Theos
12.3.3编写Tweaks程序
12.3.4Tweaks程序的编译与安装
12.4Cycript工具
12.4.1Cycript的安装使用
12.4.2使用Cycript分析应用
12.4.3Cycript脚本
12.5本章小结
第13章进阶逆向技巧
13.1使用Frida绕过SSLPinning
13.1.1HTTPS协议简介
13.1.2SSLPinning技术
13.1.3绕过证书绑定
13.1.4使用SSLContext导入自定义证书
13.2终极抓包脚本
13.2.1抓包的攻防
13.2.2r0capture抓包原理
13.2.3r0capture抓包实践
13.3Frida追踪函数调用
13.3.1Frida Trace脚本解析
13.3.2Frida 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.1APT简介
15.2KONNI远控木马病毒
15.2.1KONNI恶意行为分析
15.2.2KONNI源码逆向分析
15.2.3远程控制机制解析
15.3GravityRAT间谍软件
15.3.1GravityRAT恶意行为分析
15.3.2GravityRAT源码逆向分析
15.4Anubis木马
15.4.1Anubis木马的功能与发展
15.4.2Anubis样本行为逆向分析
15.5本章小结
参考文献
视 频 清 单
视 频 名 称时长位置
视频1 Dalvik DVM虚拟机09分34秒1.1节 节首
视频2 Dalvik DVM的特性12分45秒1.1.1节 节首
视频3 Dalvik DVM进程机制10分16秒1.1.2节 节首
视频4 Android ART虚拟机17分21秒1.3节 节首
视频5 iOS包结构分析(上)09分06秒3.1节 节首
视频6 iOS包结构分析(下)20分11秒3.1节 节首
视频7 iOS文件系统(上)08分18秒3.2节 节首
视频8 iOS文件系统(下)15分19秒3.2节 节首
视频9 iOS应用启动过程分析16分00秒3.2节 节首
视频10 App一代加固简介15分32秒7.1节 节首
视频11 App动态加载壳原理18分16秒7.1.2节 节首
视频12 iOS砸壳工具Clutch09分44秒12.1.1节 节首
视频13 Tweaks工具环境安装21分37秒12.3.1节 节首
视频14 Tweaks创建项目与应用分析11分14秒12.3.3节 节首
视频15 编译运行Tweaks应用23分34秒12.3.4节 节首
视频16 Cycript的安装使用09分41秒12.4.1节 节首
视频17 Cycript分析应用页面14分25秒12.4.2节 节首
视频18 App抓包之HTTPS协议11分01秒13.1.1节 节首
视频19 SSLPinning技术16分31秒13.1.2节 节首
视频20 远控框架安装与启动13分40秒14.1.1节 节首
视频21 MSF远控样本生成12分37秒14.1.2节 节首
视频22 MSF远控样本分析13分10秒14.1.3节 节首
视频23 APT攻击简介21分08秒15.1节 节首
视频24 KONNI样本分析(上)14分08秒15.2节 节首
视频25 KONNI样本分析(下)16分54秒15.2节 节首
视频26 GravityRAT分析(上)14分21秒15.3节 节首
视频27 GravityRAT分析(下)13分53秒15.3节 节首
视频28 Anubis木马样本分析35分57秒15.4节 节首
在数字化浪潮中,移动互联网的应用场景及应用深度将进一步优化,移动应用已经渗透到人们的工作和生活中。随着移动终端的发展,移动应用所隐含的安全问题逐渐浮出水面,并越发深远地影响着人们的切身利益。
据统计,全球每年至少新增150万种移动端恶意软件,至少造成超1600万件移动恶意攻击事件。近年来,工业和信息化部针对移动应用长期存在的违规收集用户个人信息、违规获取终端权限、隐私政策不完善等行为进行了多次综合整治行动,国家等级保护2.0标准也增加了移动安全拓展标准,移动安全将会成为未来我国网络安全人才培养的一项核心内容。
本书作为《Android移动安全攻防实战》(ISBN为9787302602224,2023年3月由清华大学出版社出版)的实战攻防进阶续作,将更加深入地为读者展现移动安全领域中实网攻防的技术、战术及案例剖析,通过理论阐述、体系构筑以及实践沉淀,体系化地展现移动安全攻防领域的魅力。
内容结构
本书分为4篇,共15章。
基础篇
基础篇包括第1~3章,目的是让读者掌握后续移动安全攻防进阶阶段所需的基础知识体系。第1章介绍了Android系统发展过程中出现的两代虚拟机——DVM与ART。随着Android逆向人员与防护人员的对抗,Android安全攻防的战场从Android应用逐渐下沉到Android系统。为了保证Android应用的正常运行,很多防护手段在应用运行的时候会被解除,因此逆向人员会利用这一点,从应用运行的过程下手,攻破应用的安全防护。安全人员也会利用应用运行的过程构建更加难以突破的防线。希望读者通过第1章的学习,对Android系统的运行逻辑建立一个初步的认知。
第2章介绍了Android应用的Native层相关知识,包括充当Native与Java两个层次桥梁关系的JNI机制,以及ARM汇编基础知识,还有针对Native函数的Hook手段。与Java层相比,Native层更加接近Android系统的底层,因此分析的难度会更高,读者通过第2章的学习,可以对Android系统的结构与本质有一个明确认识。
第3章介绍了iOS应用包的结构以及应用启动的流程,由于iOS的封闭性,大部分逆向人员很难接触到iOS的底层,因此大部分攻防还是集中在应用层面,读者通过第3章的学习,能够更好地了解iOS应用。
理论篇
理论篇包括第4~6章,目的是帮助读者完善移动安全攻防进阶过程中所需的理论知识。第4章介绍了ATT&CK框架的各战术阶段及其包含的部分技术,在实际的攻防过程中,这些技术都会被灵活运用。如同兵法一样,攻击者不会死板地按照ATT&CK框架划分的阶段一板一眼地进攻,而是根据实际需求或者目标环境进行变化。
第5章介绍了ATT&CK for mobile框架中各战术阶段的技术。读者可能会注意到一些技术会在多个战术阶段中重复出现,这是因为战术重点描述了攻击者在某个阶段需要达到的目标,而技术是攻击者达成目标的手段,为了达成目标,攻击者会随意使用这些技术,因此分析木马病毒等恶意软件时,除了识别出其中使用的技术,还要分析攻击者利用这些技术收集了哪些数据,要达成什么目标。
第6章介绍了LLVM的编译、用法以及Pass程序的编写。LLVM将传统编译过程拆分成3部分,不仅增加了编译器模块的可重用性,也使得许多开发者可以编写针对中间码的Pass,从而参与到编译过程中。Android应用使用LLVM作为Native层代码编译器也进一步体现了Android系统的开放性。
实战篇
实战篇包括第7~13章,通过剖析移动应用加固技术的核心实现,展现移动应用在攻防一线的对抗实战技术。第7章介绍了整体加固技术的原理以及实现。整体加固的出现使得逆向人员难以获取Android应用字节码,阻碍了逆向人员对字节码的反编译分析,为了获取源代码,逆向人员需要解除应用的加固,又促使安全人员对加固技术进行升级。可以说,Android应用的加固与脱壳是安全攻防发展的一个直观体现。
第8章介绍了指令抽取技术的原理以及实现,指令抽取破坏了内存中Dex文件的完整性,细化了代码保护的粒度。安全人员可以指定具体的Java方法进行抽取保护,以平衡应用的安全性与性能。
第9章介绍了第三代加固技术,包括将Java代码转换成C代码的Dex2C技术,对汇编指令的虚拟化保护技术,以及对so文件的压缩加固技术。在实际的加固实践中会将多种加固技术组合使用,甚至混合运用三代加固技术以增加应用破解的复杂性。
第10章介绍了OLLVM的编译使用,并结合3种指令混淆的Pass源码分析混淆的过程与原理,读者可以结合2.2节和第6章进行学习。
第11章介绍了两种不同层次的VMP加固技术。其中,Dex VMP借用了Android虚拟机的指令解析机制,而ARM VMP要求开发者有比较扎实的汇编语言功底。
第12章介绍了几种针对iOS应用的逆向工具,基本上覆盖了iOS应用分析的流程。当逆向人员获取iOS应用包时,通过Cycript工具获取应用的Controller信息,使用砸壳工具去除应用的加固,使用classdump提取头文件代码,最后利用头文件的函数定义编写Hook程序对应用进行动态调试。
第13章介绍了Frida抓包的手段,Frida脚本化运行的方式使得应用抓包可以自动化地进行。例如,MobSF的动态分析功能就将Frida抓包作为动态分析流程的一个环节。
案例篇
案例篇包括第14章和第15章,通过现实世界中移动应用恶意程序的案例,利用前述的攻防技战术能力,进行实网级攻防对抗的案例分析。第14章分析了3类现实生活中常见的Android恶意软件,包括远程操控类恶意App、锁机勒索类恶意App、手机短信蠕虫类恶意App,帮助读者体验现实世界中攻防对抗的技战术,结合实战分析技术,对恶意软件程序进行逆向反编译,分析该恶意软件的工作原理和危害。
第15章分析了3个APT案例。APT组织通常会将恶意代码封装在一个单独的模块内,应用本体在很多时候只是充当了下载器的功能,以此绕过应用商店的检测。除此之外,APT应用会采取多种手段保证自身在目标设备中持续活跃。
适用对象
读者需要具备一定程度的Java编程语言基础和C/C 编程语言基础。本书包含“攻”和“防”两部分实战内容,在安全攻防和软件开发领域有不同的读者定位。
在“安全攻防”领域,适合阅读本书的读者包括:
高校信息安全相关专业的学生;
软件安全研究员;
软件逆向工程师。
在“软件开发”领域,适合阅读本书的读者包括:
高校信息安全相关专业的学生;
高校软件工程相关专业的学生;
移动应用开发工程师。
学习建议
作为网络空间安全领域的新形态教材,本书在内容规划上充分考虑各技术点的“学习曲线”,通过更多承上启下的内容设置,让读者可以学习到更多的前置知识,了解知识点之间的关联,以便读者构建全局的知识体系,从而更深入地理解技术原理,更好地记忆和消化知识点。
以下建议供读者参考。
1. 循序渐进、夯实基础
移动安全涉及的技术面较广,按操作系统来划分主要是Android和iOS。在攻防进阶阶段,核心的攻防技术都涉及底层原理,这需要读者跟随基础篇和理论篇的内容顺序,循序渐进地“吃透”每一个知识点,才能在后面的实战和案例中融会贯通。
2. 注重实践、以练促学
攻防技术的核心在于实践,读者在实战篇中不仅要跟随书中内容去理解知识,还要在实验环境中实践,通过练习来巩固学习成果。本书随书资源提供了实战篇中涉及的工具、样本等文件,读者可以下载到本地进行操作练习。
3. 案例分析、举一反三
本书案例篇将移动安全攻防对抗中不同类型的案例深入地进行分析,帮助读者将理论和实战在案例分析中融合,以达到举一反三的效果,帮助读者尽快积累真实攻防对抗中的经验。本书随书资源还提供了案例篇中涉及的各个恶意程序的样本文件,读者可自行分析实践。
配书资源
为方便读者高效学习,快速掌握移动安全攻防理论与逆向分析的实践,作者精心制作了学习资料(超过500页)、完整的教学课件PPT(共15章超过400页)、参考开源项目源代码(超过70万行),以及丰富的配套视频教程(28课时)等资源,可扫描下方二维码获取。
对于本书存在的疏漏和错误之处,欢迎读者反馈斧正,请关注微信公众号“移动安全攻防”(微信号: mobsecx),依次选择“更多”→“书籍勘误”,提交您的宝贵意见。
特别致谢
感谢公安部全国网络警察培训基地、网络安全110智库、国家网络空间安全人才培养基地、中国网络犯罪治理协会(筹)、中国下一代网络安全联盟、广东省网络安全应急响应中心对本书的大力支持,感谢本书所有业内推荐专家给予的专业修订建议及赞誉。
感谢我的太太庄雪英老师,她在幕后默默付出,给予我始终如一的支持。感谢我的父亲和母亲,用爱和辛劳将我养育栽培,并始终认可我所热爱的事业。
最后,谨以此书献给所有奋斗在中国网络空间安全事业上的工程师们,让我们一起为我国的网络空间安全建设添砖加瓦!
叶绍琛于中国·深圳
网络安全是不对等的博弈,在移动互联时代我国手机上网比例超99%,因此研究移动安全是网络安全的重要课题,其成果可缓解攻防博弈的不对等程度。本书通过体系化的攻防理论和实战化的案例讲解,帮助读者建立移动安全知识体系,提高移动攻防实战能力。
——陆以勤
教育厅学位中心专家、华南理工大学教授兼网信办主任
所有流行操作系统的健康发展,离不开软件加解密等安全加固防护技术的重要应用,本书系统性地论述了移动应用安全领域相关攻防技术的知识体系,从技术进阶提升的角度起到了承上启下的作用,能为网络安全从业者打开移动安全攻防方向的知识大门。
——王 琦
GeekPwn国际安全大赛发起人、DARKNAVY安全研究机构创始人
随着移动互联网的兴起和高速成长,移动安全成为了攻防对抗的重点领域。尤其近两年多个涉及数据和个人隐私的法规发布,移动安全的重要性凸显。本书章节设计全面覆盖了移动安全技术栈,知识点环环相扣,实操性强,值得广大网络安全从业者仔细研读。
——吕一平
腾讯产业安全总经理、腾讯KEEN科恩实验室负责人
随着我国移动互联网的蓬勃发展,移动应用的普及已经渗透到医疗、金融、政务等领域,移动应用是用户数据交互的载体,移动应用安全问题关系着用户数据安全,本书系统性地阐述了移动应用安全攻防的技术体系,是理论与实践相结合的优质技术专著。
——李世锋
中国电子集团中电数据董事长兼党委书记、清华大学博士
随着移动互联网的高速发展,基于移动端的黑灰产攻击日趋泛滥,APT攻防对抗愈加升级,如何提升移动应用防护能力成为了产业刚需。本书从攻防实战的角度进行梳理,深入浅出地讲解了逆向技术和加固加壳技术,推荐一线的网络犯罪治理人员仔细研读。
——胡铭凯
数字取证专家、公安部全国网络警察培训基地专家导师
评论
还没有评论。