记一次APP加密算法逆向

上回写到成功抓到包了。请求参数如下,服务端有做验签,这次我们来试试逆向破解这个签名生成算法 下面记录了操作过程: apk反编译,得到java源码 搜索关键字 找到了加密算法,藏在so库里 在资源目录下找到libencrypt.so, 用IDA打开, 找到encryptHttpSignature函数 使用frida hook generateKey hmac_sha1 拿到 参数 拿到key, 逆向完成 参考: Frida Android hook frida_hook_libart

记一次APP SSL pinnig 抓包

先了解下背景,APP证书校验的几种实现方式[1]: 不校验,只走Https流量 系统信任证书校验 Android7以后,系统不再信任用户级的证书,只信任系统级的证书,所以要抓包就需要把我们的代理程序证书安装至Android的系统目录中 公钥校验Public Key Pinning HTTPS网站防止攻击者利用数字证书认证机构(CA)错误签发的证书进行中间人攻击的一种安全机制,用于预防CA遭受入侵或其他会造成CA签发未授权证书的情况。采用公钥固定时,网站会提供已授权公钥的哈希列表,指示客户端在后续通讯中只接受列表上的公钥。 证书全内容校验 SSL Certificate Pinning 下面记录了一次抓包过程: 打开Charles, 启用ssl proxy,手机配好代理,开始如图所示,提示握手失败 看来有做证书校验,试试第二种系统证书校验,把charles证书装到手机上 手工安装的证书,只能装到用户证书区 要装到系统证书,有以下几种方式 Xposed 模块,Android 10可以使用太极 JustTrustMe TrustMeAlready Magisk 模块 Always Trust User Certificates No luck, 尝试第3种 公钥校验,这里用到 frida(手机需root), 手机端, 参考 官方文档 下载frida-server对应架构版本 手机用数据线连接到电脑 把二进制执行文件复制到手机 /data/local/tmp/ 手工执行: /data/local/tmp/frida-server & 如果使用了Magisk, 需要关闭MagiskHide 电脑端 安装 pip3 install frida 使用脚本 frida-multiple-unpinning, 可以绕过多种实现的公钥 […]