“Wireshark怎么抓HTTPS流量”“怎么从流量中分析攻击”“显示过滤器怎么写”Wireshark是网络流量分析的标准工具。无论是排查网络故障、分析攻击行为还是做流量取证Wireshark都是必备技能。在护网和应急响应中流量分析是发现攻击的关键手段。一个精心构造的攻击可能绕过WAF、绕过IDS但流量中总会留下痕迹。能不能发现取决于你对流量分析的理解深度。我第一次用Wireshark分析攻击流量是在应急响应中通过过滤HTTP流量发现了一波扫描和爆破的请求顺藤摸瓜找到了攻击者利用的漏洞。从此以后流量分析成了我排查安全事件的第一步。今天我把Wireshark的完整知识整理出来抓包配置、过滤器语法、协议分析、攻击识别、流量取证。看完这篇你用Wireshark不再只是看个热闹。⚠️ 注意流量分析仅用于安全运维和防御目的。一、Wireshark基础核心功能功能说明实时抓包捕获网络接口流量协议解析支持2000协议解析过滤器捕获过滤显示过滤流分析TCP流重组和跟踪统计分析协议分级、IO图表导出对象导出HTTP/DNS/SMB对象界面布局┌─────────────────────────────┐ │ 过滤器栏 │ ├─────────────────────────────┤ │ 数据包列表区 │ ├─────────────────────────────┤ │ 数据包详情区 │ ├─────────────────────────────┤ │ 数据包原始数据 │ ├─────────────────────────────┤ │ 状态栏 │ └─────────────────────────────┘抓包配置1. 选择接口 → Capture → Options 2. 混杂模式Promiscuous mode→ 开启 3. 捕获过滤器 → 限定抓包范围 4. 输出文件 → 设置自动轮转 5. 开始抓包捕获过滤器BPF语法# 只抓指定主机host192.168.1.10# 只抓指定端口port80port80or port443# 排除指定主机nothost192.168.1.5# 组合过滤host192.168.1.10 and port80srchost192.168.1.10 and dst port443# 抓指定协议tcp udp icmp arp# 不抓广播和组播not broadcast and not multicast二、显示过滤器基本语法# 基本比较ip.addr192.168.1.10 ip.src192.168.1.5 tcp.port80http.request.methodPOST# 逻辑运算http and ip.addr192.168.1.10 tcp.port80or tcp.port443not arp and not icmp# 协议过滤http dns tls tcp udp# 字段比较http.response.code200http.request.uri containsadmintcp.flags.syn1frame.len1000常用过滤器速查过滤器说明ip.src x.x.x.x源IPip.dst x.x.x.x目标IPtcp.port 80TCP端口udp.port 53UDP端口httpHTTP流量http.request.method POSTPOST请求http.response.code 200200响应http.request.uri contains unionURL含uniondnsDNS流量dns.qry.name contains evilDNS查询含eviltls.handshake.type 1TLS Client Hellotcp.flags.syn 1 tcp.flags.ack 0SYN包tcp.flags.reset 1RST包frame.len 1000大于1000字节tcp.analysis.retransmissionTCP重传组合过滤器# 找SQL注入攻击http.request.uri containsunionor http.request.uri containsselector http.request.uri containssleepor http.request.uri containsbenchmark# 找目录扫描http.response.code404or http.response.code403# 找密码爆破http.request.methodPOSTand http containspassword# 找Webshell上传http.request.methodPOSTand(http.request.uri containsuploador http.request.uri containsfileor http.file_data containseval)# 找反弹Shelltcp.flags.syn1and tcp.flags.ack0and ip.src!192.168.0.0/16# 找DNS隧道dns.qry.name.len50or dns.qry.name containsbase64三、协议分析HTTP分析# 查看HTTP请求http.request# 跟踪HTTP流右键 → Follow → HTTP Stream# 提取HTTP对象File → Export Objects → HTTP# 查看POST请求内容http.request.methodPOST# 在详情区查看FormDataDNS分析# 所有DNS查询dns.qry.name# 特定域名查询dns.qry.name containsmalicious# DNS响应中的IPdns.a# DNS隧道检测# 特征超长子域名、高频查询、TXT记录异常dns.qry.name.len50dns.txtTLS/SSL分析# TLS握手tls.handshake.type1# Client Hellotls.handshake.type2# Server Hello# 查看SNI服务器名指示tls.handshake.extensions_server_name# HTTPS解密需要私钥Edit → Preferences → Protocols → TLS → Add → 配置IP/端口/密钥文件TCP分析# TCP三次握手tcp.flags.syn1tcp.flags.ack0# SYNtcp.flags.syn1tcp.flags.ack1# SYN-ACKtcp.flags.syn0tcp.flags.ack1# ACK# TCP流跟踪右键 → Follow → TCP Stream# 查看TCP重传tcp.analysis.retransmission# 查看TCP连接建立和关闭tcp.flags.syn1or tcp.flags.fin1or tcp.flags.reset1四、攻击流量识别1. 端口扫描# TCP SYN扫描特征大量SYN包少量回应tcp.flags.syn1tcp.flags.ack0# 统计扫描源IP# Statistics → IPv4 Statistics → Destination# 或使用过滤器后查看端点统计扫描类型流量特征SYN扫描大量SYN无完整连接全连接扫描完成三次握手UDP扫描大量UDP包ICMP不可达端口扫描短时间内大量不同端口2. 密码爆破# HTTP爆破特征# 大量POST请求大量401/403响应http.request.methodPOSTand(http.response.code401or http.response.code403)# SSH爆破特征# 大量SSH连接相同源IPsshand tcp.flags.syn1# RDP爆破特征tcp.port3389and tcp.flags.syn1# 统计连接频率3. SQL注入# GET注入http.request.uri containsunionor http.request.uri containsselector http.request.uri contains# POST注入http.request.methodPOSTand(http.file_data containsunionor http.file_data containsselector http.file_data containssleep)# 时间盲注特征# 请求后出现固定延迟的响应4. Webshell通信# 一句话木马特征http.request.methodPOSTand(http.file_data containsevalor http.file_data containssystemor http.file_data containsexecor http.file_data containspassthru)# 命令执行特征http.file_data containswhoamior http.file_data containsnet useror http.file_data containsid;5. 反弹Shell# 常见反弹Shell端口tcp.dstport4444or tcp.dstport1234or tcp.dstport9001# Bash反弹特征tcp.stream and data contains/dev/tcp/or data containsbash -i# 特征内网主机主动外连非常见端口ip.src192.168.0.0/16 and tcp.flags.syn1and tcp.flags.ack0and tcp.dstport notin{80,443,53,25,22}6. 挖矿木马# 常见矿池连接# Stratum协议特征tcp.port3333or tcp.port5555or tcp.port7777or tcp.port14444# 常见矿池域名tls.handshake.extensions_server_name containspoolor tls.handshake.extensions_server_name containsminingor dns.qry.name containsxmror dns.qry.name containsmonero五、统计分析协议分级# Statistics → Protocol Hierarchy# 查看各协议占比# 异常大量未知协议或非常见端口通信端点统计# Statistics → Endpoints# 查看通信端点# 异常内网主机与未知外网IP大量通信会话统计# Statistics → Conversations# 查看IP间会话# 异常某IP与大量主机通信可能扫描IO图表# Statistics → I/O Graphs# 查看流量趋势# 异常突发大流量可能数据外泄或DDoS六、流量取证提取文件# HTTP对象提取File → Export Objects → HTTP# 可提取上传/下载的文件# SMB对象提取File → Export Objects → SMB# 从TCP流中提取数据Follow TCP Stream → 数据部分 → Save as数据包还原# 还原完整HTTP会话# 使用 tshark 命令行工具tshark-rcapture.pcap-Yhttp-Tfields\-eframe.time-eip.src-eip.dst\-ehttp.request.method-ehttp.request.uri\-ehttp.response.code# 提取所有URLtshark-rcapture.pcap-Yhttp.request-Tfields\-ehttp.host-ehttp.request.uri# 提取DNS查询tshark-rcapture.pcap-Ydns.qry.name-Tfields\-edns.qry.name|sort-uPCAP分析自动化fromscapy.allimportrdpcap,TCP,IP,Rawdefanalyze_pcap(pcap_file):分析PCAP文件提取关键信息packetsrdpcap(pcap_file)urlsset()dns_queriesset()suspicious_ipsset()forpktinpackets:# 提取HTTP URLifpkt.haslayer(Raw)andpkt.haslayer(TCP):payloadpkt[Raw].load.decode(utf-8,errorsignore)ifGET inpayloadorPOST inpayload:startpayload.find( )1endpayload.find( HTTP)ifstartend:pathpayload[start:end]urlf{pkt[IP].dst}{path}urls.add(url)# 检测可疑外连ifpkt.haslayer(TCP)andpkt.haslayer(IP):tcppkt[TCP]ippkt[IP]# 非常见端口外连iftcp.flagsSandtcp.dportnotin[80,443,53,22,25]:suspicious_ips.add(f{ip.src}→{ip.dst}:{tcp.dport})print(fURL数量:{len(urls)})forurlinsorted(urls):print(f{url})print(f\n可疑外连:{len(suspicious_ips)})foripinsorted(suspicious_ips):print(f{ip})# 使用analyze_pcap(capture.pcap)七、tshark命令行工具# 基本统计tshark-rcapture.pcap-q-zio,stat,0# 协议统计tshark-rcapture.pcap-q-zio,phs# 会话统计tshark-rcapture.pcap-q-zconv,tcp# 提取HTTP请求tshark-rcapture.pcap-Yhttp.request-Tfields\-eframe.time-eip.src-ehttp.host-ehttp.request.uri# 提取DNS查询tshark-rcapture.pcap-Ydns.qry.name-Tfields-edns.qry.name# 按时间过滤tshark-rcapture.pcap-Yframe.time 2024-09-25 10:00:00\-Yframe.time 2024-09-25 11:00:00# 提取特定IP的流量tshark-rcapture.pcap-Yip.addr 192.168.1.10八、实战案例案例1分析Web攻击1. 过滤HTTP请求http.request 2. 查看异常URIhttp.request.uri contains union 3. 跟踪TCP流查看完整请求和响应 4. 提取上传文件Export Objects → HTTP 5. 分析攻击路径从扫描到利用的完整过程案例2检测数据外泄1. 统计大流量会话Statistics → Conversations 2. 过滤外连流量ip.dst ! 192.168.0.0/16 3. 查看上传数据http.request.method POST 4. 分析数据内容Follow TCP Stream 5. 提取外传文件Export Objects案例3排查入侵行为1. 时间线分析IO Graph查看流量趋势 2. 协议分析Protocol Hierarchy看异常协议 3. 会话分析Conversations找异常连接 4. 深入分析Follow TCP Stream看具体内容 5. 取证提取导出文件和关键数据九、Wireshark快捷键快捷键功能CtrlK捕获选项CtrlE开始/停止捕获CtrlR重新打开文件CtrlF查找数据包CtrlN查找下一个CtrlM标记/取消标记ShiftCtrlM跳转到下一个标记CtrlG跳转到指定包AltN下一个会话十、学习资源Wireshark是网络分析的基础工具。无论是应急响应、入侵检测还是网络运维流量分析能力都是核心竞争力。工具本身不难学难的是对协议的理解和对攻击流量的敏锐识别。从基本过滤到攻击识别从协议分析到流量取证每一步都需要大量的实战练习。建议多抓一些靶场环境的流量反复分析各种攻击的流量特征。如果你对网络安全和流量分析感兴趣想系统学习更多知识——包括网络协议、入侵检测、应急响应、CTF实战等——可以参考下面整理的完整学习资料包。内容涵盖从零基础到实战进阶200节视频课程配套工具和靶场环境涵盖攻防对抗全生命周期。这些东西我都可以免费分享给大家需要的可以点这里自取:网安入门到进阶资源总结分析维度核心方法过滤筛选显示过滤器精确过滤协议分析逐层解析协议字段攻击识别匹配攻击流量特征统计分析协议分级/会话/IO图表取证提取导出对象/跟踪流/tshark 流量是攻击的指纹。再隐蔽的攻击在流量中也会留下痕迹。学会流量分析等于拥有了看见一切的能力。————————————————