安卓测试整理版

               #### 安卓测试
1.反编译检测(中危)

软件在安卓测试里面:
把apk当成zip并解压、得到classes.dex文件,
cd +app解压路径 ,运行dex2jar.bat classes.dex得到classes.dex.jar 然后再用jd-gui打开 jar文件即可得到java代码则为源代码泄露。

2.安装包签名检测(低危)

软件在安卓测试里面
这个要在java bin文件里面执行要不然会报错C:\Program Files\Java\jdk1.8.0_181\bin\jarsigner.exe -verify APK 文 件 路 径 -verbose –certs
说明:要说明的是,只有在使用直接客户的证书签名时,才认为安全。 Debug 证书、第三方(如开发方)证书等等均认为风险。
也可:keytool.exe -printcert -file C:\Users\Nxin\Desktop\ylzcf\META-INF\YLZCF.RSA
keytool.exe文件在java bin文件中。

3.应用完整性校验(中危)

解包:java -jar apktool.jar d -f apk 文件路径 -o 解包目标文件夹
再次打包:java -jar apktool.jar b -f 待打包的文件夹 -o 输出 apk 路径
apk签名::java -jar signapk.jar testkey.x509.pem testkey.pk8 待签名 apk 文件路径 签名后输出apk 路径
使用自定义调试签名进行签名,重新签名成功后的APK安装成功,如果能正常运行,则app本身没有进行安装包完整性校验的安全机制。

4.程序数据任意备份(中危)

在 AndroidManfest.xml 文件中设置android:allowBackup 属性值,android:allowBackup=”true”,即为allowBackup 开启

5.程序可被任意调试

AndroidManfest.xml 文件中设置android:debuggable=true时应用程序可以以调试模式启动,被任意调试器附加调试。

二、组件安全

6.activity越权检测(中危)

开发者为了方便外部调用,会把Activity组件设置为导出状态,如果由于开发者的疏忽,把一些包含敏感信息或可进行敏感操作。
adb connect 127.0.0.1:21503
adb shell am start -S -n +activity主件名/apk包名
如果app直接打开跳转到对应的页面组件则存在漏洞。
另外也可:run app.activity.info -a packagename
run app.activity.start —component +包名 +组件名:如果能未授权情况启动页面即可记下漏洞

7.ACtivity劫持保护检测(中危)

检查是否存在 activity 劫持风险,确认客户端是否能够发现并提示用户存在劫持
安装 HijackActivity.apk,使用 activity 界面劫持工具,在工具中指定要劫持的应用进程
名称(进程查看和监视 ps/top)。如图所示,从列表中选择被测试的应用,点击 OK。打
开应用,测试工具会尝试用自己的窗口覆盖被测的应用。测试工具试图显示自己的窗口时,
安全的客户端应该弹出警告提示。如果劫持成功,会出现如下界面:

8.service 越权检测(中危)

检测有没有处理不当的方法检索所有类中 startService/bindService 方法及其传递的数据
— 检测是否有数据泄露的可能
相关 drozer 命令:

run app.service.info -a com.mwr.example.sieve
run app.service.start —component 包名 组件名

9.service拒绝服务检测(中危)

run app.service.info -a com.mwr.example.sieve
adb shell am start service +组件名/包名

10.Reciever拒绝服务(中危)

run app.broadcast.info -a com.package.name
dz> run app.broadcast.send —component com.package.name —action
android.intent.action.XXX

11.Content Provider目录遍历 (高危)

列出uri:run scanner.provider.traversal -a APP 包名测试
列出url:run scanner.provider.traversal -a APP 包名测试 +uri名称

12.Content Provider sql注入(高危)

run scanner.provider.injection -a APP 包名测试
使用 drozer 命令 run scanner.provider.injection -a APP 包名测试 Content Provider

13.组件通信分析(高危)

1.使用 mercury 查看那 APP 的组件信息
2.使用 mercury 查找 APP Content Provider 组件漏洞,包括组件暴露,SQL 注入,文件
目录遍历
命令方法 :
1.确定包名
run app.package.list
2.查看指定包的基本信息,例如数据存储路径 uid,gid,permissions
run app.package.info -a com.android.browser
3.列出 APP 中的 activity 组件
run app.activity.info -a com.android.browser
4.列出 APP 中的 service 组件
run app.service.info -a com.android.browser
5.列出 APP 中的 Content Provider 组件
run app.provider.info -a com.android.browser
6.查找可以读取的 Content Provider 的 URI
run scanner.provider.finduris -a com.sina.weibo
7.读取 Content Provider 指定 URI 中的内容
run app.provider.query content://settings/secure —selection
name=’adb_enabled’
8.扫描是否存在 content provider 目录遍历的漏洞
run scanner.provider.traversal -a com.android.browser
9.读取 content provider 指定的目录
run app.provider.read content://com.mwri.fileEncryptor.localfile/system/etc/hosts/
10.扫描是否存在 SQL 注入
run scanner.provider.injection -a com.android.browser
11.利用 SQL 注入
run scanner.provider.query content://com.example.bsideschallenge.evilPlannerdb
—projection * from cards —
12.查看指定包的 AndroidManifest.xml 文件
run app.package.manifest com.example.bsidechallenge
13.查看指定包的 AndroidManifest.xml 文件
run app.package.manifest com.example.bsidechallenge

14.logcat日志(中危)

输出内存日志信息:
adb shell logcat -d > E:\1.txt
查看1.txt关键词是否发现有敏感信息

15.检查客户端程序存储在手机中的SQLite数据库文件(中危)

最后在检测 SQLite 数据库文件,在私有目录及其子目录下查找以.db 结尾的数据库文
件。对于使用了 webView 缓存的应用,会在 databases 子目录中保存 webview.db 和
webviewCache.db,如图所示。其中有可能会记录 cookies 和提交表单等信息
用数据库查看工具即可查看这些文件中是否有敏感信息。

16.账号登录限制(低危)

测试一个帐号是否可以同时在多个设备上成功登录客户端,进行操作。

17.账号锁定策略(低危)

测试客户端是否限制登录尝试次数。防止木马使用穷举法暴力破解用户密码。

18.会话安全设置

测试客户端在超过 20 分钟无操作后,是否会使会话超时并要求重新登录。超时时间设
置是否合理。
一段时间无操作 — 检测应用是否要求用户重新登陆退出应用再打开 — 检测应用是
否要求用户登陆。

19.so 动态注入

进入so进程文件目录运行CMD命令
连接root过的Android设备或者打开模拟器。将inject和libhello.so拷入设备,设执行权限,执行:

先看看被注入进程(surfaceflinger)的mmap,可以看到我们的so已经被加载了,紧接着的那一块就是我们mmap出来的:

20.设备 root检测(模拟器检测)

app安装在root后手机上可正常运行
通常已经root的设备会提供给恶意应用查看或修改自身配置文件、缓存文件等的相关权限,已经对应用进行非法操作;而恶意攻击者也常使用已经root的设备对应用发起攻击。
在Native层增加root检测的相关功能。

21.通信数据风险

抓包数据未加密通信