转自:CSDN
作者:风一样的美狼子
1、前言
黑客帝国系列片 大家都看过了,知道网络黑客尼奥发现看似正常的现实世界实际上是由一个名为 “矩阵” 的计算机人工智能系统控制的,然后尼奥见到了黑客组织的首领墨菲斯,三人走上了抗争矩阵征途的故事 。
那么黑客都是些什么人了?
黑客如今在互联网上已经不再是鲜为人知的人物,他们已经发展成网络上的一个独特的群体。他们有着与常人不同的理想和追求,有着自己独特的行为模式,网络上出现了很多由一些志同道合的人组织起来的黑客组织。
在[信息安全]里,“黑客” 指研究智取计算机安全系统的人员。利用公共通讯网路,如互联网和电话系统,在未经许可的情况下,载入对方系统的被称为黑帽黑客(英文:black hat,另称 cracker);调试和分析计算机安全系统的白帽黑客(英语:white hat)。“黑客” 一词最早用来称呼研究盗用电话系统的人士。
他们有个共同点都是利用公共通讯网路,进行着不同的活动。
而今天我们的主角也是针对网络进行[数据采集]与分析的工具,它就是TCPDump。
老样子,我们本文主要介绍了 LinuxTCPDump 命令使用详解,文中会通过非常详细的示例代码介绍,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随我来一起学习!
2、[TCPDump] 介绍
Linux 作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。
Tcpdump 是一个用于截取网络分组,并输出分组内容的工具。
tcpdump 凭借强大的功能和灵活的截取策略,使其成为类 UNIX 系统下用于网络分析和问题排查的首选工具。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮助你去掉无用的信息。
基本上 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 ][输出数据栏位]
参数说明:
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 协议数据包
tcpdump host baidu.com。 此时、命令行下可以看到客户端和 baidu 服务之间的 TCP 协议 IP 包、学习网络协议的时候、配合使用很方便。
2、监听来自指定域名的 TCP 协议包数据包:
tcpdump src host baidu.com。 此时、命令行下可以看到客户端和 baidu 服务之间的 TCP 协议 IP 包、学习网络协议的时候、配合使用很方便。
步骤一、开始监听指定域名的 ip 包流量:
tcpdump dst host baidu.com。 此时、命令行下可以看到客户端和 baidu 服务之间的 TCP 协议 IP 包、学习网络协议的时候、配合使用很方便。
tcpdump tcp port 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 6、结语
tcpdump 针对网络进行数据采集与分析, 同时保存到指定文件,用 wireshark 来打开查看。可以快速查看符合网络接口符合某一条件的抓包,方便我们确定网络问题。
最近很多小伙伴找我要一些程序员必备资料,于是我翻出了压箱底的宝藏,免费分享给大家!
扫描海报二维码免费获取。