app渗透测试---apk二次打包

月影
2023-07-26 / 0 评论 / 23 阅读 / 正在检测是否收录...

漏洞描述:

测试客户端程序是否对自身完整性进行校验。攻击者能够通过反编译的方法在客户端程序中植入自己的木马,客户端程序如果没有自校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息。

漏洞详情:

由于未对apk进行加壳,可以通过工具反编译出源码
使用apktool对apk进行反编译

java -jar .\apktool.jar d -f apk .\cargo.apk -o cargo

2023-07-26T13:37:13.png

得到以下文件,这里可以篡改源码内容,并加一些恶意的代码进去,再将源码文件重新打包成apk文件,伪装成正常app传播使用。

2023-07-26T13:37:28.png

这里以修改程序名来做示例
打开AndroidManifest.xml文件
找到定义程序名的位置,将cargo改为hack,保存退出

2023-07-26T13:37:44.png

然后再使用apktool工具对程序进行编译

java -jar .\apktool.jar b -f .\cargo\ -o hack.apk

2023-07-26T13:38:12.png

编译好之后,我们使用signapk工具对hack.apk进行签名

java8 -jar .\signapk.jar .\testkey.x509.pem .\testkey.pk8 .\hack.apk .\newhack.apk

2023-07-26T13:38:36.png

这样我们就得到了一个篡改以后的newhack.apk了,放到模拟器进行安装,成功安装
2023-07-26T13:38:47.png
打开运行,正常运行,篡改成功
2023-07-26T13:39:03.png

修复建议:

在应用启动的时候进行签名的判断,首先写死一个签名,这签名是正式版本apk的签名(你可以通过在正式包上打log然后运行在手机上获得该签名然后写在application里)
在application的oncreate方法中:

      if ("your sign".equals(getSignture((this)))) {//your sign 是你的签名,这里用这个取代下

        initMTA();
        } else {
            System.exit(0);
        }
0

评论 (0)

取消