第1章 漏洞汇总
应用系统 |
利用漏洞 |
威胁来源 |
风险等级 |
风险描述 |
IOS APP渗透测试漏洞汇总 |
日志泄漏敏感信息 |
外部黑客 |
高 |
在日志中打印信息,则可能泄露访问链接、收发的数据包甚至身份凭证等内容。 |
本地数据存储安全 |
外部黑客 |
高 |
例如,为提供离线的邮件访问功能,Gmail的iOS APP以明文方式将所有邮件存储在SQLite数据库中。一旦可以物理访问到设备或其备份文件,存储在SQLite中未加密的敏感信息容易被泄露。 |
|
Plist敏感数据保存 |
外部黑客 |
高 |
对于以编码、未加密或弱加密形式存储的敏感信息就可能会导致敏感信息泄露了。 |
|
代码未混淆风险 |
外部黑客 |
高 |
针对iOS应用开发使用的Object-c 及 C,C++代码目前较缺乏有效的防护手段,苹果的app自身并没有比android更安全的防范措施,也无法通过常规的二次加固保护应用不被反编译和篡改,应用代码编写过程中出现的安全漏洞、编码隐患、甚至业务逻辑上的缺陷很容易被分析暴露,造成程序业务逻辑泄露、加解密算法失效、通信加密失效,攻击者可以利用这些信息窃取客户端的敏感数据,包括账号、密码;绕过业务安全认证流程,直接篡改用户账号信息;对服务器接口发起攻击等。iOS的代码混淆,是通过将 Object-C、C/C++代码中的方法名、变量名、类名、包名等这些元素名称改成毫无关联且无意义的名字,对源代码实现逻辑分支混淆和控制流平坦化,隐藏关键逻辑,提高黑客破解难度,增加破解时间成本。 |
|
调试日志函数调用风险 |
外部黑客 |
高 |
调试日志函数可能将重要的日志信息输入到日志文件中,其中可能包含敏感信息,例如客户端用户信息,客户端代码执行逻辑、本地数据库路径、服务器路径、引用的外部动态链接库等,这些信息会给发起攻击提供便利,例如:本地读写文件的路径,可能暴露关键数据的存储位置;通信交互流程的日志,会成为发动服务器攻击的依据;跟踪的变量值,可能泄露一些敏感数据,输入的账号、密码等。 |
|
不安全的API函数引用风险 |
外部黑客 |
高 |
iOS中提供的系统API函数中,包含一些存在安全隐患或者需配合指定方式使用的系统API,否则将会导致安全性问题。其中,比较明显的一种问题就是缓冲区溢出攻击。此类API中无法自动对栈中的数组进行边界检查,而且局部变量和状态信息,都存在栈中。这样,对越界的数组元素的写操可能会破坏存储在栈中的状态信息。当程序使用这个被破坏的状态,试图重新加载寄存器或执行ret指令时,就会出现很严重的错误,可能导致程序运行失败、系统关机、重新启动。更加致命的情况是让程序跳转去执行攻击者的恶意指令,比如非法提升权限,执行恶意代码等。 |
|
软件动态调试检测 |
外部黑客 |
高 |
||
内存敏感信息检测 |
外部黑客 |
高 |
||
认证策略机制检测 |
外部黑客 |
高 |
注册逻辑矛盾。 |
|
账户密码登陆检测 |
外部黑客 |
高 |
攻击者能够通过不安全的认证口令可以直接登录。 |
|
消耗短信验证码 |
外部黑客 |
高 |
攻击者在通过不断批量获取,一方面消耗平台内短信验证码,一方面导致用户被骚扰,甚至会导致正常业务无法进行。 |
|
数据重放安全测试 |
外部黑客 |
高 |
||
存储型跨站脚本 |
外部黑客 |
高 |
攻击者可以通过构造URL注入JavaScript、VBScript、ActiveX、HTML或者Flash的手段,利用跨站脚本漏洞欺骗用户,收集Cookie等相关数据并冒充其他用户。通过精心构造的恶意代码,可以让访问者访问非法网站或下载恶意木马,如果再结合其他攻击手段(如社会工程学、提权等),甚至可以获取系统的管理权限。 |
|
金额任意修改 |
外部黑客 |
高 |
攻击者在通过修改金额,可以不断的进行非法充值,导致平台内大量财务损失。 |
|
越权添加地址 |
外部黑客 |
高 |
在请求中修改标识资源的参数,可以越权查看、编辑、添加甚至删除相关信息。 |
|
越权删除地址 |
外部黑客 |
高 |
在请求中修改标识资源的参数,可以越权查看、编辑、添加甚至删除相关信息。 |
|
sql语句报错 |
外部黑客 |
高 |
攻击者可以通过构造特殊URL的手段,去进行下一步攻击操作。 |
|
垃圾数据重复提交 |
外部黑客 |
高 |
攻击者可以通过不断提交垃圾数据影响数据库的记录。 |
|
弱哈希算法使用漏洞 |
外部黑客 |
中 |
哈希算法是通过hash散列函数的形式,可将任意长度的消息通过特定的算法处理后,输出为一个固定长度的字符串,其具有两个特点:不可逆和抗碰撞性,即无法从结果推导出原来的输入,也无法由两个不同的输入得到相同的输出字符串。因此,哈希算法的这种特性可以用来加密用户的敏感数据并且检验数据的完整性,例如数字签名、消息的完整性检测、消息起源的认证检测等。常见的散列算法有MD5、SHA、RIPEMD等。而当前随着密码分析技术的发展,现有的一些散列函数安全性已经大幅降低,攻击者可针对构造出碰撞条件,或是通过逆向还原输入原数据破解此类函数。此类弱哈希算法包括MD5,SHA1以及RIPEMD函数。 |
|
密码复杂度检测 |
外部黑客 |
中 |
导致用户有时贪图方便修改成简单密钥使攻击者容易通过弱口令进入帐号进行非法操作,检测客户端修改密码能否输入弱口令。 |
|
会话策略安全检测 |
外部黑客 |
中 |
执行退出操作后,服务器未及时销毁会话。攻击者可利用原会话信息以用户身份执行各种操作。 |
|
跨站请求伪造 |
外部黑客 |
中 |
可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。 |
|
数据加密数据检测 |
外部黑客 |
中 |
APP 使用 HTTP 协议进行通信过程中可能会遭受中间人攻击,威胁数据安全。 |
|
键盘数据缓存检测 |
外部黑客 |
中 |
如果用户输入没被保护,有可能造成敏感信息泄漏。 |
|
界面切换缓存检测 |
外部黑客 |
中 |
||
软件完整性校验 |
外部黑客 |
低 |
攻击者能够通过反编译的方法在客户端程序中植入自己的木马,客户端程序如果没有自校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息。 |
|
越狱安全风险提示 |
外部黑客 |
低 |
越狱环境中运行则难以保证程序使用过程中数据的安全性。 |
|
软键盘随机化检测 |
外部黑客 |
低 |
在输入框中多次调出键盘,检查键盘中的字符分布是否是随机的。 |
|
界面切换模糊检测 |
外部黑客 |
低 |
则可能导致手机丢失后被直接使用已输入的信息进行登录 |
|
跨域资源访问 |
外部黑客 |
低 |
CORS非常有用,可以共享许多内容,不过这里存在风险。因为它完全是一个盲目的协议,只是通过HTTP头来控制的。那么,CORS跨域资源共享漏洞是怎么发生的呢?由于程序员配置不当,Origin源不严格,从而造成跨域问题。 |
|
中间件信息泄漏 |
外部黑客 |
低 |
泄漏版本信息,攻击者为进一步攻击做准备。 |
|
二进制程序漏洞 |
外部黑客 |
根据业务 |
在没有进行函数名和逻辑混淆的时候,则容易被反汇编得到关键逻辑进而进行破解。 |
|
屏幕录像安全检测 |
外部黑客 |
根据业务 |
密码框输入时有回显,通过屏幕录像可以获取输入的密码。 |
|
键盘记录输入检测 |
外部黑客 |
根据业务 |
iOS 中安装了键盘记录程序(可以在非越狱状态运行),则使用系统键盘输入的内容易被键盘记录程序记录,导致内容泄露。 |
|
UI敏感信息检测 |
外部黑客 |
根据业务 |
攻击者能够通过爆破穷举获取关键的账户和密码,进行下一步攻击和利用。 |
|
敏感信息泄露 |
外部黑客 |
根据业务 |
关键信息被泄露导致进一步攻击。 |
|
键盘数据缓存检测 |
外部黑客 |
根据业务 |
如果用户输入没被保护,有可能造成敏感信息泄漏。 |
|
程序执行数据检测 |
外部黑客 |
根据业务 |
第2章 环境和工具
2.1. 常用工具列表和越狱插件源
MAC平台 |
Windows平台 |
Macbook:Macos Catalina 10.15.5 |
VMware虚拟机15 15.5.6.16341506 |
iPhone X:ios 13.13.4.1 |
Windows 10 专业版 |
2.1.1. 工具列表
测试时用到的工具:
名称 |
用途 |
备注 |
iTools |
下载安卓 ipa,文件管理、越狱等 |
https://www.itools.cn/ |
PP 助手 |
下载安卓 ipa,文件管理、越狱等 |
https://www.25pp.com/ |
iFunBox |
用于连接设备进行文件管理、安装程序 |
http://xiazai.zol.com.cn/detail/43/428732.shtml |
usbmuxd |
进行本机和 USB 设备的端口映射 |
https://github.com/libimobiledevice/usbmuxd.git |
xCode |
苹果官方编辑器,需要安装 command line tools |
Appstore下载 |
SQLiteBrowser |
用于查看 sqlite 数据库 |
http://www.sqlitebrowser.org/ |
Atom |
编辑器,主要安装插件查看文件 |
https://atom.io/ |
IDA pro |
强大反汇编软件,用于对程序进行反汇编操作 |
各平台破解版下载:https://pan.baidu.com/s/19UzS__Qii74Gu4_8BNyVDQ 密码: mhb8 |
iOS APP Signer |
签名工具 |
https://github.com/DanTheMan827/ios-app-signer |
Hopper |
强大反汇编软件,用于对程序进行反汇编操作 |
http://www.xue51.com/mac/6040.html |
LLDB |
用于替代 GDB 的动态调试软件 |
安装xcode,自带 |
Frida |
运行时调试工具 |
https://github.com/frida/frida |
iHex |
十六进制编辑器,可以查看二进制文件 |
苹果手机安装Filza越狱软件即可 |
debugserver |
可以在 IDA pro 的文件夹中找到 |
参考:https://bbs.pediy.com/thread-190126.htm |
yololib |
进行 dylib 注入的工具 |
https://www.dazhuanlan.com/2019/10/04/5d9748ba5d759/ |
Reveal iOS测试 |
Reveal iOS 程序界面分析工具 |
https://www.jianshu.com/p/6cac1052879d |
MonkeyDev |
https://github.com/AloneMonkey/MonkeyDev |
|
Frida-ios-dump |
https://github.com/AloneMonkey/frida-ios-dump |
|
passionfruit |
https://github.com/chaitin/passionfruit |
2.1.2. 插件源址
名称 |
地址 |
Apt |
https://apt.bingner.com |
BigBoss |
https://apt.thebigboss.org/repofiles/cydia/ |
Chariz |
https://repo.chariz.com |
ModMyi |
http://apt.modmyi.com |
2.1.3. 必装插件
插件 |
用途 |
adv-cmds |
ps关键命令 |
AFC2 |
用于展现越狱文件夹 |
AppAsync |
辅助安装非官方源的软件 |
bzip2 |
用来进行 tar 打包 |
class dump |
获取 class 信息 |
classdumpz |
获取 class 信息,可以获取 64 位的 |
Clutch |
用于自动脱壳,得到的可执行文件根据系统有异同 |
Cycript |
Cycript 运行时调试工具 |
Filza File Manger |
Filza File Manger iOS 上的文件管理器 |
Frida |
Frida 动态 Hook 工具服务端 |
File-cmds |
chflags, compress, ipcrm, ipcs, pax |
grep |
grep 命令 |
inetutils |
inetd, ping, rlogin, telnet, tftp |
iKeyMonitor |
记录键盘与自动屏幕截屏 |
Introspy-iOS |
动态运行记录 |
iOS SSL Kill SwitchHookN-02-01-004 i |
程序的证书检验逻辑,绕过证书检验ST-PEN-02-01-0 |
keychain_dumper |
用于读取 keychain,但是只有解锁时候可用 |
lsof |
lLSOF 命令查看文件结构 |
mem-check |
对指定的程序检查内存中的字符串 |
netcat |
netcat 命令 |
Network Commands |
arp, ifconfig, netstat, route, traceroute |
OpenSSH |
在设备中建立 SSH 服务,监听 22 端口,默认密码 alpine |
Sed |
sed 命令 |
Shell-cmds |
kill-all, renice, time, which |
system-cmds |
iostat, login, passwd, sync, sysctl |
Snoop-It |
自动化动态分析工具 |
tcpdump |
本地网络抓包软件,类似 wireshark 命令行版 |
Terminal |
本地命令行界面程序 |
Appsyncubified |
关闭安装包签名(必装) |
3.1. 苹果手机越狱
unc0ver越狱:https://www.i4.cn/news_detail_46675.html
4.1. 远程连接iPhone
iPhone(越狱机)中安装插件OpenSSH
使iPhone和电脑在同一局域网或者WIFI内
iPhone :
Mac:
输入ssh密码, 默认为: alpine 推荐使用finashell进行登录,同时可以进行文件的上传和下载,用于测试。
登陆设备:
登陆成功:
更改root密码
第3章 测试风险定级
测试分类 |
测试项目 |
风险等级 |
客户端数据一级存储安全 |
5.1.1.日志泄漏敏感信息 |
高 |
5.1.2.本地数据存储安全 |
高 |
|
5.1.3.Plist敏感数据保存 |
高 |
|
客户端静态安全测试 |
5.2.1.软件完整性校验 |
低 |
5.2.2.二进制程序漏洞 |
根据业务 | |
5.2.3.代码未混淆风险 |
高 |
|
5.2.4.调试日志函数调用风险 |
高 |
|
5.2.5.不安全的API函数引用风险 |
高 |
|
5.2.6.弱哈希算法使用漏洞 |
中 |
|
客户端运行时安全 |
5.3.1.越狱安全风险提示 |
低 |
5.3.2.屏幕录像安全检测 |
根据业务 |
|
5.3.3.软件动态调试检测 |
高 |
|
5.3.4.内存敏感信息检测 |
高 |
|
5.3.5.键盘记录输入检测 |
根据业务 |
|
安全策略设置安全 |
5.4.1.UI敏感信息检测 |
根据业务 |
5.4.2.密码复杂度检测 |
中 |
|
5.4.3.软键盘随机化检测 |
低 |
|
5.4.4.界面切换模糊检测 |
低 |
|
5.4.5.认证策略机制检测 |
高 |
|
5.4.6.会话策略安全检测 |
中 |
|
5.4.7.账户密码登陆检测 |
高 |
|
5.4.8.消耗短信验证码 |
高 |
|
5.4.9.软件升级安全检测 |
中 |
|
5.4.10.数据重放安全测试 |
高 |
|
Web服务安全漏洞 |
5.5.1.未授权页面访问 |
高 |
5.5.3.存储型跨站脚本 |
高 |
|
5.5.4.跨站请求伪造 |
中 |
|
5.5.6.跨域资源访问 |
低 |
|
5.5.7.金额任意修改 |
高 |
|
5.5.8.越权添加地址 |
高 |
|
5.5.9.越权删除地址 |
高 |
|
5.5.10.敏感信息泄露 |
根据业务 |
|
5.5.11.sql语句报错 |
高 |
|
5.5.12.中间件信息泄漏 |
低 |
|
5.5.13.垃圾数据重复提交 |
高 |
|
软件通信数据安全 |
5.6.1.数据通信协议检测 |
根据业务 |
5.6.2.数据加密数据检测 |
中 |
|
客户端数据二级存储安全 |
6.1.1.键盘数据缓存检测 |
根据业务 |
6.1.2.键盘数据缓存检测 |
中 |
|
6.1.3.界面切换缓存检测 |
中 |
|
6.1.4.程序执行数据检测 |
根据业务 |
|
6.1.5.数据通信缓存检测 |
根据业务 |
目前IOS APP检测的方式方法较为零散,集合各种检测项目和方法,更新了新的插件安装和工具,方便安全测试人员检测漏洞。IOS APP检测方式与安卓 APP有一些区别,前者相对来说针对客户端的检测项减少,后者则更多且复杂。大佬勿喷。
来源:freebuf.com 2021-06-29 11:01:05 by: M大黄黄先生
请登录后发表评论
注册