美文网首页
网络抓包工具及其原理

网络抓包工具及其原理

作者: 东方胖 | 来源:发表于2021-11-23 13:13 被阅读0次

    为什么要抓包

    • 查看网络接口的发包和回包,分析app的行为
    • 定位网络问题
    • 了解网络协议的细节
    • 通过篡改数据包构造某些场景的测试用例
    • 获取web网站的cookie session状态信息
    • 估计网络接口的性能

    常见的抓包工具:

    常见的网络抓包工具大体上按照抓包节点可以分成两类:
    一种是通过代理中间服务截取协议包,例如Whistle,Charles,Fiddler,miniproxy一种是在网卡链路层截取数据包,例如warshark, tcpdump
    还有像,Chrome浏览器的调试工具,这种属于工具本身内置的能力。

    根据其实现方式,它们的能力界限各有特点。下面是一个大致的比较:

    工具 适用平台 截包原理 配置和安装 主要功能和特点 优点 缺点
    Fiddler Windows/Mac/Linux http代理 easy 支持基本的包过滤,内容查看,断点,重放,改包,弱网模拟以及自定义扩展等 功能齐全 经典版只能运行在Windows平台上,最近也有跨平台版本,但是不免费;扩展依赖老套的.Net框架,需要会写C#
    Charles Mac/windows http代理 依赖jdk 支持断点调试,https包抓包,重放,改包,模拟3G慢速网络,模拟小型压力测试 功能比较全 不免费
    Whistle 运行在浏览器上,跨平台 http代理 依赖nodejs 对于特定的http协议,有丰富的功能 只能抓http协议
    Chrome/FireFox的网络分析工具 运行在浏览器上 无须安装,浏览器自带 可以满足基本的请求协议内容审查,重放的需求 使用方便直接 缺少一些抓包工具实现的一些高级高能,如rewrite,断点,弱网模拟,串改包内容的功能
    tcpdump Linux/Windows/Mac 截取网卡包 Linux系统一般自带,不需要安装,可以直接使用 Unix like系统一般自带这个工具,命令行;在windows上安装依赖wincap Unix类的系统基本不需要安装。 使用时方便直接,尤其是在Unix-like的机器上,熟悉其命令可以开箱即用 命令行工具,数据都是白的,通常需要自己写脚本分析,有些用户喜欢在服务端抓取后交给warshark分析 对于加密协议包分析复杂,需要自行解密,包分析困难,要借住warshark
    Warshark WIndows和Mac主流操作系统 截取网卡包 easy,依赖libcap warshark几乎可以抓取经由网卡的所有网络协议的数据包 需要学习 可以抓取几乎所有网络协议的数据 一般服务器没有UI,远程抓包需要办一些手续;对加密数据,如https需要用户自己想办法解包

    总结:
    通过以上的比较,大体上,这几个主流的抓包工具基本上可以满足我们日常的抓包需求

    1. 抓取http/https包, 抓取app手机应用的包,或有比较高级的需求,比如包篡改,app行为分析,首选Fiddler和whistle,或者用破解版的Charles(不提倡)。通常没有扩展和插件开发的需要,首选whistle,跨平台,能力几乎近似,但是如果你要考虑开发插件实现一些自己的定制化需求,就得具体看你熟悉哪种语言,熟悉C#当然使用Fiddler也是可以的,熟悉python用于爬虫,渗透场景可以使用mitmproxy ,Whistle的扩展需要对JavaScript和nodejs有一定的掌握。

    2. Web上的http/https请求,仅仅是希望看下数据请求参数和返回,获取uri,参数这些基本的诉求,可使用浏览器自带的http分析工具,没必要安装抓包工具

    3. 抓取其它协议,如tcp,直播协议HLS,RTMP这些低层次的网络协议包,首选warshark;简单的网络分析和问题定位在可以直接敲tcpdump命令,系统复杂的网络分析任务可使用warshark,warshark支持远程抓包,对于tcpdump的优势是它有UI可以比较友好地分析数据包

    抓包工具能力图:


    抓包能力概图
    1. rewrite

    2. replay

    3. breakpoint
      断点使得请求在发送之前暂停下来,你可以做一些事情,例如修改参数。断点支持再before request断点,这时可以改变请求参数,也可以在after response断点,这时可以改变回包参数;
      频繁的修改,可以用rewrite功能进行替换。

    4. throtting
      抓包工具一般也可用于调整Internet连接的带宽和延迟。这个功能可以用来模拟调制解调器的各种条件。
      比方说,带宽可以限制到每秒任意字节,利用这点可以模拟任何连接速度,延迟也可以设置为任意的毫秒数。从而大致上可以模拟一个弱网环境。

    5. proxy
      代理是抓包工具最基本的功能,通过代理,我们可以做一些基本的事情,查看网络协议的发送,接收细节
      在发送参数,和返回数据上作修改,进行开发调试

    6.反向代理
    反向代理在本地端口上创建一个 Web 服务器,该服务器透明地将请求代理到远程 Web 服务器。反向代理上的所有请求和响应都可能记录在 Charles 中。

    如果您的客户端应用程序不支持使用 HTTP 代理,或者您想避免将其配置为使用代理,则反向代理非常有用。创建到原始目标 Web 服务器的反向代理,然后将客户端应用程序连接到本地端口;反向代理对客户端应用程序是透明的,使您能够查看 Charles 中以前可能无法查看的流量。

    7 端口转发。
    可以使用代理工具配置tcp/udp协议的端口转发 内网渗透中的端口转发

    抓包原理

    网络数据收发是一个数据流,我们要查看数据包的细节,一般的方法是,在客户端和服务器之间进行截获。
    一般有两种方式:
    一种是设置代理抓取http包,比如Charles、mitmproxy这些软件。
    另一种是直接抓取经过网卡的所有协议包,其中最出名就是大名鼎鼎的wireshark以及linux自带的抓包软件tcpdump。

    • 在本地网卡出包前上抓,比如tcpdump从网卡的链路层抓取数据;
    • 伪造中间人代理服务器截获,服务器完成报文解析工作,并转发数据;
      Fiddler Charles和Whistle基本上都是这样实现的。
    image.png

    参考文档:

    相关文章

      网友评论

          本文标题:网络抓包工具及其原理

          本文链接:https://www.haomeiwen.com/subject/cfqetrtx.html