linux下的网络抓包(tcpdump)介绍

linux下的网络抓包[tcpdump]介绍

  • 前言
  • tcpdump
    • 1. 安装 tcpdump
    • 2. 基本抓包命令
    • 3. 过滤器使用
    • 4. 保存捕获的数据包
  • 异常指标
    • 1. 连接建立与断开相关指标
      • 异常 SYN 包
      • 异常 FIN 或 RST 包
    • 2. 流量相关指标
      • 异常流量峰值
      • 异常源或目的 IP 流量
    • 3. 端口相关指标
      • 异常端口使用
      • 端口扫描
    • 4. 数据包大小相关指标
      • 异常大或小的数据包
  • 注意事项
    • 1. 权限问题
    • 2. 性能影响
    • 3. 数据安全
    • 4. 法律合规

前言

  • 抓包原理
    抓包工具通过将网络接口设置为混杂模式(Promiscuous Mode)来工作,在混杂模式下,网络接口会接收所有经过它的数据包,而不仅仅是目标地址为本机的数据包,抓包工具会捕获这些数据包,并将其存储或显示出来,以便后续分析

  • 数据包结构
    数据包通常由头部和数据两部分组成,头部包含了源地址、目的地址、协议类型、端口号等信息,而数据部分则是实际传输的内容,不同的协议有不同的头部结构,了解这些结构有助于分析数据包

  • 协议分析
    常见的网络协议如 TCP、UDP、HTTP、HTTPS 等,每个协议都有其特定的工作方式和数据包格式,抓包后,需要根据协议的特点来分析数据包,例如 TCP 协议的三次握手、四次挥手过程,HTTP 协议的请求和响应报文结构等

tcpdump

1. 安装 tcpdump

yum install tcpdump

2. 基本抓包命令

  • 捕获所有数据包:
tcpdump

该命令会捕获所有经过网络接口的数据包,并将其显示在终端上,由于会捕获大量数据包,可能会导致终端输出信息过多,所以一般会结合过滤器配合使用

  • 指定网络接口进行抓包:
tcpdump -i ens33

这里的 ens33 是网络接口的名称,可以根据实际情况替换为其他接口,可通过ifconfig查看,使用 -i 选项可以指定要捕获数据包的网络接口

  • 抓包示例数据分析:
15:37:56.674379 IP 192.168.3.7.50852 > localhost.localdomain.pqsp: Flags [S], seq 3449650029, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
15:37:56.932674 IP 192.168.3.7.50852 > localhost.localdomain.pqsp: Flags [.], ack 1083, win 1022, length 0
15:37:56.982326 IP 192.168.3.7.50852 > localhost.localdomain.pqsp: Flags [P.], seq 169:179, ack 1097, win 1022, length 10

以其中一条记录 15:37:56.932674 IP 192.168.3.7.50852 > localhost.localdomain.pqsp: Flags [.], ack 1083, win 1022, length 0 为例:

  • 时间戳
15:37:56.932674

这是数据包被捕获的时间,精确到微秒,格式为 时:分:秒.微秒,这里表示数据包是在当天的 15 时 37 分 56 秒 932674 微秒被捕获的

  • 协议类型
IP

表示该数据包使用的是 IP(Internet Protocol,网际协议),这是网络层的基础协议,用于在不同网络之间传输数据包

  • 源地址和端口、目的地址和端口
192.168.3.7.50852 > localhost.localdomain.pqsp
  • 源地址和端口:192.168.3.7 是发送数据包的主机的 IP 地址,50852 是该主机上发送此数据包的应用程序所使用的端口号

  • 目的地址和端口:localhost.localdomain 是接收数据包的主机名,通常 localhost 代表本地主机,对应的 IP 地址是 127.0.0.1pqsp 代表接收方应用程序使用的端口,不过这里的 pqsp 可能是一个不太常见的服务名,在网络中端口一般用数字表示,系统可能将某个端口号映射成了 pqsp 这个服务名

  • 标志位(Flags)

Flags [.]

标志位用于表示 TCP 数据包的不同状态或操作,常见的标志位有:

  • S(SYN):用于建立连接的同步信号
  • F(FIN):表示请求关闭连接
  • R(RST):用于重置连接
  • P(PSH):表示需要尽快将数据推送给应用层
  • A(ACK):用于确认收到数据包
  • U(URG):表示紧急指针有效

这里的 [.] 表示只有 ACK 标志位被设置,说明这是一个确认数据包

  • 确认号(ack)
