【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

WriteUp 2年前 (2022) admin
1,491 0 0

SM2

题目知识点:

Biased nonce attack

观察代码发现 nonce 有一定 bias,前 6 bits 永远是 0,构造格子解 HNP 得到密钥,解密得到 flag。

poc链接:https://raw.githubusercontent.com/chunqiugame/cqb_writeups/master/2022hmgb/sm2_poc.sage


MissingFile

00 楔子

本意是为了考察选手对于MTF的一些认知,以及对于微软里面常见的一个API CryptProtectData加密获得的数据,也就是常说的 DPAPI Blob的一些了解程度的考察。但是为了方便出题(其实是自己折磨自己了),用了各种办法将数据读入内存,反而导致flag的泄露(疑似是flag也被存在了内存中,还没有被抹去),导致出现了非预期解,给各位师傅道歉了。

01 致知力行

题目描述: 某日Akira检查自己电脑时,发现机器好像中毒了!Akira试着抢救,但被病毒发现,只剩下了一份快照,这份快照能帮Akira找到病毒留下的秘密吗?

题目描述中提到了机器中毒,其实就是指这台电脑 已经被攻击过,暗示memory之中会残留一些攻击者利用过的数据。通常情况下,内存中残留的数据不足以进行数据恢复,但是在某些特定情况下,数据已被加载到内存中时,便有获取某一些特定数据的机会,这一题就是模拟此场景。同时提到了被病毒发现,其实这里是想表达病毒进行了自我数据删除,所以有数据残留。

数据发现

对于这类内存分析题,首先通过volatility调查当前内存的版本。
.volatility_2.6_win64_standalone.exe -f memory imageinfo

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

可以看到是一个Win7SPx86的操作系统。然后简单分析一下文件,发现一个奇怪的文件名字:

.volatility_2.6_win64_standalone.exe -f memory --profile=Win7SP1x86 filescan

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

检查电脑上的文件时候,能够找到一个奇怪的目录:

UsersNewGuestDesktopHacker

然而这个目录内似乎什么也没有。但是题目里提到病毒把数据给删除了(假设该情况成立),于是考虑使用 mftparser对内存中的 MFT进行分析。关于这个MTF的介绍,网上有很多文章都有介绍,这边简单提一下:在Windows使用的NTFS文件系统中,有一个被称为 Master File Table的数据,这部分数据会 存放在内存中,用于对NTFS中每个新增文件的一些信息进行记录,例如:文件的位置,修改时间等等。利用此特性,NTFS就能够快速定位每一个文件在磁盘上的位置,并且也能够让Explore能够对文件进行快速搜索。当文件大小不足1024字节的时候,这个文件数据 会直接存放到MFT中。由于大部分文件删除的时候,并不会直接抹去数据,而是标记此块数据已经被删除,所以MFT中通常会残留某些被删除的小文件的数据

回到题目中,考虑到被删除的文件大概率为我们的目标文件,于是通过volatility提供的插件mtfparser找到被删除的数据:

.volatility_2.6_win64_standalone.exe -f memory --profile=Win7SP1x86 mftparser > mtfparser.txt

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

在其中找到可疑的文件 S3cret

文件解密

基础知识集:

DPAPI:
全称Data Protection Application Programming Interface

DPAPI blob:
一段密文,可使用Master Key对其解密

Master Key:
64字节,用于解密DPAPI blob,使用用户登录密码、SID和16字节随机数加密后保存在Master Key file中

Master Key file:
二进制文件,可使用用户登录密码对其解密,获得Master Key

这部分内容选自:https://3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E5%88%A9%E7%94%A8Masterkey%E7%A6%BB%E7%BA%BF%E5%AF%BC%E5%87%BAChrome%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E4%BF%9D%E5%AD%98%E7%9A%84%E5%AF%86%E7%A0%81

从文件的魔数可以看出来,这个文件用的是Windows的 DPAPI技术进行的数据加密。DPAI就是Windows提供的一种数据保护API,它本质上使用了Windows通过用户自己登录(sids,登录密码等),以及域登录后的一些数据生成的密钥,并且使用内置的算法,对用户指定的数据进行加密。通常Windows上的浏览器历史数据,邮件加密,wifi密码等等都会以这种方式进行数据加密。

