非常抱歉brida插件的安装使用一直报错,这里没有用brida和frda去hook加密算法,是直接反编译源码定位加密算法,接着使用另一个burp插件完成后续自动化加解密及口令爆破步骤。这种方式适合apk没有加壳、混淆的情况,对于无法反编译或反编译后加密算法代码缺失的情况还是更建议使用brida和frida去hook,所以加了一个中篇,等hook环境调试完成补下篇哈~
前置信息:
1、自动化加解密使用的burp插件是autoDecoder,项目地址:https://github.com/f0ng/autoDecoder
2、autoDecoder用法及案例项目地址:https://github.com/f0ng/autoDecoder-usages
3、上篇已完成测试APP客户端与服务端通信,能使用burp捕获通信数据包
解密前encryptedPassword字段值是加密的,无法直接进行口令爆破
定位算法
将测试APK拖入jadx进行反编译
使用关键字“encrypt”检索加密算法,检索位置在菜单-导航-文本搜索,我的习惯是如果搜索结果有主函数优先到主函数找是否与加密算法相关,调用关系大概率是主函数调用其他函数,然后顺着去分析完整的加密逻辑。
在MainActivity中可以看到,用户输入的密码password和SECRET_KEY(固定值:1234567890123456)一起被送入AESCipher的encrypt方法进行加密,以json的数据格式输出用户名和加密后的password。
双击AESCipher查看详细的实现逻辑,使用AES算法、ECB (Electronic Codebook,电子密码本模式)、PKCS5Padding填充方案加密字符串转换为字节数组的SECRET_KEY和password,再将AES加密后的结果进行base64编码。
总结一下几个关键要素
1、AES算法:AES算法、ECB (Electronic Codebook,电子密码本模式)、PKCS5Padding填充方案
2、SECRET_KEY:1234567890123456
3、原始的Base64编码
插件配置
配置autoDecoder插件,使用自带算法加解密模块
添加为请求包加/解密方式
添加为响应包解密方式
添加正则表达式提取请求包中需要加解密的部分
点击保存配置才能让这个插件生效
最后在选项中选择加解密选项,加解密设置,点击保存配置
口令爆破
将登录请求包发送到autoDecoder的Decode-Autodecoder模块
password已被解密
选中encryptedPassword的字段值进行明文字典爆破即可,插件会自动加密
实际上发送的请求包中encryptedPassword字段值已经被插件根据我们的配置自动加密了,加密内容可以在日志中查看
有一个要注意的地方:设置小一点的并发数,不然爆破会失败
10并发数出现错误
1并发数没有出现错误
至此自动化加解密及口令爆破已实现,hook过程会在之后实现。
声明
所有内容的初衷只是分享本人的学习收获,对于因读者不当使用或修改本文内容的任何损失,作者不承担任何直接或间接的连带责任。
文章内容如有不妥,烦请大家联系修改,谢谢大佬们批评指正。