场景:当你逆向时,发现有一段数据是加密的,需要知道明文是什么,以及加密算法是什么?
现在我们仅知道密文是什么
那么如何根据密文反推明文以及算法呢?
答案只有一个,暴力尝试!!
但是我们不可能使用穷举法尝试,否则到你10000岁都不会成功,那怎么做呢?
我们其实 除了 密文 还有其他数据可以操作 那就是 目标应用程序的 内存
1.当我们得到密文数据时,应当对目标进程实现挂起操作,(避免内存被释放)
2.1. 将目标进程挂起后,我们可以使用Windows 官方API (MiniDumpWriteDump )命令实现对目标进程内存的转存
2.2. 或者使用API打开进程,依次读取目标进程的内存,写出到文件
2.3. 若你有其他方法也是可以的,总之将目标进程的全部内存保存下来,供我们后续分析
3. 当得到目标进程的内存数据后,我们应当取消对目标进程的挂起操作。
4. 接下来就是对内存文件的分析了
5.1. 要解析出内存中出现的全部字符串,如果直接用的话,字符串肯定太多了,那么肯定要过滤一些字符串的
5.2. 首先我们要知道字符串的一些特征
5.2.1. 比如字符串正常情况下都是以字节0结尾
5.2.2. 如果字符串包含中文大于字节127的肯定是连续2个或3个字节的倍数
5.2.3. 根据这些情况,以及一些你自定义的规则进行过滤,这个过滤步骤相当重要(剩余的字符串数量太多,可能之后推理的时间变长,剩余的太少可能将正确需要的给过滤掉了,导致推理不出来)
5.2.4 当过滤完成后,你就可以根据密文猜测是什么类型的算法了,假设密文是16字节(hex之后是32字符)这种密文,大概率是MD5,所以你可以对刚才过滤后的所有字符串进行一次计算MD5,如果结果和你得到的密文一致那就是推理成功了
5.2.5 假设密文是64字节,你可以尝试DES,AES,SHA-512,因为DES加密块是8字节,AES加密块是16字节,而密文长度64又刚好是8和16的整倍数,而SHA-512刚好是64字节的结果,所以都可以尝试
6. 聪明的你,如果有兴趣的话,可以着手尝试一下了
也可以加入Sunny中间件交流群讨论
Sunny QQ交流群(一群):751406884
Sunny QQ交流群(二群):545120699
Sunny QQ交流群(三群):170902713
QQ频道:https://pd.qq.com/s/cgzgyjj6u
欢迎光临 精易论坛 (https://bbs.125.la/) | Powered by Discuz! X3.4 |