ack 1083

确认号表示发送方期望接收的下一个数据包的序列号,这里表示接收方已经成功接收了序列号小于 1083 的所有数据包,期望下一个收到的数据包序列号为 1083

  • 窗口大小(win)
win 1022

窗口大小表示接收方当前可用的缓冲区大小,单位是字节,这里表示接收方当前有 1022 字节的缓冲区可以用来接收数据,发送方在发送数据时,需要考虑接收方的窗口大小,以避免发送过多数据导致接收方缓冲区溢出

  • 数据包长度(length)
length 0

表示该数据包中携带的数据长度为 0 字节,此数据包可能只包含控制信息,如确认信息等,而没实际的应用层数据

  • 其他示例分析
15:37:56.982326 IP 192.168.3.7.50852 > localhost.localdomain.pqsp: Flags [P.], seq 169:179, ack 1097, win 1022, length 10
  • Flags [P.]:表示 PSH 和 ACK 标志位被设置,PSH 标志表示发送方希望接收方尽快将数据推送给应用层,ACK 表示确认
  • seq 169:179:序列号范围,说明此数据包中数据的起始序列号是 169,结束序列号是 179,数据包携带的数据长度为 179 - 169 = 10 字节,与后面的 length 10 相呼应
  • ack 1097:表示期望接收的下一个数据包序列号为 1097
  • win 1022:接收方可用缓冲区大小为 1022 字节
  • length 10:数据包携带的数据长度为 10 字节
15:37:56.674379 IP 192.168.3.7.50852 > localhost.localdomain.pqsp: Flags [S], seq 3449650029, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
  • Flags [S]:表示 SYN 标志位被设置,说明是一个用于建立 TCP 连接的同步数据包,是 TCP 三次握手的第一步
  • seq 3449650029:发送方随机选择的初始序列号
  • win 64240:发送方的初始窗口大小为 64240 字节
  • options [mss 1460,nop,wscale 8,nop,nop,sackOK]:TCP 选项字段,包含了一些额外的信息:
    • mss 1460:最大段大小(Maximum Segment Size),表示发送方期望接收的最大 TCP 数据段大小为 1460 字节
    • wscale 8:窗口缩放因子,用于扩大窗口大小
    • sackOK:表示支持选择确认(Selective Acknowledgment),允许接收方更精确地确认收到的数据包
  • length 0:此数据包只用于建立连接,不携带实际数据

3. 过滤器使用

  • 根据 IP 地址过滤:
    • 捕获源 IP 地址为 192.168.1.100 的数据包:
tcpdump -i ens33 ip src 192.168.1.100
  • 捕获目的 IP 地址为 192.168.1.200 的数据包:
tcpdump -i ens33 ip dst 192.168.1.200
  • 根据端口号过滤:
    • 捕获源端口为 80 的数据包:
tcpdump -i ens33 tcp src port 80
  • 捕获目的端口为 443 的数据包:
tcpdump -i ens33 tcp dst port 443
  • 根据协议过滤:
  • 捕获 TCP 协议的数据包:
tcpdump -i ens33 tcp
  • 捕获 UDP 协议的数据包:
tcpdump -i ens33 udp
  • host 选项
    host 是一个过滤表达式,用于指定要捕获特定主机(IP 地址或主机名)发送或接收的数据包
tcpdump host <host>
  • 捕获来自或发往 IP 地址为 192.168.1.100 的主机的所有数据包:
tcpdump host 192.168.1.100
  • 捕获来自或发往主机名为 example.com 的主机的所有数据包:
tcpdump host example.com

-i 和 host 组合使用
可以将 -i 和 host 结合起来,指定在某个特定的网络接口上捕获特定主机的数据包

tcpdump -i <interface> host <host>
  • 在接口 ens33 上捕获来自或发往 IP 地址为 192.168.1.100 的主机的所有数据包:
tcpdump -i ens33 host 192.168.1.100
  • 在无线接口 wlan0 上捕获来自或发往主机名为 example.com 的主机的所有数据包:
tcpdump -i wlan0 host example.com

还可以在上述命令的基础上添加其他过滤条件,例如指定协议、端口等

  • 在 ens33 接口上捕获来自或发往 192.168.1.100 主机的 TCP 数据包:
tcpdump -i ens33 host 192.168.1.100 and tcp
  • 在 wlan0 接口上捕获来自或发往 example.com 主机的端口为 80 的 HTTP 数据包:
