ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

CTF流量分析从入门到实战:题型、工具与解题技巧总结

CTF流量分析从入门到实战:题型、工具与解题技巧总结 CTF里的流量分析题我一直觉得是杂项里性价比最高的题型。它不要求你像逆向那样啃汇编也不用像Web那样记十几套框架的漏洞但你只要会抓重点、会用工具、懂一点协议常识就能在赛场上拿到分。说白了这类题的核心就一句话给你一个pcap文件你把它当成一段录音找出里面藏着的flag。这个flag可能藏在某个HTTP请求的响应里可能藏在图片文件里也可能藏在一次语音通话的录音里甚至藏在一大堆看似正常的DNS查询记录中。很多新手刚开始接触流量分析第一反应就是打开Wireshark看着满屏的包直接懵掉不知道从哪下手。这个太正常了我在新手阶段也经历过这个阶段。但流量分析题其实是CTF里最有套路、最容易总结规律的一类题目它的题型就那么几种解法也基本固定。今天我就按自己打比赛和出题的经验把流量分析题的常见题型、工具准备、解题思路和排坑技巧整理成一篇完整的总结希望能帮你少走点弯路。1. 流量分析题到底在考什么1.1 流量分析题在CTF中的定位流量分析题通常放在Misc杂项这个大类下面偶尔也会单独出成一种题型。但不管放到哪个分类它在考核本质上都没有变给你一个或者多个抓包文件常见后缀是pcap、pcapng要你通过分析这个文件里的网络通信数据找到隐藏在其中的flag。为什么这个题型能稳定存在这么多年原因很简单它模拟的是真实安全工作中的取证场景。在实际攻防对抗和应急响应中安全工程师拿到一个可疑的流量包需要判断攻击者做了什么、传了什么数据、有没有敏感信息泄露。CTF流量分析题就是把这件事浓缩成一个带Flag的谜题做题过程中锻炼的能力在真实工作中基本能直接迁移。流量分析题也是CTF所有题型中工具门槛相对低、上手快的类型。它不像二进制逆向需要扎实的汇编基础不像密码学需要高深的数学功底也不像Web需要庞大的框架漏洞库。你只需要会用Wireshark、懂一点点TCP/IP协议常识、知道几种常见的编码和隐写方式就能做出一大半的题。这点对新手特别友好。1.2 流量分析题的核心考核点流量分析题的考核点我总结下来主要是四个维度。第一是协议理解。你要能识别出流量里出现了哪些协议HTTP、HTTPS、DNS、TCP、UDP、FTP、SMTP、VoIP、USB这些是常客。每种协议对应着不同的信息隐藏方式看到协议类型基本能判断题目往哪个方向思考。比如看到80端口的HTTP流量第一反应是里面可能有文件下载看到端口5060或RTP协议就要考虑是不是语音通话流量。第二是工具熟练度。Wireshark是主力工具但光会打开看是不够的你要会用过滤语法定位关键包会用“追踪流”功能还原通信内容会用“导出对象”批量提取文件会用统计功能快速摸清流量全貌。除了Wireshark有时候还会用到binwalk、foremost、strings、Audacity等工具来完成特定的处理。第三是敏感信息识别。流量包里的数据往往经过编码或压缩一不小心就会看漏。你要能识别Base64、Hex、URL编码、Unicode、甚至图片隐写、音频隐写等各种藏信息的姿势。很多流量分析题的做法就是找到可疑数据解码后得到flag。第四是逻辑推理能力。有些题不会直接告诉你“flag在这里”而是模拟一个真实的攻击或通信场景比如某个用户登录了后台、下载了一个文件、打了一个电话。你需要根据通信的时间顺序、数据流向、响应状态码等线索像侦探一样推理出关键节点再从那里提取flag。这四个能力归根结底是“从海量数据里找到异常的那一个点”的能力。流量分析题练的就是这个敏锐度。说到这顺便提一句有的平台会把流量分析题和AI做结合比如用机器学习识别加密流量里的异常行为这类题本质还是流量分析只是多了一层AI模型的背景基础功扎实了也不用慌。2. 工具准备从入门到够用2.1 Wireshark流量分析的第一把刀Wireshark的地位就跟Burp Suite在Web题里的地位一样流量分析不用它基本等于上战场忘了带枪。它免费、跨平台、功能强大社区资源也多遇到问题随便一搜就有答案。我建议新手不要急着去找什么花里胡哨的工具包先把Wireshark用好能解决九成的问题。安装不多说了官网下载对应系统的版本一路下一步就行。打开之后最需要熟悉的是三个区域包列表区、包详情区、包字节区。上面还有一栏过滤器输入框这是整个工具的灵魂。比如你想在几百兆的流量包里找所有和“flag”这个字符串相关的包只需要在过滤器里输入tcp contains flag回车之后Wireshark会只显示TCP负载中包含flag字符串的包海量数据瞬间被筛掉。再比如你想看所有HTTP请求和响应输入http如果你想看某个IP地址的所有通信ip.addr 192.168.1.10这些过滤语法看起来简单但真正用熟之后效率提升是几何级的。我见过很多新手不写过滤器直接在几千个包里挨个点点半天也找不到重点这个习惯一定要改。还有几个Wireshark里的高频功能我单独列一下追踪流Follow Stream右键任意一个TCP或UDP包选择追踪TCP流或UDP流Wireshark会把整个通信过程按顺序拼出来。HTTP的请求和响应内容一目了然很多flag就藏在响应的正文里。导出对象Export Objects菜单栏“文件-导出对象-HTTP”可以把HTTP会话中传输的所有文件批量导出。这招在流量包里藏了图片、压缩包、脚本等文件时特别有用不需要自己手动去翻。统计Statistics菜单栏“统计-协议分级”能快速看出哪些协议占比最高帮你判断题目的侧重点。如果一堆流量里突然冒出一个很少有人用的协议那里往往就藏着线索。2.2 辅助工具链Wireshark是主力但不是唯一。实际做题中我还会用到下面这些工具它们和Wireshark配合起来基本能覆盖所有常见题型tsharkWireshark的命令行版本装在系统里头。它可以在不打开图形界面的情况下直接从pcap文件里提取数据适合批量处理和脚本化操作。比如想把一个pcap里所有HTTP请求的URI打印出来一行命令就搞定。binwalk固件分析和文件提取工具。当从流量包里导出一个疑似图片或压缩包的文件但打不开或者看不到完整内容时用binwalk扫一下它会把文件里嵌入的其他文件拆出来。foremost同类文件提取工具基于文件头特征去恢复文件。流量包里文件被截断或者损坏时foremost偶尔能给出惊喜。stringsLinux自带在二进制文件里提取可打印字符串。当文件看不出格式时先跑一遍strings看看里面有没有明显的提示比如某个文件的路径、某些命令、甚至直接是flag。Audacity音频处理软件。遇到VoIP流量还原出的录音文件或者直接给了wav、mp3的音频附件时用Audacity看波形、看频谱很多题目把flag以莫尔斯电码或慢扫描电视SSTV的形式藏在音频里。StegSolve图片隐写分析的经典工具。分析图片时可以逐通道、逐位平面查看很多隐写信息就是这么翻出来的。工具不在多在于你会不会用。我的建议是Wireshark、binwalk、strings、Audacity这四个先装好基本够打大部分的流量分析题了其他的等遇到具体题目再按需补充。2.3 工具选型的思路经常有人问我打CTF是不是要准备一个特别全的工具包或者专门的系统。我的个人观点是工具链越精简越好前提是每个工具你都用得很熟。你带十个工具每个都只会点开看看不如练熟三四个用到极致。工具选型有个基本逻辑先用Wireshark摸清流量结构再用过滤器和追踪流定位可疑数据有文件就导出导出的文件按类型选择处理工具。整个过程是流水线式的思路清晰了工具自然就选对了。如果是中途断了思路建议先停下来看看流量里的统计信息或者用strings扫一下导出文件往往能找回线索。3. 流量分析题型分类与解题思路3.1 按协议类型划分的常见分类流量分析题从协议维度看最常见的几类大概是下面这个样子协议类型典型特征Flag常见藏匿方式HTTP/HTTPS端口80/443请求响应清晰响应正文、下载的文件、URL参数、CookieDNS端口53大量请求记录DNS隧道、TXT记录、子域名编码FTP端口21控制、20数据传输的文件、登录凭据SMTP/POP3端口25/110邮件正文、附件VoIP/RTSP端口5060/554RTP流通话录音内容USB无IPUSB协议键盘按键记录、鼠标移动轨迹TCP/UDP自定义无固定特征自定义协议、隐写、编码数据这里要注意一个pcap文件里往往不只有一种协议混合流量是常态。你需要快速判断题目到底在考哪一种判断的依据就是异常点。如果整个流量包里HTTP占了绝大多数那就先往HTTP方向想如果USB协议的包占了大多数那就别浪费时间看TCP了直接往USB键盘记录方向解。3.2 按Flag隐藏方式划分的分类从flag的隐藏方式来看流量分析题也可以分成几个大类我按做过的题目经验来总结。第一种是明文直给型。flag直接放在HTTP响应正文、SQL注入测试返回的数据、某些命令的执行结果里。这种最简单用Wireshark追踪流就能直接看到但有时候流量包很大追踪流找不到就要靠过滤器配合关键词搜。第二种是文件藏匿型。流量传输过程中包含图片、压缩包、脚本等文件flag藏在文件里。做法是先导出文件再用binwalk、foremost拆解或者用stegsolve分析图片隐写。第三种是编码伪装型。流量里的数据看起来是一串乱码比如很长一串Base64编码或者十六进制字符串需要用解码工具还原。这个要求你能一眼识别出编码特征Base64的A-Z a-z 0-9 /特征比较明显看到一长串就能往那边想。第四种是协议隐蔽型。flag被拆开藏在多个DNS查询、ICMP包或者畸形TCP包里需要你按协议把这些碎片拼起来。最典型的是DNS隧道攻击者把数据拆成很多个子域名每个子域名里藏几个字符把所有查询拼接解码后就是完整flag。第五种是特殊设备型。比如USB键盘流量你把抓包文件打开看到的不是普通的网络通信而是USB HID协议数据需要按USB HID的键值表去还原用户按下了哪些键还原出的字符串往往就是flag。这类题在安全设备取证和物理渗透测试里很常见。这五类不是完全割裂的很多题目是把两个类型结合着出。比如文件藏匿型加上编码伪装先从一个FTP流量里导出一个图片图片里再用二维码藏flag或者DNS隧道的数据先经过Base64编码要你解码后再拼接。3.3 找flag的核心思路先全局后局部不管你遇到的是哪一类解题的整体节奏都应该是“先全局后局部”。第一步用Wireshark的“统计-协议分级”看一遍流量概况心里对流量里有什么协议、哪些占比高有个底数。流量如果有明显的异常这一步就能看出来比如绝大多数是TCP突然出现大比例的DNS那DNS的嫌疑就上来了。第二步用几个高频过滤器快速试探。比如http contains flag http2 contains flag tcp contains flag tcp contains ctf如果哪条过滤能筛出结果直接顺着结果继续追踪流。没筛出来也别灰心再换思路看看有没有文件可以导出。第三步追踪可疑的流。重点看几条大的、数据量多的流或者看那些客户端发出请求后、服务端有明显回显的流。多数字符串flag就是这样找出来的。我自己的经验是一套题做下来最先要克服的不是技术而是焦虑感。流量包打开一看一堆数据心里就慌了。其实大部分流量包里的数据都是噪音真正的线索就那么几个包你要做的是像在海边筛沙子一样把贝壳找出来。先全局扫一遍确定贝壳的大致方位再下手去挖。4. 典型题型实战拆解4.1 HTTP/HTTPS流量分析HTTP流量分析是流量分析题里出现频率最高的没有之一。这类题给了一个抓包文件里面是浏览器访问某个网站或者某个Web应用的过程flag一般藏在这些地方登录请求的POST参数、服务器返回的响应头或正文、下载的附件、URL路径或查询字符串。我以前做过一道很典型的题流量包里能看到一个请求POST /login.php请求体是usernameadminpasswordflag{...}。像这种直接暴露在明文HTTP流量里的flag只要追踪TCP流就能看到。操作方法是随便点一个HTTP请求包右键选“追踪TCP流”会弹出一个窗口显示这个TCP连接里的所有数据。默认有ASCII和Hex两种显示方式正常情况下用ASCII就能读出来。还有一种常见姿势是服务器返回了一个下载文件的响应比如一个页面里嵌了一张图片或者有一个附件下载链接。这种情况用“文件-导出对象-HTTP”最方便可以把所有HTTP响应里携带的文件批量导出来。导出之后再看文件类型、跑strings、跑binwalk后面就是文件分析的事了。对于HTTPS流量很多新手一看到443端口就慌了觉得加密了没法解。实际上CTF里很少出那种“非让你解开RSA/TLS会话密钥”的难题就算出了题目也一定会把服务器的私钥或者Session Key附在压缩包里给你。你要做的只是用Wireshark指定密钥文件解密。操作路径是编辑-首选项-Protocols-TLS在“(Pre)-Master-Secret log filename”里填上密钥文件路径保存后重新加载pcap流量就会以明文呈现。如果题目里没有提供任何密钥文件就别在HTTPS上死磕换个方向找突破口。4.2 图片与文件传输提取这种题的典型场景是流量包里客户端从服务器下载了一个文件这个文件可能是图片、压缩包、文档或者可执行文件而flag就藏在这个文件里。看起来很简单但是实际做题时有个坑Wireshark的导出对象功能并不是所有文件都能完整导出来遇到TCP分片或者其他复杂情况导出文件往往是残缺的。这种情况下千万别慌。第一步先看看能不能从HTTP响应头里得到文件的大小和类型。比如响应头里有Content-Type: image/jpegContent-Length: 123456说明这是一张JPEG图片大小123456字节。导出的文件如果大小对不上说明导出不完整需要手动处理。手动补全文件的思路有两种。一种是用tshark命令把原始数据抽出来。比如tshark -r capture.pcap -Y http.response -T fields -e http.file_data file_data.txt再把十六进制转成二进制文件。另一种是用foremost对整个pcap做一次文件恢复它会根据文件签名去抓取完整数据。实际做题时我经常会两条腿走路Wireshark导出不行就上foremost实测下来命中率还挺高的。拿到完整文件之后接下来的处理就进入常规的文件分析流程。图片就先看属性和图片内容再看有没有附加数据用binwalk扫一下压缩包就尝试解压注意观察有没有伪加密的情况。得补充一句CTF里压缩包伪加密是高频考点zip文件头部有个标志位被改成奇数时普通解压会提示密码错误但实际没有加密这个在很多题里都会遇到。4.3 VoIP通话录音提取VoIP流量分析在CTF里不算特别常见但一旦出了很多新手直接卡住因为完全不知道该怎么下手。如果你的Wireshark协议统计里看到SIP、RTP这些协议特别是出现了大段的RTP包那就要高度怀疑是VoIP通话类题目。这类题的破解思路其实不复杂核心是把RTP里的音频数据还原成录音文件再听录音内容找flag。先说原理。VoIP通话时语音数据通常会封装在RTP包里RTP数据是经过编码的声音采样不是直接就能播放的。把RTP流还原成音频文件方法有好几种我推荐最直接的一种用Wireshark的“电话”菜单。操作路径是菜单栏-电话-VoIP通话。Wireshark会列出流量里的所有通话选中一个通话后下面有个“播放”按钮可以直接播放。但前提是你的系统里有对应的音频解码器也就是G.711之类的编解码器支持。如果播放不了还有一个更稳妥的办法用tshark导出原始RTP载荷数据然后用Audacity以“原始数据”格式导入选择对应的编码格式就能看到波形并播放了。实际写代码的话也可以这样处理tshark -r voip.pcap -Y rtp -T fields -e rtp.payload rtp_hex.txt把16进制数据转成pcm文件再用Audacity导入。导入时采样率一般选8000Hz单声道编码选U-Law或A-Law。试几次哪个能听到清晰的人声哪个就是正确的配置。在听录音的时候要点是耐心。录音里可能会直接读出flag字符串也可能是报一段英文句子把字母或单词拼起来组成flag。我做过一道题录音里是一个女孩慢速读出的一串英文声音背景里还有杂音戴耳机多听几遍就听出来了。VoIP题经常和信息的“听”结合你就是戴着耳机对着电脑反复听听到吐为止。4.4 USB键盘流量分析USB流量分析题在CTF里也是常客特别是各大平台题库里基本都会收录。它的特征是流量包里没有IP协议、没有端口全是USB协议的数据包。这类题模拟的是USB键盘被记录的场景你需要从USB数据中恢复出用户输入了什么内容而这个输入内容通常就是flag。碰到这类题最要紧的事情是不要把它当网络流量处理要从键盘的HID报告中提取按键编码。USB键盘的每一次按键会在USB报文中包含一个字节的按键码也叫键盘键值。比如0x04对应A键0x05对应B键。把这个键值翻译回字符就能得到键盘输入的完整内容。最简单的解法是用现成的脚本。我在实际做题时常用的做法是先用tshark把USB的键盘数据导出来tshark -r usb.pcap -Y usb.capdata -T fields -e usb.capdata usbdata.txt导出的每行类似00 00 04 00 00 00 00 00这样的十六进制数据其中第三个字节就是键盘按键码。写个小脚本把每行第三字节取出来再对照USB HID键盘键值表转换成字符就能得到flag。这里有个非常大的坑要提醒你USB报文不一定只有8字节的键盘数据格式有些鼠标流量、复合设备流量格式不同如果盲目套键盘解析脚本出来的结果全是乱码。所以动手前一定先看数据的长度和结构根据设备的描述符判断到底是键盘、鼠标还是其他设备。鼠标流量里按键值和键盘完全不同键盘码表根本不适用。4.5 DNS隧道和其他隐蔽信道DNS隧道属于隐蔽信道类型的流量分析题近年热度越来越高因为它和真实APT攻击的技术手段高度相关。DNS隧道的基本原理是正常情况下大家不会注意DNS查询里的域名有什么异常攻击者就利用这一点把数据拆成一小段一小段拼到域名或者子域名里然后通过DNS查询请求把数据偷偷传出去。在CTF题里flag往往就藏在很多DNS查询的域名里。遇到这类型的题第一步是用Wireshark过滤器把所有DNS流量筛出来看dns然后重点看DNS查询的QNAME字段也就是被查询的域名。正常的域名一般是有意义的名字加上常见的后缀比如www.baidu.com。如果看到一堆很长很怪的子域名比如flagis12345.example.com每段看起来像是Base64编码的字符那基本就是DNS隧道了。做法是把这些异常的域名全部按顺序拼起来去掉后面的固定后缀然后尝试Base64解码或Hex解码最后通常能得到flag。我在实际操作中经常会用Python小脚本去批量提取域名来解码比手工一条条看靠谱。写一个简单的脚本提取所有的DNS查询域名再去掉重复项和公共后缀剩下的就按顺序拼接解码。除了DNS隧道还有ICMP隧道、TCP隐蔽信道等情况思路大同小异都是先把异常流量筛选出来再看“异常”的载荷部分如何编码和还原。ICMP隧道的话需要注意ICMP包的data字段里面可能藏了东西做法是提取data字段再按上面那套编码识别的流程处理。5. 常见问题与排查技巧实录5.1 常见问题速查表流量分析题做到最后真正的障碍往往不是题太难而是卡在一些小问题上。我把实际做题中高频出现的问题整理成了下面的速查表建议大家多看几遍问题现象可能原因解决方法打开pcap提示文件损坏文件不完整或格式不正确用capinfos xx.pcap查看文件信息确认是否为标准pcap/pcapng如果文件本身有损坏用pcapfix尝试修复过滤语法输入后无结果关键字不对或大小写错误确认字段名比如tcp contains flag中flag区分大小写必要时先试试frame contains flag追踪TCP流里面全是乱码流内容是压缩或二进制数据换用Hex显示在字节区里看是否能发现文件头如果是HTTP压缩数据看看响应头有没有Content-Encoding: gzip导出的图片打不开文件被截断或Wireshark导出不完整用foremost或binwalk直接处理原始pcap恢复文件提取的音频无法播放音频编码格式不明用Audacity按Raw格式导入尝试U-Law、A-Law、PCM16等不同编码USB键盘解析出乱码流量不是键盘流量或键值表使用错误先查设备描述符确认是键盘还是鼠标再选择对应的键值表有大量HTTP流量但找不到flag关键信息在压缩包或响应头里用“导出对象”看全部文件在过滤器里搜http.response.code 200找到返回的重要页面Flag字符串被拆开数据传输时分片或编码把可疑的编码字符串拼接起来再解码注意观察相同的编码前缀或后缀5.2 实操心得与避坑经验从我个人大量刷题的经验来看流量分析题有几条心得值得单独拿出来讲。第一要养成看统计信息的习惯。很多新手拿到流量包第一件事是盯着包列表从头看到一个尾看半天什么也看不出来。正确做法是先看“统计-协议分级”花十秒钟了解流量概况。哪几个协议占比最大有没有协议是异常的全部信息都能在统计里体现。看到异常协议再精确定位去看数据效率翻倍。第二要主动搜“flag”字符串但不能只搜一次。在实际做题中我通常会把flag、ctf、key、secret、password这些常见词都过一遍。如果题目用的关键词比较冷门比如flag起名叫FLAG大写也要注意用不区分大小写的思路去试。另外很多出题人喜欢把flag藏成Base64编码建议看到任何可疑的编码字符串先解码看看解码脚本可以提前准备好省得临时手忙脚乱。第三不要忽略导出功能里的那些“小文件”。流量分析题喜欢在HTTP或者FTP的响应里带一个很小的文本文件、JS文件甚至图片里面藏着下一步线索。如果不导出直接看包里内容很可能会漏掉。用Wireshark的“导出对象”功能把所有文件导出来按类型和大小排列小文件往往才是关键。第四有关“压缩包伪加密”这个问题我觉得值得专门拿出来讲。这个在文件传输类流量分析题里经常遇到。你从流量包导出一个zip文件解压时提示需要密码但题目明明没有提到密码。这时先别急着爆破用十六进制工具打开zip文件看看有没有伪加密。zip的加密标志位在文件头部的通用位标志字段如果第0位是1说明加密但如果你尝试修改这个标志位为0后能正常解压说明根本就没加密。CTF里大批的压缩包题目都用了这个套路。第五做题节奏要有规划。一套流量分析题拿到手我建议先花三分钟做全局摸底确认协议类型和信息藏匿方式然后带着预测去定位不要浪费大量时间漫无目的地翻包。如果20分钟还没思路果断去看看有没有同类题型writeup参考一下思路而不是原地死磕。5.3 我的解题路径速览为了更直观我把自己的通用解题顺序列成一份五步速查适合大部分流量分析题用capinfos和Wireshark统计功能了解流量包基本情况和协议分布先识别最可疑的协议。在Wireshark里用frame contains flag跟tcp contains {这类过滤语法快速试探搜索flag的明文线索。追踪HTTP/FTP等应用层协议的数据流重点看响应体、登录参数、文件下载请求。用“导出对象”把包内传输的文件全部提出来再按文件类型做二次分析配合strings、binwalk、audacity等工具挖线索。如果还没有flag检查DNS、ICMP、USB等特殊协议的编码隐藏批量提取可疑字段做解码和拼接。这套流程走一遍覆盖面已经很广了。剩下一些特别偏门的题型比如蓝牙流量、WiFi抓包破解针对802.11加密那就需要临时去补充对应协议的知识点了。对我来说流量分析题已经成了我CTF工具箱里最稳的一类得分项。很多人觉得它难是因为把它想得过于玄乎实际上它的考点一直都很集中套路重复率极高。你可以把做题当作在流量里寻找“不自然”的过程大多数包都是正常的不正常的那个点往往就是答案所在。做多了你甚至能反过来站在出题人的角度想如果我设一个陷阱在哪个位置放更容易让人忽略这样一想很多题的解会快得多。最后再分享一个小建议多拿历年真题的流量包练手题目不用求多但每个题要总结出自己的思路和踩坑记录等你把常见题型都过了一遍赛场上再遇到流量分析题心态肯定会稳很多。
返回列表