app渗透测试 客户端篇

基本知识 平时安装的应用位置,里面主要是odex可运行文件 /data/app 系统应用位置(需要root权限),里面主要是odex可运行文件 /system/app 应用的数据相关的位置,里面包含一些配置,缓存信息 /data/data 重打包测试测试 测试流程

检测app是否检测签名,如果未检测签名可重打包篡改app的代码再次发布

首先准备2个工具,apktool.jar和signapk.jar,其次寻找签名需要的2个证书文件pk8和pem,可以直接生成我这里直接拿别人编译好的,github上随便搜索signapk的项目,找到的下面内容

https://github.com/sunshinelyz/mykit-android-signapk

app渗透测试 客户端篇

获取了之后先看之前app的样子

app渗透测试 客户端篇

为了明显目的是将程序未注册改为其他的显示

拿到apk,使用apktool进行反编译, -f为apk名称 -o为生成的文件夹名称

apktool d -f app-debug.apk -o app 或 java -jar apktool.jar d -f app-debug.apk -o app

app渗透测试 客户端篇

此时我们当前路径下就多了app目录,打开他,目录结构如下,和使用jad和jre反编译不同,他没有dex文件,而是smali文件

app渗透测试 客户端篇

我们再smali中找到程序未注册的字符位置,中文在smali中是以unicode编码的形式存储

app渗透测试 客户端篇

将其修改,hijacking test

app渗透测试 客户端篇

重新打包,此处-f参数为项目文件夹, -o 为生成的apk名称

apktool b -f app -o test.apk 或 java -jar apktool.jar -f app -o test.apk

app渗透测试 客户端篇

此时还不够,需要进行签名

java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test-final.apk

app渗透测试 客户端篇

生成我们最终的test-final.apk

但是在安装时,会出现与已安装的应用签名不同,但这并不是说明程序进行了签名校验,只是安卓系统进行了版本更新的对比

app渗透测试 客户端篇

将之前的程序删掉

app渗透测试 客户端篇

再次安装成功

app渗透测试 客户端篇

打开也成功修改了指定文本

app渗透测试 客户端篇

防御方式

使用Native层代码验证代码的完整性,或者加壳

签名完整性测试

检测app是否是原本,还是被第三方重新打包的

测试流程 jarsigner -verify [apk路径]

app渗透测试 客户端篇

显示未签名说明被第三方篡改重新打包了,显示已验证为完整的

检测证书情况

jarsigner -verify -verbose -certs [apk路径] 可导出组件测试 测试流程

该漏洞是因为该app组件未进行严格权限控制,导致任意app均可调用该组件导致危害

需要的工具为dorzer

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfygf.html