Malware

Malware

25 ratings
真结局手把手教程
By 小绘精灵
对没错,已经有一个指南了,为什么要写这个呢?原指南在部分内容中较为语焉不详,省略了许多“显而易见”的内容,因此我写下了这篇,供对 CTF 有一定兴趣但缺乏基础的人可以一步步跟着解开密码,了解简单的计算机攻防,从而尝试步入这个天坑(x
2
   
Award
Favorite
Favorited
Unfavorite
Relate work
本指南参考了以下工作
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=3300807977
主要对该指南中的部分细节进行了补充,并对部分内容加以解释,以降低阅读门槛
如果还想了解更多与计算机安全、CTF 相关的内容,可以浏览以下链接
https://ctf-wiki.org/
这里有一个简单的攻击游戏,只需要一个拥有 SSH 功能的命令行即可游玩
https://overthewire.org/wargames/bandit/
进入真结局
在完成所有任务回到未来后,会收到来自作者的邮件,此时拉到最下面就可以看到输入密码的提示
我这里因为已经完成了,所以先把密码打码了
随后打开游戏根目录,看到一个名为 clue.jpg 的文件,无法用正常手段打开,此时开始进入真结局攻略流程
解决 clue 文件
这种无法打开的图片文件一般都另有玄机。
Windows 下,操作系统通过后缀名来识别文件类型,因此 clue.jpg 被直接识别为图片文件。但实际上,文件类型是通过文件头来进行标识的,在该目录下打开终端 ( PowerShell 或 WSL ),查看文件头情况
PowerShell 使用 Format-Hex 指令查看文件的 16 进制数据
Format-Hex clue.jpg
可以看到文件头为 7z ,这说明这是一个 7-Zip 压缩文件。
Linux 下可以直接使用 file 指令来读取文件类型,Windows 可以通过安装 GnuWin32 获得 file 等工具
WSL 下,Windows 的分区被挂在在 /mnt 目录中,可以直接打开
将后缀名改为 .7z, 尝试解压,发现有密码,这个就比较常规了,使用 Advanced Archive Password Recovery 尝试遍历密码,发现使用的是弱密码 password,解压即可。
解压出来发现是超大量文件夹,但我们需要的文件不知道藏在哪里,这时可以通过 Linux 的命令行工具快速统计里面存在的文件内容
ls -lR | grep "^-" | wc -l
其中, ls -lR 会递归查询所有文件夹,并以列表形式列出所有详细信息; grep "^-" 会在前面列出的信息里查找以 - 开头的文件,因为 Linux 下文件夹的信息在 ls -l 的输出信息中会以 d 开头,而文件以 - 开头;最后通过 wc -l 指令统计输出的行数,计算文件数量。
看到只有一个文件,利用 grep 的参数输出附近的信息
ls -lR | grep -10 "^-"
发现是在 ./7/3文件夹下,cd 进入,使用 cat 查看文件内容,为什么不直接打开,想想 clue.jpg
发现注释中存在一串加密数据
<!-- Zm9sZGVy77yaMjk5ZDEyZDg4ZTBlOTljMQ== -->
上面这串明显是由 base64 编码而成,使用命令行工具或者在线工具进行解码
echo "Zm9sZGVy77yaMjk5ZDEyZDg4ZTBlOTljMQ" | base64 -d
提示一个文件夹名
folder:299d12d88e0e99c1
使用 Everything 进行查找 (刚刚的 Hello.html 在知道文件名后也可以这么查)
打开文件夹,进入下一阶段

补充:查找 Hello.html 时,可以通过二分法不停查看文件夹的大小来寻找唯一存放文件的文件夹,但操作比较麻烦。PowerShell 也有提供类似的命令行工具,供读者自行研究,本文不做进一步探讨。
破解密钥
新的文件夹里有一个 exe 和一个 txt,先打开 txt 文件查看内容
含有大量加号,并以等号结尾,猜测为 RSA 加密内容,接下来运行 exe 文件
注意:不要在自己的宿主机上运行任何来历不明的程序,这可能导致无可挽回的结果!
如果你确定要运行,请使用虚拟机
没有显示任何运行结果,考虑反汇编,使用 IDA 打开 readme.exe
这文件名已经很明显告诉你要去阅读它而不是运行它了
如果是第一次使用反汇编工具,可以下载 IDA free edition,并在安装和初始化时使用默认设置
简单翻阅一下,发现了一个特大代码块,其中的注释就是我们在寻找的 RSA 私钥
双击打开,将内容复制下来,并整理成 RSA 私钥格式
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC04AAI4K7DdGTx KL86f54wT0ouQrDlL4krCz7DfeuFtaRPbHR/X+2wV7iX+e+doquuAgJ56DyLaRgm ZxV6ksn/vfg0qVJlKfgfqnUsH+5quun14oc7gsdNWHkJqUh9O8pTce/ElK2YbABi 9J06p4Z1PyxpjTkViFz+YVpY5zHo2ysa4tlH1VCpYjjzUQXAMD3NbroBXTYa2Lex UI/Xb2mnZepcGc5/ovQAzf227ORwNS6TcQiz0Wa+V7Ggz3fNBqtqipVg6QHT71a7 TOfZCOPTOW6K49p70DX+3Z3ezpIiX/ZpgBGGAckMGsNsI8lGIAR3vjXsNBeQ0sn2 FFnp+T+9AgMBAAECggEAFo0TFAhHYdEiQLsO1JFSvL02B3yDJ5/8nyRAyAjsE3ip Ksnf4H2qWeEl/7TGvkWo2AIiIubknZEV1LvnfqfMjZk22AIAZuKLsA8FmuHETQRO 5TxAFhhhFvCf7qdvhUWuHSdIeJ784dMdXTkYXVbDudyNgf98jYW56nFi3VC99UUg TaZWXAwr0yjDVqRWe2TpqjDAqNauvVFOhJgsNQ2yJf+XjqTLngM05vQg97CY1BUa pQ4YlvonfX2t4URxz5wsf88DJCRvjTuedezNFyMfyJyPWFylDsvoio9UTk000Tae Zr7Ab0e+gMbdcgo7lgOw7jue0mM+SH/uILU8SaRHVQKBgQDpcibMd56CQ0MT7Kw/ Zue1hpjrcaWlCK5nZ/21Eyu5giAA8CcKvTAL08r4E/ZV7gs28wsk8TZ/wvP63Xqj +Z+t98IRgJyFhed/2cUHRjEtGBkPbrzG0f2QgzDXx2Xkg27h6xXH7SSCZ6SV5Wr2 Ngnt9LuKmjnQx90sAhBxRpblIwKBgQDGWZr/DBncbK6/SKKr+h7sf8fWmEJvlC9E 2pyszEm6foKMxUKOCLpvzLuXZBDDj4tJrPg2oGaA2zU9TAvzX6spT7VnvJhwmP+r +QUysTnv0rUZDs5mHGYbjWly+9J6GcYzb896kL6EMK9BNGVfSiH2vsV6ugYJIo61 Zkv/+6/FnwKBgQC7qp3QL7WIiKQLB29tRL+vKXYTiHgeVP1Hecz2XWQALMCnoGfy dSaDy45Wok2cxNHVKctitlsWmFXk7VmjKpCYnR0xTtAFcyEooZuH/oCX/NBgnKg7 uSJ7o0uHm++opZRlH8SRxW1dPA6OxjCXn9eZqO1/Pf6Ofa2qrDolpha2OwKBgG23 y0Eh1HxVsiQlbbZr2QdBd62A8978vVj9BIWhS3dZ26U6yKIAugB1457Ov2ct1AKh J3wwJgNJPp31nva1CN0FNnd3n2tJdsQOL43m8wFyMLL3ubxKIUFEa/wqyDa6YyS4 yLAnuPsuYwNSlHCtdTQkOuC0XfpXn1FAkPG8q3JJAoGBAMy4385KPM27iQE38UBm 9gh17VBqaUxd+9s6Zkb4noS00vR3S0oDrQaNIdPCJphm1xlewqx2jbYMQX7aDrgF r7mV6V2V78Ex8P7YoL9CfndnoYcq5mZTwKhuKZaenHNYk33qAuEVOkwGI+JcedSn OHYMpp6ckBxSzsNcekc+mH0i -----END PRIVATE KEY-----
找一个在线的 RSA 解码网站,把加密内容和私钥都扔进去,尝试解码
得到内容为 b4e9ab2f61cbfda4,这个我是真没猜出来,看攻略才知道是 MD5。MD5本质上是哈希函数,属于有损加密,因此只能通过撞库来破解。找一个在线的 MD5 撞库工具,把数字扔进去,得到最终的答案
最终答案为 95173
逃课
此方法来源于原攻略评论区
直接使用 VSCode 打开游戏资源文件 Malware.pck, 搜索 _process,可以找到如下代码
直接可以看到密码为 95173
总结
总的来说难度不算大,主要是使用 Windows 平台后感觉很多地方处处受制,很多比较熟练的命令行工具都没法快速展开,谁在游戏机上装那些乱七八糟的啊。主要是猜那几个编码,这就体现出经验的差距了,我第一眼真的很难想到是什么编码,还是用少了,得练.jpg

有任何不妥之处可在评论区指出,我也只是初学者,一定改一定改
7 Comments
以诺书 13 Oct, 2024 @ 3:50am 
其实不用反编译,直接把exe改后缀为txt打开,搜索Password,就会找到BEGIN PRIVATE KEY开头的RSA私钥
𭪬𦒹 20 Sep, 2024 @ 10:57am 
用steamdeck玩的这游戏,Linux上啥都有,但是不好运行Windows的控制台程序:steamsad:,我最后是把exe的.rdata解压出来用vscode打开。
那个pck文件我看文件头是7z就没管他了:steamsad:
小绘精灵  [author] 19 Aug, 2024 @ 2:19am 
@Xuanshao CTF(Capture The Flag,夺旗赛)是一种安全人员之间较量技术的比赛,一种比赛形式就是出题人将一串密码藏在目标机器内,参赛者需要在目标机器中通过逆向、渗透等技术找出密码并提交,与本游戏真结局攻略流程有一定相似之处,但实际的考题更为复杂
CliveLingyi 19 Aug, 2024 @ 1:46am 
我想知道这是什么,我就好像踏入一个完全陌生的领地
Chr_ 18 Aug, 2024 @ 8:30am 
ida逆向其实可以看出来程序的密码是 iamnottom,输进去就会输出rsa私钥了
aURORA_JC 17 Aug, 2024 @ 1:28am 
非常详细的WriteUp:steamthumbsup:
かりん 15 Aug, 2024 @ 10:35am 
作者应该也想到了,我试了一下用其他哈希解出来值是一样的