运用Frida合作Burp Suite追寻API调用

访客6年前黑客文章860

几周前我对某个手机银行使用进行测验。这个app用了一个结构,这个结构能够混杂、加密app与服务器进行的TLS衔接。我用Frida截获了加密环节之前的明文恳求/呼应。我期望能够修正截获的API调用,然后看看长途服务器是怎么呼应的,但这样的话我每次都得修正Frida脚本。
Burp是用来进行web测验的东西,而关于移动使用的测验应该也大致相同。我想要让burp跟frida合作起来,截获/修正burp中的API调用。虽然我没做Burp的插件,可是用一个小脚本咱们就能够截获API调用了,这省去了修正脚本中API参数的很多时刻。
截获API恳求并不费事:
1.    树立Burp监听端口(如26080端口)将流量转发到回显服务器(如27080端口)
2.    回显服务器在27080端口监听
3.    用Frida同步发送HTTP恳求到Burp监听端口
Burp就会接纳到Frida发送的API恳求。咱们就能够修正Burp中收到的调用,然后把数据转发到回显服务器。回显服务器会将修正恳求后收到的呼应发还给Frida。
设置Burp监听端口
咱们先开端设置Burp的监听端口。我已经在藏匿署理形式中启用了26080作为监听端口:

Python tracer代码
我挑选对已有的frida-trace代码进行修正和拓宽,让其具有trace东西那样的灵活性。
以下的这段Python代码能够让frida-trace代码与你转发API调用的服务器合作。它能够将HTTP恳求发送到咱们本地的Burp监听端口。你也能够在HTTP头部参加API调用的元数据,或许参加URL途径加以区别。
现在的代码或许依靠版别号,我不知道未来的版别会不会有改变,至少现在它能兼容Frida 8.2.2。
from frida import tracer
import requests
BURP_HOST = "localhost"
BURP_PORT = 26080
def frida_process_message(self, message, data, ui):
    handled = False
    if message['type'] == 'input':
        handled = True
    elif message['type'] == 'send':
        stanza = message['payload']
        if stanza['from'] == '/http':
            req = requests.request('FRIDA', 'http://%s:%d/' % (BURP_HOST, BURP_PORT), headers={'content-type':'text/plain'}, data=stanza['payload'])
            self._script.post({ 'type': 'input', 'payload': req.content })
            handled = True
    if not handled:
        self.__process_message(message, data, ui)
tracer.Tracer.__process_message = tracer.Tracer._process_message
tracer.Tracer._process_message = frida_process_message
if __name__ == '__main__':
    print("[x] To intercept in Burp, set up an invisible proxy listening on port %d, forwarding to the echo server." % BURP_PORT)
    tracer.main()
Trace handler脚本
下面的脚本能够用来截获onLeave 函数中的read()调用。你能够依据自己需求修正。咱们只需要转发/截取你想要修正的那些参数。
我经过Frida的send() API完成了功用。这个调用被Python脚本接纳,然后发送到handler脚本,然后当咱们在BurpSuite中修正恳求时,脚本会等候呼应,然后履行回调函数。
{
    onEnter: function (log, args, state) {
        log("read(" + "fd=" + args[0]+ ", buf=" + args[1]+ ", count=" + args[2] + ")");
        state.buf = args[1]
    },
    onLeave: function (log, retval, state) {
        send({from: '/http', payload: Memory.readUtf8String(state.buf)})
        var op = recv('input', function(value) { // callback function
            log("Forwarding mitm'ed content: " + value.payload)
            Memory.writeUtf8String(state.buf, value.payload)
        });
        op.wait();
    }
}
回显服务器
以下脚本完成的功用是对Frida宣布的恳求做出呼应,会先request payload。你也能够依据自己的需求进行修正。
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from optparse import OptionParser
ECHO_PORT = 27080
class RequestHandler(BaseHTTPRequestHandler):
    def do_FRIDA(self):
        request_path = self.path
        request_headers = self.headers
        content_length = request_headers.getheaders('content-length')
        length = int(content_length[0]) if content_length else 0
        self.send_response(200)

[1] [2]  黑客接单网

相关文章

为什么干流网站无法捕获 XSS 缝隙?

 二十多年来,跨站脚本(简称 XSS)缝隙一直是干流网站的心头之痛。为什么过了这么久,这些网站仍是对此类缝隙束手无策呢? 关于最近 eBay 网站曝出的跨站脚本缝隙,你有什么主意?为什么会呈现这样的漏...

黑客接单网:端口映射该怎么做,看完这些内容,原来端口映射如此简单

黑客接单网:端口映射该怎么做,看完这些内容,原来端口映射如此简单

端口映射是什么? 端口映射就是将外网的IP地址上的端口映射到内网中一台机器,当访问这个外网ip的端口,就会将用户的央求映射到指定机器中,不理解看下面就懂了。 远控端口映射原理 不少人学员初学远控的时...

xHunt:针对科威特航运组织的攻击行动-黑客接单平台

2019年5月至6月,unit42安全团队在一起针对科威特航运业的进犯事情中,检测到了一个新后门东西——Hisoka,它的作用是下载几个的定制东西进行后缝隙运用,一切东西好像都由同一个开发人员创立,最...

揭秘使用Confluence未授权RCE漏洞在6小时内黑掉50+公司-黑客接单平台

长话短说,其实早在2019年我就创建了我的Hackerone/Bugcrowd profiles,但我从未在那里陈述过任何的缝隙。这是第一个让我觉得值得陈述的缝隙,也打破了我多年来零陈述的记载。 安全...

谷歌为G-Suite服务布置全新反钓鱼和歹意软件检测功用

Google 为 G Suite 服务推出了全新安全功用,包括企业云核算,生产力和协作东西。 现在企业用户能够运用 Gmail 来绑定企业自定义域名,并进行商务和企业内部的邮件联络。 而G Suite...