实用的 Tcpdump 示例?

实用的 Tcpdump 示例?

我想收集 tcpdump 示例,尽可能多!

例如:如何过滤 eth0 上的 FTP 密码;或者如何过滤 HTTP 404 错误等。

答案1

它不进行任何过滤,但是此示例创建了一个方便的连续数据包嗅探器:

tcpdump -n -C 128 -W 100 -z /home/user/compress_logs.pl -i br0 -w /home/user/packetlogs/packetlog.pcap &
  • -n不要对 IP 进行反向查找,不要将端口号转换为文本描述,不要将 MAC 地址转换为名称等。
  • -C 128每 128,000,000 字节轮换一次捕获文件
  • -W 100将要轮换的捕获文件数量(参见-C)限制为 100
  • -z /home/user/compress_logs.plcompress_logs.pl在每个旋转的捕获文件上运行脚本
  • -i br0接口捕获br0
  • -w /home/user/packetlogs/packetlog.pcap使用文件名/home/user/packetlogs/packetlog.pcap
  • &这由 bash 解析;表示该命令应该在后台运行(异步)

将其放入 /etc/rc.local 以在启动时运行。它会捕获接口上的所有数据包br0,这些接口可能是两个作为分接头的接口,也可能是两个连接到被动分接头的接口,或者一个连接到镜像交换机端口的接口(我在实践中用过这三种接口)

它写入约 128MB 的文件,并会自动轮换最多 100 个文件。当它捕获 128MB 的数据时,它会关闭该文件,打开一个新文件,并使用旧文件名作为参数来分叉指定的命令 - 在本例中是一个小型 Perl 脚本,用于压缩先前捕获的文件,以便更快地从 IDS 服务器传输。

当我需要长时间(比如一两天)监控某个连接并需要返回并查找在特定时间发生的事件时,我会使用这个。在 Wireshark 中处理小文件比处理一个巨大的 pcap 文件要容易得多。

答案2

仅捕获 HTTP POST 数据:

tcpdump tcp[2:2] = 80 and \(tcp[20:4] = 1347375956 
or tcp[24:4] = 1347375956 
or tcp[28:4] = 1347375956 
or tcp[32:4] = 1347375956 
or tcp[36:4] = 1347375956 
or tcp[40:4] = 1347375956 
or tcp[44:4] = 1347375956 
or tcp[48:4] = 1347375956 
or tcp[52:4] = 1347375956 
or tcp[56:4] = 1347375956 
or tcp[60:4] = 1347375956\)

有点笨重但肯定有用。tcp[2:2]从 TCP 标头的位置 2 开始捕获 2 个字节(即端口,端口 80 用于 HTTP 流量)。

然后,我们要将 TCP 数据的前 4 个字节与“POST”进行比较。TCP 标头至少为 20(十进制)字节,但由于 TCP 选项的长度可变,从 0 到 40 字节(填充到 32 位边界并从 开始),我们必须测试从 20 到 60(十进制)的每 4 个字节。最后,1347375956是 ASCII 文本“POST”的十进制大端二进制表示。对于其他 HTTP 类型,请使用以下值:

  • GET 1195725856(包括“GET”后的空格,因为我们正在与 4 个字节进行比较,所以需要空格)
  • 邮政1347375956
  • PUT 1347769376(包括空格)
  • 删除1145392197(实际上只是“DELE”)

对于其他类型,请将 4 个 ASCII 字符转换为十六进制(必须精确使用 4 个字符),然后将十六进制字节视为一个数字并将其转换为十进制。例如,POST 为50 4f 53 54504f5354转换为十进制为1347375956

答案3

将所有内容捕获到一个文件中(以便您稍后可以使用 Wireshark 或其他工具进行分析):

sudo tcpdump -i en0 -s0 -w ~/capture.pcap
  • -i en0接口捕获en0
  • -s0使用整个数据包(不截断--snarf 0)
  • -w ~/capture.pcap写入数据包捕获文件~/capture.pcap

答案4

如果您想监控 OpenWRT 路由器上的客户端 DNS 请求:

tcpdump -n -i br-lan dst port 53
  • -n不要对 IP 进行反向查找,不要将端口号转换为文本描述,不要将 MAC 地址转换为名称等。
  • -i br-lan接口捕获br-lan
  • dst port 53过滤目标端口 53,即 DNS 服务的端口

相关内容