当前位置: 首页 > news >正文

Metasploit网络嗅探实战:从数据包捕获到协议分析的完整指南

前言

网络嗅探(Packet Sniffing)是渗透测试和网络安全分析的核心技能之一。通过捕获和分析网络数据包,安全人员可以了解目标主机的网络行为、发现潜在的安全漏洞、追踪敏感信息传输。本文将详细介绍如何在Metasploit的Meterpreter会话中使用Sniffer模块进行网络嗅探,并结合Wireshark进行深度协议分析。

安全提醒:网络嗅探必须在合法授权的环境中进行,未经授权的网络监听是违法行为。

Sniffer模块基础操作

加载与初始化

在获得Meterpreter会话后,首先需要加载Sniffer模块:

# 在Meterpreter会话中
meterpreter > load sniffer# 成功输出
[*] Successfully loaded plugin: sniffer# 查看新增命令
meterpreter > help

加载成功后,会新增以下专用命令:

  • sniffer_interfaces - 查看网卡接口
  • sniffer_start - 开始捕获
  • sniffer_stop - 停止捕获
  • sniffer_dump - 导出数据包
  • sniffer_stats - 查看统计信息
  • sniffer_release - 释放缓冲区

查看网卡接口

meterpreter > sniffer_interfaces

输出示例

1 - 'VMware Accelerated AMD PCNet Adapter' (Usable: true, DHCP: true)
2 - 'Intel(R) PRO/1000 MT Network Connection' (Usable: true, DHCP: false)
3 - 'Microsoft Kernel Debug Network Adapter' (Usable: false, DHCP: false)

字段含义

  • 编号:网卡接口索引

  • 名称:网卡描述信息

  • Usable

    :是否可用于抓包

    • true:可以捕获数据
    • false:无法捕获(可能未启用或无流量)
  • DHCP

    :是否使用DHCP获取IP

    • true:动态IP,活跃网卡(推荐选择)
    • false:静态IP或未配置

选择策略

优先选择: Usable=true && DHCP=true
次选: Usable=true && DHCP=false (可能是静态IP配置)
不可用: Usable=false (无法抓包)

开始与停止捕获

# 对2号网卡开始嗅探
meterpreter > sniffer_start 2
[*] Capture started on interface 2 (50000 packet buffer)# 查看捕获统计
meterpreter > sniffer_stats 2
[*] Interface 2:Packets captured: 1523Bytes captured: 1048576# 停止嗅探
meterpreter > sniffer_stop 2
[*] Capture stopped on interface 2

缓冲区大小: 默认50000个数据包,可通过参数调整:

sniffer_start 2 100000  # 设置100000个包的缓冲区

导出数据包

# 导出为PCAP格式
meterpreter > sniffer_dump 2 /root/capture.cap
[*] Flushing packet capture buffer for interface 2...
[*] Wrote 1523 packets to /root/capture.cap

文件路径说明

  • 路径为目标机器上的路径
  • 建议使用绝对路径
  • 文件格式为标准PCAP(可被Wireshark读取)

释放缓冲区

# 清空指定接口的缓冲区
meterpreter > sniffer_release 2
[*] Flushing packet capture buffer for interface 2...

Wireshark数据包分析

打开捕获文件

# 在Kali Linux中
wireshark capture.cap# 或双击文件直接打开

Wireshark界面结构

三大区域

┌─────────────────────────────────┐
│  数据包列表区                    │ ← 所有捕获的数据包
├─────────────────────────────────┤
│  协议分层详情区                  │ ← 选中包的协议栈解析
├─────────────────────────────────┤
│  原始数据区                      │ ← 十六进制/ASCII显示
└─────────────────────────────────┘

数据包列表区字段

  • No. - 数据包编号
  • Time - 相对时间戳
  • Source - 源IP地址
  • Destination - 目标IP地址
  • Protocol - 协议类型
  • Length - 数据包长度
  • Info - 简要信息

