再谈数字签名的冒用

2024-12-02    来源:360安全卫士
上周,上海贝锐(代表产品有:花生壳、向日葵等)疑似遭遇供应链攻击事件。由于该公司旗下软件用户量极大,一时间大家都在关注此次事件是否会进一步引发更为严重的次生安全事件。

攻击事件

上周,上海贝锐(代表产品有:花生壳、向日葵等)疑似遭遇供应链攻击事件。由于该公司旗下软件用户量极大,一时间大家都在关注此次事件是否会进一步引发更为严重的次生安全事件。

图1. 样本文件带有的“上海贝锐信息科技股份有限公司”数字签名 

但经过360的安全研究人员分析确认,此次事件实际上是一起典型的“数字签名冒用”事件。分析人员将恶意样本文件所签署的数字签名证书与官方正常程序所使用签名证书进行对比,发现两者的颁发机构与签发时间均不相同。而类似的签名冒用问题仅在过去一年中便已经发生过数百起。

图2. 仿冒数字签名证书 v.s. 官方数字签名证书 

什么是“数字签名”?

那么,仅仅一个文件的数字签名,为何能引起一起沸沸扬扬的安全事件,进而引发各方的广泛关注呢?这主要是因为数字签名本身的特殊性质所决定的。“数字签名”实际上可以看作是一段数据或一个文件的“数字身份证”。开发者通过对文件进行签名,不仅能够证明文件的来源,还能有效防止文件在传输或存储过程中被篡改。“数字签名”已成为现代互联网安全的基石之一——尤其是对于大型企业和重要机构发布的文件,通常会因其所带有的签名而被包括安全厂商在内的全网所广泛信任。可以说,在当今互联网的方方面面——每一次通讯、每一次传输,都离不开数字签名的安全保障。

而数字签名这种机制本身的安全性,则主要依赖于以下几个关键因素:

1.     算法本身的安全性
算法的安全性是数字签名的基础。例如曾经广泛使用的MD5算法由于被发现存在碰撞漏洞(即不同的输入可以产生相同的哈希值),便在多个安全领域内被淘汰。这也导致了在MD5算法爆出碰撞问题后,便被移除出了签名信任体系。当前的数字签名已全部转为采用SHA-256为代表的更为安全的哈希算法。

2.     算法实现的安全性
在确保算法本身安全性的前提下,如何通过准确的代码安全实现这些算法也至关重要。在算法实现的历史上,就曾出现过知名的微软ECC算法漏洞。该漏洞由于代码在实现上存在缺陷,使得攻击者能够通过一定的方式绕过算法保护。幸好微软公司及时发布了补丁对其代码进行修复,避免了更大范围的滥用和攻击事件发生。因此,算法的实现必须经过严格的审查与测试,以确保其安全性得到有效保障。

3.     私钥的保密性
而无论用何种方式实现了何种算法,当前的数字签名体系都依赖于公私密钥对的结构实现其对文件的签署和验证操作。而密钥对中私钥显示便是数字签名的关键——它保证了签名的唯一性和安全性。与之相对的,一旦私钥泄露,便可能被任何人利用来伪造签名,导致数字签名的信任体系崩溃。历史上各地区多次发生过知名企业私钥泄露的事件,如:Sony、微软、Adobe等公司都因签名密钥泄露而遭遇安全问题。密钥管理与存储的安全性,尤其是在防止私钥泄露方面,是数字签名系统能否正常运作的核心。

4.     可信的证书颁发机构(CA)
最后,数字签名的安全性还依赖于签名证书的颁发方——证书颁发机构(CA)。CA负责对签名申请者的身份进行验证,并通过对申请者进行审查确保签发的证书是合法且可信的。然而,CA机构并非无所不能,可信CA的安全性问题也是当前数字签名体系面临的重要挑战。

签名冒用问题解析

以这次签名冒用事件为例,我们尝试对大家关注比较少的利用可信CA疏漏所发起的这类攻击的事件进行一次解析。

什么是签名冒用?

签名冒用是指攻击者通过伪造、盗用他人身份信息或提交虚假材料,骗取证书颁发机构(CA,Certificate Authority)的信任,从而获得不属于自己的数字签名证书。

签名冒用的形式多种多样,常见的形式包括:

l  完全相同的签名信息:攻击者申请并获得与冒用目标完全相同的签名信息。

l  相似或变体的签名信息:攻击者通过在冒用目标名称中添加空白字符或使用小众编码、大小写转换等方式替换冒用目标的名称字符,最终实现对签名的整体仿冒。

而在本次事件中,攻击者所使用的则是与被冒用目标名称完全相同的虚假签名。通常,这种情况是由于两个不同的证书颁发机构(CA)分别颁发了相同名称的证书所导致的,这也使攻击者能够成为一个完全合法的“虚假签名”持有者,这一点无论对于普通用户还是对于安全厂商无疑都具有极强的隐蔽性和迷惑性。

如何实现签名的冒用?

落实到冒用签名的实施层面,攻击者可选用的手段可谓是多种多样。冒用者可以通过各种方式来绕过证书颁发机构的审核,获得合法的数字签名证书。这其中较为常见的攻击方式包括:

l  利用海外证书颁发机构的信息差

通常,一些海外证书颁发机构对那些我们看来似乎是家喻户晓的国内公司可能并不熟悉。也缺乏严密的复核机制。这就导致攻击者可以利用信息差,提交虚假申请材料来成功骗取证书的发放。

例如,国内企业在申请证书时,某些海外颁发机构可能无法验证其真实性或详细背景,攻击者便能利用这一漏洞,通过虚假身份、文件或资料申请到有效证书。