tcpdump -i wlan0 host example.com and port 80

4. 保存捕获的数据包

tcpdump -i ens33 > test.log

这里的 test.log 是保存的文件名,保存后的文件可以使用 Wireshark 等工具进行进一步分析

异常指标

1. 连接建立与断开相关指标

异常 SYN 包

  • 指标特征:大量 SYN 包但缺少后续的 SYN - ACKACK 响应,正常的 TCP 连接建立需要经过三次握手(客户端发送 SYN,服务器返回 SYN - ACK,客户端再发送 ACK),如果只有大量的 SYN 包发送出去,而没有完成后续的握手过程,可能是遭受了 SYN 洪水攻击
  • 判断方法:使用 tcpdump 命令结合过滤规则,例如:
tcpdump -i ens33 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0'

捕获只有 SYN 标志位设置的数据包,如果在短时间内此类数据包数量急剧增加,就可能存在异常

异常 FIN 或 RST 包

  • 指标特征:频繁出现 FINRST 包,FIN 包用于正常关闭 TCP 连接,RST 包用于异常终止连接,如果在短时间内某个 IP 地址频繁发送 FINRST 包,可能表示该主机存在应用程序崩溃、网络故障或者遭受攻击等情况
  • 判断方法:使用过滤规则,如:
tcpdump -i ens33 'tcp[tcpflags] & (tcp-fin|tcp-rst) != 0'

捕获设置了 FINRST 标志位的数据包,统计特定 IP 地址发送这些包的频率,如果频率过高则可能存在异常

2. 流量相关指标

异常流量峰值

  • 指标特征:某个时间段内网络流量突然大幅增加或减少,流量突然增加可能是因为遭受了 DDoS 攻击、有大文件下载或者某个应用程序出现异常;流量突然减少可能是网络设备故障、线路中断等原因
  • 判断方法:可以通过 tcpdump 持续捕获数据包并统计流量,例如,每隔一段时间(如 1 分钟)统计捕获的数据包总字节数,绘制流量变化曲线,当曲线出现明显的峰值或谷值时,需要进一步分析原因

异常源或目的 IP 流量

  • 指标特征:某个特定 IP 地址的流量远远高于或低于其他 IP 地址,如果某个 IP 地址的流量异常高,可能是该主机正在进行大规模的数据传输、遭受攻击或者存在恶意软件;如果某个 IP 地址的流量异常低,可能是该主机出现故障或者被隔离
  • 判断方法:使用 tcpdump 捕获数据包,并结合工具(如 awk)统计每个 IP 地址的流量,例如:
tcpdump -i ens33 -c 1000 | awk '{print $3}' | cut -d '.' -f 1-4 | sort | uniq -c | sort -nr

可以统计前 1000 个数据包中每个源 IP 地址的出现次数,间接反映其流量情况

3. 端口相关指标

异常端口使用

  • 指标特征:使用了不常见的端口进行通信,一些恶意软件或攻击者可能会使用不常见的端口来绕过防火墙或隐藏其活动,例如,通常 Web 服务使用 80443 端口,如果发现有大量数据通过其他不常见的端口(如 12345)传输,就可能存在异常
  • 判断方法:使用 tcpdump 捕获数据包并分析端口号,例如:
tcpdump -i ens33 'tcp port not (80 or 443)'

可以捕获除 80443 端口之外的 TCP 数据包,对这些数据包进行进一步分析,查看是否存在异常的通信行为

端口扫描

  • 指标特征:短时间内对大量端口进行连接尝试,攻击者通常会使用端口扫描工具来发现目标主机开放的端口,以便寻找攻击漏洞,如果在短时间内某个 IP 地址对多个端口发送 SYN 包,就可能是在进行端口扫描
  • 判断方法:使用过滤规则:
tcpdump -i ens33 'tcp[tcpflags] & tcp-syn != 0'

捕获 SYN 包,然后统计每个源 IP 地址尝试连接的端口数量,如果某个 IP 地址在短时间内尝试连接的端口数量较多,就可能存在端口扫描行为

4. 数据包大小相关指标

异常大或小的数据包

  • 指标特征:出现大量异常大或小的数据包,异常大的数据包可能是因为应用程序发送了大文件、存在数据泄露或者遭受了分片攻击;异常小的数据包可能是因为应用程序设计不合理、存在网络故障或者遭受了攻击
  • 判断方法:使用 tcpdump 捕获数据包并查看其长度,例如:
