首页
社区
课程
招聘
[分享]CTF2017 第11题 CrackMe 设计思路和破解思路
2017-6-23 12:13 4429

[分享]CTF2017 第11题 CrackMe 设计思路和破解思路

2017-6-23 12:13
4429

设计思路

1.为程序写了一个简单的壳,对程序进行简单的异或加密。若对程序进行dump,会丢失藏在文件中但没有读入内存的DES解密函数,使序列号无法正常解密

2.使用自己实现的LoadLibrarykernel32加载到内存中,并使用自己实现的GetProcAddress通过已加密的函数名获取函数地址,隐藏api调用

3.程序入口处判断了是否处于调试状态,包括检查PEBBeingDebugged成员、堆标志和父进程名是否为explore.execmd.e   xe

 1)如果不为调试状态,则以调试方式打开程序本身,创建子进程

 2如果处于调试状态,则显示CrackMe对话框

4.通过SetUnhandledExceptionFilter设置了异常筛选器

5.当用户点击确定按钮时,在父进程名和本进程名一致时会触发除0异常。如果本进程是通过父进程以调试模式打开,则该异常会被父进程捕获;否则,会被异常筛选器给捕获(正常情况不会来这里)

6.程序本身没有正常调用验证序列号的流程。当父进程捕捉到除0异常之后(程序第一次点击确认按钮时),会对错误的验证序列号的函数进行hook,从而跳转到正确的流程。

7.验证序列号流程:

 1)程序中提供前96字节的DES解密算法明文(记为fuc1)。验证前会将pe文件中已的DES解密算法密文(记为fuc2)读入内存中

 2)验证码的前10个十六进制字符组成4字节和1字节的两个秘钥,这两个秘钥对fuc2进行简单移位异或操作解密并与fuc1的前96字节比较,验证成功则继续

 3)验证码的后32字符组成16字节密文,通过程序中提供的秘钥调用fuc1对密文进行解密,验证解密出的明文与程序中的明文进行比较,字符串相同则为提示成功(对此处由于我的疏忽没考虑到字符串的’/0’结尾后还能填写数据造成了程序无数解深表遗憾)


破解思路

定位到壳结束代码jmp eax跳转到OEP的代码位置,跳转后可以对程序进行dump

WinMain中通过修改全局的调试状态标志位使得程序能够在调试状态下创建子进程(默认只能通过explore.execmd.exe打开的进程才会创建子进程)

在点击按钮的时候子进程会触发除0异常

对父进程的ZwWriteVirtualMemory下断点(对WriteProcessMemory下断点无效,程序会走自己加载的kernel32)可以看到对子进程写了两次内存

第一次在程序的0x004017BD处写了两个0x90nop

第二次写数据为错误的验证序列号函数进行了hook,从而跳转到正确的流程

跳转之后的函数地址0x00402300即为正确的验证函数

验证序列号的函数中存在这一些内联的GetProcAddress函数,可以发现规律,最后call+寄存器就是函数调用

通过od调试可以看出函数流程是通过读文件本身读取偏移0x00041000处的DES函数,通过注册码的前10个字符对其进行解密,解密算法较为简单,如下图所示,解密后与一部分DES函数明文进行比较,可以获得解密的DES函数

接着需要识别出变形的DES解密算法,转为二进制数组的数据在解密后对偶数位进行取反,本题的难点在这里,需要对DES算法有深入的了解,才能找到做手脚的地方

程序中提供了DES算法所需的秘钥和明文:

对明文转为二进制数组后对偶数位进行取反(其实就是异或一个0xAA),然后调用正常的DES加密函数对其加密,得到的密文转为32个十六进制字符的字符串,与序列号的前10个字符组成的字符串序列号即为最终答案



可能图片看不清楚,提供了doc附件。由于我们科锐课程的安排,在上个月刚进入逆向的学习,只能由一些作业临时拼凑成一份crackme,对于程序多解的情况深表遗憾。第一次尝试crackme,从大牛们那学到很多,感谢看雪这么好的平台,感谢科锐的老师们对我们的教导


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (3)
雪    币: 85463
活跃值: (198795)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2017-6-23 12:31
2
0
辛苦...
雪    币: 519
活跃值: (208)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
白小菜 1 2017-6-23 13:40
3
0
我来冒泡点个赞~
雪    币: 1392
活跃值: (1467)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
咸鱼炒白菜 2017-6-23 14:16
4
0
游客
登录 | 注册 方可回帖
返回