ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

2021国赛Wireshark流量分析实战:从pcap到攻击链还原

2021国赛Wireshark流量分析实战:从pcap到攻击链还原 2021年那场国赛不知道有多少人跟我一样在Wireshark这道题上栽了跟头。事后复盘才发现这题压根不是在考你记了多少协议而是考你在乱糟糟的流量包里能不能快速定位到关键的那几秒。中职网络安全赛项的流量分析部分向来是拉开分差的地方而2021年的题目在思路上又跟往年不太一样——它更贴近真实攻击场景了。这篇文章我不想单纯贴一张答卷而是想把当年这道题从审题、到逐步拆解、再到最终拿分的完整过程捋一遍把我踩过的坑和后来带学生复盘时总结的经验一起放进来。不管你是正在备赛的选手还是带赛的指导老师这篇文章应该都能给你一些值得参考的东西。1. 整体思路拆解为什么2021年的题跟平时练的不一样1.1 先说清楚这场比赛在考什么中职网络安全赛项里的流量分析本质上就是给你一个pcap包让你扮演一个网络安全分析人员从抓包文件里还原出攻击者的行为链条。2021年的题目包装成了一次比较典型的“内网失陷”场景某个公司内部的主机被人攻陷了攻击者在机器上做了一系列操作你需要通过分析流量包把这些操作还原出来。它考的不只是你会不会用Wireshark而是你有没有一套清晰的流量分析思路。我把历年的题目放在一起对比过2021年这题的命题逻辑有几处明显变化。第一题目不再只考单一协议而是HTTP、DNS、TCP、ARP这些协议混在一起出现你需要自己判断哪段流量是关键的第二攻击链的完整性更强从最初的扫描探测、到利用漏洞上传文件、再到建立连接执行命令甚至可能包括内网横向移动的痕迹整个链路是连贯的第三有些信息不是直接就能看出来的比如攻击者可能对传输内容做了编码或者变形你得有还原的意识。1.2 拿到流量包后第一步不是急着打开Wireshark很多选手一看到pcap文件第一反应就是双击打开然后盯着那一堆花花绿绿的包发呆。这是最大的误区。我自己的习惯是先把题目全部读完把每一个问题的关键词圈出来。国赛的流量分析题一般会配5到10个小问每一问都在暗示你一个方向。举个例子如果题目问“攻击者使用了什么扫描工具”那你心里就应该有数要找的是扫描阶段的流量特征大概率是大量的TCP SYN包或者是某种特定指纹的HTTP请求如果题目问“攻击者上传了什么文件”那你关注的重点就应该切换到HTTP POST请求或者FTP的上传通道上。带着问题去看流量包效率会高很多而不是漫无目的地翻包。2021年的题目我印象中比较明确的几个问题是攻击者用什么方式做的端口扫描、扫描发现了哪些开放端口、通过什么漏洞拿到的权限、上传的木马文件名是什么、连接木马的密码是什么、攻击者从哪个IP发起的攻击。这些问题串起来其实就是一条完整的攻击链。1.3 这题的考核点其实集中在三个层面第一个层面是协议基础的掌握程度。你至少要能在不查资料的情况下快速判断一个包是TCP的三次握手、是DNS的查询响应还是HTTP的GET请求。第二个层面是Wireshark的操作熟练度能不能熟练使用过滤表达式、统计功能、追踪流功能这决定了你的分析速度。第三个层面才是真正的分水岭——你能不能把零散的包串联成一个有逻辑的故事。2021年这道题在设计上就比较巧妙地考了这三个层面。如果你只是会用过滤器那最多拿到一半分只有当你能够把扫描、入侵、上传、连接这条线完整还原出来才算真正把这题吃透了。下面我拆开来细讲。2. 核心细节解析2021年国赛流量分析的关键考点2.1 端口扫描阶段的流量特征识别任何一次攻击扫描往往是第一步。在2021年的流量包里扫描阶段的特征其实非常明显就看你会不会看。打开流量包之后我习惯先用Statistics菜单下的Conversations或者Endpoints看一眼有哪些IP在通信先把通信主体确定下来。这一步很关键它能帮你快速锁定攻击者和受害者。在2021年那道题里攻击者的IP和受害者的IP之间的通信流量明显异常——短时间内有大量目标端口不同的TCP SYN包。这就是典型的端口扫描行为。Wireshark里有一个非常好用的过滤表达式tcp.flags.syn 1 tcp.flags.ack 0这个表达式能筛出所有只有SYN标志位、没有ACK标志位的包。正常情况下这种包只出现在TCP三次握手的第一步数量不会特别多。如果你发现这个过滤器筛出来成千上万个包而且目标端口是在规律地变化那基本可以断定这是扫描流量。当时我用这个方法筛完之后发现扫描源IP集中在某个地址上目标是内网的一台主机。扫描的端口范围很大从常见端口到高位端口都有覆盖。这时候还需要进一步判断扫描方式。关于扫描方式有一个很实用的判断技巧如果你看到大量SYN包发出去之后紧接着有对应的SYNACK包返回那说明目标端口是开放的这是半连接扫描或者全连接扫描的特征如果只看到SYN包发送没有回应那就是在探测端口是否关闭。2021年这道题里攻击者扫描出了好几个开放端口其中就包括后面被利用的Web服务端口和远程管理端口。这道题的答案就在这个结论里。2.2 HTTP协议分析找到漏洞利用和木马上传的痕迹扫描完成之后攻击者找到了可以利用的服务紧接着就是漏洞利用阶段。2021年题目里攻击者利用的漏洞点在Web服务上这也符合近年来国赛的出题偏好——Web攻击始终是重中之重。在分析这个阶段时我用了一个比较高效的过滤方式直接筛选HTTP请求。Wireshark的显示过滤器支持http.request可以筛出所有HTTP请求报文。筛完之后再把请求方法为POST的单独挑出来因为上传文件、提交数据基本都是通过POST请求完成的。2021年这道题里通过筛选HTTP请求可以看到攻击者先向一个特定的URL发送了带有恶意数据的请求。如果你对常见的Web漏洞有了解看到这个URL的结构和POST的数据内容基本就能判断出这是利用了文件上传漏洞。为了确认我通常会右键点击可疑的请求包选择Follow-HTTP Stream把整个HTTP会话内容完整地看一遍这样能看到请求头和响应体的全部内容包括上传的文件名和服务器返回的状态码。这里需要特别提醒一下Wireshark的HTTP流追踪有一个小坑如果HTTP请求和响应之间还夹杂着其他协议的包流追踪的内容可能会显得不太连续这时候不要慌可以尝试调整TCP流的编号找到最完整的那个会话。2.3 提取攻击者上传的文件从流量里还原木马这是2021年题目的一个核心得分点也是很多人丢分的地方。攻击者上传的木马文件就藏在HTTP的POST请求里你需要把它提取出来才能回答跟木马相关的后续问题。Wireshark提供了非常方便的文件导出功能。在HTTP流追踪窗口里你会看到请求报文里有一个叫Content-Disposition的字段它后面跟的filename参数就是文件名。还记得这题要求回答上传的木马文件名吗答案就在这个字段里。我当时让学生做这题时反复强调过一句话文件名字段不一定是真的文件名攻击者可能会伪装成图片或者文本文件你需要结合HTTP响应的返回状态和后续的通信行为来判断哪个才是真正的木马。提取文件有两种常用方式。第一种是File-Export Objects-HTTP这个功能会把流量包中所有通过HTTP传输的文件对象列出来你可以根据文件大小、修改时间等信息判断哪个是可疑的然后直接保存到本地。第二种是手动复制在HTTP流追踪窗口中找到POST报文里两个空行之后的部分那部分就是文件内容但要注意传输过程中可能经过了编码需要相应地解码还原。在2021年的题目里提取出来的文件我印象中是一个脚本文件。如果你用文本编辑器打开它能看到里面包含了连接密码等敏感信息。这些信息都是后面几道小问的答案。所以这一步做得好不好直接决定了你能拿下多少分。2.4 DNS和ARP流量分析不能忽视的辅助线索Web流量是2021年题目的主战场但DNS和ARP流量同样不能忽视。有些选手看到非HTTP流量就跳过了结果丢了一些基础分非常可惜。在分析攻击链的完整性时DNS流量可以帮助你判断攻击者是否进行了域名解析甚至是否存在DNS隧道传输的行为。2021年题目里我记忆中DNS的流量不算特别复杂但通过DNS查询记录可以辅助确认受害主机的身份信息。你可以在Wireshark的显示过滤器里输入dns.qry.name contains 关键词来筛选特定域名的DNS查询记录快速定位可疑的域名解析行为。ARP流量在2021年题目里也有一个考点就是判断是否存在ARP扫描或者ARP欺骗的迹象。如果你看到某个IP在短时间内发送了大量的ARP请求请求的目标IP在规律地变化那这很可能是一次ARP扫描目的是发现内网中存活的主机。用过滤器arp可以把所有ARP报文筛出来再结合Statistics里的Endpoint功能就能很清楚地看到ARP通信的双方。2.5 TCP协议分析与连接状态判断TCP协议分析在流量分析题里属于基础中的基础。2021年题目里虽然没直接考“请说明TCP三次握手的过程”这种题但你对TCP连接状态的判断能力会直接影响你对整个攻击链的理解。举个例子当攻击者通过Web漏洞上传了木马之后下一步往往是要主动连上去这时候会产生一条新的TCP连接。判断这条连接是否成功建立就要看是否完成了三次握手。在Wireshark里你可以用过滤器tcp.stream eq 编号来追踪某一条TCP流的完整交互过程从而判断连接是否建立成功、传输了什么数据。另外还有一个值得关注的点是TCP重传和异常断连。2021年题目里攻击者在执行完命令之后可能有意识地清理了痕迹比如主动断开连接或者关闭会话。如果你在追踪流的时候发现连接是异常终止的比如出现了RST包那说明攻击者可能比较谨慎这也可以作为入侵痕迹的一部分写在分析报告里。3. 实操过程与核心环节实现完整跑一遍2021年国赛流量分析题3.1 环境准备与Wireshark配置做流量分析之前先把环境配置好这个环节看似简单但直接影响后面的分析效率。我用的是Wireshark 3.x以上的版本如果你还在用老旧版本建议先升级。新版本在HTTP/2解析、TLS解密支持、界面流畅度上都有明显改进。然后我们需要在Edit-Preferences-Protocols里做几个关键配置IPv4和IPv6的重组功能要打开TCP的Allow subdissector to reassemble TCP streams选项要确保勾选这样Wireshark才能正确重组跨多个数据包的完整数据流。另外建议把时间显示格式改成“相对时间”或者“自参考时间”。在View-Time Display Format里可以选择Seconds Since Beginning of Capture这样能直观地看到从抓包开始到某个事件发生经过了多长时间后续分析攻击时序时会非常有用。我还有一个个人习惯就是给不同协议上色让重点流量更容易被注意到。Wireshark默认的上色规则已经能区分常见协议但你可以自己添加一条规则专门给包含攻击特征的流量标成醒目的颜色。虽然这不是必须的但在分析几百MB的大流量包时确实能帮你快速锁定关键区域。3.2 从粗筛到精确定位我的四步分析法我给学生总结过一套四步分析法这套方法在2021年国赛题上亲测有效。第一步宏观摸底。打开流量包之后先不急着过滤用Statistics-Capture File Properties查看流量包的基本信息包括总包数、抓包时长、文件大小。然后用Statistics-Conversations查看通信双方的流量排行用Statistics-Protocol Hierarchy查看各协议的数据包分布情况。这套组合拳打完你对流量包的整体画像就出来了谁在和谁通信、主要用了哪些协议、哪些协议的数据量异常大。第二步异常发现。异常通常来自于跟常态不一样的行为。如果你发现某个IP的数据包数量远超其他IP或者某个协议的包数量在短时间内激增这就是重点研究对象。2021年题目里的扫描行为就属于典型的数据包激增异常。第三步聚焦关键。根据题目的问题判断攻击链当前处于哪个阶段然后选择相应的过滤条件来缩小范围。比如要找扫描阶段就过滤SYN包要找木马上传就过滤HTTP POST请求。第四步深挖细节。定位到关键包之后使用Follow流、Export Objects等功能把细节完整地挖出来。这一步也是最耗时间的但答案往往就藏在这些细节里。3.3 关键环节实战演示还原一次完整的攻击会话下面我用一个假设但非常贴近2021年国赛的场景完整演示一次分析过程。假设我们已经通过宏观摸底确定了两个通信主体分别记为IP_A攻击者和IP_B受害者。首先筛选IP_A发给IP_B的所有TCP SYN包ip.src IP_A ip.dst IP_B tcp.flags.syn 1 tcp.flags.ack 0如果筛出来几百上千个包且目标端口分布在不同的数值上这就是扫描行为。把结果按目标端口排序可以看到哪些端口收到了SYN包。再筛选包含SYNACK响应的包ip.src IP_B tcp.flags.syn 1 tcp.flags.ack 1对比两个结果就能得出哪些端口是真正开放的。这个结论直接对应题目里的“扫描发现了哪些开放端口”。接下来查找针对Web服务的攻击流量。输入过滤器http.request ip.addr IP_B筛出所有发往受害者的HTTP请求。逐条查看请求URL和方法重点看POST请求。找到可疑的上传请求后右键Follow-HTTP Stream完整的请求和响应内容就展示出来了。从Content-Disposition字段提取文件名再从POST数据区提取文件内容并保存。后续的题目就围绕着这个文件展开。整个流程说着快实操下来大概需要20到30分钟前提是你对过滤器语法足够熟练。我建议备赛期间把上面这些过滤表达式练到条件反射的程度考场上省下的每一分钟都是拿分的关键。3.4 用统计功能辅助排查隐蔽通信2021年题目里有一个小问我记得是需要分析攻击者是否与受害主机建立了某种隐蔽的通信通道或者是否存在异常的长连接。这种问题如果单纯靠肉眼翻包效率极低。Wireshark的Statistics-Conversations里有一个非常有用的信息——每个TCP会话的数据包数量和总字节数。正常的一次性请求响应数据包数量很少如果发现某条TCP流的数据包数量异常多、持续时间异常长这就是值得深入调查的可疑连接。点开那条流的详情再双击进入追踪会话就能看到完整的通信内容。如果通信内容看起来像是经过了编码或者加密比如大段看不出含义的字符串那很可能就是攻击者建立的隐蔽通道。2021年这道题的答案就在这里。4. 常见问题与排查技巧实录4.1 过滤不出任何结果怎么办这是新手最常遇到的问题明明输入了过滤器但结果区空空如也。排查思路很简单——先去掉过滤器确定流量包里确实存在该协议的包。你可以用Statistics-Protocol Hierarchy看一下这个协议的数据包计数。如果计数是0那就是流量包里确实没有这种协议的包你需要检查是不是看错了协议类型如果计数不是0那就是过滤器表达式语法有误检查一下字段名、标点符号是不是写错了。另外一个常见的原因是大小写问题。Wireshark的过滤字段名通常是区分大小写的比如http.request里http全小写request全小写不能写成HTTP.Request。如果你是从网上复制的过滤表达式贴进来之后最好再手敲一遍避免格式问题。4.2 追踪TCP流时内容不完整在分析HTTP上传文件的场景中经常遇到这种情况追踪TCP流时发现内容断断续续或者只有请求没有响应。这个问题的根源在于TCP分段传输——一个完整的HTTP报文可能被拆分到了多个TCP包中如果Wireshark没有正确重组内容就会显得不完整。解决办法是在Edit-Preferences-Protocols-TCP里确保Allow subdissector to reassemble TCP streams这个选项是勾选状态。此外在追踪TCP流时Wireshark会提示你有几条子流substream你可以尝试切换不同的子流编号找到信息最完整的那一条。2021年题目里我就遇到过需要切换子流的情况这个操作技巧在考场上非常实用。4.3 导出文件失败了可能是编码方式的问题还有一种情况是你找到了POST请求里的文件内容但保存下来之后发现文件无法打开或者打开后是乱码。这通常是因为传输过程中对数据进行了编码最常见的是base64编码。这时候你需要先把提取到的数据做base64解码再保存为文件。在Windows上可以用PowerShell快速解码[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(这里粘贴base64内容))Linux或macOS上更简单直接用命令行工具echo 这里粘贴base64内容 | base64 -d output.bin如果你是命令行不熟练的新手也可以直接问ChatGPT之类的工具帮忙解码但赛场环境不一定允许外网访问所以本地掌握解码能力比较稳妥。4.4 无法判断哪个IP是攻击者有时候流量包里涉及的IP比较多一时难以判断谁是攻击者。我的判断依据有两个第一看通信行为的主动性。主动发起大量扫描请求、主动发送恶意数据的一方大概率是攻击者。第二看IP出现的频率和行为模式。攻击者的IP通常是孤立的只跟少数目标通信而且通信模式有明显的扫描特征。另外可以结合时间线来判断。正常的业务通信在时间分布上相对均匀攻击行为往往在短时间内集中爆发。在Wireshark里按照时间排列数据包观察哪个IP的行为在某个时间点突然变得异常活跃那个IP基本上就是你要找的攻击者。5. 从2021年国赛看Wireshark流量分析的备考方向5.1 2021年题目给后续备赛带来的三点启示第一点基础协议知识必须扎实。2021年题目中涉及的HTTP、TCP、DNS、ARP全是基础协议没有偏门冷门的协议。但恰恰是这些基础协议组合在一起构成了一条完整的攻击链。很多选手在单个协议上没问题但放在复合场景中就反应不过来根源还是对协议的理解不够深入只知其然不知其所以然。第二点需要建立攻击链思维。流量分析不只是“看包”而是要“破案”。每次分析前先想清楚攻击者可能的攻击路径从信息收集到漏洞利用再到权限维持每一步对应什么流量特征心中有数之后再动手看包效率会大幅提升。第三点工具操作要形成肌肉记忆。考场上时间紧张你不能一边翻笔记一边过滤流量。Wireshark的常用快捷键、过滤器语法、追踪流、导出对象这些操作平时要练到闭着眼也能完成的程度。5.2 推荐的Wireshark学习路线考虑到中职学生的基础我的建议是分三个阶段推进。第一阶段是熟悉界面和基本操作重点是掌握数据包列表、数据包详情、数据包字节这三个面板的联动关系以及保存、过滤、查找这几个核心操作。第二阶段是深入协议分析。选择一个常见协议比如HTTP找一些包含Web访问的pcap包把每一个HTTP请求从头到尾拆解一遍搞清楚请求行、请求头、请求体之间的逻辑关系。这个阶段的目标是建立“看到包就能说出它是什么”的能力。第三阶段是综合实战。找一些完整的CTF流量分析题目来做条件允许的话可以自己搭建环境模拟攻击自己抓包自己分析。这个阶段的目标是把零散的技能整合成完整的分析能力。5.3 一些给选手的心里话回到开头的场景。2021年国赛那套题我当时在现场看到不少选手在HTTP流量里翻来翻去却始终找不到木马文件不是因为他们不会用Wireshark而是因为他们缺少一个关键的思路流量分析题里的每一个问题都不是孤立的它们是相互关联、环环相扣的。你看到的每一个可疑现象都可能是在暗示下一个问题的答案。平时做题的时候不要只满足于“把答案做出来”而是要追问自己出题人为什么这么问这个流量特征为什么能反映这种行为如果换成别的攻击方式流量会有什么不同想通了这些问题你才能真正进步。我个人带赛这几年的体会是流量分析是网络安全赛项里性价比比较高的一个模块它不依赖复杂的工具链也不需要高深的编程功底只要你肯花时间刷题、肯动脑子总结成绩的提升是非常可观的。希望这篇文章能帮你把2021年这套题吃透也希望你在考场上看到流量包的时候心里是踏实的。
返回列表