Wireshark在渗透测试实战中的 30 个分析技巧
Wireshark 作为网络分析领域的 “瑞士军刀”,凭借其开源免费、功能强大的特性,成为网络安全工程师、渗透测试人员及运维人员排查网络问题、检测攻击行为的核心工具。
一、精准获取关键流量
Wireshark 的核心价值始于 “精准捕获”—— 若捕获的流量无关或冗余,后续分析将无从谈起。此部分技巧聚焦 “如何过滤无效流量、锁定目标范围”,避免因捕获数据量过大导致分析效率低下。
技巧 1:基于网卡与 VLAN 的定向捕获
- • 适用场景:多网卡服务器、虚拟化环境或划分 VLAN 的网络,需排除无关网卡 / 网段流量。
- • 操作步骤:
- 1. 打开 Wireshark 后,在 “捕获接口” 列表中,勾选目标网卡(如 “以太网”“Wi-Fi”,或虚拟机的 “VMnet1”);
- 2. 若需捕获特定 VLAN 流量,在捕获前点击 “选项”,在 “捕获过滤器” 中输入vlan [VLAN ID](如vlan 10),仅捕获 VLAN 10 的帧;
- 3. 对于 trunk 口流量,可先捕获所有 VLAN 帧,后续通过 “显示过滤器”vlan.id`` == 10筛选。
- • 注意事项:部分无线网卡不支持 “监控模式”,需提前确认硬件兼容性,避免无法捕获 802.11 帧。
技巧 2:用捕获过滤器减少冗余数据
- • 核心逻辑:捕获阶段过滤无效流量(如广播包、已知正常 IP 的流量),而非捕获后再筛选,降低 CPU 与存储占用。
- • 常用过滤规则:
- • 捕获特定 IP 的双向流量:host ``192.168.1.100(捕获 192.168.1.100 的发送与接收流量);
- • 捕获特定端口的流量:port 80 or port 443(仅捕获 HTTP/HTTPS 流量);
- • 排除广播 / 组播包:not broadcast and not multicast;
- • 捕获特定协议流量:tcp或udp或icmp(仅捕获 TCP/UDP/ICMP 协议)。
- • 实战提示:捕获过滤器语法基于 Berkeley Packet Filter(BPF),需注意 “与 / 或 / 非” 的优先级(and高于or,复杂规则需加括号)。
技巧 3:环形缓冲区避免磁盘占满
- • 适用场景:长时间监控(如 24 小时排查间歇性故障),防止捕获文件过大耗尽磁盘空间。
- • 配置步骤:
- 1. 捕获前点击 “选项”→“输出”,勾选 “创建环形缓冲区文件”;
- 2. 设置 “文件数量”(如 10)与 “每个文件的大小”(如 100MB),总存储上限为 1GB;
- 3. 选择存储路径,启用 “文件满时覆盖旧文件”,确保持续捕获不中断。
- • 数据安全:环形缓冲区会覆盖旧文件,需提前估算故障可能发生的时间,避免关键数据被覆盖(建议结合 “时间戳命名”,如capture_%Y%m%d_%H%M%S.pcap)。
技巧 4:远程捕获跨网段流量
- • 适用场景:需监控远程服务器(如云端主机、机房服务器)的流量,本地无法直接接入目标网络。
- • 实现方式:
- 1. 基于 SSH 的远程捕获:在远程主机安装tcpdump(Linux)或Wireshark(Windows),本地通过 SSH 端口转发:远程执行:tcpdump -i eth0 -w - host ``10.0.0.5`` | ssh user@local-ip "cat > /local/path/capture.pcap"本地打开capture.pcap即可分析;
- 2. 基于 Wireshark Remote:在远程主机启动 Wireshark 的 “远程捕获服务”(Edit→Preferences→Capture→Remote Interfaces),本地添加远程主机 IP 与端口,直接选择远程网卡捕获。
- • 权限要求:远程捕获需具备目标主机的管理员权限(如 Linux 的root、Windows 的 “管理员”),且需开放 SSH 或远程捕获端口(默认 2002),注意防火墙策略配置。
技巧 5:按时间范围筛选捕获数据
- • 适用场景:已知故障发生的大致时间(如 “14:30 左右出现断网”),仅捕获该时间段的流量,减少数据量。
- • 操作步骤:
- 1. 捕获时点击 “视图”→“时间显示格式”,选择 “日期和时间(当地时区)”,便于对齐故障时间;
- 2. 若已捕获完整流量,可通过 “编辑”→“时间范围”→“设置”,输入起始时间(如2025-12-15 14:25:00)与结束时间(如2025-12-15 14:35:00),仅显示该时间段的帧;
- 3. 导出筛选后的流量:“文件”→“导出指定分组”,选择 “显示的分组”,保存为新的 pcap 文件,便于后续分析。
二、从流量中识别异常
网络攻击往往会在协议层面留下痕迹 —— 如异常的 TCP 握手、畸形的 HTTP 请求、未经授权的 SMB 访问等。此部分技巧聚焦 “如何通过协议细节发现异常”,覆盖 TCP、HTTP、DNS、SMB 等常用协议的关键分析点。
技巧 6:TCP 三次握手与四次挥手的异常检测
- • 正常逻辑:三次握手(SYN→SYN+ACK→ACK)、四次挥手(FIN→ACK→FIN→ACK),无异常重传或超时。
- • 异常场景与分析方法:
- 1. SYN 洪水攻击:显示过滤器tcp.flags.syn == 1 and tcp.flags.ack == 0,若短时间内出现大量来自不同 IP 的 SYN 包,且无后续 ACK 响应,可能是 SYN 洪水;
- 2. 半开连接:筛选tcp.analysis.retransmission(重传),若某 IP 的 SYN 包反复重传但无 ACK,可能是目标主机端口未开放或被防火墙拦截;
- 3. 异常挥手:出现tcp.flags.fin == 1 and tcp.flags.rst == 1(FIN+RST),可能是应用程序异常崩溃或强制关闭连接。
- • 实战工具:Wireshark 的 “统计”→“TCP 流图”→“时序图”,可直观查看连接建立与关闭的时间线,快速定位异常节点。
技巧 7:HTTP 协议中的恶意请求识别
- • 核心分析点:HTTP 请求行、请求头、请求体中的异常内容,如注入语句、恶意 UA、未授权访问路径。
- • 常用显示过滤器与分析技巧:
- 1. 查找 SQL 注入尝试:http.request.uri contains "union" or http.request.uri contains "select" or http.request.uri contains "and 1=1"(需结合业务场景,避免误判正常查询);
- 2. 识别恶意 User-Agent:http.user_agent contains "nmap" or http.user_agent contains "sqlmap" or http.user_agent contains "Burp Suite"(扫描工具的特征 UA);
- 3. 检测敏感路径访问:http.request.uri contains "/admin" or http.request.uri contains "/phpmyadmin" or http.request.uri contains "/backup"(未授权访问尝试);
- 4. 查看 POST 请求体:选中 HTTP POST 包,展开 “Hypertext Transfer Protocol”→“Request Body”,检查是否包含畸形数据(如超长参数、特殊字符)。
- • 注意事项:HTTPS 流量需先解密(见技巧 10),否则无法查看请求内容;部分攻击会通过编码(如 URL 编码、Base64)隐藏恶意内容,需复制请求内容到解码工具验证。
技巧 8:DNS 协议的异常解析排查
- • DNS 异常场景:DNS 劫持、DNS 放大攻击、恶意域名解析(如解析到钓鱼 IP)。
- • 分析步骤与过滤器:
- 1. 检测 DNS 劫持:筛选目标域名的解析记录,dns.qry.name == "``example.com``" and dns.flags.response == 1,对比返回的 IP 是否为官方备案 IP,若解析到陌生 IP,可能是劫持;
- 2. 识别 DNS 放大攻击:dns.flags.rcode == 0 and dns.qry.type == 16(请求 DNS 服务器的 “区域传输”,若允许则可能泄露域名所有记录),或短时间内大量dns.qry.type == 255(ANY 请求,放大流量);
- 3. 查找恶意域名:结合威胁情报,筛选dns.qry.name contains ".``malware-domain.com``"(已知恶意域名),或解析到的 IP 在黑名单中(如通过 “WHOIS” 查询 IP 归属)。
- • 辅助工具:“统计”→“DNS”→“DNS 查询响应时间”,若某域名的响应时间远超正常范围(如超过 1 秒),可能是 DNS 服务器异常或网络延迟。
技巧 9:SMB 协议的未授权访问与勒索病毒痕迹
- • 适用场景:Windows 环境中,SMB 协议(445 端口)是勒索病毒(如 WannaCry)、横向移动的常用载体。
- • 关键分析点与过滤器:
- 1. 未授权访问尝试:smb.cmd == 0x73(SMB 登录请求),若出现大量smb.nt_status == 0xc000006d(登录失败,用户名 / 密码错误),可能是暴力破解;
- 2. SMBv1 漏洞检测:smb.version == 1,SMBv1 存在永恒之蓝(EternalBlue)漏洞,若网络中仍有设备使用 SMBv1,需优先整改;
- 3. 文件加密痕迹:smb.cmd == 0x02(SMB 写入文件),若某主机短时间内向大量共享文件夹写入.locked或.crypt后缀的文件,可能是勒索病毒正在加密文件。
技巧 10:HTTPS 流量解密(基于私钥 / 会话密钥)
- • 前提条件:需拥有服务器的 SSL/TLS 私钥(如 Nginx 的server.key),或客户端与服务器的会话密钥(如 Chrome 的SSLKEYLOGFILE)。
- • 两种解密方式:
- 1. 基于私钥解密:
- • 操作步骤:Wireshark→“编辑”→“首选项”→“Protocols”→“TLS”→“RSA keys list”→“添加”;
- • 填写 “IP 地址”(服务器 IP)、“端口”(443)、“协议”(http)、“密钥文件”(私钥路径)、“密码”(私钥密码,若有);
- • 重新加载 pcap 文件,即可看到解密后的 HTTP 内容(显示为 “HTTP” 而非 “TLSv1.2”)。
- 1. 基于会话密钥解密:
- • 客户端配置(以 Chrome 为例):设置环境变量SSLKEYLOGFILE=C:\sslkeylog.log,启动 Chrome 后,所有 HTTPS 会话密钥会写入该文件;
- • Wireshark 配置:“首选项”→“TLS”→“(Pre)-Master-Secret log filename”,选择sslkeylog.log,即可实时解密 Chrome 的 HTTPS 流量。
- • 限制条件:若使用 ECDHE 等 “前向保密”(PFS)算法,仅私钥无法解密,需会话密钥;部分浏览器(如 Firefox)需手动开启 “密钥日志” 功能。
技巧 11:ICMP 协议的异常探测识别
- • 正常场景:ping(ICMP Echo Request/Reply)、 traceroute(ICMP Time Exceeded)。
- • 异常场景与分析:
- 1. ICMP 洪水攻击:显示过滤器icmp.type == 8(Echo Request),若短时间内来自同一 IP 的 ICMP 包超过 1000 个 / 秒,可能是 ICMP 洪水(需结合带宽占用情况判断);
- 2. ICMP 隧道(数据渗透):icmp.data(ICMP 包的数据部分),若 ICMP 包的数据字段包含非随机字符(如 Base64 编码、JSON 格式),可能是攻击者通过 ICMP 隧道传输数据(如ptunnel工具);
- 3. 伪造 ICMP Redirect:icmp.type == 5(Redirect),若收到来自非网关 IP 的 Redirect 包,可能是攻击者伪造路由信息,试图劫持流量。
技巧 12:UDP 协议的异常流量检测
- • UDP 特点:无连接、不可靠,常用于 DNS(53)、DHCP(67/68)、VoIP(5060)等场景,也是 DDoS 攻击的常用载体。
- • 关键分析技巧:
- 1. UDP 洪水攻击:udp过滤器,结合 “统计”→“流量图”→“端点”,查看某 IP 的 UDP 发送速率,若超过 100Mbps 且无正常业务(如非 DNS 服务器却占用 53 端口),可能是 UDP 洪水;
- 2. DHCP 欺骗:dhcp过滤器,筛选dhcp.message_type == 2(DHCP Offer),若出现多个 IP 发送 DHCP Offer(正常应只有一个 DHCP 服务器),可能是攻击者伪造 DHCP 服务器,试图分配恶意网关;
- 3. UDP 端口扫描:udp.port >= 1 and udp.port 65535,若某 IP 向多个随机 UDP 端口发送小字节包(如 10 字节),且无响应,可能是 Nmap 的-sU端口扫描。
技巧 13:ARP 欺骗的流量溯源
- • ARP 欺骗原理:攻击者发送伪造的 ARP 响应,将网关 IP 的 MAC 地址映射为自身 MAC,劫持目标主机的流量。
- • 分析步骤:
- 1. 捕获本地 ARP 包:显示过滤器arp;
- 2. 查看 ARP 缓存表:在 Wireshark 中,“统计”→“ARP 缓存”,对比正常网关的 MAC 地址(可通过arp -a命令在本地查询);
- 3. 定位欺骗源:若发现多个 ARP 响应中,网关 IP(如 192.168.1.1)对应的 MAC 地址不是路由器的真实 MAC,而是某主机的 MAC(如 00:11:22:33:44:55),则该主机即为 ARP 欺骗源;
- 4. 验证欺骗行为:筛选arp.opcode == 2(ARP 响应),若某 MAC 地址频繁发送针对网关 IP 的 ARP 响应(如每秒多次),可确认是主动欺骗。
技巧 14:FTP 协议的明文密码抓取
- • FTP 特点:用户名 / 密码通过明文传输,可直接从流量中提取。
- • 操作步骤:
- 1. 显示过滤器ftp,筛选 FTP 控制连接(21 端口);
- 2. 查找ftp.request.command == "USER"(用户名请求)和ftp.request.command == "PASS"(密码请求);
- 3. 提取 credentials:在ftp.request.arg字段中,USER对应的参数是用户名,PASS对应的参数是密码(如ftp.request.arg == "admin"和ftp.request.arg == "123456")。
- • 风险提示:此技巧仅用于授权的安全测试,未经允许抓取他人密码属于违法行为;生产环境应禁用 FTP,改用 SFTP(22 端口,加密传输)。
技巧 15:NTP 协议的放大攻击检测
- • NTP 放大攻击原理:攻击者向 NTP 服务器发送小字节的monlist请求,服务器返回大量包含客户端 IP 的响应包,放大流量攻击目标。
- • 分析方法:
- 1. 显示过滤器ntp,筛选ntp.opcode == 0x10(monlist请求,对应 NTPv4 的REQ_MON_LIST);
- 2. 对比请求与响应的大小:正常monlist请求约 48 字节,响应可能包含数百个客户端 IP,大小超过 1KB;
- 3. 定位攻击源:若某 IP 向多个 NTP 服务器发送monlist请求,且响应包的目标 IP 是同一台主机,该 IP 即为攻击源;
- 4. 防御建议:禁用 NTP 服务器的monlist功能(如 NTPd 添加disable monitor配置),限制 NTP 请求频率。
三、攻击检测:定位恶意行为与溯源(技巧 16-25)
当网络出现异常(如带宽突增、主机断网、数据泄露)时,Wireshark 可通过流量特征定位攻击类型,并追溯攻击源。此部分技巧覆盖常见的网络攻击场景,如 DDoS、数据泄露、横向移动等。
技巧 16:DDoS 攻击的流量特征与源 IP 定位
- • 核心思路:DDoS 攻击的核心特征是 “流量集中、来源分散(或单一)、无正常业务逻辑”,需结合流量规模与协议特征判断。
- • 不同 DDoS 类型的分析技巧:
- 1. TCP SYN Flood:(见技巧 6),通过tcp.flags.syn == 1 and tcp.flags.ack == 0筛选,使用 “统计”→“端点”→“IPv4”,按 “发送数据包” 排序,若前 10 个 IP 均为陌生 IP 且发送大量 SYN 包,可定位为攻击源;
- 2. UDP Flood:(见技巧 12),查看 “统计”→“流量图”→“比特率”,若 UDP 比特率突增至 1Gbps 以上,且无 DNS/DHCP 等正常业务,结合 “端点” 中的 IP 发送量,定位攻击源;
- 3. HTTP Flood:http.request筛选,若某 IP 每秒发送超过 100 个 HTTP 请求(正常用户约 1-5 个 / 秒),且请求路径重复(如反复请求/login),可能是 HTTP Flood 攻击源;
- 4. 反射型 DDoS:(如 DNS 放大、NTP 放大),筛选响应包(如dns.flags.response == 1),查看响应包的 “源 IP”(反射服务器)和 “目标 IP”(攻击目标),再通过请求包(dns.flags.response == 0)查找真实攻击源(请求的发送者)。
- • 工具辅助:使用 “统计”→“ conversations”→“IPv4”,查看 “Bytes” 列,若某 IP 的发送字节远超正常范围,可能是攻击源。
技巧 17:数据泄露的流量痕迹排查
- • 适用场景:怀疑内部数据被窃取(如员工通过 FTP/HTTP 上传敏感文件到外部服务器),需从流量中查找证据。
- • 分析步骤:
- 1. 筛选大文件传输:
- • TCP 流量:tcp.len > 10000(单帧数据超过 10KB,可能是文件传输),结合 “追踪 TCP 流”(右键→“追踪流”→“TCP 流”),查看流内容是否包含敏感数据(如 Excel 表格、SQL 备份文件);
- • HTTP 流量:http.request.method == "POST" and http.content_length > 100000(POST 请求体超过 100KB,可能是上传文件),查看 “Request Body” 或导出文件(右键→“导出对象”→“HTTP”,保存可疑文件);
- 1. 查找外部可疑 IP:对比内部 IP 与外部 IP 的通信,筛选ip.src == ``192.168.1.0/24`` and ip.dst != ``192.168.1.0/24(内部向外部发送流量),查看外部 IP 是否为陌生地址,且传输数据量较大;
- 2. 检测加密隧道:若发现某 IP 与外部 IP 的流量均为 “TLSv1.3” 且无明显业务(如非访问官网),结合 “统计”→“流量图”,若流量持续稳定(如 100KB/s),可能是通过 HTTPS 隧道传输敏感数据(需会话密钥解密,见技巧 10)。
技巧 18:横向移动的流量检测
- • 横向移动定义:攻击者获取一台主机的控制权后,通过远程桌面(RDP)、SMB、SSH 等协议访问其他主机,扩大攻击范围。
- • 关键协议与分析技巧:
- 1. RDP(3389 端口):tcp.port == 3389,筛选tcp.flags.syn == 1,若某内部主机(如 192.168.1.10)向多个其他内部主机(如 192.168.1.20、192.168.1.30)发起 RDP 连接,且该主机非管理员常用主机,可能是横向移动;
- 2. SMB(445 端口):smb.cmd == 0x73(登录请求),若某主机(如 192.168.1.10)向多个主机发送 SMB 登录请求,且大量出现smb.nt_status == 0xc000006d(登录失败),可能是暴力破解 SMB 密码以横向移动;
- 3. SSH(22 端口):tcp.port == 22,筛选ssh.msg_code == 5(SSH 用户认证请求),若某主机短时间内尝试多个用户名(如root、admin、user)登录其他主机,可能是 SSH 暴力破解;
- 4. WMI(135 端口):tcp.port == 135 and rpc.program == 105(WMI 的 RPC 程序号),若某主机通过 WMI 远程调用其他主机的命令(如wmiexec工具),流量中会出现rpc.call请求,且包含Win32_Process等 WMI 类名。
技巧 19:恶意软件(如木马、后门)的通信识别
- • 恶意软件通信特征:固定时间间隔发送心跳包、与境外 IP 通信、使用非标准端口(如 8080、9999)、流量加密但无正常 TLS 握手。
- • 分析方法:
- 1. 查找心跳包:筛选tcp.len == 32(常见心跳包大小,如 32 字节),结合 “统计”→“TCP 流图”→“时序图”,若某 IP 每 10 秒发送一次固定大小的 TCP 包,且无其他数据交互,可能是心跳包;
- 2. 定位境外 IP:通过 “统计”→“端点”→“IPv4”,导出 IP 列表,使用 WHOIS 工具(如whois ``1.2.3.4)查询 IP 归属地,若大量 IP 来自高危地区(如无业务往来的国家),需重点排查;
- 3. 非标准端口通信:筛选tcp.port not in {80,443,22,3389,53}(排除常用端口),查看 “Conversations” 中是否有高频通信的非标准端口(如 12345、6666),且通信主机无明确业务关联;
- 4. 异常加密流量:tls过滤器,若某 TLS 流无 “Server Hello” 或 “Client Hello”(正常 TLS 握手的起始包),仅为随机字节,可能是恶意软件使用自定义加密协议通信。
技巧 20:端口扫描的流量识别
- • 端口扫描特征:短时间内对多个端口发送探测包(如 SYN、CONNECT、NULL 包),且无后续业务数据。
- • 不同扫描类型的分析:
- 1. SYN 扫描(半开扫描):tcp.flags.syn == 1 and tcp.flags.ack == 0,某 IP 向目标主机的 1-10000 端口发送 SYN 包,且无 ACK 响应(目标端口关闭)或有 SYN+ACK 响应(目标端口开放),但无后续 ACK(不建立完整连接);
- 2. CONNECT 扫描(全连接扫描):tcp.flags.syn == 1 and tcp.flags.ack == 1(三次握手完成),但连接建立后立即发送 FIN 包(tcp.flags.fin == 1),无数据传输,且涉及多个端口;
- 3. NULL 扫描(无标志位扫描):tcp.flags == 0(无任何 TCP 标志位),某 IP 向多个端口发送 NULL 包,若目标返回 RST 包(tcp.flags.rst == 1),表示端口关闭;
- 4. UDP 扫描:udp.port >= 1 and udp.port 0,某 IP 向多个 UDP 端口发送小字节包(如 10 字节),若目标无响应(端口开放)或返回 ICMP 端口不可达(icmp.type == 3 and icmp.code == 3,端口关闭)。
- • 快速定位:使用 “统计”→“端口分析”→“TCP” 或 “UDP”,查看某 IP 的 “端口访问数量”,若超过 100 个端口,且无正常业务(如非运维扫描),可能是恶意端口扫描。
技巧 21:钓鱼攻击中的恶意 URL 与文件传输识别
- • 钓鱼攻击流量特征:通常包含恶意 URL 跳转、诱导下载恶意文件(如.exe、.docm),或通过 HTTP/HTTPS 传输钓鱼页面。
- • 分析步骤与过滤器:
- 1. 定位恶意 URL 跳转:
- • 筛选http.response.code == 302(临时跳转)或http.response.code == 301(永久跳转),查看 “Location” 字段(http.location),若指向陌生域名(如http://fake-bank.example.com),可能是钓鱼跳转;
- • 结合http.request.uri contains "login" or http.request.uri contains "verify",若跳转后的页面 URL 包含钓鱼关键词,需进一步验证页面内容。
- 1. 检测恶意文件下载:
- • 筛选http.response.content_type contains "application/exe" or http.response.content_type contains "application/msword"(可执行文件、宏文件),或http.response.content_length > 500000(大于 500KB 的可疑文件);
- • 导出文件验证:右键选中 HTTP 响应包→“导出对象”→“HTTP”,保存文件后通过杀毒软件(如 Virustotal)扫描,确认是否为恶意程序。
- 1. 识别钓鱼页面传输:
- • 筛选http.request.uri contains "phish" or http.request.uri contains "fake",查看 HTML 响应体(http.response.body),若包含模仿官方网站的登录表单(如仿银行、仿企业邮箱),可判定为钓鱼页面。
- • 实战提示:钓鱼攻击常利用短链接(如bit.ly、tinyurl.com)隐藏真实 URL,需通过在线短链接解析工具(如unshorten.it)还原真实地址,再结合 Wireshark 流量验证。
技巧 22:IoT 设备异常通信的流量排查
- • IoT 设备特点:多采用轻量级协议(如 MQTT、CoAP)、固定周期发送状态数据、硬件性能有限(易被入侵),异常通信多表现为与陌生 IP 交互、发送大量垃圾数据。
- • 关键分析点与过滤器:
- 1. MQTT 协议异常检测:
- • 显示过滤器mqtt,正常 MQTT 通信包含 “CONNECT→CONNACK→PUBLISH” 流程,若出现大量mqtt.msgtype == 1(CONNECT)且无 CONNACK 响应,可能是设备反复尝试连接异常 MQTT 服务器;
- • 查看mqtt.topic(主题),若出现mqtt.topic contains "malware" or mqtt.topic contains "attack",或 PUBLISH 消息体(mqtt.payload)包含二进制恶意数据,需警惕设备被劫持。
- 1. CoAP 协议异常检测:
- • 显示过滤器coap,CoAP 默认使用 UDP 5683 端口,若某 IoT 设备(如摄像头、智能插座)向非网关 IP 的 5683 端口发送大量coap.code == 0.01(GET 请求),且无正常业务关联,可能是被控制发送攻击流量。
- 1. 异常数据发送:
- • 筛选ip.src == [IoT设备IP] and ip.dst not in {[网关IP], [正常服务器IP]},若 IoT 设备向境外 IP 发送固定周期的小字节包(如每秒 1 次,16 字节数据),可能是被植入后门后发送心跳包。
- • 防御建议:IoT 设备需禁用默认密码(如 “admin/admin”)、限制仅与指定服务器通信,通过 Wireshark 定期监控设备流量,建立正常通信基线(如每日发送数据量、交互 IP 范围),偏离基线即触发告警。
四、流量溯源与工具联动
单一依赖 Wireshark 难以完成复杂攻击的全链路溯源,需结合日志、威胁情报、其他分析工具,形成 “流量捕获→特征提取→溯源定位→处置响应” 的闭环。此部分技巧聚焦 “Wireshark 与外部工具的联动”,提升分析效率。
技巧 23:结合 Zeek(Bro)日志扩展流量分析维度
- • Zeek 优势:自动解析流量并生成结构化日志(如 conn.log、http.log、dns.log),支持自定义脚本提取威胁特征,可与 Wireshark 互补(Wireshark 擅长数据包级分析,Zeek 擅长批量日志统计)。
- • 联动分析步骤:
- 1. 用 Zeek 预处理流量:
- • 执行zeek -r capture.pcap,生成 conn.log(连接日志)、http.log(HTTP 日志)等文件;
- • 查看 conn.log,筛选duration > 3600(长连接)、orig_bytes > 10000000(发送超过 10MB 数据)的连接,定位可疑 IP 对(如192.168.1.100:54321`` → ``2.3.4.5:8080)。
- 1. Wireshark 精准定位数据包:
- • 在 Wireshark 中使用显示过滤器ip.src == ``192.168.1.100`` and ip.dst == ``2.3.4.5`` and tcp.port == 54321,聚焦 Zeek 识别的可疑连接;
- • 追踪 TCP 流(右键→“追踪流”→“TCP 流”),查看数据交互内容,确认是否为恶意通信(如命令执行、数据窃取)。
- 1. 自定义 Zeek 脚本提取特征:
- • 编写简单脚本(如detect_syn_flood.zeek),提取 SYN 洪水特征并输出到日志,再用 Wireshark 筛选日志中的攻击源 IP,验证流量细节。
- • 工具安装:Zeek 支持 Linux/macOS,可通过官方源(apt install zeek)或源码编译安装,Windows 需通过 WSL(Windows Subsystem for Linux)运行。
技巧 24:利用威胁情报验证可疑 IP / 域名
- • 核心逻辑:通过威胁情报平台(如 Virustotal、AbuseIPDB、IBM X-Force)查询 Wireshark 中识别的可疑 IP / 域名,确认是否为已知恶意资产,缩短溯源时间。
- • 联动操作步骤:
- 1. 提取可疑资产:
- • 在 Wireshark 中 “统计”→“端点”→“IPv4”,导出发送 / 接收字节量异常的 IP 列表;或 “统计”→“DNS”→“域名”,导出解析频率高的域名列表。
- 1. 威胁情报查询:
- • IP 查询:访问 AbuseIPDB(abuseipdb.com),输入可疑 IP(如2.3.4.5),查看 “滥用类型”(如 “DDoS 攻击源”“恶意软件分发”)、“报告次数”,若评分超过 80 分(满分 100),可判定为恶意 IP;
- • 域名查询:访问 Virustotal(virustotal.com),输入可疑域名(如malware-example.com),查看 “检测结果”,若超过 5 个杀毒引擎标记为 “恶意”,或 “WHOIS” 显示注册时间小于 30 天(新注册的恶意域名),需重点关注;
- • 批量查询:使用 Python 脚本调用威胁情报 API(如 Virustotal API),批量导入 Wireshark 导出的 IP / 域名列表,自动筛选恶意资产(需申请 API 密钥)。
- 1. 流量验证:
- • 对情报标记为恶意的 IP / 域名,在 Wireshark 中用显示过滤器ip.src == [恶意IP] or ip.dst == [恶意IP]或dns.qry.name == [恶意域名],查看具体通信内容,确认是否存在攻击行为(如恶意软件下载、数据回传)。
- • 注意事项:威胁情报存在 “时效性”(旧情报可能失效)和 “误报率”(正常 IP 可能被误标记),需结合 Wireshark 流量细节交叉验证,避免误判。
技巧 25:Wireshark 与 Wireshark CLI(tshark)的批量分析
- • tshark 优势:Wireshark 的命令行版本,支持批量处理 pcap 文件、自动化提取特征(如批量筛选恶意 IP、统计协议分布),适合处理大量捕获文件(如环形缓冲区生成的多个 pcap)。
- • 常用 tshark 命令与实战场景:
- 1. 批量提取 HTTP 请求中的可疑 UA:
- • 命令:tshark -r capture.pcap -T fields -e ip.src -e http.user_agent -Y "http.user_agent contains 'sqlmap' or http.user_agent contains 'Burp Suite'"
- • 作用:从 pcap 文件中提取使用扫描工具 UA 的 IP 和对应的 User-Agent,快速定位扫描源。
- 1. 统计各协议的数据包占比:
- • 命令:tshark -r capture.pcap -q -z io,phs
- • 作用:输出协议分层统计(如 Ethernet、IP、TCP、HTTP 的数据包数量和占比),若 TCP 数据包占比超过 80% 且多为 SYN 包,可能是 TCP 洪水攻击。
- 1. 批量筛选并导出恶意流量:
- • 命令:tshark -r capture.pcap -w malicious.pcap -Y "ip.src == ``2.3.4.5`` or dns.qry.name == '``malware-example.com``'"
- • 作用:从原始 pcap 中筛选出与恶意 IP / 域名相关的流量,保存为新文件(malicious.pcap),供后续深入分析。
- 1. 实时监控并记录异常流量:
- • 命令:tshark -i eth0 -w realtime.pcap -f "host ``192.168.1.100``" -Y "tcp.flags.syn == 1 and tcp.flags.ack == 0"
- • 作用:实时捕获目标 IP(192.168.1.100)的流量,并仅保存 SYN 包,用于监控是否遭受 SYN 洪水攻击。
- • 实战提示:tshark 的过滤语法与 Wireshark 一致(显示过滤器用-Y,捕获过滤器用-f),可结合 Shell 脚本(如 Bash、PowerShell)实现自动化分析(如每日凌晨批量处理前一天的 pcap 文件)。
技巧 26:结合防火墙日志定位攻击入口
- • 核心逻辑:防火墙日志记录了 “允许 / 拒绝” 的流量规则、源 IP、目标 IP、端口等信息,若 Wireshark 捕获到内部主机与恶意 IP 通信,可通过防火墙日志追溯攻击流量是否从特定端口、特定外网接口进入,辅助调整防火墙策略。
- • 联动分析步骤:
- 1. 从 Wireshark 提取关键信息:
- • 定位恶意连接:如内部主机 192.168.1.100 与外部 IP 2.3.4.5 的 443 端口通信(ip.src == ``192.168.1.100`` and ip.dst == ``2.3.4.5`` and tcp.port == 443),记录通信时间(如 2025-12-15 15:30:00)、协议(TCP)。
- 1. 查询防火墙日志:
- • 以华为防火墙为例,登录 Web 管理界面→“日志中心”→“流量日志”,筛选条件:“源 IP=192.168.1.100”“目的 IP=2.3.4.5”“目的端口 = 443”“时间 = 2025-12-15 15:29:00-15:31:00”;
- • 查看日志中的 “动作” 字段,若为 “permit”(允许),需确认对应的防火墙规则(如 “允许内部网段访问外网 443 端口”),判断是否为规则配置过宽导致攻击流量进入;若为 “deny”(拒绝),则需确认为何 Wireshark 仍捕获到该流量(可能是防火墙未覆盖该网段,或流量从其他接口进入)。
- 1. 调整防御策略:
- • 若攻击流量通过特定端口进入,在防火墙中添加 “拒绝源 IP=2.3.4.5” 的规则;
- • 若为规则过宽(如允许所有内部 IP 访问外网任意端口),细化规则为 “仅允许业务相关 IP 访问指定端口”(如仅允许 192.168.1.200 访问外网 80/443 端口)。
- • 注意事项:防火墙日志需开启 “详细日志” 模式(记录完整的 IP、端口、时间),否则无法与 Wireshark 流量精准匹配;不同厂商防火墙日志格式不同(如 Cisco、Palo Alto),需熟悉对应日志字段含义。
技巧 27:利用 Elastic Stack 存储与可视化分析流量数据
- • Elastic Stack 组成:Elasticsearch(存储数据)、Logstash(采集与处理数据)、Kibana(可视化与查询),可将 Wireshark 捕获的 pcap 数据转换为结构化日志,实现大规模流量的长期存储、多维度查询与可视化展示(如攻击流量趋势图、恶意 IP 分布地图)。
- • 部署与联动步骤:
- 1. 数据采集与处理(Logstash):
- • 安装 Logstash 的 pcap 插件(logstash-filter-pcap),编写配置文件(logstash.conf):
input {
  file {
  path => "/path/to/capture.pcap"
  start\_position => "beginning"
  }
}
filter {
  pcap {
  type => "pcap"
  }
  \# 提取关键字段(如IP、端口、协议、HTTP UA)
  mutate {
  add\_field => {
  "src\_ip" => "%{\[layers]\[ip]\[ip\_src]}"
  "dst\_ip" => "%{\[layers]\[ip]\[ip\_dst]}"
  "src\_port" => "%{\[layers]\[tcp]\[tcp\_srcport]}"
  "dst\_port" => "%{\[layers]\[tcp]\[tcp\_dstport]}"
  "http\_ua" => "%{\[layers]\[http]\[http\_user\_agent]}"
  }
  }
}
output {
  elasticsearch {
  hosts => \["http://localhost:9200"]
  index => "wireshark-traffic-%{+YYYY.MM.dd}"
  }
}
- • 执行logstash -f logstash.conf,将 pcap 数据转换为结构化日志并写入 Elasticsearch。
- 1. 数据可视化与查询(Kibana):
- • 在 Kibana 中创建索引模式(Index Pattern):“Management”→“Index Patterns”→输入 “wireshark-traffic-*”,匹配 Elasticsearch 中的流量索引;
- • 构建可视化图表:
- • “Discover”:查询特定条件的流量(如 “src_ip:2.3.4.5 AND dst_port:443”),查看详细日志;
- • “Visualize Library”:创建 “折线图” 展示 “每小时 SYN 包数量”,定位 DDoS 攻击时间;创建 “地图” 展示 “恶意 IP 的地理分布”(需结合 GeoIP 插件);
- • “Dashboards”:整合多个可视化图表,生成 “网络安全流量监控面板”,实时查看攻击趋势、协议分布、恶意 IPTOP10。
- 1. 与 Wireshark 联动:
- • 在 Kibana 中发现可疑流量(如某 IP 发送大量 SYN 包),记录该 IP、时间范围、端口,再在 Wireshark 中用显示过滤器精准定位对应的数据包,深入分析攻击细节。
- • 适用场景:大型企业或安全运营中心(SOC),需长期存储网络流量、实现多团队共享分析结果、自动化监控异常流量,Elastic Stack 可弥补 Wireshark“本地存储、单机分析” 的局限性。
五、应对复杂场景
面对加密流量(如 TLS 1.3)、大规模流量(如 10Gbps 以上)、动态端口通信等复杂场景,需结合 Wireshark 的高级功能与优化策略,提升分析效率与准确性。
技巧 28:TLS 1.3 流量的关键信息提取(无会话密钥)
- • TLS 1.3 特点:握手过程简化(1-RTT/0-RTT)、加密算法更强(如 AES-GCM、ChaCha20)、会话密钥无法通过私钥提取(前向保密强制启用),若无法获取会话密钥(如无客户端配合),需通过未加密字段(如 SNI、ALPN)提取关键信息。
- • 分析技巧与过滤器:
- 1. 提取服务器名称(SNI):
- • 显示过滤器tls.handshake.extensions_server_name,SNI 字段记录了客户端请求的域名(如www.example.com),即使流量加密,SNI 仍以明文传输;
- • 若发现tls.handshake.extensions_server_name contains "malware" or tls.handshake.extensions_server_name contains "phish",可能是客户端访问恶意域名,需结合源 IP 排查设备。
- 1. 识别应用层协议(ALPN):
- • 显示过滤器tls.handshake.extensions_alpn,ALPN 字段协商应用层协议(如h2=HTTP/2、http/1.1=HTTP/1.1、mqtt=MQTT);
- • 若某 IP 的 TLS 流量 ALPN 为mqtt,但该设备应为普通 PC(非 IoT 设备),可能是恶意软件通过 MQTT 协议通信。
- 1. 分析握手异常:
- • 筛选tls.handshake.type == 8(Server Hello),若出现tls.alert.description == 40(握手失败)或tls.alert.description == 80(内部错误),可能是客户端与服务器的 TLS 版本 / 加密套件不兼容,或存在中间人攻击(如防火墙拦截);
- • 对比tls.version(TLS 版本),若大量流量使用TLSv1.0(已过时,存在安全漏洞),需推动业务升级至 TLS 1.2/1.3。
- • 限制条件:无会话密钥时无法解密 TLS 1.3 的应用层数据(如 HTTP 请求体、MQTT payload),仅能通过握手阶段的明文字段分析;若需完整解密,需在客户端配置 SSLKEYLOGFILE(见技巧 10)。
技巧 29:大规模流量(10Gbps+)的捕获与分析优化
- • 挑战:10Gbps 以上的流量每秒产生数百万个数据包,直接用 Wireshark 本地捕获会导致丢包(CPU 处理不及时)、分析卡顿(数据量过大),需从 “捕获优化”“分析策略” 两方面解决。
- • 捕获优化方案:
- 1. 使用专业抓包硬件:
- • 部署带硬件加速的网卡(如 Intel X710、Mellanox ConnectX-6),支持 “流量分流”(RSS,Receive Side Scaling),将不同流的数据包分配到多个 CPU 核心,避免单核心瓶颈;
- • 搭配网络分流器(如 Arista 7150),将镜像流量按端口 / 协议拆分,仅捕获目标流量(如仅捕获 443 端口、仅捕获内部网段流量),减少数据量。
- 1. 调整操作系统与 Wireshark 配置:
- • 增加内核缓冲区:Linux 执行sysctl -w net.core.netdev_max_backlog=10000(提高网卡接收队列长度)、sysctl -w net.ipv4.tcp_mem="10240 87380 1310720"(扩大 TCP 内存);
- • Wireshark 捕获配置:“选项”→“捕获缓冲区大小” 设置为 “1GB”(减少丢包),启用 “使用 PACKET_MMAP”(Linux)或 “使用 NPF 驱动”(Windows),提升捕获效率。
- 1. 分阶段捕获与筛选:
- • 先用 tshark 批量筛选:tshark -i eth0 -f "host ``192.168.1.0/24``" -w filtered.pcap,仅保存目标网段流量;
- • 再用 Wireshark 打开 filtered.pcap 分析,避免直接处理原始 10Gbps 流量。
- • 分析策略优化:
- 1. 优先使用统计功能:通过 “统计”→“端点”“Conversations”“协议分级” 快速定位异常(如某 IP 发送字节量占比超过 50%),再针对性筛选数据包;
- 2. 拆分分析任务:将 pcap 文件按时间拆分(如用editcap -i 60 capture.pcap split_,每 60 秒生成一个文件),分时段分析,降低单文件处理压力;
- 3. 使用 Wireshark 插件:安装 “FlowGraph”“Expert Info Plus” 等插件,自动化提取流量特征(如异常流标记、攻击类型识别),减少手动筛选时间。
技巧 30:动态端口与加密隧道的流量特征识别
- • 动态端口通信特点:攻击者为规避端口监控(如仅开放 80/443 端口的防火墙),使用随机端口(如 10000-65535)建立连接,常见于后门、C2(命令与控制)通信;加密隧道则通过常规协议(如 HTTP、DNS)封装恶意流量,隐藏真实通信内容。
- • 动态端口流量分析技巧:
- 1. 筛选非标准端口的高频连接:
- • 显示过滤器tcp.port > 10000 and tcp.port 5,结合 “统计”→“Conversations”→“TCP”,按 “Packets” 排序,若某 TCP 流(如 192.168.1.100:12345 ↔ 2.3.4.5:54321)的数据包数量超过 1000,且无明显业务关联(如非 ERP、非 OA 系统),可能是动态端口通信;
- • 查看 TCP 流内容:右键→“追踪流”→“TCP 流”,若数据为随机字节(无明文协议特征),可能是加密的 C2 通信。
- 1. 检测端口扫描后的动态连接:
- • 先通过技巧 20 识别端口扫描(如 Nmap 的 SYN 扫描),记录扫描源 IP(如 3.4.5.6);
- • 筛选ip.src == ``3.4.5.6`` and tcp.port > 10000,若扫描后该 IP 与目标主机的随机端口建立连接,且连接持续时间超过 10 分钟,可能是攻击者通过动态端口植入后门。
- • 加密隧道流量分析技巧:
- 1. HTTP 隧道检测:
- • 筛选http.request.method == "POST" and http.request.uri == "/index.php"(固定路径),若 POST 请求体大小固定(如每次 1024 字节)、发送周期固定(如每 5 秒一次),且响应体无正常 HTML 内容(仅随机字符),可能是 HTTP 隧道(如reGeorg、meterpreter的 HTTP 隧道);
- • 查看http.user_agent,若为自定义 UA(如 “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.9999.99 Safari/537.36”,版本号异常),需警惕隧道工具。
- 1. DNS 隧道检测:
- • 筛选dns.qry.type == 1(A 记录)或dns.qry.type == 5(CNAME 记录),若域名查询频率超过 10 次 / 秒,且查询的域名包含特殊字符(如a1b2c3.dns-tunnel.example.com,编码后的恶意数据),可能是 DNS 隧道(如iodine、dnscat2);
- • 解析域名中的隐藏数据:将域名前缀(如 “a1b2c3”)提取,尝试 Base64 解码,若解码后为明文命令(如 “whoami”)或 C2 指令,可确认是 DNS 隧道。
- • 实战提示:动态端口与加密隧道的流量特征较隐蔽,需结合 “基线对比”(如正常业务无动态端口通信、无高频 DNS 查询)、“威胁情报”(如隧道工具的特征 UA、域名格式)交叉验证,避免漏判。
Wireshark 实战分析的核心原则
- 1. 精准捕获是前提:通过捕获过滤器、环形缓冲区、远程捕获等技巧,减少冗余数据,确保捕获的是 “关键流量”;
- 2. 协议细节是关键:熟悉 TCP、HTTP、DNS 等协议的正常逻辑,从异常握手、畸形请求、陌生交互中发现攻击痕迹;
- 3. 工具联动是提升:结合 Zeek、Elastic Stack、威胁情报,突破 Wireshark 单机分析的局限,实现大规模流量的溯源与可视化;
- 4. 业务基线是基础:建立正常网络的通信基线(如协议分布、IP 交互范围、数据量阈值),偏离基线的流量需优先排查;
- 5. 合规性是底线:仅在授权范围内使用 Wireshark 捕获流量,禁止抓取他人隐私数据(如 HTTPS 会话、FTP 密码),遵守《网络安全法》《数据安全法》等法律法规。
文章来源:乌云安全
华盟君