9.3.1. TCPDump
TCPDump是一款数据包的抓取分析工具,可以将网络中传送的数据包的完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供逻辑语句来过滤包。
9.3.1.1. 命令行常用选项
-
-B <buffer_size>
抓取流量的缓冲区大小,若过小则可能丢包,单位为KB -
-c <count>
抓取n个包后退出 -
-C <file_size>
当前记录的包超过一定大小后,另起一个文件记录,单位为MB -
-i <interface>
指定抓取网卡经过的流量 -
-n
不转换地址 -
-r <file>
读取保存的pcap文件 -
-s <snaplen>
从每个报文中截取snaplen字节的数据,0为所有数据 -
-q
输出简略的协议相关信息,输出行都比较简短。 -
-W <cnt>
写满cnt个文件后就不再写入 -
-w <file>
保存流量至文件- 按时间分包时,可使用strftime的格式命名,例如
%Y_%m_%d_%H_%M_%S.pcap
- 按时间分包时,可使用strftime的格式命名,例如
-
-G <seconds>
按时间分包 -
-v
产生详细的输出,-vv
-vvv
会产生更详细的输出 -
-X
输出报文头和包的内容 -
-Z <user>
在写文件之前,转换用户
9.3.2. Bro
Bro是一个开源的网络流量分析工具,支持多种协议,可实时或者离线分析流量。
9.3.2.1. 命令行
- 实时监控
bro -i <interface> <list of script to load>
- 分析本地流量
bro -r <pcapfile> <scripts...>
- 分割解析流量后的日志
bro-cut
9.3.2.2. 脚本
为了能够扩展和定制Bro的功能,Bro提供了一个事件驱动的脚本语言。
9.3.3. tcpflow
tcpflow也是一个抓包工具,它的特点是以流为单位显示数据内容,在分析HTTP等协议的数据时候,用tcpflow会更便捷。
9.3.3.1. 命令行常用选项
-
-b max_bytes
定义最大抓取流量 -
-e name
指定解析的scanner -
-i interface
指定抓取接口 -
-o outputdir
指定输出文件夹 -
-r file
读取文件 -
-R file
读取文件,但是只读取完整的文件
9.3.4. tshark
WireShark的命令行工具,可以通过命令提取自己想要的数据,可以重定向到文件,也可以结合上层语言来调用命令行,实现对数据的处理。
9.3.4.1. 输入接口
-
-i <interface>
指定捕获接口,默认是第一个非本地循环接口 -
-f <capture filter>
设置抓包过滤表达式,遵循libpcap过滤语法,这个选项在抓包的过程中过滤,如果是分析本地文件则用不到 -
-s <snaplen>
设置快照长度,用来读取完整的数据包,因为网络中传输有65535的限制,值0代表快照长度65535,默认为65535 -
-p
以非混合模式工作,即只关心和本机有关的流量 -
-B <buffer size>
设置缓冲区的大小,只对windows生效,默认是2M -
-y <link type>
设置抓包的数据链路层协议,不设置则默认为-L
找到的第一个协议 -
-D
打印接口的列表并退出 -
-L
列出本机支持的数据链路层协议,供-y参数使用。 -
-r <infile>
设置读取本地文件
9.3.4.2. 捕获停止选项
-
-c <packet count>
捕获n个包之后结束,默认捕获无限个 -
-a <autostop cond>
-
duration:NUM
在num秒之后停止捕获 -
filesize:NUM
在numKB之后停止捕获 -
files:NUM
在捕获num个文件之后停止捕获
-
9.3.4.3. 处理选项
-
-Y <display filter>
使用读取过滤器的语法,在单次分析中可以代替-R
选项 -
-n
禁止所有地址名字解析(默认为允许所有) -
-N
启用某一层的地址名字解析。m
代表MAC层,n
代表网络层,t
代表传输层,C
代表当前异步DNS查找。如果-n
和-N
参数同时存在,-n
将被忽略。如果-n
和-N
参数都不写,则默认打开所有地址名字解析。 -
-d
将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为-d tcp.port==8888,http
。可用tshark -d
列出所有支持的有效选择器。
9.3.4.4. 输出选项
-
-w <outfile>
设置raw数据的输出文件。不设置时为stdout -
-F <output file type>
设置输出的文件格式,默认是.pcapng
,使用tshark -F
可列出所有支持的输出文件类型 -
-V
增加细节输出 -
-O <protocols>
只显示此选项指定的协议的详细信息 -
-P
即使将解码结果写入文件中,也打印包的概要信息 -
-S <separator>
行分割符 -
-x
设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据 -
-T pdml|ps|text|fields|psml
设置解码结果输出的格式,默认为text -
-e
如果-T
选项指定,-e
用来指定输出哪些字段 -
-t a|ad|d|dd|e|r|u|ud
设置解码结果的时间格式 -
-u s|hms
格式化输出秒 -
-l
在输出每个包之后flush标准输出 -
-q
结合-z
选项进行使用,来进行统计分析 -
-X <key>:<value>
扩展项,lua_script、read_format -
-z
统计选项,具体的参考文档
9.3.4.5. 其他选项
-
-h
显示命令行帮助 -
-v
显示tshark的版本信息