首页
社区
课程
招聘
[原创]Brida操作指南
发表于: 2019-1-15 22:44 46555

[原创]Brida操作指南

2019-1-15 22:44
46555

之前虽然开了一个·frida-all-in-one的仓库,但最近一直在研究一些自动化分析方向的内容,所以gayhub也没怎么更新,不过加星球加群吹水聊天的倒是不少 (。・∀・)ノ゙ヾ(・ω・。)。

不得不说Frida真的是一个好东西,以前搞iOS的时候就想着CycriptTheos真的是太他娘的方便了,Cycript就不用说了,Frida百分之两百足够替代他,LogOS语法和JavaScript API也各有千秋,js有时候还是挺香的。

我现在工作中Android端基本已经用Frida代替了Xposed & DebuggerDwarf真的很香,墙裂推荐。(虽然现在很少调试就是了...)

大家如果经常做APP安全测试的话,抓包应该经常会遇到加密或者需要sign的请求,然后这个时候就很蛋疼,一般的做法可能就是需要自己去逆算法扣代码解包拼包来写fuzzer

再坑爹一点的,APP加个固,算法混个淆,鬼才看得懂,但是老板分配的任务又他娘的不能shift+del,然后就花了两天(像我这种拖延症,不重要的事情一般其实是两周)时间撸一遍算法,最后用5分钟来发包发现0高0中0低,内心:wtm....

Brida就是用来解决这个问题的,仅需20分钟,加密、解密、Fuzz、Scan一条龙服务。

我一般就用Python2.7,py3应该也没啥问题。多版本管理用星球里介绍过的pyenv

这个不多说了,手机上装好APP,最好关掉selinux,开起frida-server,转发Frida的端口出来:

即可。

首先,打开你的免费版\破解版BurpSuite(别装了我知道你的正版BurpSuite肯定不是自己出钱买的),点击Extender找到Brida把它装上。然后你就会发现你多了一张同款选项卡。

然后到这就结束了,我们下期再见。。。。

.

.

.

.

.

我开玩笑的,别扔鸡蛋了好伐...

相比较算法还原,相信算法在哪里这个问题对各位大黑阔来说应该不是什么多大的问题。不过,Brida提供了一个很方便的操作:插桩

切换到Analyze Binary,点击Load tree,然后可能会卡一会,因为在加载类列表,加载完点开Java,可以看到这个进程里的所有类,一般我在这就直接搜crypt,然后他就会卡更久,因为这个智障把SO里的导出导入函数也搜了一个遍,最后可以右键->Inspect,把可疑的给hook住。

