Tcpdump网络/命令行抓包工具详解


热门Tag
CD 实时监控 yum 安全中心 无法安装 外网访问 getall 软件防火墙 客户端 主机测评 系统漏洞修复 全局菜单 TypeLink.class.php 环境变量 服务器安全 远程桌面连接命令 Nvidia 服务器安全加固 Vue 图片 链接 K8s 计划任务 mv命令 load Log4Shell 无密码登录 网站无法访问 新建文件夹 分区

概述

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

tcpdump基于底层libpcap库开发,运行需要root权限。

一、tcpdump安装

1.环境 虚拟机:vmware 15.5.2 os: ubuntu 12.04

2.安装tcpdump

  1. sudoapt-getinstalltcpdump

3. 版本查看

  1. tcpdump--h

tcpdump version 4.0。

libpcap version 1.1.1 表示libpcap的版本。

二、tcpdump参数常用参数

选项说明:

三、命令选项使用举例

1. 截获主机收到和发出的所有数据包。

命令:

  1. tcpdump

说明:

tcpdump截取包默认显示数据包的头部。

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

基础格式:时间 数据包类型 源IP 端口/协议 > 目标IP 端口/协议 协议详细信息

按下Ctrl+C会终止tcpdump命令。且会在结尾处生成统计信息。

终止tcpdump

2. 指定抓包数量 -c

指定抓取2个数据包。

命令:

  1. tcpdump-c2

说明:

最后会自动生成统计信息。

【注意,已经切换到管理员了,虚拟机中要产生数据包,可以另外开一个窗口ping baidu.com后面不再提示】

ping baidu.com

3. 将抓包信息写入文件 -w

使用-w选项指定记录文件。

命令:

  1. tcpdump-c10-wtcpdump_test.log

说明:

保存的文件不是文本格式,不能直接查看。tcpdump保存的文件的格式是几乎所有主流的抓包工具软件都可以读取。所以可以使用更易读的图形界面工具来查看记录文件。

4. 读取记录文件 -r

使用-r选项读取文件。

命令:

  1. tcpdump-rtcpdump_test.log