tcpdump -i ens33 -vvv

可以显示详细的数据包信息,包括数据包长度,统计数据包长度的分布情况,当发现有大量数据包的长度偏离正常范围时,需要进一步分析原因

注意事项

1. 权限问题

由于抓包涉及到对网络接口的底层操作,需要具有管理员权限

2. 性能影响

长时间或大规模的抓包操作可能会对系统性能产生一定的影响,尤其是在高流量的网络环境中,因此,在进行抓包时,应尽量使用过滤器来减少捕获的数据包数量

3. 数据安全

捕获的数据包可能包含敏感信息,如用户名、密码、信用卡号等,在处理和存储捕获的数据包时,应注意保护这些信息的安全,避免泄露

4. 法律合规

在某些情况下,未经授权的抓包行为可能违反法律法规,在进行抓包操作前,应确保有合法的权限,并且遵守相关的法律规定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++中使用CopyFile、CopyFileEx原理、用法、区别及分别在哪些场景使用

文章目录 1. CopyFile原理函数原型返回值用法示例适用场景 2. CopyFileEx原理函数原型返回值用法示例适用场景 3. 核心区别4. 选择建议5. 常见问题6.区别 在Windows系统编程中&#xff0c;CopyFile和CopyFileEx是用于文件复制的两个API函数。它们的核心区别在于功能扩展性和控制…

Bash和Zsh在处理大文件时差异

在处理大文件时&#xff0c;Bash 和 Zsh 的差异主要体现在几个方面&#xff1a; 1. 脚本执行速度 Bash: 性能: Bash在执行脚本时通常表现良好&#xff0c;尤其是在处理大量数据或大文件时。Bash的脚本执行速度相对较快&#xff0c;适合大多数日常使用场景。优化: Bash在处理大…

不同AI生成的PHP版雪花算法

