【应急响应工具教程】流量嗅探工具-Tcpdump

news/2025/2/24 6:21:55

1.工具简介

Tcpdump 是一款命令行数据包嗅探工具,能够直接从文件或网络接口捕获并解析数据帧。它适用于任何类 Unix 操作系统。

Tcpdump是一款功能强大的命令行数据包嗅探工具,支持从网络接口实时捕获或从文件解析数据包。作为Unix/Linux系统的标准网络诊断工具,它无需图形界面即可通过终端或SSH等远程连接进行操作,尤其适合服务器环境使用。该工具基于pcap和libpcap库实现底层数据捕获,通过将网卡设置为混杂模式,能够监听整个局域网内所有设备的通信流量,而不仅限于当前主机的目标数据。

在系统兼容性方面,Tcpdump原生支持包括AIX、BSD、Solaris在内的各类Unix系统及其衍生版本,且多数Linux发行版已预装该工具。需要注意的是,由于其直接操作网络硬件的特性,运行Tcpdump需要root权限,通常需要通过sudo命令执行(如:sudo tcpdump -i eth0)。对于Windows平台用户,虽然历史版本Windump已停止维护,但可以通过Windows Subsystem for Linux(WSL)安装Parrot、Ubuntu等发行版,在获得完整Linux工具链支持的同时使用原生Tcpdump。

2.使用说明

2.1检查 Tcpdump 是否安装

要确认系统是否已安装 Tcpdump,可以使用以下命令:

which tcpdump

通常情况下,Tcpdump 的安装路径为 /usr/sbin/tcpdump。如果未找到该工具,可以通过以下命令安装:

sudo apt install tcpdump

安装完成后,可以通过以下命令验证安装版本:

sudo tcpdump --version

示例输出:

tcpdump version 4.9.3
libpcap version 1.9.1 (with TPACKET_V3)
OpenSSL 1.1.1f 31 Mar 2020

2.2Tcpdump 基本功能

Tcpdump 提供了丰富的功能和过滤器选项,以下是一些常用的命令示例,帮助您快速上手。

2.2.1常用选项

以下是一些常用的 Tcpdump 选项,可以通过组合这些选项实现自定义捕获行为:

选项命令示例功能描述
-Dsudo tcpdump -D列出所有可用网络接口
-isudo tcpdump -i eth0指定捕获的网络接口(如 eth0)
-nsudo tcpdump -n禁用主机名解析,直接显示 IP 地址
-nnsudo tcpdump -nn禁用主机名和端口号解析
-esudo tcpdump -e捕获并显示以太网头部信息
-Xsudo tcpdump -X以十六进制和 ASCII 格式显示数据包内容
-XXsudo tcpdump -XX显示以太网头部及数据包内容
-vsudo tcpdump -v增加输出详细程度(-vv 和 -vvv 可进一步提高详细级别)
-csudo tcpdump -c 10捕获指定数量的数据包后退出(如 10 个)
-ssudo tcpdump -s 64定义捕获数据包的长度(如 64 字节)
-Ssudo tcpdump -S显示绝对序列号而非相对序列号
-qsudo tcpdump -q减少协议信息输出
-rsudo tcpdump -r file.pcap从文件中读取捕获的数据包
-wsudo tcpdump -w file.pcap将捕获的数据包写入文件
2.2.2查看完整选项

要查看 Tcpdump 的完整选项列表,可以使用 man 命令:

man tcpdump

2.3常用命令示例

2.3.1列出可用接口
sudo tcpdump -D

示例输出:

1. eth0 [Up, Running, Connected]
2. any (Pseudo-device that captures on all interfaces) [Up, Running]
3. lo [Up, Running, Loopback]
2.3.2捕获指定接口的流量
sudo tcpdump -i eth0

此命令将在 eth0 接口上捕获流量,并显示每个数据包的基本信息。

2.3.3禁用名称解析
sudo tcpdump -i eth0 -nn

此命令将直接显示 IP 地址和端口号,而不进行名称解析。

2.3.4显示以太网头部
sudo tcpdump -i eth0 -e

此命令将捕获并显示以太网头部信息。

2.3.5显示数据包内容
sudo tcpdump -i eth0 -X

此命令将以十六进制和 ASCII 格式显示数据包内容。

2.3.6组合多个选项
sudo tcpdump -i eth0 -nnvXX

此命令组合了多个选项,显示更详细的输出,包括以太网头部、IP 头部、协议标识和序列号等信息。

2.4文件输入/输出

2.4.1保存捕获数据到文件
sudo tcpdump -i eth0 -w ~/output.pcap

此命令将捕获的流量保存到 output.pcap 文件中。注意,捕获大量数据时可能会占用较多磁盘空间。

2.4.2从文件中读取捕获数据
sudo tcpdump -r ~/output.pcap

此命令将读取 output.pcap 文件中的捕获数据。可以通过添加选项(如 -nn-X)来调整输出格式

2.5输出解析

当查看 TCPDump 的输出时,可能会有些令人眼花缭乱。运行这些基本开关已经向我们展示了几个不同的视图。我们将花一分钟来分析这个输出并解释我们所看到的。下面的图像和表格将定义每个字段。请注意,我们的过滤器越详细,每个报头显示的详细信息就越多。

Tcpdump 的输出包含多个字段,以下是对常见字段的解析:

