猜你喜欢
移动安全攻防进阶——Android与iOS逆向理论与案例实战

移动安全攻防进阶——Android与iOS逆向理论与案例实战

书籍作者:叶绍琛 ISBN:9787302643944
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8149
创建日期:2024-05-10 发布日期:2024-05-10
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

随着移动互联网的持续发展和移动智能终端的不断普及,面向我国庞大的移动互联网产业以及基于《网络安全法》《数据安全法》《个人信息保护法》等法律法规针对移动应用持续合规的网络安全监管要求下,移动安全攻防这一课题逐渐被产业界和学术界所关注。基于我国核心信息技术应用创新的大背景,本书分4篇向读者呈现了移动安全攻防领域进阶阶段的逆向理论与实战案例,并配套有立体化资源,包括电子资料、教学课件、源代码与视频教程等。

本书从Android虚拟机的技术原理开始,着重解析了Java层Dalvik虚拟机和ART虚拟机的Android系统中的运行机制,从而引出Native层的Native开发和ARM汇编语言等更底层的技术栈。在攻防全局观上主要介绍ATT&CK框架的技战术,将攻防过程中的技术点映射到矩阵中,ATT&CK框架中的移动安全攻防框架可以作为移动安全攻防的全局指导。通过对移动应用第一代加固壳到第三代加固壳的技术原理的剖析及技术实现的讲解,可以看到攻防对抗逐渐走向底层的原生层,通过学习基于OLLVM 的加固壳开发以及VMP加固壳的代码实现,全面掌握主流应用加固的技术方案。通过对真实世界实网攻防中遭遇的恶意程序、APT攻击样本等进行逆向分析,详细介绍其中的技术原理和代码实现,以帮助读者从一线攻防案例中获取攻防对抗经验。

本书适合作为高等院校网络空间安全学科及相关专业中移动安全、软件逆向、代码安全等专业课程的教材,也可以作为网络安全研究员与移动应用开发者的自学参考书。

作者简介

叶绍琛 网络安全技术专家,公安部全国网络警察培训基地特聘专家,网络安全110智库顾问,中国下一代网络安全联盟常务理事,红帽人才工程评审委员会评委,CTFWAR国际网络安全攻防对抗联赛发起人,网络安全期刊《网安观察》总顾问,曾获科技部和教育部联合颁发的教育信息化发明创新奖。

陈鑫杰 网络犯罪治理技术专家,国家网络空间安全人才培养基地特聘讲师,公安部全国网络警察培训基地专家导师,广东工业大学网络安全客座讲师,广东省网络安全应急响应中心技术顾问,中国网络安全行业门户“极牛网”总编辑,多地省市公安局网警技术顾问,多次协助侦查抓获大型涉网犯罪团伙。

蔡国兆 移动安全攻防技术专家,移动APT攻击及黑灰产App资深安全研究员,中国网络安全行业门户“极牛网”移动安全版块主编,华云信安技术总监,极牛攻防实验室负责人,曾发表多篇核心期刊学术论文及专利,主导人工智能LLM大模型威胁情报研判、人工智能恶意程序监测等前沿核心课题。

编辑推荐

网络空间是继陆海空天后的第五主权空间,网络空间安全事关国家安全。近年来,随着《网络安全法》和网络安全等级保护标准的推进落实,我国网络空间安全产业逐渐发展成熟,广大高等院校也相继开设网络安全相关专业。鉴于软件逆向工程方向技术原理复杂、实战难度大,为满足广大读者对于移动安全的学习需求,作者充分结合理论技术和攻防实战,编著此书。

本书根据移动安全攻防的技术栈脉络,从移动操作系统内核及移动应用开发技术,到移动应用安全测试及逆向分析的实战,帮助读者形成关于移动安全攻防系统全面的知识体系。

本书呈现了以下移动安全攻防的理论、技术与应用:

Android ART虚拟机原理

Native层及ARM汇编开发

ATT&CK for mobile框架

LLVM编译框架

整体加固代码实现

指令抽取加固代码实现

so文件加固技术原理

OLLVM加固壳开发

VMP加固原理和技术

前言

在数字化浪潮中,移动互联网的应用场景及应用深度将进一步优化,移动应用已经渗透到人们的工作和生活中。随着移动终端的发展,移动应用所隐含的安全问题逐渐浮出水面,并越发深远地影响着人们的切身利益。

据统计,全球每年至少新增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智库、国家网络空间安全人才培养基地、中国网络犯罪治理协会(筹)、中国下一代网络安全联盟、广东省网络安全应急响应中心对本书的大力支持,感谢本书所有业内推荐专家给予的专业修订建议及赞誉。

感谢我的太太庄雪英老师,她在幕后默默付出,给予我始终如一的支持。感谢我的父亲和母亲,用爱和辛劳将我养育栽培,并始终认可我所热爱的事业。

最后,谨以此书献给所有奋斗在中国网络空间安全事业上的工程师们,让我们一起为我国的网络空间安全建设添砖加瓦!


叶绍琛于中国·深圳

目录

基础篇

第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绕过SSLPinning

13.1.1HTTPS协议简介

13.1.2SSLPinning技术

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 SSLPinning技术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节 节首

产品特色