过滤表达式基础

基于IP地址过滤

# 源IP过滤
ip.src == 192.168.87.149# 目标IP过滤
ip.dst == 192.168.87.149# 主机所有流量(发送+接收)
ip.host == 192.168.87.149# 排除特定主机
!(ip.src == 192.168.87.149)

基于协议过滤

# 协议名称直接过滤
dns          # DNS协议
icmp         # ICMP协议
tcp          # TCP协议
udp          # UDP协议
http         # HTTP协议
dhcp         # DHCP协议
arp          # ARP协议

基于端口过滤

# TCP端口
tcp.port == 80
tcp.port == 443
tcp.dstport == 22# UDP端口
udp.port == 53
udp.srcport == 123

组合过滤

# 逻辑与(AND)
ip.host == 192.168.87.149 && icmp# 逻辑或(OR)
dns || dhcp# 逻辑非(NOT)
!(ip.src == 192.168.87.149)# 复杂组合
ip.host == 192.168.87.149 && (tcp.port == 80 || tcp.port == 443)

核心网络协议分析

DHCP协议深度解析

DHCP工作流程

四次握手过程

1. DHCPDISCOVER (客户端 → 广播)目标: 255.255.255.255源IP: 0.0.0.02. DHCPOFFER (服务器 → 客户端)提供IP地址、子网掩码等3. DHCPREQUEST (客户端 → 服务器)请求使用提供的IP4. DHCPACK (服务器 → 客户端)确认分配

Wireshark中的DHCP分析

过滤器

dhcp
bootp  # DHCP基于BOOTP协议

关键字段

DHCP Message Type: Discover/Offer/Request/Ack
Client IP address: 客户端IP(初始为0.0.0.0)
Your (client) IP address: 分配的IP
Server identifier: DHCP服务器IP
Option 1 (Subnet Mask): 子网掩码
Option 3 (Router): 网关地址
Option 6 (Domain Name Server): DNS服务器
Option 51 (IP Address Lease Time): 租期

实战示例

客户端请求(广播):Src: 0.0.0.0Dst: 255.255.255.255Message: DHCPDISCOVER服务器应答:Src: 192.168.87.2 (路由器)Dst: 192.168.87.149 (分配的IP)Message: DHCPACKOptions:- Subnet Mask: 255.255.255.0- Router: 192.168.87.2- DNS: 192.168.87.2- Lease Time: 86400 seconds (24小时)

DNS协议深度解析

DNS查询类型

记录类型

  • A记录:域名 → IPv4地址
  • AAAA记录:域名 → IPv6地址
  • CNAME记录:域名别名
  • MX记录:邮件服务器
  • NS记录:域名服务器

Wireshark中的DNS分析

过滤器

dns
dns.qry.name == "www.baidu.com"
dns.flags.response == 0  # 查询包
dns.flags.response == 1  # 响应包

查询包结构

Domain Name System (query)Transaction ID: 0x1234Flags: 0x0100 Standard queryQuestions: 1Queries:www.baidu.com: type A, class IN

响应包结构

Domain Name System (response)Transaction ID: 0x1234Flags: 0x8180 Standard query responseQuestions: 1Answer RRs: 3Answers:www.baidu.com: type CNAME, cname a.shifen.coma.shifen.com: type A, addr 39.156.66.10a.shifen.com: type A, addr 39.156.66.18

Ping百度的完整流程

步骤分解

1. DNS查询Win7 → DNS服务器(192.168.87.2)Query: www.baidu.com2. DNS响应DNS服务器 → Win7Answer: CNAME: a.shifen.comA: 39.156.66.10, 39.156.66.183. ICMP请求Win7 → 百度服务器(39.156.66.10)Type: 8 (Echo Request)4. ICMP响应百度服务器 → Win7Type: 0 (Echo Reply)

Wireshark过滤

