CustomCrypto Burp自定义加解密工具原创

admin 2022年10月30日19:38:37CustomCrypto Burp自定义加解密工具原创已关闭评论138 views字数 2015阅读6分43秒阅读模式

First#

做一些 App 测试、Web 测试、小程序测试的时候,通常会遇到流量加密的问题,对于流量加密自然是要去解密的。

通常办法是提取对应的加解密部分,然后手动复制加解密字段进行加解密。

或者是 Hook 加解密函数,在调用的时候进行加解密。

上面无论哪种方法都比较麻烦,前者需要不断复制加密字段去解密,后者没法复用,需要重新调用才能执行方法。

CustomCrypto#

这是一个强大的加解密代理工具,可以将 Burp 流量代理到任意位置进行加解密。

How to use ?#

image-20220417091540426

Settings#

插件安装后,只有两个要填写的地方,需要监控的网址 以及 需要执行的命令

需要监控的网址:指的是需要去做加解密的网址。比如只有 http://localhost/login 需要加解密,就只填写 http://localhost/login,如果整站都需要进行加解密,你就填写 http://localhost/login,必须要带上 Http 头。

需要执行的命令:这个功能赋予了这个插件无限的可能。你可以用任何你喜欢的语言去编写加解密脚本,只要它可以在命令行调用。调用方式很简单,以 nodejs 为例,只填写这一部分就好了 node /your/path/crypto.js ,如果是 java 的话,得先编译,也可以运行时编译(不过那样响应速度就太慢了)

记得点 保存,配置才会生效,本插件支持多个站点不同加解密方案调用。

Scripts#

这里以 PHP 为例(PHP 天下第一)

系统的调用脚本为:

php crypto.php 2 abcdefjhijklmnopq....

其中,第一个参数 2 指的是请求类型,我在 Burp 中定义了四种请求类型:

const REQUEST_RECEIVE = "0";
const REQUEST_SEND = "1";
const RESPONSE_RECEIVE = "2";
const RESPONSE_SEND = "3";

第二个参数,指的是需要加解密的 body 部分,这个字段采用 url编码(base64编码(body)) 进行传递,所以进行加解密前得先进行解码。目前是不支持 get 参数解密的,想来也没人用 GET 传递加密数据吧。

注意:

如果你在 REQUEST_RECEIVE 或者 RESPONSE_RECEIVE 阶段进行了加解密操作

那么你在 REQUEST_SEND 或者 RESPONSE_SEND 阶段收到的 body 就是你上个阶段修改后的值

简单来说,就是 REQUEST_RECEIVERESPONSE_RECEIVE 阶段如果做了解密,那么 REQUEST_SENDRESPONSE_SEND 阶段就必须进行加密,这样服务器/客户端才能收到正确的响应。

Burp 流量的生命周期如下:

image-20220417094346847

测试的 PHP 脚本:

<?php
const REQUEST_RECEIVE = "0";
const REQUEST_SEND = "1";
const RESPONSE_RECEIVE = "2";
const RESPONSE_SEND = "3";

if(sizeof($argv)!==3){
    throw new Exception("错误,至少需要两个参数!");
}





$isEncrypton = ($argv[1]==REQUEST_SEND||$argv[1]==RESPONSE_SEND);




$data = base64_decode(urldecode($argv[2]));



function encode($d){
    
    return base64_encode($d);
}
function decode($d){
    
    return base64_decode($d);
}


if($isEncrypton){
    echo encode($data);
}else{
    echo decode($data);
}

Examples#

1️⃣ Web 前端流量加解密#

  • 提取前端流量加解密脚本为 crypto.js,需要加解密的网址为:http://example.com/login
  • 套入 CustomCrypto 脚本模板
  • 需要监控的网址处填写:http://example.com/login
  • 需要执行的命令处填写:node crypto.js
  • 保存
  • 返回网页重新发包即可
  • 这边的脚本对返回页面做了 base64 编码
  • image-20220417094748044

2️⃣App 流量加解密 (对应的脚本暂未提供)#

  • 如果是 APP 自己搞的比较复杂的加解密建议使用 Frida 或者 Xposed 植入代码,在 App 起一个 Http 服务,这个服务用于主动调用 App 中的加解密。
  • 如果采用公开算法如 RSA、SM2 之类的,建议直接在本地实现对应代码,或者直接拷贝他的加解密类到本地 java 文件中来。
  • 套入 CustomCrypto 脚本模板(python/php/java 随意)
  • 需要监控的网址处填写:http://example.com/login
  • 需要执行的命令处填写:php crypto.php
  • 保存
  • 返回 App 重新发包即可

Defect#

缺点也是有的,因为多了四步加解密流程,所以 Web 页面响应速度会慢几秒钟。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月30日19:38:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CustomCrypto Burp自定义加解密工具原创http://cn-sec.com/archives/1379950.html