当心黑客利用数字证书的漏洞

2016-11-26 06:42
网络安全和信息化 2016年8期
关键词:数字证书私钥公钥

引言:数字证书可与自然人、公司、Web服务等相关联,它由证书颁发机构(CA)签发,并被信任数字证书的有关各方认可。数字证书一般用于公钥的加密。然而利用数字证书进行攻击的数量在过去的几年可谓触目惊心,其攻击的形式和种类也多种多样,而其造成的后果自然是相当严重。

数字证书是互联网通讯中用于标识通讯各方身份信息,数字证书可与自然人、公 司、Web服务等相关联,它由证书颁发机构(CA)签发,并被信任数字证书的有关各方认可。因此它提供了一种在互联网上验证通信实体身份的方式,如同公民个人身份证一样。

数字证书一般用于公钥的加密。每一个数字证书都与一个合法有效的时间段有关,所以数字证书在到期时可以被撤消。可能导致撤消数字证书的其它条件还有:私钥暴露、主体与其公钥关系的变更(例如,申请者邮件地址的变化)。如图1显示不受信任的证书。

在非对称加密的过程中,每个主体都与一对密钥(一个公钥,一个私钥)相关联。任何人都可以用自己的私钥给一份文档签名。试图验证文档身份的真实性的任何人都可以使用签名人的公钥来验证文档。

图1 数字证书

公钥的用法之一就是加密文档的发送。假设你希望发送一份加密文档给zhangsan,那么你只要用张三的公钥(由证书颁发机构发布并公开)签名就足够了。在这一点上,只有zhangsan可以解密文档,因为只有他有一个私钥与用于加密的公钥相关联。

每个主体的公钥都包含在一个由可信任的第三方签名的数字证书中。通过此方法,那些相信第三方的主体只需验证其签名从而接受公钥的合法性。

数字证书的最流行的标准是 ITU-T X.509,证 书 颁发机构根据此标准来发布数字证书,并将主体的公钥与一个独一无二的名字绑定在一起,或者将其与一个别名(例如,一个电邮地址或一条DNS记录)绑定在一起。

与数字证书有关的主要的恶意应用

数字证书遭受攻击的数量在过去的几年可谓触目惊心,而其造成的后果自然是相当严重。读者可自行上网查询,在此不再赘述。

黑客往往对公钥基础架构(PKI)环境显示出极大兴趣,尤其是对于滥用数字证书执行一些非法活动,如网络间谍、破坏、传播恶意软件等。

1.促进恶意软件的传播

黑客攻击管理数字证书的实体有许多目的。通过窃取与可信任的厂商有关的数字证书,并用这些数字证书给恶意代码签名,黑客就可以减少恶意软件被快速检测到的可能性。

在此举一个著名的例子:前些年,某些网络攻击者使用Stuxnet这个网络工具感染了伊朗进行铀浓缩的原子能工厂。黑客使用了某些相关联的数字证书签名了恶意软件的源代码,并将披着“合法外衣”的软件发送给了目标系统。

2013年一些恶意黑客们又窃取了与某大型跨国公司相关联的数字证书。当时,有一些黑客正是使用该公司数字证书签名了一个恶意软件,并且破坏了该公司的一台易受攻击的服务器。被攻击的服务器又被黑客用于从公司的代码签名系统获得代码验证。

2014年4月,安全研究人员在某地实验室检测到了一个流行的木马的新变种。为防止被检测到,它通过源代码的数字签名来强化自己。这个例子用一个失窃的微软的数字证书实施数字签名。

2.经济欺诈

数字签名可以保证是谁谁签署了文档,用户可以决定是否相信签署该文件的个人或公司,以及发布该证书的企业。如果数字证书被窃,受害者的身份就会失窃并被用于非法目的。

恶意软件的作者可以设计并传播一个特定的恶意软件代理,从而窃取数字证书。如果数字证书与Web浏览器有关联,恶意软件就可以欺骗受害人,使其相信钓鱼网站的是合法的。

3.网络战争

由网络攻击者的网络间谍活动往往就是由被盗的数字证书执行的。攻击者用数字证书通过安全连接执行中间人攻击,欺骗用户认为他们正位于一个合法网站上,而事实上用户的SSL/TSL通信正被秘密地篡改和截获。

4.滥用数字证书

