使用Httpdecrypt进行hook

本机环境

1.mumu模拟器
2.httpdecrypt(https://github.com/lyxhh/lxhToolHTTPDecrypt)
3.frida 12.11.17
4.Mac os 10.15.5

分析过程

1. 使用mumu模拟器连接adb

adb kill-server && adb server && adb shell

安装时使用4.3.2版本 5.0版本报错

The client is using an unsupported version of the Socket.IO or Engine.IO protocols
pip install flask-socketio==4.3.2

2. 对注册功能抓包

image-20201229120510857

可以看到securityCode以及post内容均为加密内容

3. 运行httpdecrypt

image-20201229120648649

找到目标app 将app包名com.xxx.xxx填入框中并点击Confirm

4. 然后点击Hooks功能

在Match中输入刚才的包名 点击Confirm

image-20201229121019274

image-20201229121218308

5. 重新进行注册功能操作

根据数据包中的参数,找到对应的方法

image-20201229145006899

com.xxx.xxx.ybblibrary.comm.commTools.tool.EncryptionTool$AES.encrypt(argType0 : object argType1 : string)

image-20201229145315814

com.xxx.xxx.ybblibrary.comm.commTools.tool.EncryptionTool.EncoderByMd5(argType0 : string)

image-20201229145518763

com.xxx.xxx.ybblibrary.comm.commTools.tool.EncryptionTool$AES.decrypt(argType0 : object argType1 : string)

6. 查看加密函数

com.xxx.xxx.ybblibrary.comm.commTools.tool.EncryptionTool$AES.encrypt(argType0 : object argType1 : string)

有两个参数 一个是对象 一个是字符串 我们还需要知道对象的具体的参数类型

在Finds中搜索函数的类名

com.xxx.xxx.ybblibrary.comm.commTools.tool
  • 点击Confirm
  • 找到方法名EncryptionTool$AES encrypt
  • 可以看到其具体的参数类型

image-20201229145750559

加密函数中参数对象的具体的类型为static

代码生成

image-20201229145856477
1.转到toBurp模块
2.然后点击Confirm
3.点击add
由于这个加密函数有两个参数 所以需要自己编辑代码(默认只有一个参数)
4.由于对象参数是static类型 所以选择static类型
动态的选择instance类型

image-20201229150310913

1. 在custom中会生成代码

image-20201229153322897

arg0是传过来的加密字符串 arg1是Android的Context的对象

var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();

最终代码

'use strict';

var rpc_result = null;
var rpc_result_ios = null;
rpc.exports = {


tagf0f1c91ca14d835ab8ae6e62346a447d02: function(arg0, arg1){
Java.perform(function () {
try{
var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();
var EncryptionTool$AES0224190b5b0f850f45017089f29e6428 = Java.use("com.xxx.xxx.ybblibrary.comm.commTools.tool.EncryptionTool$AES");
rpc_result = EncryptionTool$AES0224190b5b0f850f45017089f29e6428.decrypt(context,arg0);
// send(JSON.stringify({"aa":"bb","aa1":"bbb"})+'-cusoto0oom0sc0ri0pt-')
}catch(e){send("tagf0f1c91ca14d835ab8ae6e62346a447d02, " + e + "-er00roo000r-")}
});
return rpc_result;
},
// Added Function
tag24239e10fd5afd01a5459978c4306b1f02: function(arg0, arg1){
Java.perform(function () {
try{
var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();
var EncryptionTool$AES2b8ecc9bd5061994b912287f6411ac57 = Java.use("com.xxx.xxx.ybblibrary.comm.commTools.tool.EncryptionTool$AES");
rpc_result = EncryptionTool$AES2b8ecc9bd5061994b912287f6411ac57.encrypt(context,arg0);
// send(JSON.stringify({"aa":"bb","aa1":"bbb"})+'-cusoto0oom0sc0ri0pt-')
}catch(e){send("tag24239e10fd5afd01a5459978c4306b1f02, " + e + "-er00roo000r-")}
});
return rpc_result;
},
// Added Function


}

2.loadScript

点击左上角loadScript

3.在burpsutie中进行设置

下载burp插件HTTPDecrpyt并进行安装

https://github.com/lyxhh/lxhToolHTTPDecrypt/releases

选择到encrypt 然后右键发送到toBurp模块

image-20201229150805594

选择加密后的数据 然后根据配置的方法进行解密

image-20201229150956317

image-20201229151136475

参考链接

http://www.ironheart.top/index.php/archives/22/

https://xz.aliyun.com/t/7130

https://www.t00ls.net/articles-51070.html#tls4

Author

ol4three

Posted on

2020-12-29

Updated on

2021-03-03

Licensed under


Comments