一、安全测试要点

安全测试主要包括的三大部分:

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敏感信息漏洞

账号和密码输入错误的情况下,均提示“账号或密码错误”