logo头像

知其然更要知其所以然

tcpdump工具使用教程第三篇

本文于 385 天之前发表,文中内容可能已经过时。

概述

这是tcpdump工具使用教程第三部分,也是最后一部分。这次我们将了解到更多的tcpdump高级用法,已满足我们日常的工作需要。

首先是大纲

  • 打印版本信息
  • 快速模式
  • 打印详细信息
  • HTTP请求
  • 用户代理
  • 端口范围
  • 指定目标地址
  • 指定源地址
  • 网络
  • TCP数据包
  • Tcpdump到Wireshark

打印版本信息

让我们从最简单的命令之一开始,以便我们可以理解和关联本文中的所有实践。我们可以使用此参数来打印tcpdump,libpcap和OpenSSL版本字符串。

script
1
tcpdump --version

快速模式

可以说,如果网络非常正常,那么在此期间执行任何操作将比平时花费更多时间。开发tcpdump的人想到了这个难题,并为我们提供了使用“ -q”参数来加快此过程的方法。它将打印较少的有关协议和数据包的信息,以节省时间。

script
1
2
tcpdump -i eth0 -c 5
tcpdump -i eth0 -c 5 -q

打印详细信息

详细模式以提供有关操作的额外信息而闻名。在TCPDump中,详细模式也提供此类信息。例如,生存时间,身份证明,总时长。它还可以启用其他数据包完整性检查,例如验证IP和ICMP标头校验和值。

TCPDump为我们提供了许多围绕此模式移动的参数,例如-v,-vv,-vvv,其中每个参数都有其独特的效率。

  • -v参数是传统的详细模式。
  • -vv参数不仅仅是传统的详细模式,还会从NFS(网络文件系统)应答数据包打印其他字段,并对SMB数据包进行完全解码。
  • -vvv参数还有更多东西可以提供,例如宗旨选项等。
script
1
2
3
4
5

tcpdump -i eth0 -c 2
tcpdump -i eth0 -c 2 -v
tcpdump -i eth0 -c 2 -vv
tcpdump -i eth0 -c 2 -vvv

HTTP请求分析

众所周知,HTTP请求是通过超文本传输​​协议(HTTP)从客户端到服务器的信息消息。它有多种方法可以传递此信息。这些方法区分大小写,并且始终在大写中提及。通过tcpdump,我们可以捕获这些请求以分析通过所述协议流量发送的流量。

我们可以通过tcpdump捕获的方法如下:

  • GET-此方法用于使用给定的URL从给定的服务器检索信息。使用GET的请求应该只检索数据,而对它没有其他影响。我们还可以借助tcpdump捕获此请求。

    script
    1
    tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
  • POST-此请求用于将数据发送到服务器。例如使用HTML表单的客户信息,文件上传等。可以使用以下命令分析此协议上的流量:

    script
    1
    tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
  • Request-URL-这是一个统一的资源标识符,用于标识我们需要在其上应用请求的资源。最常见的形式用于标识服务器上的资源。如果客户端希望直接从其起源的服务器中检索数据,则它将创建到主机端口80的连接并发送请求。可以使用以下命令捕获这些请求:

    script
    1
    tcpdump -v -n -l | egrep -i "POST /|GET /|Host:"

用户代理

使用TCPDump,您还可以查看从哪个应用程序生成的流量。我们还可以使用以下命令在数据流量中找到用户代理:

script
1
tcpdump -nn -A -s150 -l | grep "User-Agent:"

端口范围

一些普通的端口过滤器可以帮助我们分析特定端口上的流量。但是在tcpdump中,我们为扫描提供了一定范围的端口,通过它们可以监视TCP / UDP或其他基于端口的网络协议的目标。

script
1
tcpdump -i eth0 portrange 21-80

指定目标地址

要检查流向特定目的地的网络流量中的数据流,请使用以下命令:

script
1
tcpdump -i eth0 dst google.com

指定源地址

要检查来自特定来源的数据流量,我们可以遵循以下命令:

script
1
tcpdump -i eth0 src google.com

网络

为了找到去往或来自特定网络的数据包,我们可以使用以下功能来分析此流量:

script
1
tcpdump net 192.168.0.1 -c5

TCP数据包

TCP数据包的格式由诸如源端口和目标端口字段之类的字段组成。通过这些字段,我们可以标识连接的端点,还可以捕获其各种标志格式的这些TCP数据包。即SYN,RST和ACK。

  • SYN- SYN标志称为同步序列号以启动TCP连接。我们可以借助tcpdump从流量中捕获此特定数据包。
    script
    1
    tcpdump 'tcp[tcpflags] == tcp-syn'

  • RST- RST标志称为复位标志。如果将数据包发送到期望它的特定主机,则此标志从接收者发送到发送者。RST标志用于重新建立TCP端到端连接。我们可以借助tcpdump从数据流量中捕获此标志。
    script
    1
    tcpdump 'tcp[tcpflags] == tcp-rst'

  • ACK- ACK标志被称为确认标志。此标志用于确认我们的数据包已成功接收。我们可以使用tcpdump捕获这些标志,以研究我们的数据流量。
    script
    1
    tcpdump 'tcp[tcpflags] == tcp-ack' -c5

Tcpdump到Wireshark

Wireshark和TCPDump之间的唯一区别是Wireshark是GUI,而tcpdump是命令行工具。但是借助一些资源,我们在tcpdump上使用了一个命令,并在Wireshark中查看了我们的数据流量结果,我们发现这是分析流量的最佳方法。可以使用以下命令完成此操作:

script
1
ssh root@remotesystem 'tcpdump -c20 -nn -w - not port 22' | wireshark -k -i –

运行此命令后,它将立即打开Wireshark,并将询问一些有关扫描的问题。按确定进一步移动。

此后,它将询问您我们要捕获数据包的哪个网络接口。在本例中,它将是eth0,因此我们选择该网络接口。

完成所有手续后,实时数据捕获屏幕将显示捕获的数据包。

总结

至此,关于tcpdump工具教程三篇文章就都已经完成了。tcpdump作为常用的网络流量分析工具,不仅对于安全人员,运维人员也可以通过流量分析,实时发现网络的问题。

相关文章

tcpdump工具使用教程第一篇
tcpdump工具使用教程第二篇