1. 网络数据包截获及分析工具
1.1 工具
tcpdump:
Linux
系统中的一款sniffer工具,它可以捕获所有经过网络接口的数据信息 wireshark:可以在window
系统下运行的分析一个网络抓包软件
1.2 使用 wireshark
我们通过使用 wireshark 图形界面操作来熟悉抓包的过程(下载 wireshark),熟悉window
上抓包的操作以及分析数据包之后在学习Linux
系统上的抓包工具 tcpdump。
1.2.1 选择网卡
打开 wireshark 选择你要抓取哪个网卡上的信息,一般看波动最强的哪个就是你上网的网卡,你也可以在 控制面板\网络和 Internet\网络和共享中心 查看你的网卡信息。
1.2.2 使用过滤器
打开之后就是整个数据包的列表界面,打开后会启动抓包,因此可能会有大量的数据包在不停的刷新出来, 因此接下来要学会使用过滤器找到自己想要抓取的数据。
比如我们只想要抓取 arp 数据包,如图所示,可以观察到列表以及被过滤了,在界面可以看到 arp 数据包所携带的信息。
若我们只想抓取来自某个 ip 的数据,我们可以在过滤器中填写对应的表达式过滤数据列表,表达式也布尔运算,可以在在该软件上找到表达式的语法,也可以参考 Wireshark 过滤总结
1.2.3 示例
接下来我们通过 Wireshark 抓取期望的数据包,此时我的主机正在远程控制虚拟机,我想要“偷看”主机发给远程虚拟机的数据,首先设置好相关的过滤器并打开远程控制软件输入一些命令,然后点击开始抓包并完成命令键入。
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 命令
tcpdump [选项] [表达式]
选项如下:
-a 尝试将网络和广播地址转换成名称
-c <NUM> 收到指定的数据包数目后,就停止进行倾倒操作
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
-e 在每列倾倒资料上显示连接层级的文件头
-f 用数字显示网际网络地址
-F <FILE> 指定内含表达方式的文件
-i <NIC> 使用指定的网络截面送出数据包
-l 使用标准输出列的缓冲区
-n 不把主机的网络地址转换成名字
-N 不列出域名
-O 不将数据包编码最佳化
-p 不让网络界面进入混杂模式
-q 快速输出,仅列出少数的传输协议信息
-r <FILE> 从指定的文件读取数据包数据
-s <SIZE> 设置每个数据包的大小
-S 用绝对而非相对数值列出TCP关联数
-t 在每列倾倒资料上不显示时间戳记
-tt 在每列倾倒资料上显示未经格式化的时间戳记
-T <TYPE> 强制将表达方式所指定的数据包转译成设置的数据包类型
-v 详细显示指令执行过程
-vv 更详细显示指令执行过程
-x 用十六进制字码列出数据包资料
-w <FILE> 把数据包数据写入指定的文件
1.3.2 可用原语
1.3.2.1 过滤主机
tcpdump host <HOST> # 目的或源地址是 <HOST> 的网络数据
tcpdump dst host <HOST> # 指定目的地址
tcpdump src host <HOST> # 指定源地址
# <HOST> % 192.168.1.1
# 可前置关键字 ip、ip6、arp、rarp
1.3.2.2 过滤端口
tcpdump port <PORT> # 目的或源端口是 <PORT> 的网络数据
tcpdump dst port <PORT> # 指定目的端口
tcpdump src port <PORT> # 指定源端口
# <PORT> % 22