不同平台/跨平台的一些抓包框架和工具

997 阅读4分钟

框架

WinDivert

WinDivert windows 平台的网络抓包库。

WinDivert 通过用户层面实现 获取/修改/丢弃 从windows network stack 发送/接收 到的网络包。

其原理如下:

Image.png

WinDivert.sys 驱动安装在Windows network stack 下,其具体步骤为:

  • 一个新网络包进入到network stack 之后会被WinDivert.sys 截获;
  • 如果截获的包被 PROGRAM-defined 过滤器匹配成功,该包将会被重定向,PROGRAM 就会调用 WinDivertRecv() 方法来读取包;如果匹配失败,截获的包将不会被重定向;
  • PROGRAM 将对包进行 drops,modify, 或者 re-inject 操作。

PyDivert

PyDivert 基于python 的WinDivert。

libpcap

libpcap 是用于linux网络抓包的库,tcpdump 基于该库实现,该库被普遍作为类unix 平台下抓包的标准库而存在。

BPF (BASD Package Filter)

libpcap 使用BPF算法来过滤从网卡接收到的链路层数据包。BPF 算法的核心在于BPF network monitor,这个驱动会拷贝一份从网卡接收到的链路层数据包到BPF 过滤器中。BPF过滤器将决定对这些数据包的操作。

原理

libpcap 抓包原理是在网络链接层添加一个 bypass 步骤,其具体步骤如下:

  • 当一个数据包到达网卡时, libpcap首先使用socket,用来接收从链路层驱动"送来"的拷贝数据包,接着将该数据包通过Tap 函数发送到BPF 过滤器;
  • BPF 过滤器通过拥堵定义的过滤规则,对接收到的数据包逐个进行匹配;
  • 如果匹配成功,该数据包会在kernel 缓存中存储,并且发送到user 缓存中;
  • 如果匹配失败,该数据包会被直接丢弃;
  • 如果没有设置过滤规则,所有的包都将被在kernel 缓存中存储,并且发送到user 缓存中。

Image [2].png

WinPcap

WinPcap 是Windows 版本的libpcap,但是已经很久没有更新。

Npcap

Npcap 是windows 版本的libpcap

Net::Pcap

Net::Pcap 是基于Perl 的libpcap 库。

python-libpcap

python-libpcap 是基于python 的libpcap 库。

jpcap

jpcap 是基于java 的libpcap 库。

工具

Thor

Thor 是一个付费用于IOS 系统的HTTP抓包项目。

SWHttpTrafficRecorder 

SWHttpTrafficRecorder 是一个开源用于IOS系统HTTP抓包的项目 (停止维护)。

NetBare

NetBare 是一款网络包拦截和注入框架,可以实现抓包、屏蔽包、改包等各种强大功能。NetBare核心是基于VPN技术,将网络包转发到本地代理服务器,再通过虚拟网关(VirtualGateway)进行拦截分发。在设计上,虚拟网关层是完全对外开放的,开发者可以自由定义虚拟网关,也可以使用NetBare内部已实现的虚拟网关进行网络包的处理。

AndroidHttpCapture

AndroidHttpCapture 开源,可以看作是Android 版本的Fiddler

  • 设置系统代理之后,该软件同样可以通过特定端口监听所有应用的请求包。

wireshark

开源,一款普遍被用于windows 的抓包软件,该工具也使用 libpcap 作为基础库。

tcpdump

开源,linux 自带抓包工具,android设备在root 权限下可以使用。

同时,netstat 也可以查看特定进程的网络情况。

netstat -tlpen

windump

tcpdump 的windows 版本。

httpry

httpry 是一个开源用于HTTP协议抓包的库,该库基于Perl 和 C语言。

mitmproxy 

mitmproxy mitmproxy 是一组工具,可为 HTTP/1、HTTP/2 和 WebSockets 提供交互式的、支持 SSL/TLS 的拦截代理。

详细使用教程在User Interface

mitmweb

一个基于 web 的 mitmproxy 界面。

mitmdump

一个命令行模式的mitmproxy,相当于用于HTTP的tcpdump。

Sniffer

Sniffer 用于查看进程和连接的流量情况的命令行工具。界面简洁美观,支持进程、Socket 等不同视角查看流量数据。

HTTP Toolkit

Http Toolkit 是一款开源,可以用于简单获取android,windows平台http, https协议的工具。

lightProxy

lightProxy 一款基于whistle 的开源,可以获取windows,mac, android 以及ios 端http 以及 https 包的工具。

burp

Pktmon

pktmon 是一个windows系统提供的网卡级别抓包命令行工具,很强大。

tshark

tshark是wireshark自带的命令行工具,可以通过tshark来进行抓包。

参考文章

pcap

8 Best Packet Capture Tools for 2022

Linux tcpdump

windump

Wireshark, Firebug and or Fiddler?

WinDivert 2.2

TCPDump Capture HTTP GET/POST requests

Develop a Packet Sniffer with Libpcap

libpcap:!An!Architecture!and! Op2miza2on!Methodology!for! Packet!Capture!

Programming with libpcap - Sniffing the network from our own application