1 数字签名的理解
近一年来分析样本的时候接触到一类带数字签名的样本,本文对其进行学习归纳总结整理,大部分内容是对公开内容的整理,期间会加入一些笔者遇到的实际案例与理解。这里先列举一下大纲,如下。
1.1 数字签名是什么?
要理解数字签名是什么,需要前期有一定的密码学背景知识,没有相应的前期背景知识,有时候很难很快的理解一些原理,所以这其实也是学习一些东西需要循序渐进的道理。首先从字面意思理解,现实生活中,签名有什么作用?在一封信中,文末的签名是为了表示这封信是签名者写的。计算机中数字签名能证明消息没有被篡改,也能判断是不是有人伪造了签名。
1.2 生成数字签名
对需要发送的数据进行哈希计算,得到哈希值;
利用公钥密码中的私钥对哈希值进行加密,此时得到的加密结果就作为数字签名;
将数字签名附带在需要发送的数据中发送出去;
1.3 验证数字签名
收到消息后,在数据中找到数字签名的内容;
用公开的公钥对其进行解密,得到哈希值;
对除数字签名外的原数据进行哈希计算,得到另一个哈希值;
对比两个哈希值来判断消息是否被篡改;
其实技术的发展都是与安全息息相关的,因为当有防御(数字签名)的时候,同时也会伴随着有攻击(伪造或者替换公钥),从上面的生成与验证数字签名可以看出,整个流程最不安全的则是公开的公钥无法判断是不是真实的,也有可能被他人伪造过。这样一来,整个流程就完全不安全了,因为保证安全的前提是公钥密码体系,但现在发现公钥是被他人伪造的,而使用者却不知情。
由于存在上面所述的安全问题,所以证书就出现了,证书的作用是保证公钥是真实的未被篡改或者替换的。证书一般包含公钥(记住证书中是带有公钥的)、公钥的数字签名、公钥拥有者的信息。若证书验证成功,这表示该公钥是合法,可信的。这样就解决了公钥是否真实性问题,后续的公钥密码体系下的生成与验证数字签名过程才安全。
接下来又有问题了,验证证书中的数字签名需要另一个公钥,那么这个公钥的合法性又该如何保证?该问题可以无限循环下去,岂不是到不了头了?这已经是个社会学问题了。我们为什么把钱存进银行?因为我们相信银行,它是一个可信的机构(虽然也有破产的风险)。跟银行一样,我们需要一个可信的机构来颁发证书和提供公钥,只要是它提供的公钥,我们就相信是合法的。这种机构称为认证机构(Certification Authority, CA),CA就是能够认定”公钥确实属于此人”,并能生成公钥的数字签名的组织或机构。CA有国际性组织和政府设立的组织,也有通过提供认证服务来盈利的组织。
1.4 生成证书
服务器将公钥A给CA(公钥是服务器的);
CA用自己的私钥B给公钥A加密,生成数字签名A;
CA把公钥A,数字签名A,附加一些服务器信息整合在一起,生成证书,发回给服务器;
注:私钥B是用于加密公钥A的,私钥B和公钥A并不是配对的。
1.5 如何验证证书?
客户端得到证书;
客户端得到证书的公钥B(通过CA或其它途径);
客户端用公钥B对证书中的数字签名解密,得到哈希值;
客户端对公钥进行哈希值计算;
两个哈希值对比,如果相同,则证书合法;
注:公钥B和上述的私钥B是配对的,分别用于对证书的验证(解密)和生成(加密)。
上面大致介绍了数字签名与数字证书的一些流程与原理,具体更详细的内容可参考文末链接《什么是数字签名和证书?》,这里不再过多描述。介绍完了数字签名相关的背景知识,现在就回到现实案例中,梳理下攻击者是如何利用的。
2 近年来案例汇总
早期的杀毒软件主要是通过软件的特征码进行来识别病毒和恶意软件,但是这个技术有个缺陷,就是软件的特征码是可以更改的。随后,杀毒软件又有了云查杀和行为查杀等功能。虽然杀毒软件的保护能力增强了,但是又出现了一个新的问题,就是误报。比如常见的,通过易语言编译的程序很容易遭到杀毒软件的查杀。还有一些软件的行为,也会被杀毒软件自动判定为病毒文件。所以大部分杀毒软件又增加了一道门槛,数字签名验校。如果一个程序有了知名公司官方的数字签名,那么该程序一般是不会被杀毒软件查杀的,请注意这里写了是一般,说明还有特例。
当一个应用程序拥有正规的数字签名时,表示这个程序在发布过程中未被篡改,杀毒软件往往也会认为拥有正规数字签名的软件是安全可信的。
一个简单的验证过程如下图:
互联网公开信息收集的经典案例如下:
2003年针对伊朗核加工设施的Stuxnet蠕虫使用了盗用数字签名签发蠕虫病毒的手段,它是盗用了RealTek和Jmicron的数字证书。
2017年9月存在多个勒索病毒样本成功绕过数款杀毒软件的防御系统,病毒随后加密了中毒电脑的硬盘文件,分析发现,这些安全软件针对勒索病毒的多层防线被绕过,其原因是病毒使用了Comodo公司的数字签名。
2017年8月恶性病毒“Kuzzle”会感染电脑后会劫持浏览器首页牟利,同时接受病毒作者的远程指令进行其他破坏活动。“Kuzzle” 拥有非常高的技术水平,能够采用多种手段躲避安全软件的查杀,甚至盗用了知名安全厂商北信源公司的数字签名,利用安全软件的“白名单”的信任机制来躲避查杀。当安全软件检测到该数字签名时,会将其误认为是北信源产品,自动放过病毒不进行查杀。
2018年7月一个名为BlackTech的APT组织利用从D-Link窃取的有效数字证书来签署他们的恶意软件,伪装成合法应用程序。APT组织BlackTech利用了从台湾的D-Link制造商和Changing信息技术公司处窃取的有效数字证书,该组织技术娴熟,在东亚地区尤其是台湾已经出现大量的受害用户。黑客利用Plead(一个从2012年就开始利用有效证书签署其代码来伪装的恶意软件)来窃取台湾政府机构或一些企业的机密文件。有趣的是,这些可疑文件都使用D-Link制造商的有效数字证书进行了数字签名,看起来完全是合法的,所以有理由怀疑证书被盗。
3 流行攻击方式
3.1 软件供应链
这类攻击的主要形式是在厂商的正规签名软件包中植入恶意代码,比如NetSarang系列软件(2017年XshellGhost案例)关键网络通信组件nssock2.dll被植入了恶意代码,厂商在发布软件时并未发现恶意代码,并给被感染组件打上了合法的数字签名随新版软件包一起发布,由于该软件被程序员和网络运维管理人员广泛使用,由此引发了该软件用户“主动”中招的大规模定向攻击事件。被植入恶意代码的nssock2.dll文件,拥有2017年7月13日的NetSarang公司数字签名。
3.2 盗用签名
攻击者会盗用厂商数字签名直接签发木马病毒,比如上面介绍的2017年8月恶性病毒“Kuzzle”案例,盗用了知名安全厂商北信源公司的数字签名,利用安全软件的“白名单”的信任机制来躲避查杀,被恶意利用的正规签名驱动,如下。
3.3 冒用签名
黑客冒用知名公司的身份资料,在境外不同颁发机构申请同名知名公司的数字签名签发恶意程序,近几年颁发机构除了之前披露的Go Daddy和Starfield Secure两家,知名的老牌CA厂商赛门铁克、Verisign和DigiCert也相继沦陷,如下案例则是Sectigo,此处的案例详情可见深信服千里目实验室发布的报告《一黑客组织针对金融用户的定向分析报告》,冒用Disc Soft国外软件开发商,申请数字签名。经分析此处的有效数字签名攻击手法则属于数字签名冒用,仔细查看会发现实际颁发者是完全不同的。
该文章的大部分内容是2020年的个人笔记,如今刚参加完hvv,想起来期间从公开渠道拿到的一个样本(非涉密)简单查看后发现也存在此类利用方式,于是将其记录在文章里作为案例补充,所谓未知攻焉知防,只有了解来龙去脉,才不至于对这种技巧而疑惑。所以根据文章总结的方式,此类利用也属于冒用签名,通过签名人信息可以得知这是一家位于德国的IT公司名称(1.A Connect GmbH),而且电子邮件确实是官网显示的联系邮件,回过头一想,一家正常运营的IT公司怎么可能会给恶意文件进行签名呢?所以答案不言而喻,不知道是哪位兄弟的杰作。
4 总结
近年来,发生过多起病毒木马程序拥有正规数字签名的情况,其原因可能是:
- 申请数字签名的组织管理不善,致使数字签名被盗用;
- 有开发者申请到数字签名后随意转租给其他人使用;
- 发放签名的机构未能尽到审核职责,使签名的申请发放不够严格,将签名发放给恶意软件开发者,存在冒用签名攻击;
数字签名被滥用的后果可能是灾难性的,尽管安全软件采取了多层安全防护体系,杀毒软件往往会因为提高性能的原因,采有白名单机制,拥有数字签名的应用程序容易被杀毒软件信任,从而在安全检测过程中被放行。
同样,我们也可以通过一些社交平台的趋势发现目前病毒木马带有数字签名的样本非常普遍,如下。
5 参考链接
什么是数字签名和证书?
https://www.jianshu.com/p/9db57e761255
数字签名是什么?
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
金山毒霸预警:勒索病毒也用数字签名 杀毒软件会被绕过
http://3g.donews.com/News/donews_detail/2966417.html
恶性病毒冒充安全厂商“北信源”,在杀毒软件面前求放过
https://www.sohu.com/a/161984460_114877
BlackTech盗用D-link数字证书来签署恶意软件
http://www.365sec.com/index.php?m=Article&a=show&id=227
数字签名攻击报告:正在摧毁软件身份“信用体系”的安全危机
https://www.freebuf.com/articles/network/146274.html
【分析报告】偷天换日:2017签名冒用大追踪
https://www.anquanke.com/post/id/86665
冒用数字签名的对抗:亟需加强的签名审核
https://www.freebuf.com/articles/paper/114502.html
风云再起,签名冒用引发信任危机
https://www.freebuf.com/articles/security-management/179726.html
被攻陷的数字签名:木马作者冒用知名网络公司签名
https://www.anquanke.com/post/id/84413
https://twitter.com/search?q=%23signed%20%23malware&src=typed_query&f=live
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)