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

访客5年前黑客文章796

几周前我对某个手机银行使用进行测验。这个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]  黑客接单网

相关文章

代码审计系列第二节——SQL注入

 经过第一节给咱们简略介绍了一下代码审计简略运用,那么第二节,咱们来介绍一下,使用东西和手艺进行缝隙发掘。为了咱们能对sql注入有更好的学习和收成。引荐咱们几个学习php根底的网站 Imooc.co...

云、管、端三重失守,大范围挂马进犯剖析

0x00 源起 从3月5日开端,腾讯反病毒实验室监控到很多闻名软件客户端存在开释下载器病毒的反常数据,预示着或许存在经过挂马方法大规模进犯闻名软件客户端的行为。电脑管家紧迫对相关数据进行剖析排查,终究...

内存取证:查找Metasploit的Meterpreter踪影

Metasploit是一个十分受欢迎的浸透测验结构,被视为安全测验人员手中的一把利器。但在另一方面由于他过于强壮,因而也常常被一些歹意攻击者所运用。当然,在本文咱们首要评论的是关于内存取证,这对于咱们...

你不在意的HTTPS证书吊销机制-黑客接单平台

缘起偶刷《长安十二时辰》,午睡时,梦到我穿越到了唐朝,在长安城中的靖安司,做了一天的靖安司司丞。当徐宾遇害消失的时分我不在司内,其时的景象我不得而知。后来徐宾醒了,据他描述说“通传陆三”是暗桩,几乎致...

运用Python检测并绕过Web应用程序防火墙

Web运用防火墙一般会被布置在Web客户端与Web服务器之间,以过滤来自服务器的歹意流量。而作为一名浸透测验人员,想要更好的打破方针体系,就有必要要了解方针体系的WAF规矩。现在,许多WAF都是根据签...

HTML5 安全问题解析

HTML5 安全问题解析 标签: html html5 web安全 本文参阅: w3school:html5相关基础知识(w3school.com.cn)...