首页
社区
课程
招聘
[原创]南极动物厂 游戏安全2024初赛 PC
2024-4-15 15:07 2586

[原创]南极动物厂 游戏安全2024初赛 PC

2024-4-15 15:07
2586

腾讯游戏安全2024初赛-PC-WriteUp

感谢宝子们对我的帮助!
特别感谢!存宝!翔哥!呜呜呜呜!
WP是简单的版本,因为做题的时候是远程好盆友的电脑,自己没有windows环境,所以代码和截图说明就没有那么多了,就简单版本!希望大家不要喷我!我就是记录一下!存个档!

可以看到题目说的是有一个exe和一个sys两个pe文件,答案是两个token,那么可以大胆的猜测是R0层一个,R3层一个

因为自己从R0层开始分析的,所以这里分析的过程也从R0层开始

Ring0 Token

PS:这里自己有个很大的坑,搞了很久才知道,题目中(关闭windows defender等杀软后,先运行exe后需自行加载sys驱动,驱动加载返回值为31则驱动加载成功。此时,程序会写入两段shellcode到内存中)这个位置我双击调试的时候,因为没有很耐心的等待sys驱动加载完,立刻断下来开始搞的导致无法出现蓝屏的情况,这个问题搞了很久(所以这里要注意一下)

R3程序启动后,R0程序启动后,R0返回值为0x31,这个一般不是一个正确的返回值

这个时候打开其他的调试工具的时候,会发生蓝屏的现象,蓝屏的错误代码 0xace

根据这个想法来说的话,在驱动加载后返回0x31的情况下,进行了一个检测,并且导致蓝屏,那么很好的可以猜到很可能是起了一个内核线程,直接断PsCreateSystemThread (然后经过漫长的等待,因为驱动加了vmp跑的很慢)

这时候断下后发现这个地址有点不太对劲

直接uf看一下这个地址,这里能看到这个0xACE的值,和上面一堆的xmm的操作,并且这个位置是无模块的,直接dump下来看看是什么

直接丢在idaf5看一下

这里做了一些xor的操作,我是进行了解密

1
2
3
4
5
6
7
8
9
import numpy as np
 
v7 = np.array([0x4B6D1DDD324B10F0, 0x1E336B548B32934E], dtype=np.uint64)
v10 = np.array([0x4B6D1DDD4A7920D5, 0x1E336B548B32934E], dtype=np.uint64)
 
v7_xor = np.bitwise_xor(v7, v10)
 
result_hex = [hex(value) for value in v7_xor]
print(result_hex)

解密出来的是token:, %02x 这种东西,这里还是一个while(1),所以直接bp地址过来看看是什么东西

可以发现是DbgPrintEx,但是如果想在调试器中输出需要把该函数的level改了

1
2
3
4
5
6
NTSYSAPI ULONG DbgPrintEx(
  [in] ULONG ComponentId,
  [in] ULONG Level,
  [in] PCSTR Format,
       ...  
);

直接把Level修改成0

token:8b3f14a24d64f3e697957c252e3a5686

这个题也可以直接用winarkhttps://github.com/BeneficialCode/WinArk)去做,直接看一下`system`的线程看看有没有奇怪的地址,直接`dump`即可

Ring3 Token

R3程序,主要进行了远线程注入,这里直接hook WriteProcessMemory
这个时候会发现有四个地方写入

1
2
3
4
Process 25492, lpBaseAddress 00000213AFFA0000, lpBuffer 00007FF689274DA0 Size 1420
Process 25492, lpBaseAddress 00000213AFFA058C, lpBuffer 0000029A6C45C060 Size 4506624
Process 25492, lpBaseAddress 00000213B03EC98C, lpBuffer 000000EC6B2FF140 Size 552
Process 1956, lpBaseAddress 0000004D09CCEAD0, lpBuffer 000000EC6B2FFAA0 Size 4

这里的Size 4设置了标志位,来跟Ring 0层进行Check,这个也就是为什么我们在打开一次黑名单中的调试器的时候,会导致下一次直接报出查询到了,以及Ring 0层检测后进行了蓝屏的原因

那么主要的大小还是这个Size比较大的地方,直接dump下来看看,发现有很多关于file的操作?


其实看这个ring3vm还有点久(并没有看出什么东西,差点绕进去了)想了一下不如procmon直接干看一下task进程里的shellcode做了什么事情

可以发现是CreateFile Name Not Found,这个估计又是和上面一样的思路,上面是dbgprintex参数的问题,直接用ida看一下,我们现在可以确定创建一个C:\2024GameSafeRace.token1就可以看到token

可以看到token,这个时候我们看一下什么操作导致的

_RBP + 96 : fileName,问题出在了 v13 = 3 (OPEN_EXISTING)修改成 OPEN_ALWAYS即可

得出的答案就是:flag{757F4749AEBB1891EF5AC2A9B5439CEA- 8b3f14a24d64f3e697957c252e3a5686}


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-4-15 18:57 被L0x1c编辑 ,原因:
收藏
点赞3
打赏
分享
最新回复 (8)
雪    币: 1928
活跃值: (5889)
能力值: ( LV7,RANK:118 )
在线值:
发帖
回帖
粉丝
tutuj 2024-4-15 15:34
2
0
源神!
雪    币: 12605
活跃值: (14315)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
wmsuper 7 2024-4-15 15:40
3
0
源神!
雪    币: 8283
活跃值: (4811)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
v0id_ 2024-4-15 19:50
4
0
源神!
雪    币: 19431
活跃值: (29097)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2024-4-16 09:19
5
1
源神!
雪    币: 724
活跃值: (879)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
Qfrost 2024-4-16 10:40
6
0
源神!
雪    币: 74
活跃值: (7200)
能力值: ( LV9,RANK:335 )
在线值:
发帖
回帖
粉丝
PlaneJun 6 2024-4-16 22:37
7
0
源神!
雪    币: 5883
活跃值: (4467)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
淡然他徒弟 1 2024-4-17 10:15
8
0
源神!
雪    币: 1495
活跃值: (956)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
thisif 2024-4-17 14:02
9
0
源神!
游客
登录 | 注册 方可回帖
返回