移动APP安全测试
一、安全测试要点
安全测试主要包括的三大部分:
1、客户端
2、数据传输
3、服务端
4、使用到的工具:
dex文件反编译工具
dexdump、baksmall、dex2jar
综合逆向工具
APKTool、APKIDE、Android Killer 、Xposed
协议抓包
Wireshark、fiddle、brupsuite
组件测试工具
drozer
本文主要以Android客户端为主,介绍一些在安全测试方面的总结。
二、Android客户端测试
1、反编译
app加密、代码混淆、加壳处理
2、防二次打包
验证APP签名,获取二次打包后APP的签名与正确的APP签名进行对比
3、Webview漏洞:任意代码执行漏洞
4、键盘安全
a、键盘劫持
客户端开发的自定义软键盘防止键盘劫持攻击
b、使用随机分布的软键盘
客户端对自定义软键盘进行随机化处理
5、数据安全
a、APP所在的目录的文件权限
APP所在目录文件其他组成员不可读写
b、SQLite数据库文件的安全性
重要信息进行加密处理
c、敏感数据不能存放在SDcard
d、APP本地数据存储是否有敏感信息,例如token、session等
6、界面劫持
防止activity被劫持
7、敏感数据加密
a、在应用程序登录、注册过程,使用http协议明文传输用户名和密码,这种情况下,通过监控网络数据就可以截获用户名和密码,导致用户信息泄露。
b、客户端和后端的加密方式一致,例如:字母大小写。
8、Allowbackup漏洞
AndroidManifest.xml文件中allowBackup属性值被设置为true。当allowBackup标志为true时,用户可通过adb backup来进行对应用数据的备份,在无root的情况下可以导出应用中存储的所有数据,造成用户数据的严重泄露。
9、组件导出安全
Activity:呈现可供用户交互的界面,是最常见的组件;
Service:长时间执行后台作业,常见于监控类应用;
Content Provider:在多个APP间共享数据,比如通讯录;
Broadcast Receiver:注册特定事件,并在其发生时被激活
组件导出安全:就是组件权限的控制,防止其他APP访问自己的组件。
三、数据传输
1、数据窃听修改
使用手机号码注册的情况下,使用13566661234号码进行注册;
在确认提交的时候,拦截请求,修改注册手机号码,修改为13566661111;
分别使用135-66661234和135-66661111登录,均可以通过验证登录。
2、中间人攻击
a、强校验:客户端预存一份服务端证书或证书的md5,判断服务端证书和本地一致
b、弱校验:客户端校验服务器证书域名、颁发机构、过期时间
四、服务端
1、SQL注入
2、单点登陆限制策略
同一时间同一账号只允许最多一台设备登录在线
3、任意账号注册
使用手机号码注册的情况下,使用13566661234号码进行注册;
在确认提交的时候,拦截请求,修改注册手机号码,修改为13566661111;
分别使用135-66661234和135-66661111登录,均可以通过验证登录。
4、安全退出
客户端在用户退出登录时,服务端要及时清除掉session
5、验证码
a、验证码只可以使用一次,使用完就失效
b、验证码必须在有效期限内
6、UI敏感信息漏洞
账号和密码输入错误的情况下,均提示“账号或密码错误”