APP漏洞(APK篡改)
漏洞简介
Android系统使用JAR包的签名机制对APK进行完整性保护,确保APK在不安全的网络传输时的完整性得到保护。但Android系统没有对数字签名的颁发者进行管理,任何人都可以生成数字签名,并使用该签名对APK包进行重新签名。如果App本身不对自身的签名来源进行有效的完整性检查,攻击者可以篡改应用(插入恶意代码、木马、后门、广告等),重新签名并且二次发布,导致应用程序完整性被破坏
漏洞利用过程
环境配置
- java、android studio、apktool.jar、keytool、apksigner
编译与重打包
1.反编译apk
- 使用apktool进行反编译
java -jar D:\android\android\apktool.jar d app.apk -o app
在powershell当前目录就产生脱壳的后的文件
2.重打包生成apk
- 使用apktool进行重打包
java -jar D:\android\android\apktool.jar b app -o app.apk
发现在当前目录下,产生了app.apk文件
但是如果此时放在模拟器中,是无法安装的,会报错:没有签名证书
篡改文件签名
1.生成签名文件
- 使用keytool生成签名文件
keytool.exe -genkey -v -keystore debug,jks -keyalg RSA -keysize 2048 -validity 10000
在当前目录会生成一个debug.jks
2.使用生成的签名文件签名
- 使用签名文件给文件apk签名
java -jar .\apksigner.jar sign --ks D:\android\android\1签名解包\签名操作\debug.jksD:\android\android\1签名解包\签名操作\app.apk
这样就将app.apk成功添加上了签名
3.添加签名成功后,就可以在模拟器中正常安装
由于apk文件缺少自身签名完整性校验,所以我们可以篡改文件的签名。