本文主要是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:UsersAdministratorDesktop测试文件bianyinew2-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:UsersAdministratorDesktop测试文件1classes.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:UsersAdministratorDesktopmoniqi1.txt 将日志发送到该目录下,并创建1.txt文件
②案例演示:
参考文章Android安全开发之通用签名风险——阿里聚安全
APK查壳特征识别



