新闻详情

新闻详情

首页 / 资讯中心 / 详情

中间人攻击流量分析实战:john-in-the-middle解题全解析

发布时间:2026/10/1 15:22:48来源:尧图网络
中间人攻击流量分析实战:john-in-the-middle解题全解析
在BUUCTF的Misc分类里“john-in-the-middle”算是我刷题过程中印象比较深的一道题。题目名字看起来像个谜语但实际上只要你读懂了这个名字解题思路就已经出来一大半了。这篇文章我就从读题开始把这道题的完整分析过程、工具链和踩坑点都拆开讲一遍适合已经能独立做基础Misc题、想进阶到流量分析方向的选手参考。Misc杂项题最讨厌的地方在于没有固定套路但最有意思的地方也恰恰在这里。每一道题都是一次小型侦察任务你需要从题目名、附件、文件类型、字节分布里找线索。而“john-in-the-middle”这道题恰恰是把“线索藏在名字里”做到了极致。1. 看到“john-in-the-middle”时我在想什么1.1 题目名称本身就是最大的提示先看名字。“man-in-the-middle”是安全领域里人尽皆知的概念——中间人攻击攻击者插入通信双方之间窃听、篡改、转发数据。而这里把“man”换成了“john”那么这个“john”是谁在安全工具圈里叫John的著名角色只有一个John the Ripper经典的密码破解工具。两个词一组合基本可以断定这道题的核心场景是中间人攻击而最终解题需要借助John the Ripper来完成密码爆破。BUUCTF上很多英文题名都不是白起的。有些是直接告诉你考点比如你看到“lsb”就知道要去翻图片最低有效位有些是玩梗比如这道题就是典型的“工具名攻击场景”组合。如果你拿到题名第一反应是“这什么鬼”然后直接扔进wireshark里瞎翻大概率会在包里迷路。先花两分钟拆题名后面省的不止两小时。1.2 这类Misc题在BUUCTF里的定位BUUCTF的Misc题目来源很杂从各种CTF比赛真题里收罗过来难度跨度非常大。“john-in-the-middle”不属于纯签到题它需要你掌握三层能力基础的流量包分析能力、对加密协议的基础认知、以及熟练使用John the Ripper进行字典爆破的能力。换句话说它是一道“组合题”。这类题在Misc里非常典型——单看每一步都不难难的是你能不能把流量分析的结果和爆破工具的输入串联起来。很多人在第一步分析流量时找对了东西却卡在“怎么把提取到的数据喂给john”这个衔接环节上。这篇文章的核心目的就是把这条完整链路讲透。2. 开局三板斧环境准备与流量包初检2.1 工具清单与版本选择先确认工具别等分析到一半发现缺东西。做这类题我的标准工具链如下Wireshark流量包分析主力建议用3.x版本新版本对TLS解析更好。tsharkWireshark的命令行版本处理大包时比图形界面高效得多。John the Ripper必须用jumbo版只有这个版本才自带一系列转换脚本。hashid用来识别hash类型小工具但能省很多试错时间。binwalk / foremost用来从流量或其他文件中提取嵌入式文件。Kali Linux里john是预装的但要注意默认的john命令可能不带jumbo脚本建议跑一遍ls /usr/share/john/看看有没有ssh2john.py这类文件。如果没有就去下载john-1.9.0-jumbo版本Windows下解压后进run目录操作macOS用Homebrew装也行。这道题需要的就是jumbo附带的各种*2john转换脚本少了它们后面根本喂不进john。2.2 拿到包先看这五个指标无论题目叫什么名字流量包到手后的第一轮快检项目是固定的。我不建议一上来就盯着某个流翻先花三分钟看全局建立对数据包的整体认知。第一个指标是文件基本信息。用capinfos命令看包的大小、抓包时长、包数量。文件大小直接决定了后续处理策略——几百MB的包和几MB的包分析手段完全不同。第二个指标是协议分层。wireshark里Statistics - Protocol Hierarchy或者命令行下用tshark -r john.pcapng -q -z io,phs这一步能快速告诉你包里主要是HTTP、DNS、TCP还是TLS。如果TLS占比很高基本坐实了加密通信的存在如果全是HTTP明文那思路就是找上传下载的文件。第三个指标是会话列表。Statistics - Conversations或命令行tshark -r john.pcapng -q -z conv,tcp找流量最大的几个TCP流。中间人攻击场景下攻击者和受害者之间的通信往往有大量数据往来这些流大概率就是题目设置的“主战场”。第四个指标是导出对象。File - Export Objects - HTTP看看有没有可以直接导出的文件。有些流量题会把关键文件直接放在HTTP传输里先用这个功能排查能省掉大量手工追踪。第五个指标是看首屏异常。协议分层里出现奇怪的端口、非标准的HTTP方法、大量的ARP请求、DNS查询到了奇怪的域名——这些都是潜在线索。Misc题里异常即线索。做完这五个检查你对这个包应该有了一个全局画像这是一个以TLS为主、有几条大流量TCP会话、可能存在导出文件的抓包。接下来就可以顺着中间人的思路往下走。3. 顺着中间人的痕迹把加密流量剥出来3.1 快速定位可疑会话流既然题目叫“john-in-the-middle”那就假设包里的通信已经被中间人插了一脚。中间人场景下有个典型特征同一会话里出现不对称的交互模式。比如客户端发起的握手非常标准但服务端响应有明显拼接、重传迹象或者同一对IP之间开了大量短连接。我的习惯是在会话列表里把几条大流量流逐一追踪一遍。wireshark里右键某条TCP流Follow - TCP Stream看前几个包的内容。如果是TLS流量你会看到Client Hello、Server Hello、Certificate等握手消息如果是SSH流量会看到SSH-2.0-...的版本字符串。对于大流量包我更推荐用tshark把可疑流单独导出来再分析tshark -r john.pcapng -Y tcp.stream eq 12 -w stream12.pcap这条命令只保留TCP流12的数据导出成一个小包然后再用wireshark打开。这么做的好处是过滤后渲染速度极快而且避免了在大包里反复翻页带来的视觉疲劳。3.2 从流量中提取可爆破的Hash目标如果题目设置的是中间人截获了SSH连接那么包里可能会残留加密会话私钥的传输痕迹或者服务端的私钥被加密保护。如果设置的是TLS中间人那就要关注证书、预主密钥等材料。找到可疑的字节段后先别急着人工看。用binwalk和foremost把整个pcap扫描一遍看看有没有可提取的独立文件binwalk john.pcapng foremost john.pcapng -o extracted这类操作就是为了找出“藏在流量里的文件”。很多Misc流量题的标准解法就是流量里藏了一个加密的私钥文件或者一个压缩包需要提取出来再做下一步爆破。在wireshark里如果看到一段以-----BEGIN OPENSSH PRIVATE KEY-----开头的文本那恭喜你目标物证出现了。选中那些字节Follow - TCP Stream把显示方式切成Raw然后Save as保存成文件。注意保存时别自作主张改成别的名字就叫id_rsa之类与原内容匹配的名字后面转换脚本对文件名不敏感但你自己好记。3.3 格式转换让John能认出这个文件这是全题最关键的衔接步骤也是区分新手和老手的地方。John the Ripper本身不能直接吃二进制私钥文件、压缩包或Keepass数据库它需要的是“格式化后的hash字符串”。jumbo版本提供了各种转换脚本放在run目录下。以最常见的OpenSSH私钥为例python ssh2john.py id_rsa id_rsa.hash生成的id_rsa.hash就是一行特定格式的hash这才是john能处理的输入。同理如果提取出来的是加密zip包用zip2john如果是RSA私钥用rsa2john如果题目给的是Linux密码文件可能连转换都不用。转换完先用hashid确认一下格式hashid id_rsa.hash这一步能帮你确认hash类型后续选择john模式和字典时心里有数。说一个生活化的类比john是餐厅主厨但只接受特定摆盘的食材转换脚本就是后厨改刀的师傅把一整块肉切成主厨能直接下锅的肉片。很多新手卡在这一步就是因为他们把一整块肉直接端给了主厨主厨当然只能罢工。4. 让John跑起来爆破参数与字典的取舍4.1 先识别Hash类型再选模式拿到hash文件第一步是确定格式。以私钥文件为例不同加密算法生成的hash前缀和结构完全不同。OpenSSH格式和PEM格式用ssh2john.py后输出的内容也有差异务必留意。john的一大优点是它能自动检测格式。你可以直接跑john id_rsa.hash它会自动猜测类型并开始爆破。不过自动识别偶尔会把相似格式搞混建议还是先用hashid确认然后显式指定格式john --formatssh id_rsa.hash如果你不确定支持哪些格式可以查john --listformats | grep -i ssh这里再提一句hashcat。很多人纠结john和hashcat怎么选。我的判断标准是题库设的密码通常不会太复杂john的默认模式加上字典规则已经够用而且既然题目都点名“john”了用john就是官方预期路径。hashcat更适合GPU大规模跑复杂hash在这道题里属于杀鸡用牛刀。当然如果你显卡闲着也是闲着用它也不是不行但本文还是以john为主线。4.2 字典选择与规则配置爆破的成败八成取决于字典和规则。Kali下最常用的字典是rockyousudo gunzip /usr/share/wordlists/rockyou.txt.gz john --wordlist/usr/share/wordlists/rockyou.txt id_rsa.hash如果首次跑rockyou没出结果别急着放弃加规则重跑john --wordlist/usr/share/wordlists/rockyou.txt --rulesrockyou id_rsa.hash--rulesrockyou是怎么回事简单说它会在字典里每个单词基础上自动叠加各种变形——加数字后缀、首字母大写、结尾加年份、常见的替换字符等。比如字典里有admin规则会衍生出admin1、Admin、admin2023、adm1n等一系列候选。CTF题目的密码设置者也是人逃不开这类思维习惯所以规则模式下命中率会显著提升。如果还想更快可以先用小字典验证格式是否真的没问题echo password mini.txt echo 123456 mini.txt john --wordlistmini.txt --formatssh id_rsa.hash如果几十行的小字典能正常跑起来说明hash格式正确、命令无误再换大字典正式跑。这一步很像程序员的“冒烟测试”——先确认链路通了再上重量级负载。4.3 爆破成功之后的收尾解读john跑出结果后查看已破解的密码john --show id_rsa.hash它会输出类似?ssh password的内容。到了这一步很多新手以为万事大吉但请记住这个密码往往不是flag本身而是一把“钥匙”。你可能需要用它来解开某个zip包、登录某台靶机、或者解密流量包里的某些字段。在实际解题中拿到的密码先当作万能钥匙去试试zip解压密码、试题目的压缩包解压密码、试SSH登录。如果还是没看到flag回到流量包里用这个密码去尝试解密TLS会话或者打开之前提取出来的加密文件。这个“密码即钥匙”的意识极其重要题目设计者惯用的手法就是让你费尽心思爆破出一个密码再用它去解锁第二层关卡。5. 复盘时最容易被卡住的三个细节5.1 大流量包过滤器的性能陷阱我在实际刷题时最烦的一件事就是包很大wireshark卡成PPT。几十MB以上的pcap每操作一下显示过滤器都要重新扫描全部数据体验极差。解决思路有两个。第一用tshark把可疑流先导出来再分析这个上文已经提过。第二在wireshark里关闭一些默认解析比如Preferences - Name Resolution下取消DNS解析和端口解析的勾选渲染速度会有肉眼可见的提升。如果你确定要做TLS解密分析还要记得在Edit - Preferences - Protocols - TLS里配置解密所需要的私钥或会话密钥文件不然看到的永远是密文。5.2 “爆破出来的不是Flag”怎么办这是我在很多wp里看到新手摔跤的地方。爆破出密码后兴冲冲地去提交flag结果发现不对人就懵了。你需要建立的一个核心认知是Misc题里的爆破结果大多属于“中间产物”。它的价值在于解锁下一步而不是直接等于答案。最常见的第二层是加密压缩包——把密码输进去解压里面的txt文件才写着flag。另外一个小细节使用密码时注意特殊字符。如果解压密码含有$、、空格等字符在命令行里会被shell吃掉一部分务必用单引号把密码括起来unzip -P pss w0rd secret.zip这个问题我见过好几次很多人以为自己密码不对其实是shell展开了变量。5.3 注意题目环境与工具兼容性John的不同版本之间差异大得惊人。旧版和最小化安装版可能没有ssh2john.py甚至不支持某些格式。如果你在Windows的john目录下找不到转换脚本去Kali里找Kali的/usr/share/john/下脚本齐全。同样一个hashWindows版john可能跑不出结果换到Kali里就能正常识别。这不是hash的问题是版本和wordlist路径的问题。john有pot文件机制用来记录已经破解过的内容。这个机制很实用如果你跑过一次下次再跑之前先执行john --show id_rsa.hash有时候你会发现结果早就存在pot里了——可能是你自己跑的也可能是题目被人跑过留下的。真遇到过这种情况别觉得不可思议直接记录结果省时间。6. 从这道题延伸出去的Misc流量分析基本功6.1 一个通用的流量分析解题框架“john-in-the-middle”这类题解完之后你会发现自己的通用能力也提升了。把整个分析过程抽象出来其实就是一个可以复用的框架我给它拆成五个阶段第一阶段准备与全局快检。确认工具链看capinfos、协议分层、会话列表、导出对象。 第二阶段定位异常。根据题目名称、协议分层特征、大流量会话进行定向追踪。 第三阶段提取物证。用foremost、binwalk、wireshark导出等方式把藏在流量里的独立文件剥离出来。 第四阶段定向破解。识别文件类型和hash格式选择合适的john转换脚本和字典规则。 第五阶段关联解读。把爆破得到的密码当成钥匙去解锁压缩包、登录入口或加密数据最终拿到flag。这个框架放在任何“流量分析类Misc题”上都成立。换一道题可能中间的物证不是私钥而是图片、不是压缩包而是DNS隧道文本但框架本身不需要变。你应该把这个框架内化成自己的解题肌肉记忆。6.2 在BUUCTF里还能练哪些同类题如果你把“john-in-the-middle”完整做下来有了流量分析和john爆破的基础接下来要做的就是扩大题型覆盖面。BUUCTF的Misc分类里我可以给你指几个方向想练压缩包处理基本功的找“buuctf的压缩包中的乐趣”。想弄清zip伪加密原理的搜“misc zip伪加密”。想练图片隐写中LSB套路的刷“buuctf lsb”。想挑战综合性更强、需要多层解密的可以试试“buuctf 梅花香之苦寒来”。这道题名字自带诗意但分析过程相当扎实。想横向扩展其他方向底子的也可以看“buuctf easyre”“buuctf jocker”这类逆向题但这就属于另一个坑了。我的建议是刷题不要只满足于出题解每做一道题都写一个简短的wp哪怕就记一下“用了什么工具、什么命令、卡在哪一步”积累一段时间后你会发现之前踩过的坑全变成了可复现的素材。我在解“john-in-the-middle”时记录的那句“ssh2john之后记得hashid确认”后来在至少三道题里帮自己省了时间。最后再分享一个小技巧做Misc题一定要养成记录的习惯。这个flag怎么来的、中间用了几层工具链、每层输入输出长什么样全部写下来。等你刷到第二十道第三十道题的时候这份笔记就是你最宝贵的个人题库比任何公开wp都好用。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Ubuntu 22.04 安装 Miniconda、PyTorch 与 YOLOv8 并完成 CPU 推理 2026/10/1 16:12:42