图片

字段描述
时间戳 (Timestamp)时间戳字段位于最前面,可以配置为以我们易于处理的时间和日期格式显示。
协议 (Protocol)这一部分会告诉我们上层协议的类型。在我们的示例中,它显示为 IP。
源与目标 IP.端口 (Source & Destination IP.Port)这将显示数据包的源和目标地址,以及用于连接的端口号。格式为 IP.端口,例如 192.168.174.1.62420。
标志 (Flags)这一部分显示使用的任何标志。
序列号与确认号 (Sequence and Acknowledgement Numbers)这一部分显示用于跟踪 TCP 段的序列号和确认号。在我们的示例中,使用的是较低的数字。
协议选项 (Protocol Options)在这里,我们将看到客户端和服务器之间商定的 TCP 值,如窗口大小、选择确认、窗口缩放因子等。
备注 / 下一个头部 (Notes / Next Header)这里将显示解码器发现的其他信息。由于我们正在查看的流量是封装的,因此可能会看到不同协议的额外头部信息。

2.6高级应用

Tcpdump 不仅可以用于网络流量分析,还可以通过脚本实现更高级的功能。例如:

  • 创建基于 Tcpdump 的 IDS/IPS 系统,监控特定流量模式。

  • 结合脚本,根据流量特征自动执行操作(如封禁可疑 IP)。

3.示例

3.1捕获挖矿病毒流量

从源 IP 地址来看,数据包是发送到 94...88:3434(目标矿池)上的,矿池与矿工之间的通信是通过该端口进行的。(结合情报威胁平台)。

图片

"method": "job":

表示这是一个矿池分配的挖矿任务("job"),而不是控制命令或心跳。

"params":

这是矿池分配给矿工的参数,包括:

  • "blob": "109d8cccbd06fabe...":这是用于工作量证明的任务数据(例如哈希工作)。

  • "job_id": "722231003100":这是矿池为该工作分配的任务 ID。

  • "target": "3401000000":表示目标难度。

  • "algo": "rx/0":表示使用的算法是 rx/0(一个常见的加密货币挖矿算法)。

  • "seed_hash": "cfacfe0eb8c2dc45a35d75560b998c6c04f209b75c9ea5a9b8a8a24628d1409e":任务的种子哈希,用于验证挖矿任务。

"seed_hash" 和其他数据

这些信息用于矿工与矿池之间的通信,标明任务的细节和状态。

数据传输内容

内容包括 blobjob_idtargetalgoseed_hash 等,这些都表明这是一个标准的挖矿任务消息。


http://www.niftyadmin.cn/n/5864024.html

相关文章

Django项目设计一个简单CRUD

在Django中实现一个学生类(Student)的CRUD(创建、读取、更新、删除)操作需要几个步骤,包括定义模型、创建视图、设置URL、以及配置模板。以下是一个基本的实现步骤: 1. 创建Django项目和应用 首先&#x…

easyexcel和poi同时存在版本问题,使用easyexcel导出excel设置日期格式

这两天在使用easyexcel导出excel的时候日期格式全都是字符串导致导出的excel列无法筛选 后来调整了一下终于弄好了,看一下最终效果 这里涉及到easyexcel和poi版本冲突的问题,一直没搞定,最后狠下心来把所有的都升级到了最新版,然…

网络安全之攻防笔记--通用安全漏洞SQL注入sqlmapOraclemongodbDB2

通用安全漏洞SQL注入&sqlmap&Oracle&mongodb&DB2 数据库类型 ACCESS 特性 没数据库用户 没数据库权限 没数据库查询参数 没有高权限注入说法 暴力猜解,借助字典得到数据 注入方式 联合注入 偏移注入 表名列名猜解不到 偏移注入 MySQL 低权限 常…

基于Flask的短视频流量数据可视化系统的设计与实现

【Flask】基于Flask的短视频流量数据可视化系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着移动互联网的普及和短视频平台的兴起,短视频已成为人们日常生活中不…

第五章:工程化实践 - 第四节 - Tailwind CSS 团队协作规范

在团队开发中使用 Tailwind CSS&#xff0c;需要建立统一的开发规范和工作流程&#xff0c;以确保代码质量和开发效率。本节将详细介绍团队协作中的各项规范和最佳实践。 开发规范 命名规范 // 组件命名规范 const Button: React.FC () > {return (<button className…

每日Attention学习24——Strip Convolution Block

模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计&#xff0c;采用四个并行分支提取不同维度的信息相比于…

《论面向对象的建模及应用》审题技巧 - 系统架构设计师

论面向对象的建模及应用写作框架 一、考点概述 本论题“论面向对象的建模及应用”主要考察软件测试工程师对面向对象建模技术的理解和应用能力。具体涵盖以下几个方面&#xff1a; 面向对象建模的基本概念 &#xff1a;这包括理解面向对象编程&#xff08;OOP&#xff09;的基…

分布式服务注册与发现

目录 核心概念 常见实现方式 常见工具与框架 优点 挑战 应用场景 总结 分布式服务注册与发现是微服务架构中的关键组件,用于动态管理服务的注册、发现和调用。它帮助服务在分布式环境中自动找到彼此,确保系统的高可用性和可扩展性。 核心概念 服务注册: 服务启动时向…