使用Httpdecrypt进行hook

admin 2022年1月6日01:09:14安全博客评论10 views2934字阅读9分46秒阅读模式

本机环境

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

分析过程

1. 使用mumu模拟器连接adb

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

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

1
The client is using an unsupported version of the Socket.IO or Engine.IO protocols
1
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

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

image-20201229145315814

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

image-20201229145518763

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

6. 查看加密函数

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

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

在Finds中搜索函数的类名

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

image-20201229145750559

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

代码生成

image-20201229145856477

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

image-20201229150310913

1. 在custom中会生成代码

image-20201229153322897

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

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

最终代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
'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

FROM :ol4three.com | Author:ol4three

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日01:09:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  使用Httpdecrypt进行hook http://cn-sec.com/archives/721174.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: