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.rhkb.cn/news/31822.html

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

相关文章

【技海登峰】Kafka漫谈系列(五)Java客户端之生产者Producer核心组件与实现原理剖析

【技海登峰】Kafka漫谈系列(五)Java客户端之生产者Producer核心组件与实现原理剖析 向Kafka Broker服务节点中发送主题消息数据的应用程序被称为生产者,生产者与消费者均属于Kafka客户端,几乎所有主流语言都支持调用客户端API。官方提供了基于Java实现的kafka-clients,用于…

【eNSP实战】配置交换机端口安全

拓扑图 目的&#xff1a;让交换机端口与主机mac绑定&#xff0c;防止私接主机。 主机PC配置不展示&#xff0c;按照图中配置即可。 开始配置之前&#xff0c;使用PC1 ping 一遍PC2、PC3、PC4、PC5&#xff0c;让交换机mac地址表刷新一下记录。 LSW1查看mac地址表 LSW1配置端…

AWS Bedrock 正式接入 DeepSeek-R1 模型:安全托管的生成式 AI 解决方案

亚马逊云科技&#xff08;AWS&#xff09;于 2024 年 1 月 30 日 宣布&#xff0c;DeepSeek-R1 模型 正式通过 Amazon Bedrock 平台提供服务&#xff0c;用户可通过 Bedrock Marketplace 或自定义模型导入功能使用该模型。 DeepSeek-R1&#xff0c;其安全防护机制与全面的 AI 部…

数据结构之线性表

目录 1 简介 2 线性表的基本概念 3 顺序存储的线性表 3.1 定义线性表结构 3.2 初始化线性表 3.3 插入元素 3.4 删除元素 3.5 查找元素 3.6 扩容操作 3.7 打印线性表 4 线性表的应用 5 总结 1 简介 线性表是数据结构中最基础且常用的一种结构&#xff0c;它是由一…

c#面试题12

1.ApplicationPool介绍一下 c#里没有 2.XML 可扩展标记语言&#xff0c;一般以.xml文件格式的形式存在。可用于存储结构化的数据 3.ASP.NET的用户控件 将原始的控件&#xff0c;用户根据需要进行整合成一个新的控件 4.介绍一下code-Behind 即代码后置技术&#xff0c;就是…

英语学习(GitHub学到的分享)

【英语语法&#xff1a;https://github.com/hzpt-inet-club/english-note】 【离谱的英语学习指南&#xff1a;https://github.com/byoungd/English-level-up-tips/tree/master】 【很喜欢文中的一句话&#xff1a;如果我轻轻松松的学习&#xff0c;生活的幸福指数会提高很多…

C++蓝桥杯基础篇(十一)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来学习C蓝桥杯基础篇&#xff08;十一&#xff09;&#xff0c;学习类&#xff0c;结构体&#xff0c;指针相关知识&#xff0c;准备好了吗&#xff1f;咱们开始咯~ 一、类与结构体 类的定义&#xff1a;在C中&#x…

一次解决Andriod Studio Build Gradle很慢或报错下载失败等问题

Andriod Studio创建项目时&#xff0c;Build gradle一直在下载或者卡住或者很慢&#xff0c;反正就是会在这里出现各自问题的&#xff0c;请看这里&#xff01; 来来来&#xff0c;全体目光向我看齐&#xff01;&#xff01;&#xff01;保准让你解决掉这个问题&#xff01;这…

接口自动化入门 —— swagger/word/excelpdf等不同种类的接口文档理解!

在接口自动化测试中&#xff0c;接口文档是开发和测试人员理解接口功能、参数和交互方式的重要依据。常见的接口文档类型包括Swagger、Word、Excel和PDF。 1. Swagger文档 Swagger是一种用于描述和定义RESTful API的规范&#xff0c;使用JSON或YAML格式来定义API的输入参数、输…

Docker Compose国内镜像一键部署dify

