CSDN cnblogs linuxwiki tcpdump.org linuxde

1. 网络数据包截获及分析工具

1.1 工具

tcpdumpLinux系统中的一款sniffer工具,它可以捕获所有经过网络接口的数据信息 wireshark:可以在window系统下运行的分析一个网络抓包软件

1.2 使用 wireshark

我们通过使用 wireshark 图形界面操作来熟悉抓包的过程(下载 wireshark),熟悉window上抓包的操作以及分析数据包之后在学习Linux系统上的抓包工具 tcpdump

1.2.1 选择网卡

打开 wireshark 选择你要抓取哪个网卡上的信息,一般看波动最强的哪个就是你上网的网卡,你也可以在 控制面板\网络和 Internet\网络和共享中心 查看你的网卡信息。 抓包 - 图1

1.2.2 使用过滤器

打开之后就是整个数据包的列表界面,打开后会启动抓包,因此可能会有大量的数据包在不停的刷新出来, 因此接下来要学会使用过滤器找到自己想要抓取的数据。 抓包 - 图2


比如我们只想要抓取 arp 数据包,如图所示,可以观察到列表以及被过滤了,在界面可以看到 arp 数据包所携带的信息。 抓包 - 图3


若我们只想抓取来自某个 ip 的数据,我们可以在过滤器中填写对应的表达式过滤数据列表,表达式也布尔运算,可以在在该软件上找到表达式的语法,也可以参考 Wireshark 过滤总结 抓包 - 图4

1.2.3 示例

接下来我们通过 Wireshark 抓取期望的数据包,此时我的主机正在远程控制虚拟机,我想要“偷看”主机发给远程虚拟机的数据,首先设置好相关的过滤器并打开远程控制软件输入一些命令,然后点击开始抓包并完成命令键入。 抓包 - 图5

抓包 - 图6

抓包 - 图7

1.3 使用 tcpdump

tcpdump 可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
我们用尽量简单的话来定义tcpdump,就是:dump the traffice on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东西之一。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

1.3.1 tcpdump 命令

  1. tcpdump [选项] [表达式]

选项如下:

  1. -a 尝试将网络和广播地址转换成名称
  2. -c <NUM> 收到指定的数据包数目后,就停止进行倾倒操作
  3. -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
  4. -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出
  5. -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
  6. -e 在每列倾倒资料上显示连接层级的文件头
  7. -f 用数字显示网际网络地址
  8. -F <FILE> 指定内含表达方式的文件
  9. -i <NIC> 使用指定的网络截面送出数据包
  10. -l 使用标准输出列的缓冲区
  11. -n 不把主机的网络地址转换成名字
  12. -N 不列出域名
  13. -O 不将数据包编码最佳化
  14. -p 不让网络界面进入混杂模式
  15. -q 快速输出,仅列出少数的传输协议信息
  16. -r <FILE> 从指定的文件读取数据包数据
  17. -s <SIZE> 设置每个数据包的大小
  18. -S 用绝对而非相对数值列出TCP关联数
  19. -t 在每列倾倒资料上不显示时间戳记
  20. -tt 在每列倾倒资料上显示未经格式化的时间戳记
  21. -T <TYPE> 强制将表达方式所指定的数据包转译成设置的数据包类型
  22. -v 详细显示指令执行过程
  23. -vv 更详细显示指令执行过程
  24. -x 用十六进制字码列出数据包资料
  25. -w <FILE> 把数据包数据写入指定的文件

1.3.2 可用原语

1.3.2.1 过滤主机

  1. tcpdump host <HOST> # 目的或源地址是 <HOST> 的网络数据
  2. tcpdump dst host <HOST> # 指定目的地址
  3. tcpdump src host <HOST> # 指定源地址
  4. # <HOST> % 192.168.1.1
  5. # 可前置关键字 ip、ip6、arp、rarp

1.3.2.2 过滤端口

  1. tcpdump port <PORT> # 目的或源端口是 <PORT> 的网络数据
  2. tcpdump dst port <PORT> # 指定目的端口
  3. tcpdump src port <PORT> # 指定源端口
  4. # <PORT> % 22