如何利用http tunnel使用burpsuite拦截某个app的tcp数据包(非http)做安全分析

lock丶念拥
2020-12-20 / 0 评论 / 27 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年01月08日,已超过99天没有更新,若内容或图片失效,请留言反馈。

需求

之前的burpsuite只能拦截http相关的应用,对于tcp方面的流量就不能做到很好的拦截,现在勉强在NoPE的基础上造了一个轮子。NoPE这个插件主要是通过dns,如果是针对某个特定应用,或者说是硬编码的ip的tcp流量拦截,就显得不是很方便,现在提供一个http tunnel proxy 的方法,配合proxifier比较方便。

用到的工具有:

squid 用于建立http proxy(或者别的如mitmproxy也行)
burpsuite+Burp-Non-HTTP-Extension用于拦截tcp或http数据
proxifier,用于建立http tunnel转发tcp
数据流如下:

graph TD
    APP-- tcp-->Proxifier-->APP
    Proxifier-- http tunnel-->Burp-Non-HTTP-Extension-->Proxifier
    Burp-Non-HTTP-Extension--http tunnel-->http-proxy-->Burp-Non-HTTP-Extension
    http-proxy--tcp-->server-->http-proxy       
    style Burp-Non-HTTP-Extension fill:#f9f,stroke:#333,stroke-width:4px

其中由Burp-Non-HTTP-Extension进行拦截
Burp-Non-HTTP-Extension下载地址:
https://github.com/summitt/Burp-Non-HTTP-Extension/releases
在准备好上述的工具之后,我们使用squid建立一个http proxy侦听本地127.0.0.1 假设侦听的端口为3128,或者别的http proxy也行。如果用squid记得设置“http_access allow all”

用Burp-Non-HTTP-Extension设置这样一个监控服务。listen port填写8080,server port填写3128

同时在proxifier上建立一个代理规则把某个程序的流量通过http tunnel转发到8080端口,比如这里监听netcat程序

其中有个坑,就是这个proxifier的dns设置需要设置detect dns settings automatically而不是resolve hostnames through proxy,因为有些proxy可能没有这个功能。

之后就可以愉快的监听了,大概效果如下,还可以拦截修改以及重放,不过要小心超时。

如果是手机app的话,可以使用夜神模拟器运行这个app然后用proxifier代理virtual box。
当然如果是对代理敏感的应用也可以在手机上wifi里面这样设置代理
设置 -》 WIFI,长按公司内部WIFI的名字,选“修改网络”,勾选“显示高级选项”,代理设置那里改成“手动”,就可以填写HTTP代理的主机和端口了。

或者使用安卓的proxydroid或者ios的小火箭让对代理不敏感对app强制走代理也行。电脑上也是同样的道理,对代理敏感的程序设置系统代理,不敏感的用proxifier或者proxychains4,如果app或者程序自带有设置也行。

0

评论 (0)

取消