确定加密算法

逆向工程 工具 密码学
2021-06-29 02:14:51

我正在分析一些似乎对网络通信进行加密的软件,但它似乎不是 SSL。如何轻松确定其使用的加密算法,并找到密钥?

4个回答

也许看看这个IDA 插件。

找到加密函数后,在 IDA 中进行交叉引用应该可以让您看到调用函数的位置以及密钥可能就在附近。如果您可以在这些函数上设置断点并查看为键传入的内容,这当然是最简单的方法。

有关自动密码识别的更高级方法,请参阅 Felix Gröbert在软件中自动识别密码原语的工作 他使用 pintool 动态检测代码,甚至可以恢复密钥。该代码也可用该存储库包含用于比较的其他工具,例如 PeID 和 OllyDBG 插件。

我没有使用过它,但有一个名为Aligot 的开源工具可能会在加密算法被混淆时有所帮助。根据作者的说法,Aligot 可以识别 TEA、MD5、RC4 和 AES。

Aligot 确实有一个重要的免责声明:

Aligot 是作为概念验证构建的,用于说明相关论文中描述的原则特别是目前不适合自动分析大型程序。如果您对此类项目感兴趣,请联系作者;)

尽管有免责声明,但论文中指出的结果表明 Aligot 值得研究。

HexRays 的 findcrypt2 和 Felix Gröbert 所做的工作的一个很好的组合是IDAScope它对于搜索和识别加密算法非常有用。有关 IDAScope 的加密识别的更多信息,我推荐以下链接