近年来,数字证书已经在很多方面被多次滥用。网络黑客滥用数字证书对公司、个人和政府等实施网络攻击,安全专家们认为数字证书的最主要的滥用就是中间人攻击。

黑客可以使用数字证书窃听SSL/TLS通信。当服务器向客户应用程序提供一个由可信任的但意料之外的CA签发的SSL/TLS证书时,攻击者就可以利用这些客户应用程序的缺乏严格控制的漏洞,并实施攻击。

SSL证书是可以保证网站真实性的特权机制。一般情况下,在我们访问一个安全的网站时,在浏览器的地址栏会出现一个挂锁标志的符合。

在挂锁标志出现之前,网站首先提供一个由可信任的机构签发的数字证书,该数字证书用以证明其身份和加密密钥。

不幸的是,由于Web浏览器的某些不正确的设计和缺乏验证过程,即使证书并非是浏览器所期望的,它也会接受由可信任的CA签发的证书。能够从任何CA获得虚假证书并在连接阶段将其提交给客户的攻击者可以冒充受害者访问的任何加密网站。

多数浏览器都会从任何合法的机构接受新证书。如果窃听者拥有虚假证书,并能够访问特定目标的互联网连接,他就可以变成“中间人”,观察并记录所有的加密通信。如图2为计算机浏览器所显示的安全证书形式。

另一种常见的网络攻击形式是通过窃用数字证书签名的恶意软件来实施的。这种技术可以使攻击者改进其恶意代码的规避技巧。在攻击者破坏了与可信任实体相关联的私钥之后,私钥就被用于签名恶意软件的代码。这种伎俩可以使攻击者安装软件组件(包括驱动程序、软件更新等),并为这些组件的安装和执行要求签名代码。

5.利用恶意软件安装非法证书

攻击者还可以利用恶意软件来安装非法的证书,避免安全警告。例如,恶意代码可充当SSL/TLS通信的一个本地代理服务器,而已安装的非法的数字证书可以使攻击者窃听通信而不会触发任何警告。在受到损害的系统上安装虚假的根级CA证书可以使攻击者实施钓鱼攻击。攻击者需要做的只不过是建立一个使用SSL/TLS并传送证验证步骤的虚假域。

图2 浏览器安全证书

数字证书被窃取的隐患

恶意软件是用于窃取与受害者有关联的数字证书和私钥的特殊工具。例如,有的恶意软件能够从Windows的证书库中同时窃取私钥和数字证书。这种恶意软件利用了操作系统的功能。Windows系列操作系统将数字证书归档到一个证书库中。程序代码往往使用PFXExportCertStoreEx函数导出证书库的信息,并用一个扩展名为.pfx(其使用的真实文件格式为PKCS#12)的文件来存放此信息。操作者使用PFXExportCertStoreEx函数并使用EXPORT_PRIVATE_KEYS选项可以存储数字证书和相关的私钥,所以.pfx文件对于攻击者是很有用的。

CertOpenSystemStoreA函数可用于打开所存储的证书,而PFXExportCertStoreEx函数可以导出证书库的如下内容:MY(保存证书及相关私钥的证书库)、CA(证书颁发机构的证书)、ROOT(根 证 书)和SPC(软件发行商的证书)。其实,通过在调用EXPORT_PRIVATE_KEYS函数时使用EXPORT_PRIVATE_KEYS选项,任何人都可以导出数字证书和相关的私钥。

几乎每个用于窃取数字证书的恶意软件都可以实施以上类似的过程。在计算机开始运行时,恶意代码就已经被用于窃取证书的存储信息。

在攻击者从窃取的证书中获得了受害者的私钥后,他就可以使用类似于微软签名工具的程序(其中在 Windows DDK、Visual Studio等软件中就绑定了此工具)。运行签名工具(即signtool.exe),攻击者就可以对所有代码(当然包括恶意软件的源代码)进行数字签名。因此,对数字证书应引起足够的重视。

猜你喜欢
数字证书私钥公钥
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
无线网络安全认证研究
一种基于混沌的公钥加密方案
神奇的公钥密码
一种基于虚拟私钥的OpenSSL与CSP交互方案
P2X7 receptor antagonism in amyotrophic lateral sclerosis
基于数字证书的军事信息系统安全防护方案
SM2椭圆曲线公钥密码算法综述