# 查看完整过程
ip.host == 192.168.87.149# 只看DNS
ip.host == 192.168.87.149 && dns# 只看ICMP
ip.host == 192.168.87.149 && icmp

ICMP协议深度解析

ICMP报文类型

常见类型

Type 0  - Echo Reply (Ping响应)
Type 3  - Destination Unreachable (目标不可达)
Type 5  - Redirect (重定向)
Type 8  - Echo Request (Ping请求)
Type 11 - Time Exceeded (TTL超时)

Wireshark中的ICMP分析

协议栈层次

Frame (数据帧)├─ Ethernet II (以太网头)│    ├─ Source MAC: xx:xx:xx:xx:xx:xx│    └─ Destination MAC: xx:xx:xx:xx:xx:xx├─ Internet Protocol (IP头)│    ├─ Source: 192.168.87.149│    └─ Destination: 39.156.66.10└─ Internet Control Message Protocol├─ Type: 8 (Echo Request)├─ Code: 0├─ Checksum: 0x1234 [correct]├─ Identifier: 0x0001├─ Sequence number: 1└─ Data (32 bytes)

数据载荷分析

Ping数据通常是:
abcdefghijklmnopqrstuvwxyz...响应数据会包含:
...Hi  (在数据末尾添加标识)

NTP协议解析

NTP基础

Network Time Protocol

  • 功能:网络时间同步
  • 端口:UDP 123
  • 时间起点:1970年1月1日 00:00:00 UTC(Unix纪元)

过滤器

ntp
udp.port == 123

关键字段

Leap Indicator: 闰秒指示
Version Number: 协议版本(通常为3或4)
Mode: 模式(3=客户端,4=服务器)
Stratum: 层级(1=主时钟源,2-15=次级)
Reference Timestamp: 参考时间戳
Origin Timestamp: 请求发送时间
Receive Timestamp: 服务器接收时间
Transmit Timestamp: 服务器发送时间

时间戳格式: 自1970-01-01 00:00:00 UTC起的秒数

注意事项: 将系统时间设置在1970年之前(如1969年12月)可能导致某些软件出现异常。

后台流量识别

Windows后台服务

Watson.microsoft.com

  • Windows Update检查
  • 遥测数据上传
  • 激活验证

过滤查看

dns && dns.qry.name contains "microsoft"

常见后台域名

watson.microsoft.com - Windows更新
login.live.com - Microsoft账户
time.windows.com - 时间同步
ocsp.digicert.com - 证书验证

实战案例:完整抓包分析

案例:Ping百度的完整流程

步骤1:启动抓包

# 在Meterpreter中
meterpreter > sniffer_start 2
[*] Capture started on interface 2

步骤2:执行目标操作

在目标Windows机器上:

ping www.baidu.com

步骤3:停止并导出

meterpreter > sniffer_stop 2
meterpreter > sniffer_dump 2 /root/baidu.cap

步骤4:Wireshark分析

过滤源主机流量

ip.src == 192.168.87.149

分析DNS查询

1. 找到DNS查询包Protocol: DNSInfo: Standard query 0x1234 A www.baidu.com2. 展开详情Domain Name System (query)Queries:www.baidu.com: type A, class IN

分析DNS响应

3. 找到对应响应包Protocol: DNSInfo: Standard query response 0x1234 A4. 展开详情Answers:www.baidu.com: CNAME a.shifen.coma.shifen.com: A 39.156.66.10a.shifen.com: A 39.156.66.18

分析ICMP包

5. 切换过滤器ip.host == 192.168.87.149 && icmp6. 观察Echo RequestType: 8Destination: 39.156.66.10Data: abcdefghijklmno...7. 观察Echo ReplyType: 0Source: 39.156.66.10Data: abcdefghijklmno...

案例:DHCP IP分配

过滤器

dhcp || bootp

分析流程

