感谢宝子们对我的帮助!特别感谢!存宝!翔哥!呜呜呜呜!WP是简单的版本,因为做题的时候是远程好盆友的电脑,自己没有windows环境,所以代码和截图说明就没有那么多了,就简单版本!希望大家不要喷我!我就是记录一下!存个档!
可以看到题目说的是有一个exe和一个sys两个pe文件,答案是两个token,那么可以大胆的猜测是R0层一个,R3层一个
exe
sys
pe
token
R0
R3
因为自己从R0层开始分析的,所以这里分析的过程也从R0层开始
PS:这里自己有个很大的坑,搞了很久才知道,题目中(关闭windows defender等杀软后,先运行exe后需自行加载sys驱动,驱动加载返回值为31则驱动加载成功。此时,程序会写入两段shellcode到内存中)这个位置我双击调试的时候,因为没有很耐心的等待sys驱动加载完,立刻断下来开始搞的导致无法出现蓝屏的情况,这个问题搞了很久(所以这里要注意一下)
在R3程序启动后,R0程序启动后,R0返回值为0x31,这个一般不是一个正确的返回值
0x31
这个时候打开其他的调试工具的时候,会发生蓝屏的现象,蓝屏的错误代码 0xace
0xace
根据这个想法来说的话,在驱动加载后返回0x31的情况下,进行了一个检测,并且导致蓝屏,那么很好的可以猜到很可能是起了一个内核线程,直接断PsCreateSystemThread (然后经过漫长的等待,因为驱动加了vmp跑的很慢)
PsCreateSystemThread
这时候断下后发现这个地址有点不太对劲
直接uf看一下这个地址,这里能看到这个0xACE的值,和上面一堆的xmm的操作,并且这个位置是无模块的,直接dump下来看看是什么
uf
0xACE
xmm
dump
直接丢在ida里f5看一下
ida
f5
这里做了一些xor的操作,我是进行了解密
解密出来的是token:, %02x 这种东西,这里还是一个while(1),所以直接bp地址过来看看是什么东西
token:
%02x
while(1)
bp
可以发现是DbgPrintEx,但是如果想在调试器中输出需要把该函数的level改了
DbgPrintEx
level
直接把Level修改成0
Level
0
token:8b3f14a24d64f3e697957c252e3a5686
这个题也可以直接用winark (977K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6n7k6h3&6W2k6X3W2U0K9h3q4D9b7$3!0V1k6g2)9J5c8W2N6A6L8V1q4J5K9#2!0q4c8W2!0n7b7#2)9^5z5g2!0q4y4g2)9^5c8g2!0n7b7W2!0q4y4g2)9^5x3g2)9&6b7g2!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4#2)9&6b7W2!0n7y4q4!0q4y4W2)9^5c8g2!0m8y4g2!0q4y4#2)9&6b7#2)9^5b7W2!0q4y4q4!0n7z5q4)9^5x3q4!0q4y4q4!0n7z5q4)9^5b7W2)9$3x3s2y4&6M7%4c8W2L8g2)9$3x3q4!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4#2!0n7b7g2!0n7c8W2!0q4y4#2!0m8z5q4)9^5b7W2!0q4y4#2)9&6b7#2)9^5b7W2!0q4y4#2)9&6b7#2)9^5b7W2!0q4y4W2)9&6b7#2)9^5z5g2!0q4y4W2!0n7x3W2!0m8x3g2!0q4y4W2)9&6b7#2)9^5z5g2!0q4y4g2!0m8y4g2)9^5y4#2!0q4y4W2)9^5x3q4!0m8b7g2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4g2)9&6b7#2!0n7x3q4!0q4y4g2)9&6c8q4)9^5x3q4!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4#2)9&6b7W2!0n7y4q4!0q4y4W2)9^5c8g2!0m8y4g2)9$3x3r3c8#2L8i4m8Q4y4U0m8Q4c8e0g2Q4z5p5c8Q4b7U0y4Q4c8e0g2Q4z5p5k6Q4b7f1j5`.
winark
R3程序,主要进行了远线程注入,这里直接hook WriteProcessMemory这个时候会发现有四个地方写入
hook WriteProcessMemory
这里的Size 4设置了标志位,来跟Ring 0层进行Check,这个也就是为什么我们在打开一次黑名单中的调试器的时候,会导致下一次直接报出查询到了,以及Ring 0层检测后进行了蓝屏的原因
Size 4
Ring 0
Check
那么主要的大小还是这个Size比较大的地方,直接dump下来看看,发现有很多关于file的操作?
Size
file
其实看这个ring3的vm还有点久(并没有看出什么东西,差点绕进去了)想了一下不如procmon直接干看一下task进程里的shellcode做了什么事情
ring3
vm
procmon
task
可以发现是CreateFile Name Not Found,这个估计又是和上面一样的思路,上面是dbgprintex参数的问题,直接用ida看一下,我们现在可以确定创建一个C:\2024GameSafeRace.token1就可以看到token啦
CreateFile Name Not Found
dbgprintex
C:\2024GameSafeRace.token1
可以看到token,这个时候我们看一下什么操作导致的
[培训]科锐逆向工程师培训第53期2025年7月8日开班!