今天,智能手机是我们生活中不可或缺的一部分。我们依赖智能手机拍照、摄像、打电话、发短信、使用即时通信、导航定位、购物消费、公共出行等等。它们已经渗透到商业和社交生活中的每一个角落。
智能手机就像微型电脑,而手机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渗透测试不能有效达到目标,归根结底,主要有如下痛点:
综上所述,有必要对android(安卓手机)和IOS(苹果手机)APP的渗透测试中分类、名称、描述、黑客工具进行详细的归纳、总结。
所以,《手机APP黑客手册1.0》诞生
这一类别包括滥用平台功能或未能进行平台安全控制。它可能包括Android的意图、平台权限、TouchID的滥用、Keychain或其他一些作为移动操作系统一部分的安全控制。
手机操作系统平台:Android
描述:过度的app授权
黑客工具:apktool, MobSF
手机操作系统平台:Android & IOS
描述:识别 "minSdkVersion" 在apktool.yml,值应该被设置大于17;对于IOS,使用idb识别minOS
黑客工具:apktool, idb
手机操作系统平台:Android
描述:识别安卓的可导出组件
黑客工具:MobSF,Androidmanifest.xml
手机操作系统平台:IOS
描述:识别密钥链上数据保护API的误用,TouchID的误用(从本地存储、本地Authen检索凭据)
黑客工具:iDevice
手机操作系统平台:Android & IOS
描述:确保当PIN码或模式锁定时,app无法执行。
黑客工具:Device
手机操作系统平台:Android & IOS
描述:识别服务器端URL/IP地址处打开的端口
黑客工具:Nmap
手机操作系统平台:Android & IOS
描述:识别后端服务器上的默认凭据(例如,使用Tomcat/Tomcat或admin/Tomcat的Tomcat应用程序服务器)
黑客工具:Web Browser
手机操作系统平台:Android & IOS
描述:识别app和服务器端的弱密码策略实现(例如,在UI上进行绕过密码复杂性检查)
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:识别显示方法和结构的webservices帮助页(.asmx)
黑客工具:Web Browser
手机操作系统平台:Android & IOS
描述:识别Web服务器配置(例如:错误处理、HTTP响应横幅)
黑客工具:Web Browser, Burpsuite
手机操作系统平台:Android & IOS
描述:识别服务器API上的漏洞
黑客工具:openvas
手机操作系统平台:Android & IOS
描述:检查API/Webservices上的输入验证(例如:SQL注入,XXE)
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:识别API响应消息/头的敏感信息
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:构造API上的同时攻击(例如:OTP一次性密码、电子邮件发送)
黑客工具:Burpsuite (Intruder)
包括:获得丢失/被盗移动设备;在移动设备上执行的恶意软件或另一个重新打包的应用程序
手机操作系统平台:Android
描述:"android:allowBackup"属性应被设置为false
黑客工具:apktool,Androidmanifest.xml
手机操作系统平台:Android & IOS
描述:检查数据库文件的加密
黑客工具:adb, idb, iFunbox
手机操作系统平台:Android
描述:识别在共享存储的敏感数据,SD卡存储加密,共享 MODE_WORLD_READABLE
黑客工具:adb
手机操作系统平台:Android & IOS
描述:识别敏感数据在app的文件中(app 日志,cache文件,cookie文件)
黑客工具:adb, idb, iFunbox,BinaryCookieReader
手机操作系统平台:Android & IOS
描述:通过app日志,识别敏感信息
黑客工具:adb logcat, idb, libimobiledevice
手机操作系统平台:Android & IOS
描述:识别app背景截图/截屏功能
黑客工具:Device, iFunbox
手机操作系统平台:Android & IOS
描述:识别在EditText/UITextField上禁用应用程序敏感部分的复制/粘贴功能
黑客工具:idb, iFunbox
手机操作系统平台:Android & IOS
描述:识别在/var/mobile/Library/Keyboard
/data/data/com.android.providers.userdictionary/databases/user_dict.db中的
键盘缓冲文件
黑客工具:Device, idb, iFunbox
手机操作系统平台:Android & IOS
描述:
对于Android,检查应该设置为“false”的“Android:allowBackup”属性
对于iOS,使用iTune备份应用程序文件夹,以便从备份文件夹中检查敏感信息
黑客工具:apktool,iPhone Backup Extractor
在设计移动应用程序时,数据通常以客户机-服务器的方式进行交换。当传输其数据时,它必须穿越移动设备的运营商网络和互联网。攻击者可能会利用漏洞来拦截敏感数据,而这些数据是通过网络传输的。存在以下攻击方式:
手机操作系统平台:Android & IOS
描述:通过是否实现了SSL的代理观察设备的网络流量
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:识别SSL/TLS加密算法
黑客工具:testssl.sh, Qualys SSL Labs
手机操作系统平台:Android & IOS
描述:允许测试人员在不安装证书的情况下拦截SSL通信(checkServerTrusted with nobody)
黑客工具:jdgui, MobSF, Qark
手机操作系统平台:Android & IOS
描述:检查app是否接受来自任何受信任CA(Burpsuite)的证书。
例如:检查setAllowsAnyHTTPSCertificate(iOS)和AllowAllHostnameVerifier(Android)
黑客工具:jdgui, MobSF, Qark
手机操作系统平台:Android & IOS
描述:识别应用层上的端到端加密
黑客工具:Burpsuite
利用身份验证漏洞的攻击方法,通常通过使用现成工具或自定义工具的自动攻击来实现。
手机操作系统平台:Android & IOS
描述:在设备上识别用户的密码或会话
黑客工具:adb, idb, iFunbox
手机操作系统平台:Android & IOS
描述:对APP执行二进制攻击以绕过脱机身份验证
黑客工具:adb, Drozer, Cycript, Snoop-it, Burpsuite
手机操作系统平台:Android & IOS
描述:确保所有会话无效事件都在服务器端执行,而不仅仅是在app上执行
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:app必须在后端组件上具有足够的超时保护
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:确保在身份验证状态更改期间正确实现重置Cookie
(匿名<->用户,用户A<->用户B,超时)
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:同时使用同一凭据从多个设备登录
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:通过代理来观察设备的网络流量,该代理在传输过程中是否发送了设备的信息(UDID)
黑客工具:Burpsuite
任何人可以物理访问加密不当的数据。
手机操作系统平台:Android & IOS
描述:识别源代码上不安全/不推荐的加密算法(RC-4、MD5、SHA1)
黑客工具:jdgui, MobSF, Qark, Hopper, iFunbox
手机操作系统平台:Android & IOS
描述:在一个app中识别硬编码密钥,或通过二进制攻击拦截密钥
黑客工具:jdgui, MobSF, Qark, Hopper, iFunbox
手机操作系统平台:Android & IOS
描述:确定实施他们自己的协议
黑客工具:jdgui, MobSF, Qark, Hopper, iFunbox
手机操作系统平台:Android & IOS
描述:Token/Session 应该是标准算法,足够长、足够复杂和伪随机,以便抵抗猜测/预期攻击
黑客工具:Burpsuite
利用授权漏洞的攻击方式,通常通过使用现成的工具或自定义工具的自动攻击来实现。
手机操作系统平台:Android & IOS
描述:对app执行二进制攻击,并尝试执行特权功能,该功能只应使用更高权限的用户执行
黑客工具:adb, Drozer, Cycript, Snoop-it, Burpsuite
手机操作系统平台:Android & IOS
描述:通过HTTPs通信直接访问未经授权的 object/var
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:通过HTTPs流量直接访问未经授权的功能
黑客工具:Burpsuite
手机操作系统平台:Android & IOS
描述:绕过业务逻辑数据验证,规避工作流
黑客工具:Burpsuite
包括可以将不受信任的输入传递给在移动代码中进行的方法调用的实体。这些类型的问题本身不一定是安全问题,但会导致安全漏洞。例如,旧版Safari中的缓冲区溢出(一个低质量的代码漏洞)导致了高风险的越狱攻击。较差的代码质量问题通常通过恶意软件或网络钓鱼欺诈来利用。
手机操作系统平台:Android
描述:在内容提供组件上识别SQLi和LFI
黑客工具:Drozer
手机操作系统平台:Android
描述:识别广播和接收器组件上的意图过滤器,以便直接访问和嗅探信息
黑客工具:Drozer
手机操作系统平台:Android
描述:直接调用服务组件
黑客工具:Drozer
手机操作系统平台:Android & IOS
描述:识别“android.webkit.WebSettings”上的错误配置(Javascript/文件访问/插件),通过UIWebview的XSS
黑客工具:jdgui, iDevice
手机操作系统平台:Android & IOS
描述:在app中标识SQLi和XMLi
黑客工具:adb, iDevice, Burpsuite
手机操作系统平台:Android & IOS
描述:通过setAllowFileAccess检查APP(../../../blah\0)上的LFI文件访问攻击
黑客工具:jdgui, iDevice
手机操作系统平台:Android & IOS
描述:
对于iOS:通过info.plist和Clutch+字符串识别URL方案以获得URL方案结构
对于Android:通过源代码或manifest文件识别URL方案
黑客工具:apktool, jdgui, Clutch, Strings
手机操作系统平台:Android & IOS
描述:识别敏感信息屏蔽(用户界面和HTTPs流量上的卡号)
黑客工具:Device, Burpsuite
攻击者会通过第三方应用程序商店中的恶意应用程序形式,利用代码修改进行攻击。攻击者还可能通过网络钓鱼攻击欺骗用户安装应用程序。
手机操作系统平台:Android & IOS
描述:静态代码修改,二进制补丁,绕过哈希校验值
黑客工具:apktool, Hopper
手机操作系统平台:Android & IOS
描述:运行时操作,方法滑动
黑客工具:Frida, Cycript, Snoop-it
手机操作系统平台:Android & IOS
描述:检测逆向工程APP文件中的root/jb检测代码。如果找到,请删除/更改包含代码的文件的访问控制,然后重新启动app。或者安装hidemyroot之类的工具并运行app
黑客工具:tsProtector, RootCloak2
攻击者通常会从应用程序商店下载目标应用程序,并使用一套不同的工具在自己的本地环境中对其进行分析。
手机操作系统平台:Android & IOS
描述:对app的反汇编和反编译
黑客工具:apktool, dex2jar, Clutch, Classdump
手机操作系统平台:Android & IOS
描述:二进制/源代码中的身份敏感信息
黑客工具:string, jdgui, IDA, Hopper
攻击者试图了解移动应用程序中的无关功能,以便在后端系统中发现隐藏的功能。攻击者通常会直接从自己的系统中利用无关的功能,而不需要最终用户的参与。
手机操作系统平台:Android
描述:识别了 "android:debuggable"属性
黑客工具:adb, MobSF
手机操作系统平台:Android & IOS
描述:识别移动设备和API之间的敏感信息(凭据)
黑客工具:jdgui, Burpsuite
手机操作系统平台:Android & IOS
描述:识别无关功能(隐藏后端URL)
黑客工具:jdgui, Burpsuite