1. DHCPDISCOVERSrc: 0.0.0.0Dst: 255.255.255.255Client MAC: xx:xx:xx:xx:xx:xxMessage: 请求分配IP地址2. DHCPOFFERSrc: 192.168.87.254 (DHCP服务器)Dst: 255.255.255.255Offer IP: 192.168.87.1493. DHCPREQUESTClient: 我要使用192.168.87.1494. DHCPACKServer: IP: 192.168.87.149Mask: 255.255.255.0Gateway: 192.168.87.2DNS: 192.168.87.2Lease: 86400s

高级过滤技巧

复杂过滤表达式

# 排除本机流量
!(ip.src == 192.168.87.149)# 只看外部到本机的流量
ip.dst == 192.168.87.149 && !(ip.src == 192.168.87.0/24)# 只看特定主机的ICMP
ip.host == 192.168.87.149 && icmp# HTTP流量
tcp.port == 80 || tcp.port == 8080# HTTPS流量
tcp.port == 443# DNS查询特定域名
dns.qry.name == "www.baidu.com"# 大数据包(超过1000字节)
frame.len > 1000# TCP三次握手包
tcp.flags.syn == 1 && tcp.flags.ack == 0

统计与分析

协议分级统计

菜单 → Statistics → Protocol Hierarchy

会话统计

菜单 → Statistics → Conversations
查看:
- IPv4对话
- TCP对话
- UDP对话

端点统计

菜单 → Statistics → Endpoints
查看各IP的流量统计

IO图表

菜单 → Statistics → I/O Graph
可视化流量趋势

实用技巧与注意事项

抓包最佳实践

1. 权限提升

# 某些数据需要SYSTEM权限
meterpreter > getsystem
[*] Obtaining SYSTEM privileges
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

2. 缓冲区管理

# 长时间抓包时定期导出
sniffer_dump 2 /root/capture_part1.cap
sniffer_release 2  # 清空缓冲区
# 继续抓包...

3. 选择合适的网卡

- 活跃网卡(DHCP=true)
- 有流量的网卡(Usable=true)
- 避免虚拟网卡(loopback)

性能优化

减少数据量

# 使用BPF过滤器(在抓包阶段)
# 注意:MSF的sniffer不直接支持BPF
# 建议在Wireshark中进行后期过滤

及时导出

# 避免缓冲区溢出
# 定期导出并清空

安全与隐蔽

反检测技巧

1. 避免大量抓包触发告警
2. 注意目标是否为蜜罐
3. 检测虚拟机环境
4. 清理操作痕迹

蜜罐识别

# 在信息收集阶段已执行
run post/windows/gather/checkvm# 如果是蜜罐特征:
- 过于完美的配置
- 诱饵文件
- 监控进程
- 异常的网络流量

实践任务与技能提升

基础任务

  1. 环境搭建
    • 在虚拟机中安装Windows 7/10
    • 获得Meterpreter会话
    • 成功加载Sniffer模块
  2. 基础抓包
    • 识别可用网卡
    • 抓取100个数据包
    • 导出并用Wireshark打开
  3. 协议识别
    • 识别DNS查询
    • 识别ICMP Ping
    • 识别DHCP交互

进阶挑战

  1. 流量分析
    • 抓取访问网站的完整流程
    • 分析TCP三次握手
    • 识别HTTP请求和响应
  2. 敏感信息发现
    • 查找未加密的HTTP流量
    • 提取Cookie信息
    • 发现明文传输的密码
  3. 自动化脚本
    • 编写自动抓包脚本
    • 实现定时导出
    • 自动化协议统计

学习资源

官方文档

  • Wireshark User’s Guide 地址 https://www.wireshark.org/docs/
  • Metasploit Documentation 地址 https://docs.metasploit.com/

练习平台

  • Wireshark Sample Captures
  • PacketLife.net PCAP库
  • Malware-Traffic-Analysis.net

推荐书籍

  • 《Wireshark网络分析就这么简单》
  • 《Wireshark数据包分析实战》
  • 《网络协议分析与实战》

总结

