安天引擎精准检测Windows CryptoAPI漏洞构造的免杀样本
时间 : 2020年01月18日 来源: 安天CERT
1、为什么Windows CryptoAPI无法绕过安天引擎
2020年1月14日,微软发布了关于Windows CryptoAPI欺骗漏洞(漏洞编号CVE-2020-0601,以下简称0601漏洞)的修复补丁。该漏洞出现于Windows CryptoAPI(Crypt32.dll)验证椭圆曲线密码(ECC)证书的过程中,成功利用此漏洞会使恶意程序通过使用假冒的签名证书获得可执行文件的合法化认证,伪装成可信任的程序欺骗用户。
可执行文件签名,是操作系统的重要的安全机制。微软系统从使用PE可执行格式开始,引入了数字签名机制。从而强化了操作系统检查自身文件未被篡改和验证软件来自于确定的发布者的能力。也形成了主机安全软件和杀毒引擎的一个验证点。安天引擎从2010年起就建立数字签名验证和病毒检测相结合的判定机制,对安天终端防护产品实现黑白双控形成了低层支持。
利用文件数字签名绕过系统安全防护机制和安全软件的检测,在各种攻击中,特别是APT中的一种常见手段。常见手段包括,攻击方直接到申请数字证书,进行签发(难以绕过安天等主流杀毒软件的证书信誉机制);攻击方对程序构造签名域,欺骗杀毒软件的本地检查机制(不能绕过在线验签)。在APT中,更出现过攻击方窃取知名厂商的数字证书,签发恶意程序的情况,比较典型的就是震网攻击中,攻击方窃取了至少三家知名IT厂商的证书。(参见安天在2010年9月发布的《对Stuxnet蠕虫攻击工业控制系统事件的综合分析报告》)
但Windows CryptoAPI漏洞带来的风险比上述情况都要严峻,这意味着攻击者可以伪包括微软在内的任意厂商签名,而且还能够通过Windows系统的安全验证。这极大降低了证书仿冒攻击的成本,堪称难以想象的漏洞。而同时,这也成为了一种让恶意代码绕过主机防护软件的机制。
基于0601漏洞的构造器迅速在网上出现。有国内安全研究者利用证书构造工具,对一个勒索样本仿冒微软签名,重新上传著名的多引擎对照扫描站点Virustotal,可以看到原来有40家引擎告警的勒索病毒样本,仅剩下17家依然告警,这个漏洞的利用绕过了一半以上原本可以检测该病毒的反病毒厂商。而安天AVL引擎并没有受到影响,依然可对该恶意代码进行检测。
图1-1 0601漏洞对恶意程序数字签名前后VT上各引擎检出情况对比
(图片源自网络)
为什么数字签名会导致反病毒引擎被绕过呢?反病毒引擎,并非像一些论文描述的那样,仅仅依靠已知的特征码匹配病毒和恶意代码。优秀的反病毒引擎,均是把深度预处理、虚拟执行、已知规则检测、家族变种相似性检测、行为机理检测、证书可信验证、基于启发加权或基于深度学习算法的未知检测技术相结合,是一个由多鉴定器+海量规则集组成的复杂安全中间件。在多种检测机制并存的情况下,也就带来了当不同鉴定器间结果存在冲突时,以何为准的问题;以及当其中一个鉴定器,形成确定的有害或可信结果时,是否就结束对象检测等策略问题;同时多种检测机制同时工作,也使反病毒引擎的系统资源占用增加。部分检测引擎由于设计机理问题,检测速度较慢,对象扫描的时间长,负载重,进一步导致主防的资源占用较高,由于通常情况下,主机系统大部分文件是正常文件,而非恶意代码。因此这些引擎默认策略选取通过先进行证书验证的方式,如果判定为可信厂商签名则直接跳过。还有的引擎,为了高检出率,默认策略设置为高度敏感,或者未知检测算法设计较为粗糙,导致误报率较高,为控制误报则采用了在签名和告警冲突时,一律以数字签名为准的策略。这些都导致了,一旦证书验证机制被绕过,就会带来安全隐患。安天引擎虽然同样内嵌数字签名验证分支,但充分考虑到检测对象的使用证书绕过检测的风险;加之安天引擎通过长期的综合优化,系统负载较低,扫描速度快,检测精度高,误报率低,因此默认扫描策略采用了黑白双控,威胁告警优于签名的策略。因此,已知样本无法通过本漏洞绕过安天的检测。
2、迅速响应,实现漏洞精准检测
安天引擎具有对数字签名证书的完整解析能力和本地验证功能,并有效支撑了智甲终端防御系统的在面向SCADA、专用终端等场景的纯白环境、黑白双控机制。针对此次的CVE-2020-0601漏洞,安天基于解析数字证书的能力和分析漏洞机理,迅速升级引擎,增加检测模块和规则,可有效检测各种基于该漏洞制作的免杀工具“签发”的文件样本。从报警优先级别上看,如发现被仿冒“签发”的文件,是已知病毒,则告警已知病毒名称(如图2-1所示);对被仿冒“签发”的文件未检测到已知病毒的,则告警为CVE-2020-0601漏洞编号,(如图2-2所示)。
图2-1 安天引擎对已知恶意程序用0601漏洞签名优先报警恶意程序名称
图2-2安天对伪造签名文件精确报警漏洞
3、安天下一代检测引擎的价值
但上述将病毒报警为恶意代码名称还是报警为所利用漏洞的命名问题,也暴露出传统引擎的一个问题。由于传统引擎通过输出一个病毒命名名称串来反馈信息,而这对于威胁分析是远远不够的。
安天下一代威胁检测引擎基于面向高级威胁、体系化攻击、单点安全环节均会被绕过的特点而设计,将反病毒引擎从单一的检测识别单元,提升为封装检测识别、向量拆解、关联判断的复合安全中间件,同时具备识别器、拆解器、鉴定器、分析器的能力。安天下一代引擎则可以根据用户定义,将各预处理器的拆解结果和各鉴定器的鉴定结果输出为一个数据结构,传递给使用引擎的产品,以及态势感知平台支撑决策。例如通过0601漏洞构造签名的样本,安天下一代引擎会同时将恶意代码名称和所利用漏洞名称,均作为知识标签输出。除此以外,还能够输出深度格式识别结果和对相应格式的所拆解出的向量信息,结合安天威胁情报服务,可以配套输出检测对象与ATT&CK等威胁框架的对标能力信息。
安天智甲终端防御系统、探海威胁检测系统、追影威胁分析系统、拓痕威胁处置工具等安天全线产品均嵌入了下一代威胁检测引擎。从而增强了安天产品向安天态势感知平台体系输出基础静态向量数据以支撑分析研判、威胁关联追溯的能力,并能进一步支撑客户自建深度普查和处置规则。
附录一:参考资料
[1] CVE-2020-0601 | Windows CryptoAPI Spoofing Vulnerability
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0601
[2] 关于安天智甲终端防御系统
https://mp.weixin.qq.com/s/UctjWfd9xdav57a1wIIX9Q
[3] 对Stuxnet蠕虫攻击工业控制系统事件的综合分析报告
https://www.antiy.cn/research/notice&report/research_report/20100927.html
[4] CVE-2020-0601: the ChainOfFools/CurveBall attack explained with PoC
[5] National Security Agency | Cybersecurity Advisory
https://media.defense.gov/2020/Jan/14/2002234275/-1/-1/0/CSA-WINDOWS-10-CRYPT-LIB-20190114.PDF
附录二 :漏洞相关情况
漏洞背景
2020年1月14日,微软发布了关于Windows CryptoAPI欺骗漏洞(CVE-2020-0601)的修复补丁。该漏洞出现于Windows CryptoAPI(Crypt32.dll)验证椭圆曲线密码(ECC)证书的过程中,成功利用此漏洞会使恶意程序通过使用假冒的签名证书获得可执行文件的合法化认证,伪装成可信任的程序欺骗用户,同时也可以利用该漏洞进行中间人攻击。
据悉,CVE-2020-0601漏洞是首个由美国国家安全局(NSA)发现并主动提交给微软的安全漏洞。该漏洞影响Windows 10、Windows Server 2016,Windows Server 2019等主流操作系统版本,漏洞POC已经公开,已发现有使用该漏洞生成的恶意程序在野利用。
目前,该漏洞利用和影响范围正在发酵,且市面上大部分杀毒引擎会受到此漏洞影响。不过请客户放心,安天引擎不受此漏洞影响,安天智甲可以有效检出相关恶意程序。
漏洞描述
CVE漏洞编号:CVE-2020-0601
Windows CryptoAPI(Crypt32.dll)验证椭圆曲线密码术(ECC)证书的方式中存在一个欺骗漏洞。攻击者可以通过使用欺骗性的代码签名证书,对恶意可执行文件进行签名,从而使该文件看起来似乎来自可靠的合法来源,这样用户将无法知道文件是恶意的。攻击者还可能利用此漏洞进行中间人攻击,解密获取用户的敏感信息。
漏洞原理分析
椭圆曲线加密(ECC)技术是基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点G,并选取一个整数p,求解K=pG相对容易;反过来,在椭圆曲线上给定两个点K和G,若使K=pG,求整数p很困难。在该加密技术中,K代表公钥,p代表私钥。
CVE-2020-0601漏洞发生的原因在于 Windows 10增加了对带参数ECC密钥的支持,在crypt32.dll中做签名验证时存在安全缺陷。
CryptoAPI 在验证的过程中并未检查所提供的G是否与标准的证书匹配,所以它会将伪造的证书当作正确的证书。即在公式中只检查了是否匹配公钥K而忽略了G的数值是否符合标准。
由于Windows 10支持自定义G',就可以构造如下情况G' = K,p' = 1(单位元)从而产生K= pG = p'G',在这种情况中Q不变而由于验证缺陷导致没有验证G从而导致伪造证书被当作了正确的证书。
受影响范围
漏洞影响Windows 10、Windows Server 2016、Windows Server 2019等多个版本:
Windows 10 for 32-bit Systems
Windows 10 for x64-based Systems
Windows 10 Version 1607 for 32-bit Systems
Windows 10 Version 1607 for x64-based Systems
Windows 10 Version 1709 for 32-bit Systems
Windows 10 Version 1709 for ARM64-based Systems
Windows 10 Version 1709 for x64-based Systems
Windows 10 Version 1803 for 32-bit Systems
Windows 10 Version 1803 for ARM64-based Systems
Windows 10 Version 1803 for x64-based Systems
Windows 10 Version 1809 for 32-bit Systems
Windows 10 Version 1809 for ARM64-based Systems
Windows 10 Version 1809 for x64-based Systems
Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows Server 2016
Windows Server 2016 (Server Core installation)
Windows Server 2019
Windows Server 2019 (Server Core installation)
Windows Server, version 1803 (Server Core Installation)
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)
修复及缓解建议
1、 用户可以自动更新后手动安装微软关于此漏洞的补丁程序[1],受影响的操作系统版本对应的补丁链接见附录三。
2、 用户可使用安天智甲终端防御系统[2](以下简称“智甲”)进行漏洞修复,智甲最新版本支持对该漏洞进行检测、修复和一键加固。通过安天引擎,可对该漏洞生成的带有数字签名的恶意程序有效防护查杀,包括在无法打本补丁的系统中,对攻击程序进行主防拦截。安天智甲终端防御系统与安天资产安全运维系统组合使用,可充分减少暴露面,形成威胁防御响应的基础能力。
附录三:补丁链接
受影响的操作系统版本对应的补丁链接如下表所示:
受影响的操作系统版本 |
补丁链接 |
Windows
10 for 32-bit Systems |
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4534306 |
Windows
10 for x64-based Systems |
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4528760 |
Windows
10 Version 1607 for 32-bit Systems |
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4534271 |
Windows
10 Version 1607 for x64-based Systems |
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4534271 |
Windows
10 Version 1709 for 32-bit Systems |
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4534276 |
Windows
10 Version 1709 for ARM64-based Systems |
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4534276 |
Windows
10 Version 1709 for x64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534276 |
Windows
10 Version 1803 for 32-bit Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534293 |
Windows
10 Version 1803 for ARM64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534293 |
Windows
10 Version 1803 for x64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534293 |
Windows
10 Version 1809 for 32-bit Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534273 |
Windows
10 Version 1809 for ARM64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534273 |
Windows
10 Version 1809 for x64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534273 |
Windows
10 Version 1903 for 32-bit Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |
Windows
10 Version 1903 for ARM64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |
Windows
10 Version 1903 for x64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |
Windows
10 Version 1909 for 32-bit Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |
Windows
10 Version 1909 for ARM64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |
Windows
10 Version 1909 for x64-based Systems |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |
Windows
Server 2016 |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534271 |
Windows
Server 2016 (Server Core installation) |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534271 |
Windows
Server 2019 |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534273 |
Windows
Server 2019 (Server Core installation) |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534273 |
Windows
Server, version 1803 (Server Core Installation) |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4534293 |
Windows
Server, version 1903 (Server Core installation) |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |
Windows
Server, version 1909 (Server Core installation) |
https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB4528760 |