代理与抓包

macOS抓包视频演示:https://youtu.be/IY0fLFXODDM

0x00 前言

这篇文章讲一下抓包的方法,同时又会涉及到代理,其实这两个是相辅相成的,因为抓包一般就意味着需要代理目标的流量。我尽量不去讲什么原理性的东西,主要是从实际使用的软件和操作出发,让大家可以快速上手抓包。

0x01 名词解释

代理(Proxy):作为一种网络服务,允许一个终端通过此服务与另一个终端进行非直接的连接,即A通过B访问C,A与C之间的数据全部通过代理(B)进行转发。代理服务一般分为HTTP、HTTPS、SOCKS4/5协议,即从不同的协议层面进行代理,一般网页请求都是在HTTP(S)协议上。

抓包:抓包就是在代理在转发流量的前提上对流量进行记录和解析,一般抓包工具还会提供修改请求的能力,可以对发送的请求和返回的数据进行修改,即中间人。

0x02 工具

  • BurpSuite Pro
    • 家喻户晓的抓包工具,安全从业者必备,可以对http(s)、websocket进行抓包和修改,具有丰富的插件。
    • 软件安装:点击查看
  • Mitmproxy
    • python编写的代理工具,也可以抓包调试,但是操作上不及burp,插件编写和调试比burp简单,可以通过插件对流量进行自动化处理,支持http(s)、socks协议代理。
    • mitmproxy入门
  • Fiddler
    • windows上用的比较多的代理工具,经典版很经典,我用的不太多,基本的抓包和调试功能也都有,还可以定义自动化动作等。
  • Proxifier
    • 代理分流工具,可以根据应用进行代理,即指定某个应用的流量使用指定的代理服务。
    • 软件激活:点击查看

0x03 常见抓包方法

  • 浏览器抓包
    • 浏览器基本都自带开发者工具,可以在页面对页面的发起的请求进行简单的查看甚至是重放,当然也可以结合插件对页面进行代理或者对请求进行修改。
  • 抓包工具抓包
    • 网页端
      • 浏览器使用抓包工具启动的代理服务进行代理,然后在抓包工具端查看请求,对请求进行调试。
    • 应用端
      • 使用proxifier工具对应用进行代理,让其使用抓包工具的代理服务,然后在抓包工具端查看请求,对请求进行调试。

0x04 常见问题

  • 证书问题
    • 出于安全考虑,现在大多都是基于HTTPS进行请求,所以需要安装所使用代理服务的证书到本机,基本各个抓包工具都有相关的教程,比较简单。
  • 请求加密或签名
    • 有些应用的请求会在传输时进行加密或签名,防止请求被拦截或篡改,这种情况下,一般在本地都会有相应的加解密或加签验签方法,需要逆向JS或者应用程序去找,在了解了相应的逻辑之后,可以采用编写插件的形式,在代理服务端对请求进行自动化处理,比如编写mitmproxy插件,在请求发起前解密,方便查看明文进行调试,修改请求之后发送去服务端之前进行加密,方便后端接收,返回结果返回时再以相反的步骤解密和加密。