网络嗅探是渗透测试中不可或缺的技能,通过本文的学习,读者应该能够:

核心能力

  1. 工具使用
    • 熟练使用MSF的Sniffer模块
    • 掌握Wireshark的基本操作
    • 理解PCAP文件格式
  2. 协议理解
    • 深入理解DHCP、DNS、ICMP、NTP协议
    • 掌握协议栈分层结构
    • 识别常见网络流量模式
  3. 分析技巧
    • 熟练使用Wireshark过滤表达式
    • 快速定位目标流量
    • 提取有价值的信息

实战价值

信息收集

网络拓扑发现
服务识别
版本探测
敏感信息泄露

安全评估

明文传输检测
弱加密识别
异常流量分析
攻击行为取证

内网渗透

ARP欺骗配合
中间人攻击
横向移动辅助
凭证窃取

持续提升

深化方向

  1. 学习更多协议(HTTP、SSL/TLS、SMB等)
  2. 掌握流量重组技术
  3. 研究加密流量分析
  4. 学习IDS/IPS规则编写

实战演练

  1. 参与CTF比赛的取证题目
  2. 分析真实恶意流量样本
  3. 搭建复杂网络环境
  4. 模拟APT攻击流量分析

最后寄语

网络嗅探技术是一把双刃剑,既可以用于安全防护,也可能被滥用于非法监听。作为安全从业者,我们必须:

  • 遵守法律法规:只在授权环境中进行
  • 保护隐私数据:不窃取、不传播敏感信息
  • 职业道德:用技术保护而非侵犯
  • 持续学习:技术在进步,我们也要与时俱进

掌握网络嗅探技术,不仅是为了发现漏洞,更是为了理解网络通信的本质,从而构建更加安全的网络环境。

重要声明:本文所有内容仅供学习和合法授权的安全测试使用。未经授权的网络监听和数据包捕获都是违法行为,将承担相应法律责任。在学习过程中,请使用虚拟机隔离环境或已获得授权的测试网络,切勿在生产环境或他人网络中进行操作。

http://www.dtcms.com/a/523611.html

相关文章:

  • CICD实战(11) - 使用Arbess+GitLab实现PHP项目自动化部署
  • 南京需要做网站的公司施工企业汛期应急预案
  • HarmonyOS 超级终端与服务卡片开发:打造无缝多设备交互体验
  • TeamViewer 手机版:一键远程控制,深度管理,提升多设备管理效率
  • Day70 基于 Mailbox 机制的多线程传感器数据处理系统设计与实现
  • ORM 使用说明
  • 为什么要做手机网站百媚导航app入口app入口
  • 第八章-Tomcat调试与监控
  • 算法基础篇(8)贪心算法
  • 第二章-Tomcat核心架构拆解
  • 带你深度了解作用域和闭包
  • 【Mac下通过Brew安装Ollama 】部署 DeepSeek 轻量模型(实测版)
  • 微信网站用什么语言开发wordpress4.9.4 安装
  • 如何在百度提交自己的网站简要列举网站常见类型
  • 机器视觉HALCON:5.图像标定
  • 【跟小嘉学习JavaWeb开发】第三章 从数据类型说起
  • CTF WEB入门 爆破篇
  • NAT网络地址转换
  • 【自然语言处理】预训练01:词嵌入(word2vec)
  • 利用inscode帮我用前端页面展示分析博客数据
  • 「赤兔」Chitu 框架深度解读(十):任务调度与并发控制策略
  • Java CompletableFuture 详解与实战:让异步编程更优雅
  • 建设外贸网站要多少钱建设局办的焊工证全国通用吗
  • Linux_基础IO(2)
  • Docker 中使用Nginx 一个端口启动多个前端项目
  • S9 顺序队列
  • 函数绑定器 std::bind
  • STM32基本定时器
  • 第9部分-性能优化、调试与并发设计模式
  • 编程素养提升之EffectivePython(Builder篇)