OpenAI <?php /*** Snowflake 雪花算法生成器* 生成的 64 位 ID 结构&#xff1a;* 1 位 保留位&#xff08;始终为0&#xff0c;防止负数&#xff09;* 41 位 时间戳&#xff08;毫秒级&#xff0c;当前时间减去自定义纪元&#xff09;* 5 位 数据中心ID* 5 …

Android Telephony 四大服务和数据网络控制面数据面介绍

在移动通信和Android系统中,涉及的关键概念和服务以及场景案例说明如下: 一、概念 (一)Android Telephony 的四大服务 介绍Telephony Data 与 Android Data 的四大服务在Android系统中,与电话(Telephony)和移动数据(Data)相关的核心服务主要包括以下四类: 1. Tele…

浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF)

浙江大学&#xff1a;DeepSeek行业应用案例集&#xff08;153页&#xff09;&#xff08;文末可下载PDF&#xff09; 全文链接&#xff1a;浙江大学&#xff1a;DeepSeek行业应用案例集&#xff08;153页&#xff09;&#xff08;文末可下载PDF&#xff09; | AI探金 全文链接&…

ctf-web: php原生类利用 -- GHCTF Popppppp

源代码 <?php error_reporting(0); class CherryBlossom { public $fruit1; public $fruit2; public function __construct($a) {$this->fruit1 $a; } function __destruct() { echo $this->fruit1; } public function __toString() { $newFunc …

入门到入土,Java学习 day16(算法1)

利用循环遍历来判断是否相等 二分查找/折半查找 前提条件&#xff1a;数组中的数据有序 每次排除一般的查找范围 用min,max,mid来处理&#xff0c;最大加最小除2&#xff0c;比较&#xff0c;然后得到在中间左边还是右边然后更新最大最小 public class Two {// 二分查找方法…

mysql-8.0.41-winx64 手动安装详细教程(2025版)

mysql-8.0.41-winx64 手动安装详细教程&#xff08;2025版&#xff09; 一、下载安装包二、配置环境变量三、安装配置四、启动 MySQL 服务&#xff0c;修改密码 一、下载安装包 安装地址如下&#xff1a; https://dev.mysql.com/downloads/mysql/使用7-zip或其他解压软件&…

Python 编写安全工具

编写安全工具&#xff1a;Python在网络安全中的应用 在当前信息时代&#xff0c;网络安全问题日益引起人们的关注。为了更好地保护个人和组织的信息安全&#xff0c;开发安全工具是至关重要的一环。Python作为一种易学易用的编程语言&#xff0c;被广泛应用于网络安全领域。本…

基于Python+Vue开发的电影订票管理系统源码+运行步骤

项目简介 该项目是基于PythonVue开发的电影订票管理系统&#xff08;前后端分离&#xff09;&#xff0c;这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能&#xff0c;同时锻炼他们的项目设计与开发能力。通过学习基于Python的电影订…

Synology 部署的 WordPress 無法升級至最新版本時,可以透過以下改良版指南進行排查和解決。

當 Synology 部署的 WordPress 無法升級至最新版本時&#xff0c;可以透過以下改良版指南進行排查和解決。我對內容進行了補充和重新組織&#xff0c;希望能幫助你更高效地處理這類問題&#xff1a; 權限相關問題處理 檢查文件和目錄權限&#xff1a; 確保 WordPress 安裝目錄…

Flink深入浅出之03:状态、窗口、checkpoint、两阶段提交

Flink是一个有状态的流&#xff0c;&#x1f445;一起深入了解这个有状态的流 3️⃣ 目标 掌握State知识掌握Flink三种State Backend掌握Flink checkpoint和savepoint原理了解Flink的重启策略checkpointtwo phase commit保证E-O语义 4️⃣ 要点 &#x1f4d6; 1. Flink的St…

在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧

目录 引言 一、历史中的非对称作战&#xff1a;从李牧到八路军的智谋传承 李牧戍边&#xff1a;古代军事博弈中的资源重构 八路军的游击战&#xff1a;现代战争中的智慧延续 二、创业界的逆袭之道&#xff1a;小米与拼多多的资源重构 从MVP到杠杆解 社交裂变与资源错配 …

C#方法之详解

一、方法基础语法‌ C#方法是封装代码逻辑的基本单元&#xff0c;用于执行特定操作并支持模块化编程‌。 定义与结构‌ C#方法由访问修饰符、返回值、方法名、参数列表和方法体构成。基础语法如下&#xff1a; [访问修饰符] [static] 返回值类型 方法名(参数列表) { // 方…

网页打印很简单!用web打印插件lodop轻松实现文件打印

最近&#xff0c;给客户发一个事件提醒软件&#xff0c;其中客户要求实现打印功能&#xff0c;因为是用asp.net mvc 开发首先考虑到用水晶报表来实现&#xff08;crystalReport&#xff09;&#xff0c;以前开发c# winform程序&#xff0c;感觉水晶报表还是蛮好的&#xff0c;但…

Claude、ChatGPT、Gemini等主流AI模型。分别详细介绍它们并进行对比,需要指出关键的时间点

以下是关于Claude、ChatGPT和Gemini三大主流AI模型的详细介绍及对比分析&#xff0c;结合关键时间点和核心技术特征&#xff1a; 1. Claude&#xff08;Anthropic&#xff09; 关键时间点与版本迭代 2023年3月&#xff1a;初代Claude发布&#xff0c;定位为安全可控的对话模型…

统计登录系统10秒内连续登录失败超过3次的用户

为防止暴力破解用户账号的行为&#xff0c;在输入账号和密码时一般都会限制用户尝试密码输出错误的次数&#xff0c;如果用户多次输错密码后&#xff0c;将在一段时间内锁定账号&#xff0c;常见的有银行类APP、个税App等应用&#xff0c;如下是用户账号密码输入错误的提示图&a…

vue3通过render函数实现一个菜单下拉框

背景说明 鼠标移动到产品服务上时&#xff0c;出现标红的下拉框。 使用纯css的方案实现最简单&#xff0c;但是没什么技术含量&#xff0c;弃之&#xff1b;使用第三方组件库&#xff0c;样式定制麻烦弃之。因此&#xff0c;我们使用vue3直接在页面创建一个dom作为下拉框吧。…

二、重学C++—C语言核心

上一章节&#xff1a; 一、重学C—C语言基础-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146002496?spm1001.2014.3001.5502 本章节代码&#xff1a; cPart2 CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppstudy/tree/…

2-003:MySQL 三层 B+ 树能存多少数据?

1. 计算 B 树能存储多少数据 参数设定 每个数据页&#xff08;Page&#xff09;大小&#xff1a;16KB&#xff08;16384 字节&#xff09;每个索引节点存储的子节点数量&#xff1a; 索引项大小&#xff1a; 假设 bigint&#xff08;主键&#xff09;占 8 字节每个索引项存储…