-
-
[原创]2022 KCTF 秋季赛——KM_Zero安全团队
-
发表于:
2022-11-13 11:20
5748
-
[原创]2022 KCTF 秋季赛——KM_Zero安全团队
先解释下为什么发两个帖子,不太知道发帖格式,所以我们在12号是以压缩包的方式发送的,这次我们直接在帖子上进行描述。
题目是windows一类crackme,隐藏执行七段加密验证的shellcode。shellcode是通过特殊写法并嵌入混淆无效代码,然后vc编译后抠出来的。
团队名称:KM_Zero
成员看雪ID: 伯爵的信仰、SwiZ
团长QQ:760732725
见附件
勇敢的骑士经过激烈的战斗终于杀死了东方恶龙,但是在恶龙的藏宝库里并没有看见公主的身影,经过仔细搜寻,在藏宝库中发现了一扇暗门。破开暗门后,找到了一张暗黄的羊皮卷和七个爬满青苔的石盒。
羊皮卷上写道:真正的勇士敢于直面难解的谜题!解开所有石盒的秘密,就会得到你想要的!出发吧,勇士!
程序在正常运行后,会弹出验证码输入窗口,输入验证码进行验证,当输入验证码正确则出现验证成功提示,否则出现验证失败提示。
程序包括两个部分,一是窗口部分,一个是加密验证部分。在窗口收到输入的验证码并提交后,将验证码和加密过程的ShellCode脱壳并注入新进程进行加密验证并返回结果,窗口进程获取验证进程返回结果。
加密验证ShellCode三个方面的设计:一个是代码混淆设计,二是反调式设计,三是Key的加密和验证。在代码混淆的设计中,使用插入无效代码进行混淆处理,解题者应当想办法在其中找到有效代码;在反调试设计包括判断是否有存在硬件断点,是否存在软件断点INT3, 是否存在调试窗口,BeingDebugged是否为1等,解题者应当想办法绕过反调试。在对输入进行加密和验证的过程中,包括字典,异或,移位、分段置换等方式,解题者应当找到解密过程,最后是验证前面加密后的结果。
(注:ShellCode有七段,前六段都是单纯的对称加密,最后一段是对称加密和最终验证。算法都很简单,绝对可以逆推。)
题目核心加密算法,全部由编译成为了shellcode。
shellcode运行手法模拟木马常用手法,挂起进程注入,最后拿到程序结果判断成功与否。
首先要,确定KEY的长度,就是128位,程序逆向即可。
接着,提取出七段shellcode,提取点就是在Decompress这个API运行后可以找到,
接口都是如下
七段组合在一起的文件格式如下
4字节长度 + SHELLCODE + 4字节长度 + SHELLCODE + 4字节长度 + SHELLCODE + 4字节长度 + SHELLCODE + 4字节长度 + SHELLCODE + 4字节长度 + SHELLCODE + 4字节长度 + SHELLCODE
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2022-12-4 12:02
被kanxue编辑
,原因: