ARTICLE DETAIL

资讯详情

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

CTF MISC入门:RAR压缩包加密破解与隐写分析全流程

CTF MISC入门:RAR压缩包加密破解与隐写分析全流程 刚开始打CTF那会儿我在BUUCTF上刷MISC题看到“just_a_rar”这种题名就觉得很亲切——题目已经把考点写在脸上了就是让你跟RAR压缩包打交道。但越是这种看似简单的题越容易让新手卡在一些莫名其妙的地方比如解压密码、文件头标志、伪加密各种折腾一圈最后发现flag就藏在最明显的位置。这篇文章就把这类RAR题目的完整套路拆开讲讲从文件识别、加密判断到密码恢复和后续图片隐写一条线走到底适合刚接触MISC方向、想系统掌握压缩包题型套路的同学。1. 拿到题目后的第一反应别急着双击解压1.1 这题考的到底是什么“just_a_rar”这个名字在BUUCTF的MISC题库里属于典型的入门级题目但它的考点其实挺综合。题目给你的附件就是一个RAR压缩包表面上看只需要解压就能拿到内部文件但实际解题过程中你会遇到“压缩包加密了”“密码不知道”“解压出来的文件有问题”等一连串问题。这类题目的核心价值不在于压缩包本身而在于它串联起了MISC方向的基础操作链文件类型识别、常见文件格式结构、压缩包加密机制、隐写信息提取。说白了它就是一道考验你能不能把“一套标准动作”完整做下来的题。搞懂这一类题之后再遇到“zip伪加密”“RAR爆破”“图片LSB隐写”等衍生题型你至少知道该从哪里下手。1.2 RAR题的整体解题链路我自己做这类题目习惯先在心里过一遍流程避免东点一下西点一下浪费时间。针对“just_a_rar”这种题标准链路是这样的第一步识别文件真实类型。下载下来的附件不一定真的就是RAR有时候是改后缀的假象先用工具确认一下。第二步判断压缩包是否加密。能直接打开最好打不开就要分析是伪加密还是真加密。第三步处理真加密。如果是真加密想办法恢复密码常见手段是字典爆破、掩码攻击或者利用题目线索猜密码。第四步解压并分析内部文件。把压缩包解开之后里面可能是图片、文本、甚至还是压缩包需要继续检查是否存在隐写信息。第五步提取flag并提交。这套链路你刷多了就会发现MISC题目大多数都是“容器载体隐写”的结构。RAR压缩包在这里只是一个容器把真正的谜题装在里面解题过程就是一层一层打开容器最后在载体里找到线索。1.3 需要准备的基础工具工欲善其事必先利其器。做这类RAR题目有几样工具是绕不开的我先把它列出来后面实操时会反复用到file / 010 Editor用来识别文件真实类型和查看十六进制头部。WinRAR / 7-Zip日常解压工具有时候也能提供一些线索比如加密状态、压缩方式。ARCHPRAdvanced Archive Password Recovery跑压缩包密码的老牌工具支持暴力、掩码和字典模式。Kali自带的john、hashcat进阶用户可以用效率更高但新手先用ARCHPR就够了。binwalk / foremost分析内部文件是否藏了附加数据。strings、grep在二进制文件里直接搜可打印字符串很多flag就是直接裸露在数据里的。这些工具不一定要全部装好但至少提前准备两到三款尤其是ARCHPR在RAR破解里基本是必备品。2. 动手前的原理储备RAR加密与伪加密2.1 RAR文件结构快速入门很多人对RAR的理解停留在“一种压缩格式”的层面但做CTF题时你得稍微深入一点看它的文件结构。RAR文件的头部信息里藏着很多关键标志位这些标志位决定了压缩包是否加密、采用什么加密方式、是分卷压缩还是固实压缩等。RAR文件由若干个“块”组成每个块有类型标识和头部结构。比较常用的几个标志位位置在文件开头前7个字节是RAR标识和版本信息接下来会进入具体的头结构。如果压缩包是加密的在文件头中会出现加密标志位RAR 4.x版本和RAR 5.x版本的标志位位置略有不同但思路一致只要找到头部结构里对应的字节就能判断加密状态。你打开010 Editor看一个加密的RAR文件会注意到头部数据里某个字节是0x80或类似的高位值这就是加密标志。如果把这个标志位改掉压缩包可能变成“未加密”状态这就是后面要说的伪加密绕过和修改头部的基础。当然这里要强调一下修改头部绕过加密只对“伪加密”有效——也就是作者故意只加了标志位、实际没有用AES对数据区做加密的情况。如果是真加密改了标志位只会让解压报错。2.2 伪加密出题人最爱的小花招伪加密这个概念在CTF的压缩包题目里出现频率极高。原理很简单压缩包的加密标志位是0x01或者修改了高位但内部数据实际上并没有被加密。很多安全的解压软件看到标志位就强制要求密码于是题目就卡住了一批人。判断伪加密的方法其实不难。最直接的办法是用十六进制编辑器打开压缩包找到头部结构中的加密标志位把它改成未加密状态再用工具解压。如果修改后能够正常解压并得到完整文件说明是伪加密如果解压报错、文件头损坏或解出来的文件无法打开那就是真加密需要走密码恢复路线。这里有一个常见误操作用WinRAR打开加密包时提示输入密码有人就直接认定这是“强加密”然后开始爆破。实际上你应该先看一眼头部数据再下结论。我见过不少人在伪加密题上老老实实爆破到天荒地老最后一看十六进制标志位改掉立刻就解出来了纯属浪费时间。2.3 真加密的破解思路如果确认是真加密那接下来的重点就是找密码。RAR 4.x的加密用的是AES-128暴力破解的空间非常大所以解题不是靠硬跑而是靠“缩小范围”。缩小范围有几个方向题目给出的提示。很多题目会在描述、文件名、甚至页面源码里放密码线索比如“密码是6位数字”“密码是作者生日”“密码是英文单词加数字”等。先找提示再爆破效率完全不一样。压缩包内的辅助文件。有时压缩包会附带一个包含密码提示的文本或图片只是被加密挡住了解不开就看不见。这时候可以用“已知明文攻击”的思路看看有没有公开的明文字典。掩码缩减。如果知道密码格式比如纯数字、6位就用掩码攻击把搜索空间压到最小。6位数字只有100万种组合ARCHPR几秒就能跑完。有一点需要提醒网上搜索别人对同一题库的wpWriteUp确实能直接拿到密码但如果你是为了练手我建议还是自己走一遍分析流程哪怕最后密码确实是“123456”也要明白为什么这么猜。3. 实操从压缩包到flag的完整流程3.1 环境准备Windows搭配Kali双开这类题目我用Windows为主、Kali为辅的组合。Windows上装WinRAR、ARCHPR、010 Editor日常操作方便Kali里自带binwalk、foremost、strings这类的分析工具适合做内部文件深挖。这套搭配对我个人来说是效率最高的你也可以根据自己的习惯调整。需要说明的是ARCHPR在Windows上的图形界面比较直观适合新手。Kali里的john、fcrackzip也能做类似的事但配置和使用门槛高一点等ARCHPR的路子走熟了再去研究命令行工具也不迟。3.2 第一步文件识别与加密状态判断拿到题目附件后我习惯先复制到工作目录再用file命令确认类型。file just_a_rar.rar如果输出是“RAR archive data, v1.5, os: Win32”说明文件后缀没有造假确实是一个RAR。如果输出显示是“PNG image data”或者其他格式那就要先把后缀改过来再说。接下来判断加密状态。把RAR文件拖进010 Editor直接看头部字节。RAR 4.x的加密标志通常出现在文件头结构里一般表现为某个区块的标志字节为0x80。如果你不熟悉具体偏移可以拿一个已知加密的RAR和未加密的RAR做对比多看几次就有感觉了。这里额外说一句建议先尝试直接用WinRAR打开。如果能打开但内部文件解压时需要密码那说明做了解压密码如果双击就弹密码框说明整个包加密了。这两种情况解法上略有差别需要分别处理。3.3 第二步伪加密绕过实操如果是伪加密操作分三步用010 Editor打开压缩包定位到加密标志位所在的偏移。把标志位从0x80改成0x00或者把对应的加密marker去掉保存文件。用WinRAR或7-Zip打开修改后的文件此时如果不再提示密码说明绕过成功。我实际操作中碰到最多的就是RAR头部第15个字节附近的AES标记把某个字节修改后就能正常解压。但要注意修改之前最好备份原文件改坏了还能恢复。改完之后如果解压报错“文件头已损坏”先别急恢复原文件重新定位标志位再试一次。如果你实在不想手动改字节也可以直接用Binwalk或Kali里的一些脚本工具来自动检测伪加密。不过我个人建议手动做一次因为改字节的过程能帮你理解RAR结构以后遇到变种题目才不会慌。3.4 第三步真加密密码恢复实操在“just_a_rar”这道题里如果确认是真加密我会先用ARCHPR跑一轮“暴力掩码”的组合。打开ARCHPR加载加密的RAR文件在攻击类型里选“暴力破解”。如果题目没有给长度提示我一般先设置“所有大写字母、小写字母、数字”长度从1到6位跑一轮。如果跑不出来就结合题目标题、描述、代码里的信息缩小范围。ARCHPR里最实用的是“掩码”模式例如你判断密码是四位数字就设置“????”里面只勾选数字长度4位几秒内就能出结果。市面上很多题目的密码就是“1-6位纯数字”这种简单组合跑得很快。如果是复杂密码ARCHPR暴力模式效率就不够了这时候可以考虑用字典。Kali自带的rockyou.txt字典大概14G前提是你知道密码是一个常见单词或短语。但说实话CTF题目里大多数RAR密码都不会故意搞成很长的随机串因为出题人还要考虑选手做题体验所以“数字、短词、键盘序列”是出现频率最高的三类。密码恢复成功后别急着双击解压先把密码记录下来后续可能还要用到同一密码去处理压缩包内的嵌套包。3.5 解压后的文件排查图片隐写与附加数据解压完成后题目一般会给你一个图片文件或者文本文件。如果是文本直接打开看有没有flag有时候flag会放在文件名或者文本内容里甚至藏在文件最末尾的空格符和换行符里这时候可以用cat -A或十六进制编辑器检查。如果是图片操作就要多几步。首先用strings在图片里搜可打印字符串strings flag.png | grep -i flag\|key\|{如果直接命中直接就能拿flag很多简单题就爱这么干。搜不到的话用binwalk检查图片尾部是否有附加数据binwalk flag.pngbinwalk如果显示“ZIP archive data”或者“PNG image data”存在于图片偏移位置说明图片里嵌了其他文件用foremost或者dd把附加数据分离出来继续分析。还有一种常见情况是图片本身是LSB隐写需要用zsteg、Stegsolve这类工具查看通道信息通道里可能藏着二维码或者二进制字符串。对于入门题来说这个步骤出现频率不高但是既然已经走到图片分析这一步顺手做一下总没错。3.6 拿到flag之后的提交细节找到flag之后提交还有几个需要注意的小细节flag的格式。BUUCTF的flag一般形如flag{...}如果你的结果没有闭合大括号或者大小写不对提交时会报错。先核对格式再提交。隐藏字符。从图片或文本里复制flag时注意有没有空格、制表符、不可见字符混进去。这些字符肉眼看不出来但提交时会让你怀疑人生。建议把flag粘贴到十六进制编辑器里看一眼确认没有多余字节。换行。有些flag在txt里后面带了一个换行符复制的时候经常一起复制进去提交平台一般会忽略但有的题目不清除所以最好手动删除末尾换行再提交。4. 常见问题与排查技巧实录4.1 解压报错“密码错误”但密码明明是对的这个坑我踩过不止一次原因基本是编码问题。Windows下默认使用GBK编码如果密码包含中文或其他非ASCII字符ARCHPR恢复出来的密码在输入时可能因为编码不一致导致解压失败。解决方法是把密码粘贴到记事本里另存为UTF-8编码后再复制或者在ARCHPR里直接复制结果不要手动输入。另一个可能性是“大小写”。RAR密码区分大小写ARCHPR跑出来的结果如果是小写但实际密码首字母大写也会解压失败。用ARCHPR时建议把密码结果复制到一个文本文件里方便对比验证。4.2 跑爆破跑了半天没动静如果你遇到ARCHPR速度慢、半天跑不出结果先停一下别硬等。优先检查三件事是否确认了真加密如果是伪加密你把整个压缩包内容都跑完了也解不开。密码范围是否设置得太大了比如8位以上的大小写字母加数字加特殊字符这个空间太大了除非你知道题目故意给这种复杂度否则先缩小范围。是否有遗漏的提示再回头看一遍题目页面、压缩包的文件名、题目备注是不是有隐藏的密码信息。我做过一次RAR题密码是“1234”但出题人在题目描述里写了“密码是一个四位数字”我没有看描述直接拿8位混合暴力去跑白白浪费了十分钟。做题时最忌讳闷头跑工具信息就摆在眼前。4.3 解压出的文件显示损坏或无法打开一种情况是伪加密修改头部没改对导致解压出来的文件数据不完整。遇到这种情况恢复原文件重新分析头部确认修改的字节是否正确。另一种情况是压缩包是多卷压缩的一部分需要把分卷文件放在同一目录下然后打开第一个分卷解压。还有一种冷门情况是解压出来的文件其实不是损坏而是文件类型被改了。比如出题人把一个PNG文件改成了TXT或者把RAR的头部做了混淆。这时候用file命令判断真实类型改成正确后缀再打开。4.4 图片里找不到flag信息解压后的图片没有直接字符串binwalk也没发现东西这种情况最考验耐心。常见的处理顺序是先用Stegsolve的“Analyse → File Format”逐层看文件结构确认没有隐藏数据。再用“Analyse → Data Extract”查看RGB通道里有没有规律性数据通常先看LSB位。如果LSB有数据但肉眼分辨不出内容把提取的数据导出为二进制文件再用file命令识别其类型。很多时候导出的就是一个压缩包或二维码图片。最后检查图片的像素尺寸和文件大小是否存在异常有没有高度被修改过的痕迹。改高度看宽高比的题目在MISC里也很多虽然和RAR本身无关但解题链路是连续的。这套流程走完还什么都没找到那就回到最开始的RAR包看看是不是还有第二个压缩包没有被发现或者有没有隐藏目录需要用特殊参数才能显示。5. 一点个人心路分享刷BUUCTF的RAR类题目到现在我最大的感受是这类题不是考你会不会破解加密而是考你“面对一个捂得很严实的容器有没有一套稳定的拆解顺序”。很多人看到加密包就急想到什么用什么结果在错误的方向上消耗了大量时间。我自己整理过一套固定的动作——先识别、再判断、后爆破、终分析每一步都只做该做的事效率高了很多。另外一个小技巧是这类RAR题目的密码很多时候就藏在题目的标题、描述或者文件名里。比如“just_a_rar”这个名字本身可能就是在暗示你“只是简单的RAR”不要想复杂。做题的时候偶尔退一步站在出题人的角度想想他想让你发现什么、想让你卡在哪里思路往往就清晰了。如果你按这个流程走通了第一道RAR题后面的zip题、压缩包套娃题基本都是同一套思路的变体。把基础动作练扎实MISC的路会越走越顺。
返回列表