移动渗透top 10
来源:互联网 发布:最好企业网络投资理财 编辑:程序博客网 时间:2024/04/30 09:16
OWASP统计的2015移动安全问题TOP 10
M1:平台误用
未使用平台安全特性的误用,包括android intent,permission,TouchID,Keychain等,存在该风险的app有以下几种表现:
1.违反已公布的准则:Android iOSWindowsPhone平台都有自己的安全准则,例如如何使用iOS Keychain或如何导出Android service,如果app不遵守准则就会产生风险
2.违背公约或者惯例
3.无意的误用:标志位错误,权限错误等
M2:不安全的数据
包括不安全的数据存储和无意的数据泄露
不安全的数据存储包括:SQL数据库、Log文件、manifest XML文件、二进制存储、Cookie、SD卡、云同步等
无意的数据泄露包括:系统、Framework层、编译器环境、新硬件等,由于未文档化URL缓存、按键缓存、剪贴板缓存、后台数据、日志、浏览器Cookie、第三方分析数据等的处理方式
M3:不安全的通信
包括TCP/IP,WiFi,蓝,NFC,audio,红外线,GSM,3G,SMS,TLS通信等
例子:缺乏证书检查、不安全的握手协议、隐私信息泄露
M4:不安全的认证
包括未能鉴别用户、未能保存用户身份、不安全的会话管理,会话问题包括:会话标识可预测、未能注销用户、会话生命周期风险
M5:加密不充分
包括弱密码、短秘钥、加密类型错误、密码学漏洞
M6:不安全的授权
包括在客户端进行授权操作、认证取代授权
M7:客户端代码质量
M8:代码篡改
M9:逆向工程
M10:外部函数
移动安全工具
移动渗透测试工具:
iMAS iOS安全测试工具
GoatDroid android安全测试工具
iGoat iOS安全学习工具
Damn Vulnaerable iOS Application 攻防技巧练习工具
MobiSec 移动测试框架
Androick 移动app评估
NowSecure App Testing Community Edition app测试工具
Seraphimdroid 安全学习工具
CodeInspect Android二进制应用分析
Fino Android安全评估工具
Introspy Android黑盒测试
Android反编译工具:
ApkTool smali Jeb Jd-Gui ApkStudio Dex2jar Bytecode-Viewer dexdisassembler FernFlower
安全测试过程
1. 信息收集
手动跟踪程序理解其运作过程,更深入一些可以嗅探网络
识别app使用的网络接口,包括:移动通信(GSM,GPRS,EDGE,LTE) 无限(WiFi(802.11标准,蓝牙,NFC) 虚拟接口(VPN)
识别app使用的网络协议?是否是安全协议,是否可以切换为不安全协议
App是否用于商务?如何存储信用卡交易信息,付款内部特点
监视组件通信:NFC 蓝牙 GPS 摄像头麦克风传感器 USB
收集开源情报 (搜索引擎、源码库、开发论坛等)找到源码或配置信息
使用何种框架
是否和其他application service data交互?如电话(SMS,phone),联系人,自动更正/字典服务,从其他app或服务接收信息,GoogleWallet,iCloud,社交网络(Facebook,Twitter,LinkedIn,Google+),Dropbox,Evernote,Email等
确定服务器程序环境?主机提供商(AWS,APP Engine,Heroku,Rackspace,Azure等),开发环境(Rails,Java,Django,ASP.NET等),单点登录认证api(GoogleApps,Facebook,iTunes,OAuth等),其他api(支付网关,SMS消息,社交网络,云存储,广告)
对暴漏网站资源进行全面爬取,找到感兴趣的数据或行为,包括:泄露敏感数据、UI中的隐藏数据、错误信息、缓存信息等
2. 静态分析
准备工作:
如果没有源码尝试反编译程序
查看app请求权限,是否有配置错误,调试标识是否存在,有无读写权限
使用的框架是什么,是否是跨平台框架
使用了哪些库和第三方库?这些库是否过期,是否有漏洞,是否有提权接口,是否为native代码
App有无检查是否root/越狱?如何做到的,是否能绕过,例如改名改路径
使用了哪些对象产生各种视图?该结果对于之后的测试用例很有效,例如有些使用web浏览器功能,有些则是本地ui控件
所有的代码都可以运行在标准运行时环境下还是某些文件/库在使用动态加载方式
将每个权限和实际实现对应起来,通常开发者请求的权限比实际使用的多,确定同样的功能是否可以用更低权限完成
定位硬编码的API key证书密文
找到不可信数据起点,判断是否可以绕过访问控制,验证和标准化输入数据,传给其他解释器
从web service调用
从其他app和服务接收数据
收到的短信
从文件系统读取的信息
认证
通过UI找到用户认证处理代码,通过篡改,重放和暴力破解模拟用户输入
检查认证方式是在线/离线,如果认证时离线的可以尝试SQLi绕过认证
检查app是否使用除了用户名/密码之外的信息,例如上下文信息(设备描述符/位置),证书,令牌
是否用到刷卡或触摸密码?或是传统的用户名密码,访问
评估将可见对象映射成为认证字符串,检验是否有足够的熵
是否允许其他设备的传入连接(Wi-FiDirect, Android Beam, network services)
App是否正确认证远程用户或对等端并授权访问资源
App如何处理多次身份验证尝试失败
是否有通知用户遭受潜在攻击的机制
是否存在对认证失败的用户锁定机制?最大多少次尝试,如何处理分布式用户锁定?如何锁定?
单点登录:OAuthFacebook GoogleApps
SMS:
传感器如何认证?密码头部信息
是否使用一次性(OTP)密码?其他app是否能访问该数据
如果攻击者篡改OTP使用gprs modem会怎样
App有无验证篡改的OTP
USSD:
是否使用USSD/Flash消息认证?基于USSD的认证比SMS更可信
推送消息:
App通过推送消息处理信息,那么是符合验证发送者身份的
授权:
运行时重新检查文件权限
是否能以当前角色访问?是否有角色特定功能,定位不可信源(数据库文件 http响应)的潜在标识用于提升权限,查找非常规的访问方式
许可:
在本地获取支付信息是许可检查是否可公婆(运行时篡改二进制,或修改本地配置文件)
代码提示许可无效是否只是ui层的限制
许可检查是由服务器做还是平台许可服务做的
App如何检测篡改?是否发送警告,是否打开关闭失败,是否擦除数据
会话管理:
确定会话超时在本地还是服务器端,确定会话超时设置为最小值
app用到的敏感信息是否在内存刷新知道会话结束
会话id有没有传入url,检查用到的post方法和隐藏域
检查服务器端会话篡改
检查会话令牌随机性和有序性
数据存储:
加密:算法是否最佳组合?密码怎样生成密钥?加密方法是否存在减弱有效性的方面?密钥如何管理和存储?是否降低破解复杂性?
验证app是否利用沙箱之外的存储区存储未加密数据,例如:
访问控制粒度有限的位置(sd卡,tmp目录等)
备份目录或不合适的位置(iTunesbackup, external storage等)
云存储服务例如Dropbox,Google Drive, S3
App在某刻向文件系统写入敏感信息,例如:
凭据(用户名密码 api密钥认证令牌)
支付信息
病人数据
签名文件
是否存在敏感信息使用公开api(例如联系人)写入磁盘
信息收集:
日志
App是否打日志,是否可访问敏感信息
访问日志的机制是什么,是否受保护
是否有隐私信息作为日志
设备标识是否能标志用户(苹果设备UDID)
App是否上传日志到服务器?扩展名和内容是否经过验证,能否嵌入恶意代码
缓存:文本、位置信息、剪贴板、截图、浏览器缓存、非标准缓存位置(如SQLite数据库)、HTTP响应缓存
异常:崩溃日志中是否有敏感信息?app容器外部如何处理数据和日志
第三方库和API:需要哪些权限?是否访问或传输敏感信息
Web App相关:
XSS和HTML注入:检查不可信数据传递给webview或browser的代码,判断是否正确编码和规范化输入
命令注入(若app使用了shell):定位到可以修改用户输入的点,确定攻击者是否可以任意注入命令或控制
CSRF、SQL注入、Cookies、HTML5、XML注入、跨域策略
网络:是否使用不安全协议收发敏感信息?FTP SNMPv1 SSHv1,用于实现协议的库是否存在漏洞
传输层保护:
App是否正确实现证书锁定
是否验证证书是否过期,是否合法授权,目的端信息匹配证书?
是否操作系统/app共同验证证书还是仅操作系统?
检查是否存在修改再不同接口传输的行为 (3G/4G vs. Wi-Fi),是否加密
有用的字符串:
DEBUG
printStackTrace
username/userID/password/passwd/pwd/
key/encrypt/decrypt/MD5/MD4
timeout/session.invalidate
root/jailbreak
test/demo/
sqlconnection/sqlevents/sqldemo/sqlconn/sqltest
account/URL/hostname/ipaddress
proxy
3. 动态分析
判断应用类型:
原生程序:可以安装到设备上的app,大部分代码存储在设备上,通过HTTP/s协议请求数据
Web服务:使用SOAP或REST网络服务通信的原生程序
浏览器:许多商业程序都设计成为基于手机浏览器的app
混合程序:原生程序和浏览器的混合
建立基线:
生成文件系统指纹(app安装前)
安装配置使用app:检查文件系统已确定创建了哪些文件/数据库,数据是如何存储的,是否有敏感数据未加密或保护不当;注意信用卡、支付等高敏感信息,查看数据库,日志,缓存和崩溃日志
调试:
附加调试,在感兴趣的代码上下断点
检查日志和通知
观察内部通信和外部服务/进程通信
活跃测试:
本地app测试:
暴漏的IPC接口:嗅探模糊测试绕过授权检查
加密:暴力破解key,pin.hash尝试使用泄露信息重建加密数据
Web app: XSS/HTML注入,命令注入,CSRF,SQL注入,Cookies,HTML5Storage
认证:
访问认证端口:NFC,SMS,推送消息,IPC通道
授权:
尝试绕过特权功能
检查配置和本地数据是否可以改写
检查文件系统权限
文件系统分析:
评估app在整个生命周期中的行为,是否在进入不同阶段(转入前台,转入后台,退出程序)为保持状态调用了特殊功能
缓存数据存储
寻找设备上的文件
存储未加密数据
加密的备份数据
用户名/密码或app特定的设备id
App权限,访问控制
证书、支付信息或更敏感的信息和日志、文本、崩溃记录等
App的UI回溯栈是否存储敏感信息
使用取证工具是否能恢复文件系统数据和数据库
内存分析:
(注销用户/在UI组件间切换)操作后是否内存中保存敏感信息
能否通过转储内存和设备信息获取加密密钥、证书、支付信息和其他敏感信息
远程app/服务测试
认证:
哪些功能可用(3G,4G,Wifi,etc)
若远程认证服务器不可用会发生什么?
评估密码要求的强度
测试账户锁定的实现
分析认证所需各个方法,注意通常wifi是认证的薄弱环节,确保认证的强壮性和不依赖于某些属性(MDN,ESN,etc)
检查认证令牌是否在用户初始化密码后弃用
单点登录是否启用
基于SMS的:OTP(一次性密码),双因素认证
推送消息
许可
授权:
如果远程授权处理服务不可用会发生什么?
测试是否可以直接访问后端资源?
服务端访问控制是否强制执行
横向和纵向特权提升
会话管理:熵分析、设备描述相关?、注销后会话令牌刷新?、生命周期、设备上处理会话令牌、特权提升、无效的会话终止、Session Fixation、登录前/登录/登陆后Session检查、唯一会话生成
传输层测试:中间人攻击、窃听、SSL检查、SSLStriping
服务端攻击:出发未处理异常、XSS、SQL注入、XML炸弹、缓冲区溢出、上传漏洞、Open Redirect、跨域资源共享
服务/网络/app扫描:扫描前几步得到的目标服务器漏洞
- 移动渗透top 10
- 强大的jQuery移动插件Top 10
- Kali Linux Web 渗透测试秘籍 第十章 OWASP Top 10 的预防
- 移动应用渗透测试的军火库清单
- 渗透
- iOS应用程序安全(1)-搭建移动渗透测试平台
- iOS应用程序安全(1)-搭建移动渗透测试平台
- 移动APP安全在渗透测试中的应用
- iOS应用安全Part1:搭建移动渗透测试平台
- PowerOPS—PowerShell的移动渗透测试开发工具
- 《Metasploit 魔鬼训练营》08 移动环境渗透测试
- 全球移动App:Top 52发行商排行榜
- 人物可以移动实例js--offset.top/left
- 10 Top Apps AIO
- Top 10 Eclipse Hotkeys
- oracle top 10 sql
- Top 10 Eclipse Hotkeys
- Top 10 Eclipse Hotkeys
- Android service(四)Intent服务
- R语言实战:机器学习与数据分析源代码6(最终弹)
- c++学习心得
- MyBatis
- 快速中值滤波利用VC++和OpenCV调用其封装的动态链接库出现的错误和处理
- 移动渗透top 10
- UITableViewCell刚出现时,出现的动画
- 软件架构概念(1)
- 剑指offer---链表中倒数第k个结点
- android intent 传递list或者对象
- Windows下C++程序移植到Linux上的几个问题及解决方法
- 银行家算法(操作系统)(c++)
- IE兼容
- MySQL命令行导入sql数据库