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

评论

为了清楚起见。是否要根据加密算法的汇编代码或仅根据加密的数据包识别加密算法?

@perror我可以访问二进制文件及其产生的网络流量。所以哪个更容易。建议使用IDA插件解决了我眼前的问题,但是有没有更简单的方法可以完全基于网络流量来做参考,以供将来参考?我本来以为,由于流量中没有标题或可识别的信息,因此不可能。

#1 楼

也许看看这个IDA插件。

找到加密函数后,在IDA中进行交叉引用应该可以使您看到调用函数的位置以及密钥可能在附近。如果您可以在这些函数上设置一个断点并查看该密钥正在传递什么,那么这当然是最简单的方法。

评论


我这有一个更新的版本,FindCrypt2 hexblog.com/?p=28

–0xea
13年3月31日在10:20



#2 楼

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

#3 楼

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

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


Aligot的创建是为了证明-概念图来说明相关论文中描述的原理。特别是,当前
不适合自动分析大型程序。如果您对这样的项目感兴趣,请与作者联系;)


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

#4 楼

IDAScope是HexRays的findcrypt2和FelixGröbert完成的工作的完美结合。这对于搜索和识别加密算法非常有用。有关IDAScope的加密标识的更多信息,建议您使用以下链接。

评论


在findcrypt2和HexRays上如何改进?是什么使它变得更好,更快等?

– Lizz
13年4月6日在4:58