本文讨论了小程序自动化加解密中的应用。作者首先指出使用proxifier+burpsuite在自动化加解密中遇到的问题,并推荐使用Clash作为代理工具。文章详细介绍了如何创建Clash配置文件。接着,作者介绍了使用mitmdump进行数据处理的方法,通过编写脚本实现burp明文改包和自动加密解密。
文章已同步入库,可登录平台查看
01
全局代理工具
如何选择
我们常用的小程序抓包方法就是proxifier+burpsuite,但是在实现自动化加解密中,经过尝试未能成功。
使用proxifier的代理的显示如下:
此处控制台上看似无误,却发现无法通过Burp Suite捕捉到请求包,这说明代理设置可能存在问题。尝试使用操作系统内置的代理功能,我们能够成功在Burp中查看请求包。然而,这种方法会导致所有数据包被代理,从而干扰测试流程。因此,选择使用Clash作为代理工具。想要了解更多关于Clash抓包的细节,请参考之前发布的文章。
告别Proxifer微信抓包,给我用Clash!!
首先创建一个clash的配置文件my_clash.yaml
proxies:
- name: Whistle
type: http
server: 127.0.0.1
port: 8989
proxy-groups:
- name: Proxy
proxies:
- Whistle
type: select
rules:
- PROCESS-NAME,WeChatAppEx.exe,Whistle
- PROCESS-NAME,WeChat.exe,Whistle
- PROCESS-NAME,WechatBrowser.exe,Whistle
- MATCH,DIRECT
如果还需要抓其他程序的数据包,只需要在rules中添加即可,这同我们设置proxifier是一致的。
接下来进行导入:
选择配置、导入、导入我们的yaml文件
点击主页服务模式的管理按钮
点击安装即可,使用的时候在配置界面选择我们的配置
主页按照下面的配置即可
此时数据包就可以通过我们的burp了
02
数据流
走向逻辑
03
使用mitmdump
进行数据处理
mitmdump是mitmproxy的命令行版本,这里使用mitmproxy会有一个问题,就是流量可以通过mitmproxy,但是并不能经过我们定义的request钩子函数,使用mitmdump可以完美解决。
demo示例:
不理解demo可参考之前发布的文章
import execjs
import binascii
import hashlib
from mitmproxy import http
from urllib3 import request
import json
import re
import pydevd_pycharm
def request( flow: http.HTTPFlow) -> None:
print(flow.request.url)
if flow.request.method == "POST":
body = flow.request.text # 获取burp过来的数据包body
# 对明文body进行处理
body_encrypt(xx)
new_body = decdata.decode('utf-8')
#替换处理后的body进去
flow.request.text = new_body
脚本启动前,burp抓到的数据包格式如下:
脚本启动后结果,即可在burp明文改包(该明文包需要先获取到,可以通过断点或全局hook获取)
执行命令
mitmdump --mode upstream:http://127.0.0.1:8080 -v -s req.py --listen-port 8989 --ssl-insecure
即可在控制台看到通过加密出去的数据流,即实现了burp明文改包,自动加密
解密同理,再写一个解密脚本使用mitmdump对返回数据包进行处理,这里不再赘述。但不建议这么做,解密的话,在控制台下个断点,直接解密起来应该更快。自动加解密适合多套都是用相同的加解密时去写脚本处理,如金融、运营商、能源等行业的局部地方,不需要复用的反倒直接调试断点效率更高些。
生活笔记
每个人都是一束孤独的光,人们在思索的流浪中,仿佛都在轮回
早晨就像一个纠正器,无论你昨天经历什么样的压力、怨恨、彷徨,睁开眼后,晨曦静好,重新出发
点个 「在看」 你最好看
原文始发于微信公众号(长风安全):小程序抓包|Clash与mitmdump自动化加解密实践
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论