之前写过一篇:
《浅析旧版burp-loader-keygen.jar》
http://scz.617.cn:8/misc/201909271517.txt
本文是其后续。
surferxyz的keygen一直支持到Burp 2.0.11beta,终于在2.1版时失效。这是因为2.1版Burp注册算法有变,包括但不限于:
1)License格式有变,包含SHA256签名,旧版keygen没有生成相应字段。
2)不再调用库函数进行关键的大数运算,而是自己实现大数模幂、大数比较,相当于inline展开。这使得旧版keygen针对compareTo()的修改不会起作用。
总的来说,2.1版注册算法整体结构与更早版本相比没有变化,比如DES密钥、大数n等等都沿用旧值。
提供一个新版keygen:
http://scz.617.cn/private/burp-loader-keygen-2.jar
http://scz.617.cn:8/private/burp-loader-keygen-2.jar
burp-loader-keygen-2.jar不是从源码编译来的,是在burp-loader-keygen.jar基础上直接修改而得。
新版keygen与如下版本Burp精确匹配:
这个版本Burp在网上能下到,请自行搜索并 校验哈希 。
新版keygen用法如下:
jdk1.8.0_221/bin/java -jar burp-loader-keygen-2.jar
jdk1.8.0_221/bin/java -noverify -Xbootclasspath/p:burp-loader-keygen-2.jar -jar burpsuite_pro_v2.1.jar
其实可以继续使用旧版keygen生成注册数据,但loader必须用新版:
jdk1.8.0_221/bin/java -jar burp-loader-keygen.jar
jdk1.8.0_221/bin/java -noverify -Xbootclasspath/p:burp-loader-keygen-2.jar -jar burpsuite_pro_v2.1.jar
如有其他疑问,参看旧版keygen的使用说明:
https://www.52pojie.cn/thread-691448-1-1.html
简单说说思路。
既然无法通过Patch compareTo()完成RSA签名校验,干脆动态修改Burp注册流程中的RSA签名校验代码,就跟x86上暴破一样。
为什么动态修改而不是静态Patch?因为需要修改的代码不是以.class文件形式存在于jar包中,是动态释放到内存中、动态加载进来的。并不是说绝对不可能静态Patch,但那样动静太大,要改的地方较多。
如何动态修改?请用任意一款Java反编译器查看burp-loader-keygen-2.jar,未做任何混淆。我在ClassLoader.defineClass()中动态修改了目标class的7个字节,以此绕过Burp的RSA签名校验。和surferxyz一样,我未做混淆,请自行围观jar包,一般来说7个字节的修改不足以实现明显恶意行为。在哈希匹配的前提下,我为新版keygen的行为背书,相信我个人道德底线的,请放心使用,存疑的,就不要冒这种险了。
为什么用"-Xbootclasspath/p:"?仅仅是最大程度重复旧版keygen套路。如果觉得不爽,换成ClassFileTransformer或其他什么技术手段也是可以的。
不清楚Burp是否有反破解暗桩存在,使用者风险自负。只在Windows+Java 1.8.0_221上测试过,其他OS、其他Java版本如有问题, 不要找我 ,请自行Patch ClassLoader。
关于Spider模块到哪里去了,参看:
https://portswigger.net/blog/burp-2-0-where-are-the-spider-and-scanner
旧版keygen可以通杀1.7至2.0.11beta,新版keygen只能用于2.1,目前看,很难再有通杀型loader,后续只能"case by case"。
发现Burp 1.6版注册流程中直接出现了"burpr0x!"的byte[]形式,看来旧版keygen的"burpr0x!"源自于此。我在前一篇文章中猜测过是否源自暴力穷举,想多了。
需要说明的是,2.1版Burp已有larry_lau的破解,一直以来不断有人质疑之,未分析过他的helper,不做评价。
前几天有网友私下提供了:
一是人家没说可以再分享,二是这个版本我不太想剁。等有下面这个版本时或许会继续提供匹配的新版keygen:
提供keygen是将之视为Java逆向工程挑战,有购买能力者建议购买正版Burp。
从技术原理上讲,可以不需要keygen、利用loader直接破解成功,之所以搞成现在这种略显复杂的的局面,就是简单地想向旧版keygen的作者致敬,也向所有"永远充满好奇心的人们"致敬。
http://scz.617.cn/misc/201910151519.txt
http://scz.617.cn:8/misc/201910151519.txt