FreeBuf|用BurpSuit的Brida自定义插件搞定加密签名算法( 二 )
privatevoidsignParam(tps tps) {try{ StringBuilder sb =newStringBuilder;Stringstr = System.currentTimeMillis +""; sb.append("KEYKEYKEYKEYKEYKEY"); sb.append(str);if(tps.getBodyParam !=null&& !tps.getBodyParam.isEmpty) { ArrayList<String> arrayList =newArrayList<>;for(Map.Entry<String,String> key : tps.getBodyParam.entrySet) { arrayList.add(key.getKey); } Collections.sort(arrayList);for(Stringstr2 : arrayList) {Stringstr3 = tps.getBodyParam.get(str2);if(TextUtils.isEmpty(str3)) { str3 =""; } sb.append(str2); sb.append(HttpUtils.EQUAL_SIGN); sb.append(str3); } } tps.addHeaderParam(JNISecurity.signJava(sb.toString,newString("X.XX.XX"))); }catch(Exception e) { } }上面代码的意思是把body中字段的内容取出 , 一个固定的KEY加上当前的时间戳进行拼接后(KEYKEYKEYKEYKEYKEY+body+time) , 传给signJava进行计算 。
如:
body内容为:nickname=99bbe4
进行拼接后的字符串:
KEYKEYKEYKEYKEYKEY99bbe41589531540770
3 动态分析 , 使用Brida自动计算出sign的值如果不会安装Brida与Frida的同学可以参考这篇文章:Brida Python3环境下的不完全折腾手册: https://www.freebuf.com/column/232055.html
BurpSuit中的Brida插件中有一个功能 , 可以把用户选定的内容 , 传入到Brida通过调用frida进行hook , 来执行sign的算法
本文插图
brida.js脚本如下: contextcustom1:function(message){vardata = http://news.hoteastday.com/a/hexToString(message);vartimestamp =newDate.getTime; data ='KEYKEYKEYKEYKEYKEY'+timestamp+data;varsign; Java.perform(function{try{//hook class var calclass = Java.use('com.xxxx.xxxx.JNISecurity'); //hook method sign = calclass.signJava(data); } catch (error) { console.log("[!]Exception:" + error.message); } }); return stringToHex(sign); },上面的代码意思其实很简单 , HOOK app中的com.xxxx.xxxx.JNISecurity这个类 , 填入参数(用户选定的参数) , 执行signJava方法 , 让app帮我们计算出sign.
准备完成后 , 启动brida , 并且载入brdia.js脚本 。
本文插图
4 效率太低 , 怎么才能改进?虽然这样做 , 可以进行渗透测试了 , 但每改一次修改一个值 , 就需要
右键===》Cutoms1=?删除原来的sign===》复制新生产的sign===》调整格式=?发送协议 ,
而且这样只能一个一个协议的测试 , 速度非常的慢 , 慢还可以忍 , 关键还不能进行批量暴力测试 , 也就失去了价值 。
在BurpSuit中如果当发送内容的时候自动可以自动把sign替换掉 , 是不是就不用这么麻烦了 , 于是仔细看了看Brida的文档 , 首先了解下Brida的工作方式:
本文插图
太好了 , Brida通过Pyro4与Frida进行联系 , 这样就把Burp和Frida联系在一起了 。 Brida提供了这个功能(用户自定义插件) , 正好做做尝试 。 【FreeBuf|用BurpSuit的Brida自定义插件搞定加密签名算法】5 使用自定义插件(Custom plugin with Brida stub)
这个过程可能有点绕 , 我画个图 , 一图顶万语!(图中我省略了Pyro4和Frida与Brida的交互过程)
推荐阅读
- FreeBuf|“黑球”攻击仍在行动:从检测杀软到安装挖矿
- FreeBuf|管中窥豹之工控设备解密
- FreeBuf|工控渗透框架:PLC密码检测
- FreeBuf|谷歌副总裁宣布退出Black Hat,称“黑帽”涉嫌种族歧视
- FreeBuf|安全研究:2019年流行的开源项目漏洞数量翻了一倍
- FreeBuf|DEDECMS伪随机漏洞分析
- FreeBuf|Werkzeug更新带来的Flask debug pin码生成方式改变
- FreeBuf|硬件安全危机下,美国DARPA启动全球漏洞赏金计划
- FreeBuf|TrickBot新组件Nworm分析
- FreeBuf|Maze引入披露数据这种新型勒索方式
