分析1
「影」核心系统「根」需要在一些开启了特殊特性的机器上才能部署成功,逆向找到成功部署条件!成功部署「影」核心系统,即成功运行shadow_panel.exe,控制台程序成功运行进入至输入终止密码的终端。(满分0.5分

首次运行提示,这里运行后卡死,猜测是检测环境失败的措施,提前需要打快照
搜索字符串交叉引用找到

这里能看出来,哪个是0,就说明是过了,那么看来是1没过,这里借助agent分析,得到

这个嫌疑函数,并且得到要求
1 | shadow_panel.exe 会检查机器是否满足这组“特殊特性”: |
配好win10 1909的虚拟机后,开启vt,又报了4的错误,那么进一步去看has_acpi_dmar_or_ivrs_table函数情况,如果返回0就对了

这里还原代码自己跑的时候也是不行的,但是我的DMAR环境在RW里面看确实是好了,所以只能先patch掉这里了

第一关过了,看进度感觉还有3关,那么sub_144A04160函数就很明显是中心派发的函数,每轮断点在
(*(*v11 + 16LL))(v11, &v45);就可以
那么就得到加上第一个的四个函数,这里直接放我的结论
函数1:检测vt环境以及DMAR
函数2:初始化,同时可以检测是否管理员启动
函数3:内存提取文件并落地,经过一个混淆的函数,删除服务(这里感觉有点像题目里面的隐藏)
函数4:调用cpuid,对比模数
函数3

这里会创建一个sys文件,后面会从 +0x5cca010h 位置是这个sys文件
函数4
在函数3里面会调用一样的代码
1 | exec_cpuid_leaf_subleaf(0xDEADBEEF, 0x114514u, 0, 0, out_regs_); |
但是在3里面就有,4就没有,不过我先nop了,先得到最终提交flag界面

分析2
「根」使用特殊方法,对操作系统底层进行了攻击,并借此将关键核心代码隐藏了起来,分析其完整实现流程。(满分2.5分)
这里前文分析1中的函数3里面有一个混淆的函数,初步猜测这个就是关键攻击的核心代码
进去发现是个llvm吧,写一个idc脚本去除这个混淆,哦这里也对应着第三点,编写检测代码检测特殊方式吧,检测代码就是去混淆代码吧
阅读规则才看见要完整提供提示词聊天记录,前面的确实没了,因为是终端开的agent,后面的都加上
1 | 0000000147F188A4这里开始是一段llvm的混淆间接跳转代码,你分析一下,并尝试给我idc脚本去除 |
1 | • 我再扩一圈看这条链和邻近块,不假设只有一种模板。重点检查几类尾跳:lea/lea/jmp reg、mov/add/jmp reg、带 pushfq/popfq 的 |
1 | # IDAPython 3.x |
1 | import ida_bytes |
1 | › 从0000000147F1B0A4这里开始跟一下这个llvm,其他的jmp r*的llvm已经有去除脚本了,但是这个call开始的里面就没有脚本,你跟 |
然后要打别的线下赛了,遗憾落幕了