l  代理商合谋或疏忽协助证书冒用

与众多公司业务类似,数字证书的申请也是可以通过代理商代为办理的。而一些无良代理商便可能与攻击者里外勾结,通过伪造甚至是直接复制合法申请者的申请材料来帮助攻击者获得其想要冒用的数字签名证书。

当然,更多的情况则是代理商本身也是因自身疏忽而未能充分验证申请者的身份信息,导致了冒用签名证书的颁发。

l  伪造文件和营业执照等信息

除上述情况外,攻击者还可以更为直接地伪造各种文件和营业执照等证明材料。证书颁发机构毕竟不是工商管理部门,很难对这些法律文件进行非常严密的审核真实性审核,而一旦审核人员出现疏忽大意,攻击者便可以成功地获取到想要冒用的签名证书并进行恶意使用。

签名冒用攻击的三大阶段

通过对过往发生过的签名冒用攻击事件进行总结归纳,我们发现此类攻击通常分为三个主要阶段。

阶段一:获取签名

如前文所述,攻击者首先会通过各种伪造文件、资质信息等各种手段,成功地从证书颁发机构手中申请到与目标组织名称相同或相近的数字签名证书。

阶段二:“养证书”

最为反直觉的是——在正式发动攻击前,攻击者往往还会利用获取到的虚假证书为大量的正常程序进行签名和传播。此阶段的目的是在短时间内“养”出一个看似安全可信的证书,以此来骗取各安全厂商和用户的信任,进而降低其被安全检测系统标记为可疑的风险性。

阶段三:实施攻击

而在上述的“养”证书阶段初具成效后,攻击者便会转而使用这些“养成”的证书对真正的恶意程序(如仿冒官方程序的病毒或木马)进行签名。并采取钓鱼攻击、社会工程学攻击等方式进行传播。由于这些程序具备合法的数字签名,用户在运行时往往难以察觉其中的异常,从而导致非常严重的安全事件。

统计数据

通过对360云端大数据进行筛查和统计,我们发现了数百例在近些年活跃在网络中的仿冒数字签名。

仿冒签名签发年份

对这些仿冒数字签名的签发时间进行统计,发现2020年和2022年所签发的仿冒数字签名数量尤为突出。

图3. 仿冒数字签名签署年份分布 

仿冒签名颁发机构

而颁布这些仿冒签名的机构,则集中在11家签名机构当中。这其中更是以Sectigo、Go Daddy、SSL.com、Starfield四家机构签发的证书数量最多。

图4. 仿冒签名颁发机构分布 

被冒用目标机构

与颁发机构相对的,被冒用签名的目标机构则显得不那么集中。但这些机构也有着一些较为明显的共同点,其中最为明显的就是被冒用目标机构大多是在国内外有一定影响力的互联网或软件公司。以下是目标机构的Top10:

图5. 被冒用目标机构Top10 

篡改签名时间戳的“反向操作”

此外,针对数字签名所实施的攻击活动中,还有一类“奇葩”案例值得额外一提。有些攻击者除了通过各种手段对数字签名进行仿冒外,还可能进行一种“反向操作”——即在未能成功获取仿冒签名的情况下谎称自己已拿到了目标机构“泄露”的签名证书,并以此为要挟对目标机构进行敲诈。这一操作则通常是利用了数字签名的“时间戳”属性。

在用户查看文件数字签名时,通常会注意到其中附带的时间戳信息。这是对文件进行签名时由第三方时间戳服务器(TSA,Time Stamping Authority)所添加的一段验证数据,用于标识数字签名的签署时间。

图6. 数字签名的时间戳

由于时间戳由权威机构认证,通常被认为难以篡改。然而,时间戳实际上也并非绝对安全,同样存在被篡改的可能性。这主要是由于对已签名的文件,任何人其实都可以向认证机构申请重新添加时间戳。而认证机构在收到请求后,会返回再次申请时的时间戳并附加到文件中。

而国内也出现过用这类方法进行“招摇撞骗”的案例——谎称掌握了厂商的证书私钥。这里我们也提醒厂商不要因此恐慌而上当受骗。

修改时间戳的局限性

不过,对签名时间戳的修改存在着较大的局限性。这也导致了此类操作的实际案例并不如上述的签名冒用那样泛滥:

局限一:时间戳的更改不会修改文件本身的签名内容,因此无法篡改文件的核心数据。

局限二:只有已签名的文件才能调整时间戳,未签名的软件无法通过这种方式进行签名伪造。

签名时间戳修改实例

为了更直观地说明这一过程,以下是一个利用DigiCert对微软的MSEdege浏览器重新附加时间戳的示例:

图7. 对微软Edge浏览器签名时间戳的修改实例 

安全提醒

数字签名的冒用攻击是一种由来已久且难以防范的攻击方式。证书颁发机构有自身的局限性,很难对证书申请者完成详尽调查,从而为攻击者提供了可乘之机。而这类仿冒证书,对一般企业、用户来说,也几乎不可能识别。

这些攻击方式表明,数字签名证书的安全性不仅仅依赖于技术手段,还需要完善的身份验证、审查和监管机制。

360安全大脑,利用具有优势的全网视野,和海量的样本数据,能够轻易发现这类签名名称相同、签名相似、颁发机构异常等证书存在异常的样本,能够为用户和厂商提供预警和监测服务,帮助用户应对签名冒用问题。

使用360终端安全产品的用户也无需担心,360对签名的校验比对有一套完成的流程,不论是攻击者导入的虚假根证书,还是这类证书颁发机构颁发的“虚假证书”都难逃360安全大脑的识别。