前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何攻破加密算法

如何攻破加密算法

作者头像
C4rpeDime
发布2018-08-29 11:10:37
1.5K1
发布2018-08-29 11:10:37
举报
文章被收录于专栏:黑白安全

当应用加密算法时,有许多地方可能会出错。难点在于识别和分析程序员用来加密的方法,然后寻找其中的漏洞。漏洞的种类也很多,比如弱加密算法、弱密钥生成器、服务端漏洞和密钥泄露等。

定位加密算法

在尝试寻找漏洞之前,首先要知道使用了什么加密算法。最常用的方法就是查看API调用,如果API调用可以查到,那很容易就可以识别使用的算法。

很多时候,加密算法是静态编译到恶意软件中的,或者使用了传统的写加密算法。这种情况下,就要理解解密算法的内部工作流程来识别代码。

文件的内容可以被加密然后写回文件中,所以最快的减小加密的范围的方法是交叉引用ReadFile和WriteFile API调用。加密就是在这两个点间执行的。

如何攻破加密算法 白帽艺术 第1张
如何攻破加密算法 白帽艺术 第1张

识别加密代码

当寻找静态加密编译的加密代码时,不需要找任何的API调用。理解加密算法的底层工作原理是非常必要的。

首先,我们看一下AES算法的高级流。大多数的同步加密算法的流都与之类似,区别在于所使用的数学操作的类型,但是核心概念是相同的。所以,理解AES对于在现实中识别其他类型的加密算法是非常有帮助的。

AES是对称加密算法,会执行一系列的数学和逻辑运算:

如何攻破加密算法 白帽艺术 第2张
如何攻破加密算法 白帽艺术 第2张

· 要加密的明文数据

· 静态字节是算法的一部分

· 加密使用的密钥

根据AES的选择和密钥大小,流会有所不同。从上面的图会有一些block组成的环:

· Add key添加密钥

· Shift rows行变换

· Sub bytes字节替换

· Mix columns行列交换

上面的步骤中,文件数据被读入固定字节的矩阵中。本例中是16字节,但实际上根据算法的不同,几字节都有可能。下面是这几轮的结果:

· Add key将密钥数据和输入数据矩阵进行XOR运算;

· Shift rows对数据进行移位操作。比如,数据本来是 4 5 2 1,左移1位就变成了5 2 1 4。

· Sub bytes是利用算法内置的静态字节数组。数据的每个字节都是lookup矩阵的索引。这样,一个静态的替换就发生了。

· Mix columns对矩阵中的字节进行一些数据操作和线性变换,这样矩阵中的每个字节就都变了。

如何攻破加密算法 白帽艺术 第3张
如何攻破加密算法 白帽艺术 第3张

上面4个步骤可以看做是一轮。AES有10到14轮,也就是说在二进制文件中寻找加密代码,应该是一段很长的重复代码。这是从二进制文件中寻找加密代码的一种方法。

下面是加密的另一轮,AES算法的另一种或相似的同步加密:

如何攻破加密算法 白帽艺术 第4张
如何攻破加密算法 白帽艺术 第4张

操作的顺序有点不同,但这不重要。我们并不是寻找AES算法的漏洞,我们寻找的是AES在实践时的漏洞。给出AES内部工作原理细节的原因是让大家更好的理解其工作原理,便于在代码中识别。

以Scarab勒索软件为例,它使用了静态编译的AES来加密文件,我们对不同加密算法的内部工作原来进行了研究,这可以帮我们识别使用加密算法。

如何攻破加密算法 白帽艺术 第5张
如何攻破加密算法 白帽艺术 第5张

这也就说明了在同一个勒索软件中可能会使用多种加密方法。我们有文件加密的流图还有加密密钥的算法。虽然这不是修改文件本身的加密,但是可以用来确保文件加密密钥的安全。这些弱点都可以用来攻破加密。技术上可以使用任意次数的加密组合,因为这是由作者决定的。必须要理解和识别每个加密算法以及所起的作用。因为攻破一个错误使用的加密算法就可以连环攻破整个加密方案。

如何攻破加密算法 白帽艺术 第6张
如何攻破加密算法 白帽艺术 第6张

随机数生成器

攻破加密的另一个出发点就是加密密钥生成器,大多数情况下加密密钥生成器来源于一个随机数生成器。

