之前虽然开了一个·frida-all-in-one
的仓库,但最近一直在研究一些自动化分析方向的内容,所以gayhub也没怎么更新,不过加星球加群吹水聊天的倒是不少 (。・∀・)ノ゙ヾ(・ω・。)。
不得不说Frida
真的是一个好东西,以前搞iOS的时候就想着Cycript
和Theos
真的是太他娘的方便了,Cycript
就不用说了,Frida
百分之两百足够替代他,LogOS
语法和JavaScript API
也各有千秋,js有时候还是挺香的。
我现在工作中Android端基本已经用Frida代替了Xposed & Debugger
,Dwarf
真的很香,墙裂推荐。(虽然现在很少调试就是了...)
大家如果经常做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一起发过了。
作为一名资深的老湿基(其实连驾照都没拿到..),不能做到自动驾驶自己都说不过去。既然上面都说需要一条龙服务了,显然是不可能用手撸..那么多请求的!有现成的Intruder
和Scanner
不用白不用,所以这个时候就需要Proxy
+Pyro4
了
在开始之前,你需要先装一个Jython
,因为坑爹的BurpSuite全是Java写的,所以不支持CPython,就用了这个Java实现的Python来作为代替品。 当然你也可以选择使用Java来写插件。
如果你有pyenv
的话直接
没有的话就自己去看官网Guide自己装一个。
装完你还需要pip
,放心吧CPython
的get-pip.py
在Jython
上是用不了的,you need this 。
然后你就拥有一个Jython的pip了,最后安装一个Pyro4即可:
到这就是看BurpAPI
然后开发扩展了,Burp
的API
不多,文档也还算友好,所以并没有多难。
申明一个类,继承于IBurpExtender
和IHttpListener
:
重写registerExtenderCallbacks
和processHttpMessage
:
对着toolFlag一顿if是为了过滤Burp的模块,判断他是从哪过来的,这里是过滤了三个:reperter
、scanner
、intruder
,抓包过来的无需处理,如果你处理了那APP就不能正常收发数据了。self.decrypt
和self.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期)