如果对这种数据进行解密的话,需要能够获取当前操作系统登录用户对应的 MasterKey才能解开。然而获得这个 MasterKey需要知道攻击者登录过程中使用的账户,以及账号的登录密码和对应的SIDs。通常的思路是利用这些数据生成一个blob加密过程中使用的MasterKey,从而对目标blob进行解密。

此时如果用 volatility 进行过文件扫描的话,会发现磁盘上残存则 mimikatz,一个专门用于Windows渗透的工具。并且使用这个工具可以进行一些敏感数据的导出。考虑到本机曾经中毒而且存在mimikatz,攻击者可能对当前机器的密码进行了dump,内存中可能残存着可以利用的数据。

对于DPAPI加密的数据了,从filescan中可以发现,S3cret被存放在一个叫做 NewGuest的用户桌面,于是尝试dump基本信息。

.volatility_2.6_win64_standalone.exe -f memory --profile=Win7SP1x86 hivelist
.volatility_2.6_win64_standalone.exe -f memory --profile=Win7SP1x86 hashdump

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

于是发现电脑上有一个可疑的 NewGuest用户。对其用户密码进行爆破可以得到其加密密码为弱口令 123456

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

由于生成需要知道对应的 sid,于是可以通过如下的指令获得对应用户的sids。

 .volatility_2.6_win64_standalone.exe -f memory --profile=Win7SP1x86 getsids

得到用户的SID为 S-1-5-21-206512979-2006505507-2644814589-1001

这里使用渗透工具mimikatz检查对应blob文件(这个加密文件就是我们通过插件mtfparser获取到的UsersNewGuestDesktopHackerS3cret文件内容) 

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

可以知道这里需要一个GUID为 470a5148-d8c9-4453-bf41-f0c09d158bfd的masterkey,这个文件正好也能在内存中找到(插件mtfparser获取到的 UsersNewGuestAppDataRoamingMICROS~1ProtectS-1-5-21-206512979-2006505507-2644814589-1001470a5148-d8c9-4453-bf41-f0c09d158bfd): 

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

将上述文件dump出来保存为 master.key,并且使用mimikazi结合其SID生成 masterkey

dpapi::masterkey /in:"master.key" /sid:S-1-5-21-206512979-2006505507-2644814589-1001 /password:123456

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

最终使用这个密码将对应的blob文件解密即可:

dpapi::blob /in:dump_S3cret /masterkey:092c4220064c30bc7f8b15d2d48957c4926af0632149b9c08cd87f34fc43aa1204d775bdc6ab429a0d4d0826fb80b08250b125d92913e2f7578cf778073bfe38

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

得到明文为:

flag{Hide_Behind_Windows}

结语

题目的本意是想模拟一个被入侵后,对一个入侵后环境内存取证的过程,然而由于各种能力限制,导致一些场景重现起来困难重重,例如一些必要数据并不会每次都残留在内存中,抑或有时候会留下敏感数据。在最后其实本应使用更加纯净的环境进行出题,然而在出题最后验题过程中,没注意到验题解出来的数据居然也才留在内存中了,导致出现了非预期,因自己的粗心给各位师傅带来不好的做题体验感到非常抱歉。


– 未完待续 –



春秋GAME伽玛实验室

会定期分享赛题赛制设计、解题思路……

如果你日常有一些技术研究和好的设计思路

或在赛后对某道题有另辟蹊径的想法

欢迎找到春秋GAME投稿哦~

联系vx:cium0309

欢迎加入 春秋GAME CTF交流2群

Q群:703460426

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

原文始发于微信公众号(春秋伽玛):【WP】第二届“红明谷”杯数据安全大赛题目解析(二)

版权声明:admin 发表于 2022年3月24日 下午6:28。
转载请注明:【WP】第二届“红明谷”杯数据安全大赛题目解析(二) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...