尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

中间人攻击流量分析实战:Wireshark取证与CTF解题

发布时间:2026/9/25 2:11:19

资讯中心
01
ARTICLE

中间人攻击流量分析实战:Wireshark取证与CTF解题

中间人攻击流量分析实战:Wireshark取证与CTF解题
做BUUCTF的Misc杂项刷题有一类题我特别推荐早点接触那就是流量分析里的中间人攻击题典型代表就是john-in-the-middle。这题不绕弯子把一个真实的攻击现场以抓包文件的形式丢给你让你在Wireshark里还原整个链路最后挖出隐藏在通信数据里的flag。对刚接触Misc的朋友来说它是从会看包到会分析包之间非常好的一座桥对已经刷过一些图片隐写、压缩包伪加密题的人来说这道题能帮你把视野从静态文件拉到一个完整的网络通信过程里。这篇文章我会从题目拆解、工具准备、实操流程到排坑心得完整过一遍尽量做到你跟着点一遍鼠标就能把这类题吃透。1. 题目拆解从名字到考点1.1 john-in-the-middle到底在说什么中间人攻击英文叫Man-in-the-Middle缩写成MITM。把它拆开看就是攻击者把自己插进通信双方之间让A以为自己在跟B说话让B以为自己在跟A说话实际上两边的消息都从攻击者手里过了一遍。用个生活里的类比就是你寄了一封信给朋友路上有个邮差把信拆开看了改了几个字又重新封好再送出去。你和朋友都不知道信被改过而邮差却把所有内容看得清清楚楚。这道题叫john-in-the-middle名字里带中间人题目给的附件通常就是一个抓好的流量包里面记录了某次通信过程中被中间人插入后的完整网络数据。作为解题者你要做的不是去发动攻击而是戴着取证分析的帽子把这个流量包里攻击者留下的痕迹、被篡改的数据、以及最后泄露出去的信息全找出来。CTF题目不会直接告诉你flag写在哪它只给你一个带着攻击结果的pcap文件剩下的全靠你对协议的理解和对工具的使用。在BUUCTF的Misc方向里这类题属于流量分析子类和单纯的图片隐写、音频隐写最大的不同是信息不再静态地藏在一个文件里而是藏在大量看似正常的网络交互过程中。你面对的可能有成百上千个数据包关键flag也许只出现在其中某一个包的一个不起眼字段里。这非常考验你对网络协议的熟悉程度也考验你抓重点的能力。1.2 这类题的考点分布与常见套路Misc流量分析题出题方向其实比较固定我大致归了这么几类明文协议信息还原HTTP、FTP、Telnet、SMTP、POP3等用户名密码直接可见或者传输的文件内容可以直接导出。加密协议绕过SSL/TLS加密流量要么通过密钥日志解密要么通过证书伪造的方式解出内容。隐蔽信道DNS隧道、ICMP隧道、甚至正常的HTTP请求里藏着编码后的数据。无线与IoT流量WiFi抓包、蓝牙抓包难度较高但BUUCTF里也有涉及。键盘流量与杂项设备USB抓包还原键盘输入这类题在Misc里已经单独立了一个小分支。john-in-the-middle这道题踩中的是前两类一个典型的中间人攻击场景下既能看到ARP欺骗的痕迹也能看到被截获或篡改后的明文数据。出题人的思路一般是攻击者先用ARP欺骗让受害者的流量经过自己然后在中间做转发可能还会做SSL剥离把HTTPS降级成HTTP这样他就能直接读取明文内容。最后这些数据被原样抓进pcap里flag就藏在其中某次请求或响应的正文里。2. 环境准备与工具选型2.1 必备工具清单做流量分析题工具不需要多花哨但一定要趁手。我推荐以下组合工具用途使用阶段Wireshark图形化协议分析看包、追踪流、过滤、导出对象核心主力tsharkWireshark的命令行版本批量处理大流量包、导出字段高效辅助binwalk / foremost从流量包里提取隐藏文件或从导出对象里挖文件后续深挖Strings直接在文件里搜可打印字符串快速找flag关键字查漏补缺Python Scapy自定义解析包有时需要脚本批量处理进阶这里我要多说一句Wireshark的版本建议直接用新版不要用太老的。新版的协议解析器更完善尤其是对HTTP/2、TLS1.3这些协议的支持更友好。做这道题时我用的是Wireshark 4.0以上版本整套流程下来没有遇到过解析报错的问题。2.2 为什么是这些工具有人可能会问为什么要用Wireshark做主力而不是用tshark一把梭我的答案是在CTF的流量分析题里第一步永远是找人而不是找数据。你要先通过图形界面快速建立对流量包的整体感知搞清楚有哪些IP、哪些协议、哪些会话然后才能决定下一步往哪个方向深挖。Wireshark的Statistics面板、Protocol Hierarchy、Conversations这几个功能就是干这个用的鼠标点多几下心里就有了谱。tshark则适合你已经明确目标之后的批量操作比如把所有HTTP请求的URL导出来、把所有DNS查询记录拉出来用命令行一条命令搞定比在图形界面里一个个翻高效得多。binwalk和foremost不是必须的但如果流量包里传过压缩包或图片用foremost直接从pcap里提取文件常常有惊喜。Strings则是兜底方案当你在协议层面找不到明显线索时直接在原始文件上搜flag、BUUCTF这类关键字有时能一击命中。这招看着笨但实战里救过我很多次。3. 实操流程一步步还原攻击过程3.1 先看全局协议分层与会话统计拿到附件第一步不是急着点开某个包而是先把流量包当成一个陌生环境来勘探。整个过程可以分成三步走第一用Wireshark打开pcap文件先看左下角的Statistics - Protocol Hierarchy。这个面板会按协议栈把各种协议的出现情况列出来比如TCP有多少包、HTTP有多少包、ARP有多少包。中间人攻击的流量包里ARP协议的出现比例通常会异常偏高因为攻击者要不停地发送伪造的ARP应答来维持欺骗状态。如果你一打开就看到ARP包的数量明显不寻常基本就可以判断这个流量包里有ARP欺骗的痕迹。第二打开Statistics - Conversations按字节数或包数排序找到通信量最大的两个IP。通常情况下受害者和服务器之间的会话会占据绝对主导攻击者的IP也会以较小流量混在其中。把会话列表过一遍能帮你快速锁定主要观察对象。第三简单过一遍Statistics - Flow Graph看看整个通信过程的时间线。如果你看到在某个时间点突然出现大量小数据包然后紧接着出现一段连续的数据传输那大概率就是攻击者在做中间转发时的特征。做完这三步再动手你心里已经有一个脚本了谁是受害者、谁是服务器、攻击者从哪里插入、哪些流量是有问题的。我见过很多朋友一开包就跟着一个TCP流看到尾看半天也没看出名堂就是因为没有先建立全局观。3.2 追踪TCP流找到被动过手脚的会话全局扫描做完接下来就要进入读内容阶段。在Wireshark里右键任何一个TCP包选择Follow - TCP Stream就能把一整条TCP连接里的所有数据拼成一条连续的流。这个功能对中间人攻击题来说是关键中的关键因为攻击者在中间修改数据时往往会把一次完整通信拆成客户端到攻击者、攻击者到服务器两段但流量包里记录的其实是合并后的效果。通过查看TCP流你看到的往往就是攻击者最终转发出去的数据。在john-in-the-middle这类题目里我通常会重点看HTTP流。HTTP是明文协议请求行、请求头、响应体全部裸露。你在TCP流里看到的内容可以直接按人类语言来读。比如一个POST请求里可能带着用户名和密码或者一个响应里直接返回了一段文件内容flag就藏在其中某个JSON字段里。需要注意的是出题人经常会把flag做一层编码最常见的是Base64其次是URL编码、十六进制字符串。看到一串看起来像乱码但结尾带等号的字符串先拉去Base64解码试试多半有惊喜。3.3 从ARP入手还原中间人的行踪ARP是中间人攻击里最常被利用的协议。ARPAddress Resolution Protocol的作用是把IP地址解析成MAC地址。正常情况下的做法是广播一个请求谁是这个IP对应设备回一个应答我是我的MAC是这个。攻击者要做的就是冒充受害者向网关发送网关的IP对应的MAC是攻击者的应答同时再冒充网关向受害者发送受害者的IP对应的MAC是攻击者的应答。这样两边的流量都会先到攻击者手里再被转发出去。在Wireshark里你可以用显示过滤器arp把所有ARP包过滤出来然后观察几条特征大量重复的ARP应答包尤其是没有对应请求的应答这违反了正常ARP协议行为。同一个IP地址在极短时间内对应了不同的MAC地址形成MAC地址漂移。ARP广播频率异常正常的局域网设备不会每秒发好几条ARP包。一旦你在流量包里找到这类特征就可以进一步确认这个pcap记录的通信过程中确实发生了ARP欺骗类的中间人攻击。这个判断本身不是解题的直接目标但它能帮你建立起正确的分析预期既然有中间人那么真正的秘密很可能就在被转发的那段数据里而不一定在通信双方自己的原始数据里。3.4 提取文件与字符串多管齐下找flag当你在TCP流里翻了好几遍还没有一眼看到flag时不要急。流量分析题的flag经常不是写在明面上的而是藏在传输的文件里。这时就用上文件提取三板斧了第一步在Wireshark里使用File - Export Objects - HTTP把流量包里所有HTTP传输过的对象图片、压缩包、脚本等全部导出来。中间人攻击过程中攻击者可能会在网页里插入一个恶意脚本或者替换掉一个下载文件这些对象就是你重点排查的目标。逐个看一遍图片用图片查看器打开压缩包用binwalk看一眼文件结构。第二步对原始pcap文件使用foremost这个工具会把文件根据文件头特征从流量包里直接切出来。我远程处理CTF题时经常先把pcap丢进foremost跑一遍看能裸奔出什么好东西。命令很简单foremost capture.pcap -o output_dir第三步动用strings大法。如果出题人只是把flag以字符串形式藏在某个包的载荷里直接用strings在pcap里搜关键字往往最快strings capture.pcap | grep -i flag需要注意这个命令搜的是原始字节流所以如果flag被Base64编码过直接搜flag或BUUCTF是搜不到的。这个时候可以把搜索扩展一下先找等号结尾的Base64字符串或者找大段无空格的连续字符块再手动解码。4. 常见问题与排查技巧4.1 流量包打开一片乱码很多新手第一次打开pcap看到Wireshark里全是带ACK、PSH标志的TCP包Follow TCP Stream后又是一堆看不懂的二进制乱码立刻头大。这里要提醒一句乱码不代表没救了。TCP流里出现乱码的常见原因有三个传输的是非文本协议数据比如图片、加密数据、压缩文件这时候要通过文件头特征去还原原始文件。流量被gzip压缩过。HTTP响应经常带Content-Encoding: gzip你在TCP流里看到的是压缩后的字节自然不是可读文本。解决办法很简单在Follow窗口里可以把数据显示方式从ASCII切换成Hex然后把整段十六进制数据保存成文件再用gunzip或脚本解压。数据包顺序错乱或丢失这通常是抓包环境导致的CTF题目里罕见但也不是没有。可以先尝试用Wireshark的Telephony - VoIP Calls或者Statistics - TCP Stream Graph辅助判断是否有丢包重传。判断该不该放弃一条乱码流标准是看这条流的长度和方向。如果它又长又连续那基本可以确定是某个关键文件值得花力气解码如果短且无规律可能只是握手包或Keep-Alive包不必纠结。4.2 加密流量束手无策中间人攻击题目最容易出现的进阶情况是流量包里同时存在HTTP和HTTPS流量flag藏在HTTPS里而你手里没有密钥。这时候有没有办法有但要分情况。第一种情况出题人比较良心想让你解TLS那他会在题目环境里提供一个TLS密钥日志文件或者在流量包里的某个对象里给你留了一个key.log。拿到这个日志后在Wireshark里设置Preferences - Protocols - TLS - (Pre)-Master-Secret log filename填入key.log路径再重新打开pcapHTTPS流量就能解密成明文了。这个操作是这类题的一个经典考点一定要掌握。第二种情况出题人做的是SSL剥离也就是把原本的HTTPS连接降级成HTTP那你看到的流量其实已经是明文了。这时你要做的是识别哪些看似正常的HTTP请求其实是被攻击者篡改过的比如页面里被注入了一段脚本、下载链接被替换成了恶意地址等。flag往往就藏在这些被改过的地方。第三种情况也是最不推荐硬磕的情况TLS1.3的前向保密流量没有密钥日志理论上不是靠分析能解的。如果遇到这种回头检查一下题目是不是还有别的线索比如有一个包含私钥的证书文件流或者题目名称里暗示了密码破解方向。4.3 过滤表达式记不住怎么办分析流量包时Wireshark的显示过滤器是最高频操作。很多人记不住一堆过滤语法其实常用的就那么几个http只看HTTP协议tcp.port 80只看80端口流量ip.addr 192.168.1.10只看某个IP的流量arp只看ARP包tls只看TLS握手包http.request.method POST只看POST请求如果实在记不住Wireshark的过滤器输入框支持提示你打几个字母它会自动补全配合CtrlE切换输入模式用起来其实很顺手。另外我习惯把自己常用的过滤条件保存成自定义按钮下次一键点击省时省力。4.4 独家心得优先看最可疑的少数字节这是我刷了大量流量分析题后最深的一条体会一个流量包里大部分包都是无聊的常规包真正决定题解的往往只是少数几个异常点。什么是异常点包长明显比同一会话的其它包大很多方向突然倒转某个包的时间戳突然延后在连续的小包中间出现一个大包这些特征都值得你停下来细看。另外养成一个习惯做题时随手在Wireshark里给可疑包打标记按CtrlM。攻击行为往往是一条线你把可疑点标出来它们之间很容易连成一个清晰的攻击故事。这道题里你标出来的ARP异常点、TCP流起点、HTTP请求的注入点最后一定会指向同一个地方那里就是藏flag的位置。5. 从题目到实战MITM取证的学习价值5.1 这类题教会我们什么john-in-the-middle这类题表面上是刷一道Misc题实际上是在练三种能力。第一种是协议理解。你做这道题时会被迫去搞懂ARP、TCP、HTTP、TLS这几种协议的基础流程。不理解ARP你就看不出那些重复应答包意味着什么不理解TCP的序列号与确认号你就看不懂Wireshark为什么把它识别成乱序包。这种知识不是背出来的是在一次次Follow TCP Stream、一次次对比包结构里自然沉淀下来的。第二种是攻击思维。你虽然是在做题但你必须站在攻击者的视角去推测他为什么要在这个时间点插入他修改了哪些数据他把flag藏在这个位置是对应哪个环节CTF的魅力就在于你既当取证者又必须是一个反向攻击者这种双重身份能让你对安全的理解更立体。第三种是耐心与细致。流量分析题最忌讳的就是想一步到位找到flag。更多时候你需要像读故事一样先看到人物IP地址再看到情节协议交互最后才看到结局flag。这种层层推进的分析习惯放到真实的安全应急响应或网络取证里是实打实的能力积累。5.2 后续还能怎么学如果你刷完这道题觉得不过瘾我建议按这个顺序继续拓展去BUUCTF里继续刷其他Misc流量分析题重点找HTTP、FTP、DNS这几类的先把明文分析练熟。找几道带TLS解密环节的题目把SSLKEYLOGFILE的使用练到形成肌肉记忆。学一点Scapy的用法写脚本批量解析pcap里的特定字段比如把所有URL拉出来、把所有DNS域名统计排序。这会让你面对超大流量包时不再焦虑。有条件的话自己搭一个小实验环境两到三台虚拟机做一次受控的中间人攻击演示自己抓包自己分析。注意这类实验只能在你自己拥有的环境中进行绝不能对未授权目标操作。安全边界这条红线搞安全的人什么时候都不能碰。最后再分享一个小技巧做流量分析题时我会先把pcap文件做一个快照副本然后在副本上大胆尝试各种解密、提取、修改操作原文件始终保留防止哪个操作把原始包结构弄乱。这道john-in-the-middle题我一开始也差点被一条加密流带偏节奏后来冷静下来重新看ARP和HTTP层才在一条被改过响应头的TCP流里找到了真正的flag。Misc刷题就是这样思路对了工具顺手了剩下的就是把细节抠干净。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。