如果你之前了解过任何加密的话,就应该知道随机数生成器的重要性。因为一旦你可以让随机数生成器生成之前加密时所产生的值,那么就可以重新生成之前的加密密钥。

下图中,系统时间作为弱随机数生成器的种子。

如何攻破加密算法 白帽艺术 第7张
如何攻破加密算法 白帽艺术 第7张

大多数情况下,任何的计算机算法都只能执行一定次数的循环。如果输入函数的输入是一样的,那么输出的结果也应该是一样的。对随机数生成器来说,只要有足够大的输入来生成随机数值就可以进行推断了。比如,一些弱随机数生成器利用日期作为输入。因此,这些条件都可以重新创建的。唯一需要做的就是利用足够多的随机输入来获取足够多的熵值。

如何攻破加密算法 白帽艺术 第8张
如何攻破加密算法 白帽艺术 第8张

一些强的随机数生成器会使用样本音频数据、加上日期。并使用鼠标输入和其他的元素来让输入尽可能的随机化。这样的话,暴力破解进行重新创造就变得很难。

破解弱RNG的理论过程

假设勒索算计用用当前时间的微秒作为RNG的种子,使用的加密是标准加密。下面是攻击的基本步骤。

· 网络管理员分析勒索软件发现了用于加密的公钥是受害者的ID。

· 网络管理员可以通过日志等了解感染发生的大概时间,比如,10:00:00am 到10:00:10am一个10秒的时间窗口。

· 因为RNG使用微秒作为seed,那么就有1000万个可能的seed。

· 如果勒索软件用时间作为seed值x,那么加密密钥对就是KEYx。

· 然后从10:00:00开始以微秒的单位递增,用标准软件进行密钥对创建。

· 然后检查是否与受害者ID(公钥)匹配。

· 最终,会有一个与之匹配的密钥。然后可以尝试私钥并进行解密,就可以将原始文件恢复。

在这个场景中,用到了暴力破解。如果RNG用微秒和当时的进程数相结合作为seed,就增加了复杂性。比如说当时运行的进程有5-25个,那么暴力破解需要尝试的次数就是1000万-2亿次,虽然也是可以破解的,但是增加了破解的复杂度。

如何攻破加密算法 白帽艺术 第9张
如何攻破加密算法 白帽艺术 第9张

如果加入了足够多的参数,或者参数的可能性比较多的话,那么最终需要暴力破解的次数会非常多,多到可能用尽你余生的时间都不够的。

如何攻破加密算法 白帽艺术 第10张
如何攻破加密算法 白帽艺术 第10张

解密实践

下面是一些成功破解的勒索软件的例子和所使用的方法。

代码语言:javascript
复制
7ev3n, XORist, Bart: Weak encryption algorithm
Petya: Mistakes in cryptography implementation
DMA Locker, CryptXXX: Weak key generator
Cerber: Server-side vulnerability
Chimera: Leaked keys

弱加密算法

DES算法是上世纪开发的,并广泛用于加密实践。因为密钥位数限制,目前DES被认为是一种弱加密算法。因为加密算法的密钥的位数是考虑加密算法强壮性的一个因素。密钥位数越大,破解的难度就越大。

通过查看文件也可以得到加密算法的一些信息。 

如何攻破加密算法 白帽艺术 第11张
如何攻破加密算法 白帽艺术 第11张

从上图可以看出,熵值比较低,加密文件中的数据与原文比较相似。这应该是明文XOR的结果。

如何攻破加密算法 白帽艺术 第12张
如何攻破加密算法 白帽艺术 第12张

从上图看出,熵值明显是比较大的。很难从密文中看出与明文的相似处。

文件可视化是对给定勒索软件进行解密的第一步,从中我们可以找到所使用的加密算法和加密算法的强弱。也能给出一个攻击的方向和如何攻破加密。比如,上面列表中的Cerber就是利用服务端的漏洞进行攻击的,虽然加密本身是很强的,但是也可以攻击侧信道来创建解密器。

结论

为了寻找加密算法的弱点,需要对加密算法进行识别和分类。然后对代码进行初步识别,再进一步找出可能存在的弱点和漏洞,再利用这些漏洞和弱点就可以攻破加密算法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-081,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档