Ubuntu 22.04 安装 Miniconda、PyTorch 与 YOLOv8 并完成 CPU 推理

Ubuntu 22.04 安装 Miniconda、PyTorch 与 YOLOv8 并完成 CPU 推理本文记录在 VMware Ubuntu 22.04 虚拟机中安装 Miniconda、PyTorch CPU 版和 Ultralytics YOLOv8,并使用 YOLOv8n 对示例图片进行目标检测的完整过程。一、实验环境项目配置操作系统Ubuntu 22.04.5 …

阅读更多 →
9.30blog 2026/10/1 16:12:42

9.30blog

2026年9月24日 14:09 1.printf 占位符的作用是用“”后面的数据或词句替换语句中的占位符(指定格式) 例如:printf(“There are %d apples”,2); 生成There are 2 apples 例2printf(“%s will come tonight\n”,“张三”); 例3printf(“%s say…

阅读更多 →
带父母孩子去阳澄湖吃蟹,湖景包厢到底适不适合一家人坐进去 2026/10/1 16:12:42

带父母孩子去阳澄湖吃蟹,湖景包厢到底适不适合一家人坐进去

先说结论:适合,但前提是你对“湖景包厢”的期待不是一块招牌,而是老人孩子坐下来之后真实的体验。带家人出门吃饭,最容易出问题的往往不是菜好不好吃,而是环境名不副实、桌子挤、上菜慢,老人孩子都别扭。我…

阅读更多 →
(146页PPT)某大型企业基于战略的全面绩效管理体系设计方案(附下载方式) 2026/10/1 16:12:42

(146页PPT)某大型企业基于战略的全面绩效管理体系设计方案(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 (146页PPT)某大型企业基于战略的全面绩效管理体系设计方案.pptx_基于物联网的消防监控方案资源-CSDN下载 资料解读:《(146页PPT)某大型…

阅读更多 →
Designer Skills五大集合全景图:33个插件覆盖研究到交付,找到最适合你的安装路径 2026/10/1 16:12:42

Designer Skills五大集合全景图:33个插件覆盖研究到交付,找到最适合你的安装路径

Designer Skills五大集合全景图:33个插件覆盖研究到交付,找到最适合你的安装路径 【免费下载链接】designer-skills Designer Skills Collection: agentic skills, commands, and plugins for design — from research to systems, UI, interaction, and…

阅读更多 →
Unity热更新安全加固:从AssetBundle清单签名到本地缓存防篡改 2026/10/1 16:12:35

Unity热更新安全加固:从AssetBundle清单签名到本地缓存防篡改

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