安卓自动化渗透测试工具Brida-实战演示某聊天app


Brida介绍

  • 官方解释:Brida 是 Burp Suite 扩展,它作为 Burp Suite 和 Frida 之间的桥梁,可以在篡改应用程序与后端服务/服务器之间交换的流量的同时使用和操作应用程序自己的方法。它支持 Frida 支持的所有平台(Windows、macOS、Linux、iOS、Android 和 QNX)。
    https://github.com/federicodotta/Brida
    https://github.com/vichhika/Brida

    自己理解:brida 可以直接和frida server配合 。brida通过frida server对app进行spwn或者attach。将brida的js脚本通过frida-server注入app内。然后通过RPC主动调用方式对请求明文进行自动加密或者自动解密。发送到服务器上。服务器收到请求。解密然后响应方式加密数据发送给brida。brida 通过主动调用接收直接对加密数据进行解密。从而达到自动化测试的目的。

Brida环境安装

  • 安装的环境参考https://www.bilibili.com/video/av332313470/ 不在过多介绍。这里我用的python环境是python3

app进行分析

  • 使用jadx进行反编看看这个apk
  • 看到qihoo绝对360加固

  • 360加固应该是整体加固。
  • 脱整体加固的工具有frida-dexdump(python编写可以单独使用可以配合objection),blackDex(就是一个app直接安装就行了)。等工具我觉得这个两个工具最好用。工具百度或者github去搜索
  • 这里我使用blackDex进行脱壳
  • 选择目标app点击进行脱壳

    脱壳成功

  • 利用adb pull命令拉下来。把打包的dex文件压缩成zip文件然后放到jadx里面即可
  • 脱壳成功导入jdax里面

  • 接下来打开postern和Charles对软件进行抓包
  • 刚打开手机发现提示root,我们通过截图可以看到是toast方法这是一个定位点
  • 截图反应是toast标识

  • 然后我们点击账号登陆随便输入进行抓包。这个没有检测代理也没有检测vpn可以直接抓并且是http协议所以不存在什么证书双向验证等问题。开搞
  • 划红色的就是我们的目标

    请求和响应都加密

  • 我们看到有一个param=我们去源代码里面搜素一下发现都是关联的d.c.a.k.r.c 函数
  • 搜素到不少

    这个uc函数估计是就是加密解密逻辑

    确定加密解密函数

  • 看代码是RSA的加密方式不过他这和普通的好像不太一样有一个b函数实现加密解密逻辑
  • 核心加密算法代码如下:
  • 
    package d.c.a.k;
    
    import android.util.Base64;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.security.KeyFactory;
    import java.security.NoSuchAlgorithmException;
    import java.security.interfaces.RSAPublicKey;
    import java.security.spec.InvalidKeySpecException;
    import java.security.spec.X509EncodedKeySpec;
    import javax.crypto.Cipher;
    
    /* compiled from: U.java */
    /* loaded from: dex_.dex */
    public class u {
        private static RSAPublicKey a(String str) throws NoSuchAlgorithmException, InvalidKeySpecException {
            return (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.decode("xxxx", 0)));
        }
    
        public static String b(String str) {
            try {
                Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
                RSAPublicKey a2 = a("xxxx");
                cipher.init(2, a2);
                return new String(d(cipher, 2, Base64.decode(str, 0), a2.getModulus().bitLength()), "UTF-8");
            } catch (Exception unused) {
                m.b("解密字符串[" + str + "]时遇到异常");
                return "";
            }
        }
    
        /* JADX INFO: Access modifiers changed from: package-private */
        public static String c(String str) {
            try {
                Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
                RSAPublicKey a2 = a("xxxx");
                cipher.init(1, a2);
                return Base64.encodeToString(d(cipher, 1, str.getBytes("UTF-8"), a2.getModulus().bitLength()), 2);
            } catch (Exception e2) {
                e2.printStackTrace();
                m.b("加密字符串[" + str + "]时遇到异常");
                return "";
            }
        }
    
        private static byte[] d(Cipher cipher, int i2, byte[] bArr, int i3) {
           
    	   核心算法 由于该app目前在运行阶段所以核心代码我就忽略了。
    	   
            return byteArray;
        }
    }
    
    
  • 仔细看加解密使用的都是同一个公钥。公钥我们用xxx进行代替。这种我是第一次见笑脸。

Frida Hook脚本编写确定猜想

  • 编写frida脚本需要frida api基础java和JavaScript基础如果不懂建议去学习。这里不再讲述

firdahook脚本编写

hook效果说明脚本编写没有问题

使用博主编写算法通杀脚本快速定位

  • 可以去频道下载(这个只能吐出明文并不能定位),直接定位的后续内部发布

通杀算法快速定位1

通杀算法快速定位2

app加密通信过程

  • 1:app明文请求通过RSA/ECB/PKCS1Padding 非对称算法对明文请求加密
  • 2:服务器收到加密请求使用秘钥对加密请求进行解密(注意这里public static String b) 对请求加密的数据无法解密因为是非对称的加密算法
  • 3:把解密的数据在服务器里面顺序执行判断等。结果在加密然后发送(响应)给app客户端。
  • 4:app客户端收到加密响应用自己的解密算法对响应进行解密

frida和brida和burp与app和服务器的关系解读

图解说明关系

brida 主动调用js编写

  • 编写frida脚本需要frida api基础java和JavaScript基础 Brida 编写脚本的基础 如果不懂建议去学习。这里不再讲述

brida Rpc脚本编写

  • 测试是否生效

测试截图

brida 主动调用插件编写

加密插件

解密插件

最终测试截图

  • 此篇文章提供思路,具体有不会编写。插件自己思考一下。或者百度参考。涉及到的脚本和细节问题以后如果创建内部群会详细讲解。关注博主的频道和github主页。了解最新动态。至此我们可以把hook出的明文直接在repeteror中填写然后发送利用brida实现自动加密解密。测试app。不过这种需要依赖app不稳定可能。

最终测试结果


文章作者: peiqiF4ck
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 peiqiF4ck !
  目录