第一题
0x01 背景
本题是找到“KCTF”对应的序列号,提示为使用密码学知识。
0x02 解题验证
1. 如何分辨出用了什么算法?
这是本题的关键,不然跟到像RSA等算法里面,余生就不幸福了!!!
(1)使用sig文件
在静态分析时,查看字符串,发现有OpenSSL0.98字样,可以使用openssl.sig文件,让IDA自动发现一些加密算法。具体步骤如下:
在这个地址(链接:https://pan.baidu.com/s/1n0cYtl7HqHGvxt8rrnMBbQ 提取码:z36s)(https://github.com/push0ebp/sig-database/blob/master/windows/openssl_0.9.8.sig)找到windows的openssl0.9.8.sig文件。
将openssl0.9.8.sig放入到IDA的/sig/pc/文件夹里,然后shift+F5调出“List of applied library modules”,右键“apply new signature”,将openssl0.9.8加入。
接下来就会看到一些函数被解析成算法标识了
(2)使用IDA的findcrypt3插件或者PEID的krypto
如果觉得还不是很清晰的话可以使用两种插件!
ida的findcrypt插件
在”链接:https://pan.baidu.com/s/1rKynHCGYOzkUFwShMVQe1A 提取码:wm1m “(或者https://github.com/polymorf/findcrypt-yara)下载插件.
然后在主机上注册 “pip2 install yara-python”,安装yara-python.之后将findcrypt3.py以及findcrypt3.rules移动到IDA的plugins文件夹.
之后”Edit-plugins”找到findcrypt插件,或者使用ctrl+Alt+F打开插件.该插件能识别出算法常量.可以是代码,也可以是数据.
如果是代码段,就会直接跳到代码部分,如果是数据段就会跳转到数据部分.再利用相互调用,就可以基本定位到函数.
PEID的krypto插件
找到算法点,再相互调用,就可以定位到算法函数.
2. 将算法显示出后就该分析程序逻辑