![读取记录文件

5. 打印出所有可工作的接口 -D

命令:

  1. tcpdump-D

其中网卡为eth0。

6. 指定监控的网卡 -i

命令:

  1. tcpdump-ieth0

如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0。

7. 显示更详细的数据包信息 -v -vv

选项-v,-vv可以显示更详细的抓包信息。

tcpdump -v

tcpdump -vv

8. 不使用域名反解 -n

使用-n后,tcpdump会直接显示IP地址,不会显示域名(与netstat命令相似)。

9. 增加抓包时间戳 -tttt选项

tcpdump的所有输出打印行中都会默认包含时间戳信息;时间戳信息的显示格式如下

  1. hh:mm:ss.frac(nt:小时:分钟:秒.)

此时间戳的精度与内核时间精度一致, 反映的是内核第一次看到对应数据包的时间;

而数据包从物理线路传递到内核的时间, 以及内核花费在此包上的中断处理时间都没有算进来;

使用-tttt选项,抓包结果中将包含抓包日期:

命令:

  1. tcpdump-tttt

增加抓包时间戳

四、条件过滤

1. 过滤:指定需要抓取的协议

tcpdump可以只抓某种协议的包,支持指定以下协议:「ip,ip6,arp,tcp,udp,wlan」等。

命令:

  1. tcpdumpudp
  2. tcpdumpicmp
  3. tcpdumptcp
  4. tcpdumparp

2. 过滤:指定协议的端口号

使用port参数,用于指定端口号。

命令:tcpdump tcp port 80

使用portrange参数,用于指定端口范围。

命令:tcpdump tcp portrange 1-1024

3. 过滤:指定源与目标

src 表示源。

dst 表示目标。

命令:

tcpdump src port 8080

tcpdump dst port 80

4. 过滤:指定特定主机的消息包

使用host指定需要监听的主机。

命令:

  1. tcpdumphost192.168.1.113

注意:若使用了host参数使用了计算机名或域名。例tcpdump host shi-pc ,则无法再使用-n选项。

5. 过滤:指定数据包大小

使用greater(大于)与less(小于)可以指定数据包大小的范围。

「例:只抓取大于1000字节的数据包。」

命令:

  1. tcpdumpgreater1000

「例:只抓取小于10字节的数据包。」

命令:

  1. tcpdumpless10

五、 逻辑表达式

使用基本逻辑组合拼装出更精细的过滤条件。

1. 逻辑与

逻辑与关系,使用and。

命令:

  1. tcpdumptcpandhost192.168.1.112
  2. tcpdumptcpandsrc192.168.1.112andport8080

2. 逻辑或

逻辑或关系,使用or。

命令:

  1. tcpdumphost192.168.1.112or192.168.1.113

3. 逻辑非

逻辑非关系,使用not,也可以使用 ! 。

若使用 ! 必须与其后面的字符隔开一个空格。

例:当通过ssh协议远程使用tcpdump时,为了避免ssh的数据包的输出,所以一般需要禁止ssh数据包的输出。

命令:

  1. tcpdumpnottcpport22
  2. tcpdump!tcpport22

4. 括号

括号需要使用在引号内,或转意使用。否则会报错。

例:抓取非22端口,且主机为192.168.1.112 和 192.168.1.113的TCP数据包。

命令:

  1. tcpdumpnottcpport22andhost192.168.1.112or192.168.1.113
  2. tcpdump"nottcpport22andhost(192.168.1.112or192.168.1.113)"
  3. tcpdumpnottcpport22andhost"(192.168.1.112or192.168.1.113)"

六、其他实例

1. 打印所有进入或离开sundown的数据包

  1. tcpdumphostsundown

2. 截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信

  1. tcpdumphost210.27.48.1and(210.27.48.2or210.27.48.3)

3. 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

  1. tcpdumpiphost210.27.48.1and!210.27.48.2

4. 监视所有送到主机hostname的数据包

  1. tcpdump-ieth0dsthosthostname

5. 获取主机210.27.48.1接收或发出的telnet包

23为telnet的端口

  1. tcpdumptcpport23andhost210.27.48.1

6. 监视本机的udp 123 端口

123 为ntp的服务端口

  1. tcpdumpudpport123

7. 使用tcpdump抓取HTTP包

  1. tcpdump-XvvennSs0-ieth0tcp[20:2]=0x4745ortcp[20:2]=0x4854
  • 0x4745 为"GET"前两个字母"GE",
  • 0x4854 为"HTTP"前两个字母"HT"。

tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。

显然这不利于分析网络故障,通常的解决办法是先使用带**-w参数的tcpdump 截获数据并保存到文件中**,然后再使用其他程序(如Wireshark)进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

六、查看数据包完整内容

tcpdump默认不显示数据包的详细内容。

方法一:

使用-A参数能以ASCII码显示数据包。

例:只抓取1个数据包,并显示其内容。

命令:

  1. tcpdump-c1-A

方法二:

使用-X参数能16进制数与ASCII码共同显示数据包。

例:只抓取1个数据包,并显示其内容。

命令:

  1. tcpdump-c1-X

七、tcpdump 与wiresharkWireshark

(以前是ethereal)是Windows下非常简单易用的抓包工具,现在也有Linux版本。

通过Tcpdump抓取的数据包分析比较麻烦,要想很方便的分析数据包, 我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

保存数据包为wireshark能识别的文件:

  1. tcpdumptcp-ieth1-t-s0-c100anddstport!22andsrcnet192.168.1.0/24-w./target.cap
参数含义
tcpip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
-i eth1只抓经过接口eth1的包
-t不显示时间戳
-s 0抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
-c 100只抓取100个数据包
dst port ! 22不抓取目标端口是22的数据包
src net 192.168.1.0/24数据包的源网络地址为192.168.1.0/24
-w ./target.cap保存成cap文件,方便用ethereal(即wireshark)分析


Ubuntu 14.10系统中IBUS 中文输入法安装的图文教程

IBUS 是 linux 下的输入框架,框架内的各种输入法是 Ubuntu 默认的非英文输入方式。新安装的 Ubuntu 系统,如果选择了中文环境,系统首次联网成功后,会提示用户下载 IBUS 下的拼音和五笔输入码表并安装,但并不默认启用相应的输入法。下面就分...
ubuntu中文输入法IBUS

Apache OpenOffice 被发现已存在 16 年之久的代码执行漏洞

如果你在 2021 年仍然在依赖 Apache OpenOffice 这一开源办公套件,那么请尽快升级至 OpenOffice 4.1.10 版本。Apache OpenOffice 4.1.10 近日正式发布,以解决一个影响 OpenOffice 所有版本的...
漏洞服务器安全ApacheOpenOffice

快来捡武器:Black Hat USA 将推出的八款安全工具

7月31日至8月5日期间,Black Hat USA 2021在拉斯维加斯举行。这场为期六天的安全盛会内容涉及信息安全研究、开发和趋势的最新情况等。安全研究人员和从业人员也分享了大量用于渗透测试、逆向工程、恶意软件防御等的新型网络安全工具,渗透测试人员、防御者...
服务器安全安全工具blackhatScrapesy

Windows Server服务器找到不到Windows自动更新?

云服务器供应商安装的系统,比如Windows Server 2016等等,没有Windows自动更新按钮。找不到Windows 自动更新入口,当然无法自动更新,可以试下下面这个方法。一、常规服务器的控制面板控制面板会有Windows自动更新按钮二、云服务器供应...
云服务器