拓冰建站拓冰建站
首页 / 资讯中心 / 正文

中间人攻击流量分析实战:从Wireshark抓包到提取flag

BUUCTF的Misc方向里流量分析题几乎是绕不开的关卡。john-in-the-middle这道题我第一次刷到是在“BUUCTF通关之路 - Misc part 14”那一批题目里题目名字单看像个外国人名但真正上手才发现它考的是中间人攻击Man-in-the-Middle常缩写为MITM流量包分析。说白了就是给你一个pcap或pcapng抓包文件让你自己用Wireshark在里面翻出攻击者偷偷塞进去的东西flag就藏在这些被篡改、被替换、被额外注入的数据里。这道题难度不算高但非常典型特别适合用来练流量分析的基本功协议过滤、流跟踪、对象导出、文件提取每一步都有明确的目的。哪怕你现在刚进Misc方向只要能跟着完整走一遍后面再碰到同类题目基本都能举一反三。1. 题目解读与整体思路1.1 这道题到底在考什么john-in-the-middle这个命名其实已经把最大的提示写在脸上了。中间人攻击本身是一个很经典的安全场景攻击者站在客户端和服务器中间双方通信的数据都要经过他的手他不仅能看还能改。题目要模拟的就是“攻击者已经成功实施了中间人攻击并且对传输中的数据做了手脚”之后的场景而你的任务就是拿到这份抓包记录反向还原攻击者到底改了什么、塞了什么然后把flag找出来。理解了这一点整道题的解题方向就定了不要在压缩包密码、伪加密、文件分离这些方向上浪费太多时间主战场就是流量分析。常见的flag藏法无非这么几种——HTTP响应里被注入了一段额外的内容、正常的下载文件被替换成了另一个文件、HTML页面里被插入了一段隐藏字符串、或者图片等静态资源里被塞了隐写数据。这些操作在中间人攻击场景下都非常自然出题人只需要把流量包放出来剩下的就是你作为分析人员的活了。我第一次看到题目名字时还下意识想过会不会和密码破解工具John the Ripper有关系毕竟名字里都有John。但仔细一想如果真的是密码爆破题题目名应该是john-the-ripper或者crack之类才对。这里刻意用了“in-the-middle”就是在明确告诉你考点是中间人攻击密码爆破方向从一开始就可以排除。1.2 拿到题目后的第一反应先看包先不要乱翻很多新手拿到附件后的第一反应是直接丢进strings或者binwalk里跑一遍看到一堆字符串就开始瞎猜。这个习惯不能说完全错但非常容易漏掉关键信息。正确的顺序应该是先判断附件到底是什么类型再决定用什么样的分析路径。先对附件执行file命令看看是单纯的pcap、pcapng还是一个压缩包又或者是一个需要先分离的文件。不少Misc题会先把抓包文件压缩一层再给你甚至有套两层的情况。我用file识别出来如果只是普通的pcapng那就直接扔进Wireshark打开如果识别出是zip或者7z就先解压再对解压后的文件做一次识别防止里面套着多个流量文件。注意pcapng和pcap的核心区别只是封装格式不同Wireshark两种都能直接打开。但如果你要用tshark做命令行过滤建议先确认文件的实际类型避免解析方式选错导致过滤结果为空。接下来不要急着一条条看数据包先建立全局视野。这一步看起来很基础但恰恰是高手和新手拉开差距的地方。我见过太多人打开Wireshark就盯着第一行看到最后一行看两小时眼睛都花了还是不知道重点在哪。正确的做法是先看统计信息让工具告诉你这个流量包里哪些协议占大头、有哪些IP在通信、有没有明显的HTTP交互然后再顺着数据特征去定位关键包。2. 环境准备与流量包初步研判2.1 工具清单与准备流量分析题对工具要求不高但有几个是真正刚需的提前装好能省掉不少事。Wireshark是绝对的主力建议直接用最新稳定版不要用太老的版本因为新版对HTTP/2、TLS解密、导出对象这些功能的支持完善很多。tshark是Wireshark命令行版适合在需要批量过滤或写脚本时用桌面版能点出来的功能它基本都能做分析效率有时候还更高。binwalk和foremost用来处理流量包里可能存在的隐藏文件、嵌套压缩包。strings用来快速排查可疑字符串。010 Editor或HxD用来做十六进制查看尤其适合检查文件头、文件尾和图片宽高等数据。我个人的建议是直接在Kali里做这套题因为上述工具大部分都已经预装了。如果你只有Windows环境那么Wireshark需要单独装binwalk可以在Windows下用但体验不如Linux。首次做的同学不用纠结环境重点是流程。2.2 初见pcap统计信息与协议画像打开流量包之后先打开Statistics菜单下的Protocol Hierarchy也就是协议分级。这个窗口会按层次结构告诉你流量包里有哪些协议、各自的帧数和占比。拿这道题来说如果HTTP占了明显比例那基本可以确定重点就在HTTP层如果看到大量TLS流量说明可能存在加密传输要么找密钥解密要么分析的范围要换一个方向。再打开Conversations或者Endpoints看通信端点。普通用户浏览网页的流量通常是一对一的客户端和服务器交互但如果流量包里出现了大量来自不同IP的请求或者有某个IP反复和服务器建立连接就有可能是攻击者伪造了大量请求。这个步骤不用花太多时间两三个窗口切换着看一眼脑子里就会有一幅流量画像。做完这两步基本可以确定接下来往哪个方向使劲。如果协议分级里HTTP排在最显眼的位置那就直接进入HTTP分析如果有可疑的DNS查询或ARP广播也要记下来因为中间人攻击最常伴随的就是ARP欺骗和DNS劫持流量包的特征会非常明显。我见过有的版本题目会把ARP请求单独拿出来当干扰项提醒你这就是中间人攻击建立的前提但真正的flag还得往后看HTTP交互。3. 中间人攻击流量分析实战3.1 如何快速定位被篡改的HTTP交互全局视野建立起来后就可以开始正经分析了。Wireshark的过滤器是这个阶段最重要的武器不要用肉眼去翻几千个包那既不现实也没必要。先在最基本的http过滤器上停留一下。在显示过滤器那一栏输入http并回车Wireshark会把所有HTTP协议相关的包过滤出来。如果包数量依然很多就继续缩小范围比如http.response.code 200只看成功的响应或者ip.addr 192.168.1.100 http只看某个特定IP的HTTP流量。这些过滤条件可以组合关键是你得知道自己想看什么。定位“被篡改”的交互核心是找异常。正常的HTTP请求和响应之间有很强的规律性请求方法、URL、状态码、响应大小都在合理范围内。一旦出现下面这些情况就要提高警惕同一个URL被请求了多次而且响应内容不一样说明后续访问可能被替换过。某个响应包的Content-Length异常大明显超过正常图片或HTML应有的大小可能被塞了额外数据。某个响应包的Content-Type和实际返回的文件头不一致比如说是image/jpeg但实际内容是个HTML或二进制文件。具体到john-in-the-middle这道题我当时的分析路径是用http请求按时间排序然后逐个扫了一遍响应包。当你看到一个“下载某文件”的请求对应的响应里数据和请求的预期对不上时基本就是突破口了。提示中间人攻击里最典型的操作是把客户端请求的合法资源替换成攻击者构造的资源。所以如果流量包里出现了两次对同一资源的HTTP请求一定要做对比。正常情况两次响应应该一致如果第二次响应明显变了后面那一次大概率就是被篡改后的内容。3.2 流跟踪从请求响应中提取线索定位到可疑数据包之后别急着看十六进制先在Wireshark里对着这个包右键选择Follow再选TCP Stream。流跟踪会把这条TCP连接上的所有请求和响应按顺序完整拼接起来等效于把一次完整的HTTP交互还原成文本可比在包列表里一条条翻高效多了。在这个视图里请求行、响应头、响应体都是按时间顺序展示的请求和响应之间用不同颜色区分非常直观。我需要在这样的流内容里找两类东西一类是额外的数据块比如响应体后面突然多出一段base64字符串、一段被注释掉的HTML代码、或者一个可疑的
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门