克隆代码 git clone https://github.com/langgenius/dify.git进入docker目录 cd docker修改.env部分 # 将环境模版文件变量重命名 cp .env.example .env # 修改 .env,修改nginx的host和端口,避免端口冲突 NGINX_SERVER_NAME192.168.1.223 NGINX_PORT1880 NGINX_SSL_PORT1443…

网络安全之文件上传漏洞

一&#xff0c;文件上传漏洞的原因&#xff1a; 文件上传漏洞的存在主要是因为开发者未对用户上传的文件进行充分的安全验证&#xff0c;导致攻击者可以上传恶意文件&#xff08;如 WebShell、恶意脚本等&#xff09;到服务器&#xff0c;进而控制服务器或实施进一步攻击。 常…

QT系列教程(20) Qt 项目视图便捷类

视频连接 https://www.bilibili.com/video/BV1XY41127t3/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 Qt项目视图便捷类 Qt项目视图提供了一些便捷类&#xff0c;包括QListWidget, QTableWidget&#xff0c; QTreeWidget等。我们分别介绍这几个便捷类。 我们先创建一个Qt …

Java学习--MySQL

后端开发中&#xff0c;数据常存储在数据库中&#xff1a; 一、数据库基础 数据库&#xff1a;DataBase&#xff08;DB&#xff09;&#xff0c;是存储和管理数据的仓库 1.1连接数据库 mysql -u用户 -p密码 [-h数据库服务器ip地址 -P端口号] 1.2 关系型数据库 关系型数据…

博客系统测试报告

一、项目背景 以SSM为框架实现的博客系统有四个功能&#xff0c;登录账号进入博客首页&#xff0c;首页展示发布的博客列表&#xff0c;还可以编写或者更改博客内容。为了确保博客系统在各种场景下都能正常运行&#xff0c;需要进行尽可能全面的功能测试和自动化测试。本项目旨…

Chebykan wx 文章阅读

文献筛选 [1] 神经网络&#xff1a;全面基础 [2] 通过sigmoid函数的超层叠近似 [3] 多层前馈网络是通用近似器 [5] 注意力是你所需要的 [6] 深度残差学习用于图像识别 [7] 视觉化神经网络的损失景观 [8] 牙齿模具点云补全通过数据增强和混合RL-GAN [9] 强化学习&#xff1a;一…

LabVIEW变频器谐波分析系统

随着工业自动化的发展&#xff0c;变频器在电力、机械等领域的应用日益广泛&#xff0c;但谐波问题直接影响系统效率与稳定性。传统谐波检测设备&#xff08;如Norma5000&#xff09;精度虽高&#xff0c;但价格昂贵且操作复杂&#xff0c;难以适应现场快速检测需求。本项目基于…

C语言每日一练——day_4

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第四天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…

理解字符流和字节流,节点流和处理流、缓冲流、InputStreamReader、BufferInputStream、BufferReader...

DAY10.2 Java核心基础 IO流 字符流和字节流 字符流和字节流在每次处理数据的单位不同&#xff0c;一个是字符&#xff0c;一个是字节 如果复制文件类型是文本类型&#xff0c;字节流字符流都可以 如果复制的文件类型是非文本类型&#xff0c;则只能使用字节流&#xff0c;使…

泄露测试仪CTS的Sentinel I28使用

前言:本文档主要讨论CTS Sentinel I28的使用方法,设备图片如下: 具体文档可从下面链接下载: https://download.csdn.net/download/qq_34047402/90471262 泄露测试仪CTS的SentinelI28使用资源-CSDN文库 [注意] 调压方式,若选择机械式调压,那么测试的压力值只能有1个,…

YOLOv11融合[CVPR205]SCSegamba中的GBC结构

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《SCSegamba: Lightweight Structure-Aware Vision Mamba for Crack Segmentation in Structures》 一、 模块介绍 论文链接&#xff1a;https://arxi…