关于抓包工具
广义上说,凡是能够抓取数据包的各类应用软件都属于抓包工具,但是本文不考虑各类 浏览器的内置 开发者工具 中的抓包功能,因为不够专业和强大,尽管开发者工具 使用起来简易方便。
上面提到了数据包,而数据包是个很大范围的概念,涉及 五层网络协议模型的各个部分,从 网卡接口、数据链路层数据帧 到网络层(ip、icmp等数据包)、传输层(tcp、udp数据包等) 再到 应用层( http、DNS等数据包),因此这里把抓包工具简单划分为几个等级:网卡层级、传输层级和应用层级,其中抓包能力是由高到低的,也就是向上兼容的,网卡级可以实现传输层和应用层的抓包,而传输层的抓包工具可以向上兼容对应应用层协议的抓包,如支持tcp的抓包工具可以抓取http协议包。
网卡级抓包工具
wireshark,图形化界面的网卡级抓包工具,也可以使用其命令行工具tshark,只需使用对应的命令参数即可抓取目标数据包。wireshark在各个平台都可以安装使用,可以抓取经过指定网卡的所有协议的数据包。
Scapy,由Python编写,可以对数据包进行监听、解码或伪造,实现包括扫描,跟踪,探测等功能。
Hping,适用多平台的免费抓包工具,允许伪造、修改和发送ICMP,UDP,TCP和IP协议数据包,网络管理员通常将其用于防火墙和网络安全审计和测试。
传输层级抓包工具
tcpdump,是linux系统自带抓包工具,命令行工具,是运维人员常用的抓包工具之一。其抓包结果在存入文件后,可以导入wireshark进行后续分析。
tcpflow,linux下的抓包工具,需要自行下载安装,本人未使用过,不做评论。
注意,以上两种工具仅支持对tcp协议数据包(包括对应应用层的http数据包)的抓取,对于udp是不能抓取的。
Netcat,可以对TCP或UDP数据包进行监听、伪造、建立连接等,是一款强大的网络测试工具,有时候简称其为nc。
应用层抓包工具
下面介绍的几款工具,仅支持http数据包的抓取。
fiddler,是一款支持http协议的调试代理工具,可记录并检查所有电脑和互联网之间的http通讯,设置断点对数据包进行拦截,查看所有流经Fiddler的http数据包。
Charles,一款http抓包工具,对浏览器设置了代理之后,其会转发并记录http协议数据包。
mitmproxy,可实现对HTTP和HTTPS的数据包抓取程序,支持命令行和图像界面形式的抓包,其组成部分包括mitmdump和mitmweb,mitmdump是其命令行接口,可以执行Python脚本,根据需要对监听到的数据包进行处理;mitmweb是以界面形式展示抓取的数据包并提供交互处理功能。
Burp Suite,在安全测试中使用较多,除了支持抓包和数据包重放,还支持登录页面密码爆破、字典生成、数据编码和解码等功能,是渗透测试工程师 必备安全测试工具之一,该工具是由java编写,社区版含有少量jar功能包,专业版包含大量专业的测试功能包,而且开放了丰富的安全测试功能,但是需要付费,网上由很多破解版,由于可能含有后门,需要仔细甄别。
注意,以上应用层抓包工具都是基于代理的,因此需要在系统层级或者至少浏览器等应用级程序中设置代理之后,才能正常抓取数据包,而抓取https数据包时,需要安装证书到浏览器中,添加信任。