前言
今天,智能手机是我们生活中不可或缺的一部分。我们依赖智能手机拍照、摄像、打电话、发短信、使用即时通信、导航定位、购物消费、公共出行等等。它们已经渗透到商业和社交生活中的每一个角落。
智能手机就像微型电脑,而手机APP就像电脑上的软件一样。
我们的手机和其应用程序APP存储并处理我们的个人信息、照片、录音、录像、笔记、银行账户信息、购物信息、社交信息、工作交流、个人健康、卫星定位等等。手机APP一般以客户端的形式存在,以连接到我们日常使用的服务器,处理我们与外界交换的每条信息。入侵了一个人的智能手机,就相当于得到对这个人的生活的所有信息。对比于电脑,智能手机这类移动设备更容易丢失或被盗,并且随着恶意软件愈演愈烈,对手机上面的敏感信息保护需求就愈发显著。
如何从黑客的角度,来看待手机APP的安全
黑客评价一个手机APP是否安全的标准:就是依据手工的渗透测试报告,而渗透测试需要检查如下的内容:
1、手机APP的组件都须标注出来,并且确定它们全部是必需的。
2、所有安全控制都必须在APP与各个服务器上被强制执行。
3、手机APP的高级架构与所有的远程服务都应该被定义,并且该设计解决了所有安全的相关问题。
4、在手机APP环境下,敏感的数据应该被清楚的标识出来。
5、手机APP的组件是根据它们提供的业务功能或安全功能来进行定义的。
6、制定手机APP和远程服务的威胁模型,以识别潜在的威胁以及制定应对措施。
7、手机APP的安全控制都必须被集中管理。
8、如果手机APP用到加密密钥,就必须对密钥管理有明确的规定,并且强制推行密钥生命周期。
9、手机APP要有强制更新的机制。
10、手机APP必须遵守国家法律、法规以及行业信息安全标准。
手机APP安全渗透测试的痛点
在笔者多年信息安全工作中,发现之所以手机APP渗透测试不能有效达到目标,归根结底,主要有如下痛点:
- 不知道手机APP渗透测试测什么!
- 不知道用什么工具进行手机APP渗透测试!
- 不知道怎么进行手机APP渗透测试!
- 不知道手机APP测渗透试是否完整覆盖各个安全点!
- 不知道手机APP的某些测试在不同的手机操作平台是否能测!
- 测出来的手机APP无法详细分类!
手机APP黑客手册
综上所述,有必要对android(安卓手机)和IOS(苹果手机)APP的渗透测试中分类、名称、描述、黑客工具进行详细的归纳、总结。
所以,《手机APP黑客手册1.0》诞生
1. 不正确的系统功能使用测试
这一类别包括滥用平台功能或未能进行平台安全控制。它可能包括Android的意图、平台权限、TouchID的滥用、Keychain或其他一些作为移动操作系统一部分的安全控制。
1.1 误用app授权
手机操作系统平台:Android
描述:过度的app授权
黑客工具:apktool, MobSF
1.2 操作系统允许安装不安全的版本
手机操作系统平台:Android & IOS
描述:识别 “minSdkVersion” 在apktool.yml,值应该被设置大于17;对于IOS,使用idb识别minOS
黑客工具:apktool, idb
1.3 通过使用IPC滥用安卓组件
手机操作系统平台:Android
描述:识别安卓的可导出组件
黑客工具:MobSF,Androidmanifest.xml
1.4 滥用密钥链、触摸ID和其他安全相关控制
手机操作系统平台:IOS
描述:识别密钥链上数据保护API的误用,TouchID的误用(从本地存储、本地Authen检索凭据)
黑客工具:iDevice
1.5 缺少最低设备安全要求
手机操作系统平台:Android & IOS
描述:确保当PIN码或模式锁定时,app无法执行。
黑客工具:Device
1.6 防火墙上打开的端口过多
手机操作系统平台:Android & IOS
描述:识别服务器端URL/IP地址处打开的端口
黑客工具:Nmap
1.7 APP服务器上的默认凭据
手机操作系统平台:Android & IOS
描述:识别后端服务器上的默认凭据(例如,使用Tomcat/Tomcat或admin/Tomcat的Tomcat应用程序服务器)
黑客工具:Web Browser
1.8 弱密码策略实现
手机操作系统平台:Android & IOS
描述:识别app和服务器端的弱密码策略实现(例如,在UI上进行绕过密码复杂性检查)
黑客工具:Burpsuite
1.9 通过WSDL文档公开的webservices
手机操作系统平台:Android & IOS
描述:识别显示方法和结构的webservices帮助页(.asmx)
黑客工具:Web Browser
1.10 服务器API上的安全配置错误
手机操作系统平台:Android & IOS
描述:识别Web服务器配置(例如:错误处理、HTTP响应横幅)
黑客工具:Web Browser, Burpsuite
1.11 服务器API上的安全补丁
手机操作系统平台:Android & IOS
描述:识别服务器API上的漏洞
黑客工具:openvas
1.12 API上的输入验证
手机操作系统平台:Android & IOS
描述:检查API/Webservices上的输入验证(例如:SQL注入,XXE)
黑客工具:Burpsuite
1.13 通过API响应消息进行信息公开
手机操作系统平台:Android & IOS
描述:识别API响应消息/头的敏感信息
黑客工具:Burpsuite
1.14 API上的交互频率控制
手机操作系统平台:Android & IOS
描述:构造API上的同时攻击(例如:OTP一次性密码、电子邮件发送)
黑客工具:Burpsuite (Intruder)
2 不安全的数据存储测试
包括:获得丢失/被盗移动设备;在移动设备上执行的恶意软件或另一个重新打包的应用程序
2.1 无限制备份文件
手机操作系统平台:Android
描述:”android:allowBackup”属性应被设置为false
黑客工具:apktool,Androidmanifest.xml
2.2 非加密的数据库文件
手机操作系统平台:Android & IOS
描述:检查数据库文件的加密
黑客工具:adb, idb, iFunbox
2.3 不安全的共享存储
手机操作系统平台:Android
描述:识别在共享存储的敏感数据,SD卡存储加密,共享 MODE_WORLD_READABLE
黑客工具:adb
2.4 不安全的app数据存储
手机操作系统平台:Android & IOS
描述:识别敏感数据在app的文件中(app 日志,cache文件,cookie文件)
黑客工具:adb, idb, iFunbox,BinaryCookieReader
2.5 通过Logcat/Apple System Log (ASL)泄露信息
手机操作系统平台:Android & IOS
描述:通过app日志,识别敏感信息
黑客工具:adb logcat, idb, libimobiledevice
2.6 app背景截图
手机操作系统平台:Android & IOS
描述:识别app背景截图/截屏功能
黑客工具:Device, iFunbox
2.7 复制/粘贴缓存区
手机操作系统平台:Android & IOS
描述:识别在EditText/UITextField上禁用应用程序敏感部分的复制/粘贴功能
黑客工具:idb, iFunbox
2.8 键盘按下缓冲
手机操作系统平台:Android & IOS
描述:识别在/var/mobile/Library/Keyboard
/data/data/com.android.providers.userdictionary/databases/user_dict.db中的
键盘缓冲文件
黑客工具:Device, idb, iFunbox
2.9 无限制备份文件
手机操作系统平台:Android & IOS
描述:
对于Android,检查应该设置为“false”的“Android:allowBackup”属性
对于iOS,使用iTune备份应用程序文件夹,以便从备份文件夹中检查敏感信息
黑客工具:apktool,iPhone Backup Extractor
3 不安全的通信方式测试
在设计移动应用程序时,数据通常以客户机-服务器的方式进行交换。当传输其数据时,它必须穿越移动设备的运营商网络和互联网。攻击者可能会利用漏洞来拦截敏感数据,而这些数据是通过网络传输的。存在以下攻击方式:
- 共享您的本地网络(受威胁或受监控的Wi-Fi);
- 运营商或网络设备(路由器、基站、代理等);
- 移动设备上的恶意软件。
3.1 不安全传输层协议
手机操作系统平台:Android & IOS
描述:通过是否实现了SSL的代理观察设备的网络流量
黑客工具:Burpsuite
3.2 使用不安全和不推荐的算法
手机操作系统平台:Android & IOS
描述:识别SSL/TLS加密算法
黑客工具:testssl.sh, Qualys SSL Labs
3.3 使用禁用证书验证
手机操作系统平台:Android & IOS
描述:允许测试人员在不安装证书的情况下拦截SSL通信(checkServerTrusted with nobody)
黑客工具:jdgui, MobSF, Qark
3.4 SSL固定实现
手机操作系统平台:Android & IOS
描述:检查app是否接受来自任何受信任CA(Burpsuite)的证书。
例如:检查setAllowsAnyHTTPSCertificate(iOS)和AllowAllHostnameVerifier(Android)
黑客工具:jdgui, MobSF, Qark
3.5 端到端加密
手机操作系统平台:Android & IOS
描述:识别应用层上的端到端加密
黑客工具:Burpsuite
4 不安全的认证机制测试
利用身份验证漏洞的攻击方法,通常通过使用现成工具或自定义工具的自动攻击来实现。
4.1 记住凭据功能(持久身份验证)
手机操作系统平台:Android & IOS
描述:在设备上识别用户的密码或会话
黑客工具:adb, idb, iFunbox
4.2 基于客户端的身份验证缺陷
手机操作系统平台:Android & IOS
描述:对APP执行二进制攻击以绕过脱机身份验证
黑客工具:adb, Drozer, Cycript, Snoop-it, Burpsuite
4.3 后台会话无效
手机操作系统平台:Android & IOS
描述:确保所有会话无效事件都在服务器端执行,而不仅仅是在app上执行
黑客工具:Burpsuite
4.4 会话超时保护
手机操作系统平台:Android & IOS
描述:app必须在后端组件上具有足够的超时保护
黑客工具:Burpsuite
4.5 cookie 轮换
手机操作系统平台:Android & IOS
描述:确保在身份验证状态更改期间正确实现重置Cookie
(匿名<->用户,用户A<->用户B,超时)
黑客工具:Burpsuite
4.6 多个并发登录
手机操作系统平台:Android & IOS
描述:同时使用同一凭据从多个设备登录
黑客工具:Burpsuite
4.7 在攻击者可见元素中公开设备特定标识符
手机操作系统平台:Android & IOS
描述:通过代理来观察设备的网络流量,该代理在传输过程中是否发送了设备的信息(UDID)
黑客工具:Burpsuite
5 弱加密测试
任何人可以物理访问加密不当的数据。
5.1 基于加密的存储强度
手机操作系统平台:Android & IOS
描述:识别源代码上不安全/不推荐的加密算法(RC-4、MD5、SHA1)
黑客工具:jdgui, MobSF, Qark, Hopper, iFunbox
5.2 不好的密钥管理过程
手机操作系统平台:Android & IOS
描述:在一个app中识别硬编码密钥,或通过二进制攻击拦截密钥
黑客工具:jdgui, MobSF, Qark, Hopper, iFunbox
5.3 使用自定义加密协议
手机操作系统平台:Android & IOS
描述:确定实施他们自己的协议
黑客工具:jdgui, MobSF, Qark, Hopper, iFunbox
5.4 令牌/会话的创建和处理
手机操作系统平台:Android & IOS
描述:Token/Session 应该是标准算法,足够长、足够复杂和伪随机,以便抵抗猜测/预期攻击
黑客工具:Burpsuite
6 不安全的授权测试
利用授权漏洞的攻击方式,通常通过使用现成的工具或自定义工具的自动攻击来实现。
6.1 客户端授权违反
手机操作系统平台:Android & IOS
描述:对app执行二进制攻击,并尝试执行特权功能,该功能只应使用更高权限的用户执行
黑客工具:adb, Drozer, Cycript, Snoop-it, Burpsuite
6.2 不安全的直接对象引用
手机操作系统平台:Android & IOS
描述:通过HTTPs通信直接访问未经授权的 object/var
黑客工具:Burpsuite
6.3 缺少功能级访问控制
手机操作系统平台:Android & IOS
描述:通过HTTPs流量直接访问未经授权的功能
黑客工具:Burpsuite
6.4 绕过业务逻辑的缺陷
手机操作系统平台:Android & IOS
描述:绕过业务逻辑数据验证,规避工作流
黑客工具:Burpsuite
7 代码安全质量测试
包括可以将不受信任的输入传递给在移动代码中进行的方法调用的实体。这些类型的问题本身不一定是安全问题,但会导致安全漏洞。例如,旧版Safari中的缓冲区溢出(一个低质量的代码漏洞)导致了高风险的越狱攻击。较差的代码质量问题通常通过恶意软件或网络钓鱼欺诈来利用。
7.1 内容提供程序:SQL注入和本地文件包含
手机操作系统平台:Android
描述:在内容提供组件上识别SQLi和LFI
黑客工具:Drozer
7.2 广播接收机
手机操作系统平台:Android
描述:识别广播和接收器组件上的意图过滤器,以便直接访问和嗅探信息
黑客工具:Drozer
7.3 服务组件
手机操作系统平台:Android
描述:直接调用服务组件
黑客工具:Drozer
7.4 WebView强化不足
手机操作系统平台:Android & IOS
描述:识别“android.webkit.WebSettings”上的错误配置(Javascript/文件访问/插件),通过UIWebview的XSS
黑客工具:jdgui, iDevice
7.5 注入(SQLite注入,XML注入)
手机操作系统平台:Android & IOS
描述:在app中标识SQLi和XMLi
黑客工具:adb, iDevice, Burpsuite
7.6 通过Webviews包含本地文件
手机操作系统平台:Android & IOS
描述:通过setAllowFileAccess检查APP(../../../blah\0)上的LFI文件访问攻击
黑客工具:jdgui, iDevice
7.7 滥用URL方案或深度链接
手机操作系统平台:Android & IOS
描述:
对于iOS:通过info.plist和Clutch+字符串识别URL方案以获得URL方案结构
对于Android:通过源代码或manifest文件识别URL方案
黑客工具:apktool, jdgui, Clutch, Strings
7.8 敏感信息屏蔽
手机操作系统平台:Android & IOS
描述:识别敏感信息屏蔽(用户界面和HTTPs流量上的卡号)
黑客工具:Device, Burpsuite
8 代码恶意修改测试
攻击者会通过第三方应用程序商店中的恶意应用程序形式,利用代码修改进行攻击。攻击者还可能通过网络钓鱼攻击欺骗用户安装应用程序。
8.1 非授权代码修改
手机操作系统平台:Android & IOS
描述:静态代码修改,二进制补丁,绕过哈希校验值
黑客工具:apktool, Hopper
8.2 运行时操作
手机操作系统平台:Android & IOS
描述:运行时操作,方法滑动
黑客工具:Frida, Cycript, Snoop-it
8.3 root或越狱损坏的设备检查
手机操作系统平台:Android & IOS
描述:检测逆向工程APP文件中的root/jb检测代码。如果找到,请删除/更改包含代码的文件的访问控制,然后重新启动app。或者安装hidemyroot之类的工具并运行app
黑客工具:tsProtector, RootCloak2
9 逆向工程测试
攻击者通常会从应用程序商店下载目标应用程序,并使用一套不同的工具在自己的本地环境中对其进行分析。
9.1 应用代码的逆向工程(代码模糊检查)
手机操作系统平台:Android & IOS
描述:对app的反汇编和反编译
黑客工具:apktool, dex2jar, Clutch, Classdump
9.2 信息泄露/二进制中的硬编码凭据
手机操作系统平台:Android & IOS
描述:二进制/源代码中的身份敏感信息
黑客工具:string, jdgui, IDA, Hopper
10 无关功能测试
攻击者试图了解移动应用程序中的无关功能,以便在后端系统中发现隐藏的功能。攻击者通常会直接从自己的系统中利用无关的功能,而不需要最终用户的参与。
10.1 可调式app
手机操作系统平台:Android
描述:识别了 “android:debuggable”属性
黑客工具:adb, MobSF
10.2 密码/连接字符串泄漏
手机操作系统平台:Android & IOS
描述:识别移动设备和API之间的敏感信息(凭据)
黑客工具:jdgui, Burpsuite
10.3 隐藏和未经编辑的功能
手机操作系统平台:Android & IOS
描述:识别无关功能(隐藏后端URL)
黑客工具:jdgui, Burpsuite
来源:freebuf.com 2020-12-14 16:03:33 by: c9t9h5
请登录后发表评论
注册