admin 管理员组

文章数量: 1184232

前言

本文主要是app测试中常见工具的使用,都是报告上的东西主要是备忘,萌新笔记大佬轻喷。

客户端应用测试

一、数字签名验证:

1.数字签名作用:

①.签名就是app的身份,安卓系统只会接受有证书app的安装请求。

②.当两个apk包名相同时,系统就会对以安装的apk进行覆盖,这时就需要两个apk的签名一致。

总的来说数字签名的作用就是为了让内容不被篡改。

2.通用证书,第三方证书的不安全性:

①如果攻击者拿到了开发者的签名证书,就可以直接替换掉原apk的内容。恶意app会被当做正常app被下载。

3.利用jarsigner进行检查安装包的签名。

①进入jdk工具目录,进行签名验证。

②这里我们可以看到签名者,单位,地区等信息。现在的加密算法要求都是SHA2。以下的两个例子都是自定义的证书。

4.证书的生成:

①使用jdk自带的工具:keytool

常用参数:

-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书 -v 显示密钥库中的证书详细信息
-keyalg    指定密钥的算法 (如 RSA  DSA(如果不指定默认采用DSA))
-keysize     指定密钥长度
-validity    指定创建的证书有效期多少天
-alias 产生别名 
-keypass 别名密码
-keypass 指定别名条目的密码(私钥的密码)
-list 显示密钥库中的证书信息
-validity 有效天数

制作语句:

keytool.exe  -genkey -v -keystore 目录/new2-key -alias hhh -keypass 123456  -keyalg RSA -keysize 2048 -validity 2000

生成签名证书截图:

查看证书信息:

keytool -v -list -keystore C:\Users\Administrator\Desktop\测试文件\bianyi\new2-key

5.apk签名:

①使用工具:jarsigner

常用参数:

-keystore              密钥库位置
-storetype             密钥库类型
-signedjar             签名算法的名称
-digestalg             摘要算法的名称
-verify                   验证已签名的 JAR 文件

案例演示:

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA1 -keystore 签名证书地址  需要签名apk位置 别名

如果要自己测试的可以在网上随便下载一个app,利用apktool解包之后再打包。这样就可以验证签名是否成功。

java  -jar  apktool的名字  d(反编译)  要解包的apk  -o(输出)  文件名

java  -jar  apktool的名字  b(打包)  要打包的文件夹名字

在这里我们可以顺便验证一下应用的完整性,在解包后对apk内容进行修改,比如更改log图片,之后进行打包和签名。在安装后查看应用是否存在自校验。

二、apk反编译

1.更改apk后缀为.zip进行文件解压:

2.对classes.dex文件进行反编译:

案例演示:

d2j-dex2jar.bat C:\Users\Administrator\Desktop\测试文件\1\classes.dex

3.使用jd-gui工具阅读jar:

4.加壳识别:

①可以在.so库里进行特征识别

案例演示:

比如这个apk就是用的邦邦企业版。

②包名查看

③apk查壳工具

三、本地文件安全测试

1.本地文件权限配置安全:

①本地权限查看目的:

检查应用文件权限后三位是否为空,最多能有一个执行位。这样的目的是为了让敏感信息不会泄露,除了自己以外的其他人不能进行读写操作。

②利用adb shell进行文件查看:

这里我是用的夜神模拟器自带的shell进行连接,如果是用真机连接的话需要进行root,不然很多命令都是没有权限执行。

③案例演示:

进入/data/data/目录下查看apk的文件目录权限是否设置安全。

2.本地文件内容安全:

①测试文件内容安全目的:

确保app目录中的文件没有泄露敏感信息,常见测试点为文本文件,xml文件,db文件。

可以直接使用cat命令也可以把文件pull出来阅读。

adb pull 需要复制文件 粘贴地址

3.本地日志内容安全:

①日志文件读取:

直接adb logcat就可以查看日志文件了。

常用logcat命令:

adb logcat -f            将日志输出到文件, 默认输出到标准输出流中
           -s            设置输出日志的标签, 只显示该标签的日志
           -d           将缓存的日志输出到屏幕上, 并且不会阻塞

adb logcat >C:\Users\Administrator\Desktop\moniqi\1.txt 将日志发送到该目录下,并创建1.txt文件

②案例演示:

参考文章

Android安全开发之通用签名风险——阿里聚安全

APK查壳特征识别

本文标签: 测试 基础 App