逆向准备
逆向各应用平台使用工具
- Window:OllyDbg、Windbg、IDA Pro等;
- Android:ApkTool、dex2jar、jd-gui、IDA Pro等 ;
- iOS:class-dump、Reveal、Cycript、theos等;
应用层次
一般包含应用层、设备框架层、内核驱动层、硬件层;iOS逆向主要是通过应用层进行逆向分析;
iOS应用层逆向分析目的
- 增加、加强目标程序功能;
- 深入理解iOS内部原理;
- 借鉴他人程序开发自己软件;
- 分析恶意软件、进行安全评审;
- 从分析点去保护应用的安全性;
需要的技能
语言:Objective-C、C、C++、ARM汇编;
开发:iOS开发,了解iOS系统;
iOS的逆向工具分类
监控:记录目标程序行为的工具,包括界面变化、文件读取、网络传输等;
Reveal(界面)/snoop-it(类方法)/introspy等
反汇编:分析二进制文件,生成汇编代码,进而转换成高级语言;
Hopper/IDA等
调试跟踪工具:设置断点,查看当前程序运行状态;
gdb/IIdb等
iOS逆向流程图
iOS的安全机制
软件方面
安全启动链
系统启动过程中,每一步包含的所有组件都需要经过苹果签名验证,并只有在验证了信任链后才会被执行;中间有一步验证失败,都会无法继续下一步;
系统软件授权
为避免设备降级为缺少最新安全性更新的早期版本,iOS采用了“系统软件授权”的过程;
应用代码签名
为确保所有应用均来自批准的已知来源并且未被篡改,iOS要求所有可执行代码均使用Apple颁发的证书进行签名;
硬件方面
运行时进程安全性
沙盒机制Sandbox
- 每个应用程序都有自己的存储空间;
- 应用程序不能直接访问别的存储空间内容;
- 应用程序请求的数据都要通过权限检测;
iOS 8沙盒路径:
/var/mobile/Containers/Data/Application/[GUID]→
数据执行保护DEP
- 处理器能区分哪部分内存是可执行代码或数据,DEP不允许数据执行,只允许代码执行;
- 恶意代码注入目标程序数据段是无法执行的;
- 需通过ROP创建一块可写入可执行的内存区域,进行代码签名后,其中代码段的各个代码片段连接执行;
地址空间布局随机化ASLR
在iOS中,二进制文件、库文件、动态链接文件、栈和堆内存地址的位置全部是随机的;即每次运行内存地址都是重新进行分配不一样;
Xcode运行一个项目,打断点,通过LLDB的命令image list -o -f 可在控制台打印查看;每次分配的内存地址都会不同;
数据加密保护
同时有硬件密钥和密码密钥,加密的文件才能被解密;换到另一台设备则会无法正常打开,硬件密钥不同;
安全机制下的安全问题
XcodeGhost: 使用第三方类似Xcode的开发软件进行开发,可能无形中恶意代码在开发中被注入,导致恶意代码也会被正常签名和运行,引发安全问题;
越狱: 等同放弃了苹果系统建立的安全架构保护;
越狱
何为越狱?
通过一系列iOS系统漏洞,对系统安全权限进行破解,获取系统Root权限;
有引导式越狱、完美越狱和不完美越狱;
iPhone越狱
设备使用:iPhone 6 Plus;
操作系统:iOS 12.5.6;
使用软件:爱思助手 公测版 1.17;(下载地址: www.i4.cn/ )
- 连接手机到电脑,打开爱思助手,选择工具箱 -> 一键越狱;
- 软件会出现对应的支持的越狱方式,按照提示进行后面的 越狱步骤即可;目前主流的unc0ver支持的最高版本为14.8;
- 自己有尝试过unc0ver的方式,在手机上显示为不支持;因此采用第二种Checkra1n的方式;
- 点击Start,会提示手机需要进入DFU模式,也就是恢复模式才能进行下一步,对应型号手机可以自行搜索进入方式;
- 保持手机连接,关机并进入DFU模式后再在Checkra1n界面点击Start;
- 对应手机机型是否有Home键会有不同的按键方式。第一步,点击Start;第二步,根据提示按住电源键和Home键(音量-键);第三步,松开电源键,只按住Home键(音量-键);
- 在倒计时结束后松开等待完成rebooting;进度条100%完成后,手机正常开机。
- 等待一会,手机页界面显示Checkra1n的app,点击进入后,进行Cydia的安装;
- 完成了Cydia的安装,并显示于界面上,即为完成了越狱;
- 如果不想回滚越狱的操作,则可以进入Checkra1n,选择Restore System;通过unc0ver越狱的也可以通过相关插件进行撤销越狱的操作;
越狱插件介绍
经过越狱的手机,可以通过Cydia搜索并进行各种插件的安装;
系统主题改变 、功能扩展插件 - Cloaky
命令行工具 - adv-cmds
查看文件 - iFile
相关app插件 - 搜索关键词 wechat-xxx;
程序插件 - Tweak
越狱利弊
利:可通过Cydia安装各类系统插件;更改系统外观;随意安装应用;
弊:恶意代码运行的概率变大;系统的不稳定性增加;不予以保修;
越狱是否代表sandbox沙盒机制被移除?
iOS越狱不代表沙盒sandbox的移除,AppStore下载的app仍无法直接访问短信联系人或其他应用,但可以通过安装系统app(在/Applications目录下)来进行访问;
查看应用沙盒
非越狱:
Xcode工具栏 → Window → Devices and Simulators → 选择连接的手机 → INSTALLED APPS → 在其下的加减旁有个更多 → Show/Download/Replace container;
show → 然后并没有看到里面的内容,显示为空白;
越狱:
需要安装AFC2(www.i4.cn/news_detail… AFC2安装教程)后,通过iFunBox、iFile、iTools查看:
iFunBox下载www.i-funbox.com/en/index.ht…
越狱手机的文件夹系统结构目录
/Applications:所有系统App和来自Cydia的App;
/Library:存放系统App的数据(/Library/MobileSubstrate);
/System:包含大量系统组件和库;
/User:存放用户数据(照片、短信、邮件);
/bin:存放提供基础功能的二进制文件;
/usr:用户工具和程序-命令行(ps)、/usr/include标准C头文件、/usr/lib存放库文件;
/var:日志、用户数据、临时文件、AppStore App;
……
Cydia Substrate
一个允许第三方开发者修改系统或者应用程序功能的框架,安装的插件大多数是通过该框架进行实现;包含以下三个部分:
MobileHooker:对应用函数系统函数进行Hook,然后调用自己的函数;
MobileLoader:指定我们要Hook的应用,在应用启动时加载我们的动态库来达到hook的效果;
safe mode:在安装某个应用导致系统崩溃,就会进入该安全模式,该模式下所有的插件都不会加载;
iOS文件权限解读
通过电脑终端去登录访问远程手机目录,会打印出来的类似以下的信息,对应的信息如下;
lrwxr-xr-x root admin 32 Jun 10 11:22 Applications - > /var/stash/_.pPKHVh/Applications
r-可读;w-可写;x-可执行;
l: 文件类型;
rwx:文件拥有者的权限;
r-x:同用户组权限;
r-x:非同用户组权限 ;
root:所有者;
admin:所属用户组;
Applications:文件或符号链接名,是符号链接会紧跟其真实路径;
iOS 8.3 App Store App目录路径
/var/mobile/Containers/Bundle/Application/[GUID]
iOS 8.3 App Store App沙盒目录路径
/var/mobile/Containers/Data/Application/[GUID]
越狱系统常见文件类型
App
Preference Bundle —— 功能菜单
Dynamic Library —— 动态库
命令行工具
Daemon —— 守护程序