然后让他发包,如果方法被调用了就会打出日志,运气好的话直接就找到他的加解密函数了,运气不好的话....不存在的,我运气一直很好。(我信你个鬼,你个糟老头子坏的很,大部分情况下还是得自己看代码找算法位置,配合着来。

这里就是编辑那个js脚本了,可以看到代码里的rpc.exports里帮你写了四个contextcustom,这四个是给右键菜单预留的,contextcustom1、contextcustom2会出现在repeater等模块中request的右键菜单,contextcustom2、contextcustom3则会出现在response的右键菜单。主要就是为了实现手动加解密的功能,就是这样:

值得注意的是,这四个函数接收的参数都是hex形式的,所以返回的时候也要转成hex再传出去。
当然你可以自己在rpc.exports添加函数,然后再contextcustom里调就可以了,只要是在这里面的,后面都可以在API中被调用到。

具体代码可以看github,上次跟着PPT一起发过了。

作为一名资深的老湿基(其实连驾照都没拿到..),不能做到自动驾驶自己都说不过去。既然上面都说需要一条龙服务了,显然是不可能用手撸..那么多请求的!有现成的IntruderScanner不用白不用,所以这个时候就需要Proxy+Pyro4

在开始之前,你需要先装一个Jython,因为坑爹的BurpSuite全是Java写的,所以不支持CPython,就用了这个Java实现的Python来作为代替品。 当然你也可以选择使用Java来写插件。

如果你有pyenv的话直接

没有的话就自己去看官网Guide自己装一个。

装完你还需要pip,放心吧CPythonget-pip.pyJython上是用不了的,you need this

然后你就拥有一个Jython的pip了,最后安装一个Pyro4即可:

到这就是看BurpAPI然后开发扩展了,BurpAPI不多,文档也还算友好,所以并没有多难。

申明一个类,继承于IBurpExtenderIHttpListener

重写registerExtenderCallbacksprocessHttpMessage:

对着toolFlag一顿if是为了过滤Burp的模块,判断他是从哪过来的,这里是过滤了三个:reperterscannerintruder,抓包过来的无需处理,如果你处理了那APP就不能正常收发数据了。
self.decryptself.encrypt就是去跟Brida开的端口交换数据,处理加解密:

callexportfunction来调用你刚才js脚本里rpc.exports里的函数,参数是函数名和参数列表。

好了代码到这就写完了,完整代码看github,复制粘贴两分钟搞定。

然后去

Burp -> Extender -> Options -> Python Environment -> Location Of Jython standalone JAR file

把你Jython的jar包扔进去,pyenv可以用

看到你的bin路径,这个jar包就在bin往上一级的安装目录里。

最后把你的py加进去,就可以使用Scanner等功能了

...太大了传了好久传不上来,还是去星球下吧

 
 

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 9
支持
分享
最新回复 (41)
雪    币: 1
活跃值: (743)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2019-1-16 00:02
1
雪    币: 11321
活跃值: (3374)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2019-1-16 10:03
1
雪    币: 6573
活跃值: (3938)
能力值: (RANK:200 )
在线值:
发帖
回帖
粉丝
4
赞!
2019-1-16 10:08
1
雪    币: 61
活跃值: (991)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
2019-1-16 10:56
1
雪    币: 3907
活跃值: (5822)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
6
2019-1-16 13:44
1
雪    币: 438
活跃值: (239)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
赞。
最后于 2019-1-16 14:14 被ID蝴蝶编辑 ,原因:
2019-1-16 14:13
1
雪    币: 29177
活跃值: (63586)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
8
感谢分享!
2019-1-16 14:23
0
雪    币: 2709
活跃值: (1632)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
弄了一套 跟你差不多的  但是  没你这个弄得复杂  而且现在很多的APP     SO 里面也加了反射 调用java 层的
2019-1-16 15:21
0
雪    币: 1504
活跃值: (9953)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
10
学习了。我也搭下试试
2019-1-19 08:33
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
11
不理解 BurpSuite 在这个过程的作用是啥。。
看起来没用到什么 BurpSuite 的功能?为啥要做成 BurpSuite 的插件
2019-1-19 11:17
0
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
2019-1-24 09:20
0
雪    币: 242
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
星球在哪里?
2019-1-24 18:16
0
雪    币: 916
活跃值: (3434)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
14
Scanner,Repeater, Intruder都是burpsuite的功能啊
2019-1-25 01:13
0
雪    币: 916
活跃值: (3434)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
15
foundkey 星球在哪里?
Github上有二维码
2019-1-25 01:13
0
雪    币: 2473
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Brida 赞 看起来不错
2019-1-25 06:43
0
雪    币: 671
活跃值: (3179)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
不用编译0.3怎么直接装?
2019-2-15 15:23
0
雪    币: 916
活跃值: (3434)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
18
陈某人 不用编译0.3怎么直接装?
extender  BApp store
2019-2-15 17:17
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
老哥 每次我用frida都是用  --no-pause这个参数  不加的话程序就会崩溃 怎么回事呀     这有什么办法么   小米6的机器
2019-2-19 09:51
0
雪    币: 121
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
Exception starting Pyro server java.io.IOException: Cannot run program "E:\Python36-32": CreateProcess error=5, 拒绝访问。 java.lang.ProcessBuilder.start(Unknown Source)

路径该如何填写呢,拒绝访问
2019-2-27 17:50
0
雪    币: 3646
活跃值: (4774)
能力值: ( LV13,RANK:437 )
在线值:
发帖
回帖
粉丝
21
2019-3-1 18:13
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
2019-4-22 21:05
0
雪    币: 2359
活跃值: (288)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
果然是神器
2019-4-26 12:29
0
雪    币: 57
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
python3不支持,必须python2.
2019-5-20 14:11
0
雪    币: 219
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
Exception starting Pyro server java.util.concurrent.TimeoutException java.util.concurrent.FutureTask.get(Unknown Source) burp.BurpExtender.launchPyroServer(BurpExtender.java:914) burp.BurpExtender.actionPerformed(BurpExtender.java:1367)
一大堆异常!

2019-5-21 12:38
0
游客
登录 | 注册 方可回帖
返回
//