1、前言
黑客帝国系列片 大家都看过了,知道网络黑客尼奥发现看似正常的现实世界实际上是由一个名为 “矩阵” 的计算机人工智能系统控制的,然后尼奥见到了黑客组织的首领墨菲斯,三人走上了抗争矩阵征途的故事 。 那么黑客都是些什么人了? 黑客如今在互联网上已经不再是鲜为人知的人物,他们已经发展成网络上的一个独特的群体。他们有着与常人不同的理想和追求,有着自己独特的行为模式,网络上出现了很多由一些志同道合的人组织起来的黑客组织。 在[信息安全]里,“黑客” 指研究智取计算机安全系统的人员。利用公共通讯网路,如互联网和电话系统,在未经许可的情况下,载入对方系统的被称为黑帽黑客(英文:black hat,另称 cracker);调试和分析计算机安全系统的白帽黑客(英语:white hat)。“黑客” 一词最早用来称呼研究盗用电话系统的人士。 他们有个共同点都是利用公共通讯网路,进行着不同的活动。 而今天我们的主角也是针对网络进行[数据采集]与分析的工具,它就是TCPDump。 老样子,我们本文主要介绍了 LinuxTCPDump 命令使用详解,文中会通过非常详细的示例代码介绍,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随我来一起学习!
2、[TCPDump] 介绍
Linux 作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。 Tcpdump 是一个用于截取网络分组,并输出分组内容的工具。 tcpdump 凭借强大的功能和灵活的截取策略,使其成为类 UNIX 系统下用于网络分析和问题排查的首选工具。
1.tcpdump 可以将网络中传送的数据包的 “头” 完全截获下来提供分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮助你去掉无用的信息。
2. 同时 tcpdump 提供了源代码,公开了接口,因此具备很强的可扩展性。
基本上 tcpdump 的总的输出格式为:系统时间 来源主机. 端口 > 目标主机. 端口 数据包参数 2.1、问题来了:所有用户都可以采用该命令吗? 虽然 tcpdump 提供源代码,公开了接口,具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。 但 tcpdump普通用户不能正常执行,需要具备 root 权限的用户才可以直接执行它来获取网络上的信息。 2.2、抓包原理 linux 抓包是通过注册一种虚拟的底层网络协议来完成对网络报文(准确的是网络设备)消息的处理权。 当网卡接收到一个网络报文之后,它会遍历系统中所有已经注册的网络协议,如以太网协议、x25 协议处理模块来尝试进行报文的解析处理。 当抓包模块把自己伪装成一个网络协议的时候,系统在收到报文的时候就会给这个伪协议一次机会,让它对网卡收到的保温进行一次处理,此时该模块就会趁机对报文进行窥探,也就是啊这个报文完完整整的复制一份,假装是自己接收的报文,汇报给抓包模块。
2.3、特点
2.3.1.参数化支持
1. 参数 tcpdump 支持相当多的不同参数。 如使用 - i 参数指定 tcpdump 监听的网络接口, 使用 - c 参数指定要监听的数据包数量, 使用 - w 参数指定将监听到的数据包写入文件中保存等。 2. 安全 一般情况下网络硬件和 TCP/IP 堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的 TCP/IP 堆栈才行。 在 FreeBSD 下,这就需要内核支持伪设备 bpfilter。因此,在内核中取消 bpfilter 支持,就能屏蔽 tcpdump 之类的网络分析工具。 并且当网卡被设置为混杂模式时,系统会在控制台和日志文件中留下记录,提醒管理员留意这台系统是否被用作攻击同网络的其他计算机的跳板。 3. 解码 tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带 - w 参数的 tcpdump 截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。
2.2.2.TCP 功能
tcpDump 将搜索系统中第一个网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要, 数据太多不利于分析。所以,我们应当先想好需要哪些数据,TcpDump 提供了很多参数供我们选择数据过滤。
3.服务器安装 Tcpdump
3.1、安装 一般情况下 Linux 系统会自带 tcpdump 工具,如果系统没有安装,直接用命令安装就行了。 在 linux 服务器上我们使用 yum install -y tcpdump 命令来安装 tcpdump 工具。 3.2、检查安装是否正常。 查看安装版本命令:tcpdump --help
4.tcpdump 命令
4.1.常用功能选项 tcpdump [-adeflnNOpqStvx][-c 数据包数量 >][-dd][-ddd][-F < 表达文件 >][-i < 网络界面 >][-r < 数据包文件 >][-s < 数据包大小 >][-tt][-T < 数据包类型 >][-vv][-w < 数据包文件 >][输出数据栏位] 参数说明:
-a 尝试将网络和广播地址转换成名称。
-c <数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成 C 语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F <表达文件> 指定内含表达方式的文件。
-i <网络界面> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r <数据包文件> 从指定的文件读取数据包数据。
-s <数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出 TCP 关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T <数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w <数据包文件> 把数据包数据写入指定的文件。
4.2、输出内容 基本上 tcpdump 总的的输出格式为:系统时间 来源主机. 端口 > 目标主机. 端口 数据包参数
5、实操
5.1、常见用法 1. 查看网卡命令:ifconfig 知道了网卡,就可以使用 tcpdump 工具针对服务器上的网卡进行监控、过滤网络数据了。
2. 查看本地网卡状态
Iface:存在的网卡。 MTU:最大传输单元。 RX-OK RX-ERR RX-DRP RX-OVR:正确接收数据报的数量以及发生错误、流式、碰撞的总数。TX-OK TX-ERR TX-DRP TX-OVR:正确发送数据报的数量以及发生错误、流式、碰撞的总数。 3. 指定网卡 普通情况下,直接启动 tcpdump 将监视第一个网络端口所有流过的数据包。 如果不指定网卡,默认 tcpdump 只会监视第一个网络接口。 tcpdump -i ens33(网卡名)
4. 监视所有进入或离开主机 xps 的数据包。xps 为主机名。
tcpdump host xps 5. 监视指定 ip,截获指定主机收到和发出的所有数据包。
tcpdump host 192.168.1.5 6.截获主机 192.168.1.5 和 192.168.1.10 或 192.168.1.113 的通信包
tcpdump host 192.168.1.5 and (192.168.1.10 or 192.168.1.13) 7.打印 xps 与任何其他主机之间通信的 IP 数据包,但不包括与 xps1 之间的通信包
tcpdump ip host xps and not xps1 8.截获主机 192.168.1.5 除了和 192.168.1.13 之外所有的主机通信的 ip 包
tcpdump ip host 192.168.1.5 and ! 192.168.1.13 9.截获主机 hostname 发送的所有数据
tcpdump -i ens33 src host hostname 10.截获送到主机 hostname 的所有数据
tcpdump -i ens33 dst host hostname 5.2、监听指定域名 TCP 协议数据包
步骤一、开始监听指定域名的 ip 包流量:
tcpdump host baidu.com。
步骤二、打开浏览器、访问 baidu.com
此时、命令行下可以看到客户端和 baidu 服务之间的 TCP 协议 IP 包、学习网络协议的时候、配合使用很方便。
2、监听来自指定域名的 TCP 协议包数据包:
步骤一、开始监听指定域名的 ip 包流量:
tcpdump src host baidu.com。
步骤二、打开浏览器、访问 baidu.com
此时、命令行下可以看到客户端和 baidu 服务之间的 TCP 协议 IP 包、学习网络协议的时候、配合使用很方便。
3、监听发送到指定域名的 TCP 协议包数据包:
步骤一、开始监听指定域名的 ip 包流量:
tcpdump dst host baidu.com。
步骤二、打开浏览器、访问 baidu.com
此时、命令行下可以看到客户端和 baidu 服务之间的 TCP 协议 IP 包、学习网络协议的时候、配合使用很方便。
4、监听指定端口的 tcp 包: 步骤一、开始监听:
tcpdump tcp port 80。
步骤二、打开另外一个终端、使用 nc 192.168.10.188 80 命令访问 80 端口。
此时、tcpdump 监听终端下可以看到请求和返回的 ip 包。同理、如果要监听 udp 包可以用:tcpdump udp port 9999 5.3、tcpdump 与 Wireshark 我们可以把二者进行结合,在 Linux 中抓包,在 windows 中分析包。
tcpdump tcp -i ens33 -t -s 0 -c 5 and dst port !22 and src net 192.168.1.10/24 -w ./targetfile.cap
1.tcp: ip icmp arp rarp 和 tcp、udp、icmp 这些选项等都要放到第一个参数的位置,用来过滤数据报的类型;
2.-i eth1 : 只抓取经过 ens33 的数据包
3.-t: 不显示时间戳
4.-s 0 : 抓取数据包时默认抓取长度为 68 字节,加上 - S 0 后可以抓取完整的数据包
5.-c 5: 只抓取 5 个数据包
6.dst port ! 22 : 不抓取目标端口为 22 的数据包
7.src net 192.168.1.10/24: 数据包的源网络地址是 192.168.1.10/24
8.-w ./targetfile.cap: 保存为 cap 文件,方便用 ethereal(wireshark) 分析。
6、结语
tcpdump 针对网络进行数据采集与分析, 同时保存到指定文件,用 wireshark 来打开查看。可以快速查看符合网络接口符合某一条件的抓包,方便我们确定网络问题。
编辑:黄飞
评论
查看更多