“火焰”恶意软件碰撞攻击详解

上篇 MSRC 博客发布以来,我们收到了许多问题,询问有关“火焰”的恶意软件中所看到的算法攻击。 本篇博客总结了我们的调查结果以及我们为什么决定在太平洋夏令时上周日晚上发布安全公告 2718704。 简而言之,默认情况下,攻击者的证书在Windows Vista 或最新版本的 Windows 系统上不会有效。他们必须进行碰撞攻击,伪造一个证书,才能在 Windows Vista 或最新版本的 Windows 操作系统上可以进行代码签名。 在早于 Windows Vista 的系统上,不利用 MD5 哈希碰撞也可以发起攻击。 安全公告2718704中撤销了该证书以及相关证书颁发机构颁发的所有证书。我们继续推荐所有尚未自动安装更新的用户立即安装更新。

神秘丢失的扩展

当首次审查 “火焰”时,我们看到一个文件具有有效数字签名,该数字签名链接到 微软根证书颁发机构。当核查该证书时,我们注意到有以下几个问题。首先,它没有 X.509 扩展字段,这与我们通过终端服务器授权基础结构颁发的证书不一致。我们希望可以找到证书吊销列表 (CRL) 分发点 (CDP) 扩展、授权信息访问 (AIA) 扩展和“Microsoft Hydra”关键扩展。所有这些扩展都没有。

https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-47/8726.cert_5F00_extensions.png

当我们用 Windows 实用程序 certutil.exe 检查此证书时,我们看到了一些有趣的信息。

 > certutil.exe  -dump MS.cer 
  
 X509 Certificate:
 Version: 3
 Serial Number: 1b7e
 Signature Algorithm:
     Algorithm ObjectId: 1.3.14.3.2.3 md5RSA
     Algorithm Parameters:
     05 00
 Issuer:
     CN=Microsoft LSRA PA
     DC=partners
     DC=extranet
     DC=microsoft
     DC=com
  
  NotBefore: 2/19/2010 2:48 PM
  NotAfter: 2/19/2012 2:48 PM
  
 Subject:
     CN=MS
  
 Public Key Algorithm:
     Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
     Algorithm Parameters:
     05 00
 Public Key Length: 2048 bits
 Public Key: UnusedBits = 0
     0000  30 82 01 0a 02 82 01 01  00 a6 89 43 6f c6 ca 9d
     0010  42 ad bd 28 d5 46 49 e0  55 f2 cc 38 e0 3d c0 7c
     0020  ba 1d ca bb 92 c4 be 4c  5f 1a f9 d6 42 4b 34 0b
     0030  2f 8a ac cb 97 31 ef 76  2f c3 85 af 95 93 47 46
     0040  f6 ff 7c ca df c8 f9 d0  6a ec df 0e 91 55 23 ab
     0050  64 06 90 d3 37 83 a8 0e  3e 5e 7f 77 35 66 74 20
     0060  87 42 1f 25 17 8a d5 28  05 38 05 c8 48 6d 63 76
     0070  3e fd 5a 11 67 07 09 6d  98 a3 08 4a f1 11 7f 80
     0080  a7 4e 37 d4 f0 0e 34 7a  d5 ba 83 ad 60 1e 57 44
     0090  65 50 72 cd af 1e d0 1e  30 c2 eb 6a 51 e2 aa 54
     00a0  85 57 fa 9c b1 59 e8 24  5e d4 38 d3 56 81 68 d5
     00b0  05 8b 48 25 92 a2 11 1b  e8 51 54 d9 d9 04 60 ee
     00c0  1c fb 6a ec f0 6e 38 bb  ad da 35 87 63 74 86 ef
     00d0  1f cd 80 92 a2 98 3a 97  9a bd 35 d1 7d 2e 3a 47
     00e0  04 48 17 74 db a3 67 d9  82 78 e0 77 2c cc ac 39
     00f0  61 a6 d8 9d aa fc de 6f  60 4c 7c 73 07 31 93 2f
     0100  67 28 4a 7e d1 ae 4c 42  dd 02 03 01 00 01
 Issuer Unique Id: 
  
  0000 6a 4c e0 1f f5 91 69 b2 74 36 f0 7f 7b 4b 7b c6 jL....i.t6..{K{. 
  0010 be eb 3f 9f 98 3d a3 84 87 54 7e 72 87 71 25 4b ..?..=...T~r.q%K
  0020 68 35 ae 65 bd 6c 8f dc 8d ac c4 e8 98 92 de dc h5.e.l.......... 
  0030 53 62 f5 72 6a 25 27 a3 12 46 eb 7f 6d 58 cd 30 Sb.rj%'..F..mX.0
  0040 83 d7 7a 85 b8 48 e6 0e 01 11 68 65 7d 53 38 0b ..z..H....he}S8.
  0050 40 f4 3b 68 43 59 c1 3c 05 c3 40 26 9d 51 97 e2 @.;hCY....@..Q..
  0060 eb 2e b8 c2 19 6e 4e 94 46 3b d8 d4 fd 0d 00 d1 .....nN.F;......
  0070 68 fa df f3 fa 18 8a 7c 65 9b da 23 11 9f 16 a6 h......|e..#....
  0080 8b 23 24 88 87 22 69 19 c2 11 ea 9d 36 81 ad fb .#$.."i.....6...
  0090 e8 8b d2 d0 eb 06 f2 1a 86 8d c6 84 f3 88 c5 e0 ................

 00a0 d9 64 c6 48 95 d4 be d3 54 48 91 e6 6c e9 1e 33 .d.H....TH..l..3
  00b0 97 15 42 ee b4 6d 1f 15 0b 27 dd 08 bb 81 de b6 ..B..m...'......

 00c0 96 16 39 d9 26 44 6a 5f d1 6b 3f 12 71 dc f0 99 ..9.&Dj_.k?.q...
  00d0 62 d2 43 14 58 f8 6e f8 22 35 d2 90 f7 fd 93 6a b.C.X.n."5.....j
  00e0 c4 49 b8 cb 0c e9 65 a8 f7 22 b5 f2 05 19 20 ef .I....e..".... .

 00f0 25 63 c7 b3 97 4a 82 3e b2 e3 ee b4 5e cb 1d b3 %c...J.>....^...
  0100 59 8f 8d f4 79 01 b1 b6 68 89 14 b4 8f 9d 60 d7 Y...y...h.....`.
  0110 71 a5 3d 95 02 03 01 00 01 a3 82 02 5a 30 82 02 q.=.........Z0..
  0120 56 30 1d 06 03 55 1d 0e 04 16 04 14 9a 9a 5d 77 V0...U........]w
  0130 bd 84 66 a4 f1 de 18 10 1b 6e 67 a5 97 c1 14 87 ..f......ng.....
  0140 30 1f 06 03 55 1d 23 04 18 30 16 80 14 75 e8 03 0...U.#..0...u..
  0150 58 5d fb 65 e4 d9 a6 ac 17 b6 03 7e 47 ad 2e 81 X].e.......~G...
  0160 af 30 81 c2 06 03 55 1d 1f 04 81 ba 30 81 b7 30 .0....U.....0..0
  0170 81 b4 a0 81 b1 a0 81 ae 86 56 68 74 74 70 3a 2f .........Vhttp:/
  0180 2f 74 6b 78 70 61 73 72 76 33 36 2e 70 61 72 74 /tkxpasrv36.part
  0190 6e 65 72 73 2e 65 78 74 72 61 6e 65 74 2e 6d 69 ners.extranet.mi

 01a0 63 72 6f 73 6f 66 74 2e 63 6f 6d 2f 43 65 72 74 crosoft.com/Cert
  01b0 45 6e 72 6f 6c 6c 2f 4d 69 63 72 6f 73 6f 66 74 Enroll/Microsoft

 01c0 25 32 30 4c 53 52 41 25 32 30 50 41 2e 63 72 6c %20LSRA%20PA.crl
  01d0 86 54 66 69 6c 65 3a 2f 2f 5c 5c 74 6b 78 70 61 .Tfile://\\tkxpa
  01e0 73 72 76 33 36 2e 70 61 72 74 6e 65 72 73 2e 65 srv36.partners.e

 01f0 78 74 72 61 6e 65 74 2e 6d 69 63 72 6f 73 6f 66 xtranet.microsof
  0200 74 2e 63 6f 6d 5c 43 65 72 74 45 6e 72 6f 6c 6c t.com\CertEnroll
  0210 5c 4d 69 63 72 6f 73 6f 66 74 20 4c 53 52 41 20 \Microsoft LSRA 
  0220 50 41 2e 63 72 6c 30 82 01 31 06 08 2b 06 01 05 PA.crl0..1..+...
  0230 05 07 01 01 04 82 01 23 30 82 01 1f 30 81 8e 06 .......#0...0...
  0240 08 2b 06 01 05 05 07 30 02 86 81 81 68 74 74 70 .+.....0....http
  0250 3a 2f 2f 74 6b 78 70 61 73 72 76 33 36 2e 70 61 ://tkxpasrv36.pa
  0260 72 74 6e 65 72 73 2e 65 78 74 72 61 6e 65 74 2e rtners.extranet.
  0270 6d 69 63 72 6f 73 6f 66 74 2e 63 6f 6d 2f 43 65 microsoft.com/Ce
  0280 72 74 45 6e 72 6f 6c 6c 2f 74 6b 78 70 61 73 72 rtEnroll/tkxpasr
  0290 76 33 36 2e 70 61 72 74 6e 65 72 73 2e 65 78 74 v36.partners.ext

 02a0 72 61 6e 65 74 2e 6d 69 63 72 6f 73 6f 66 74 2e ranet.microsoft.
  02b0 63 6f 6d 5f 4d 69 63 72 6f 73 6f 66 74 25 32 30 com_Microsoft%20

 02c0 4c 53 52 41 25 32 30 50 41 2e 63 72 74 30 81 8b LSRA%20PA.crt0..
  02d0 06 08 2b 06 01 05 05 07 30 02 86 7f 66 69 6c 65 ..+.....0...file
  02e0 3a 2f 2f 5c 5c 74 6b 78 70 61 73 72 76 33 36 2e ://\\tkxpasrv36.

 02f0 70 61 72 74 6e 65 72 73 2e 65 78 74 72 61 6e 65 partners.extrane
  0300 74 2e 6d 69 63 72 6f 73 6f 66 74 2e 63 6f 6d 5c t.microsoft.com\
  0310 43 65 72 74 45 6e 72 6f 6c 6c 5c 74 6b 78 70 61 CertEnroll\tkxpa
  0320 73 72 76 33 36 2e 70 61 72 74 6e 65 72 73 2e 65 srv36.partners.e
  0330 78 74 72 61 6e 65 74 2e 6d 69 63 72 6f 73 6f 66 xtranet.microsof
  0340 74 2e 63 6f 6d 5f 4d 69 63 72 6f 73 6f 66 74 20 t.com_Microsoft 
  0350 4c 53 52 41 20 50 41 2e 63 72 74 30 1a 06 08 2b LSRA PA.crt0...+
  0360 06 01 04 01 82 37 12 01 01 ff 04 0b 16 09 54 4c .....7........TL
  0370 53 7e 42 41 53 49 43 S~BASIC


 Certificate Extensions: 0
 Signature Algorithm:
     Algorithm ObjectId: 1.2.840.113549.1.1.4 md5RSA
     Algorithm Parameters:
     05 00
 Signature: UnusedBits=0
     0000  96 b9 a2 43 a1 dd 17 48  b9 d6 ec a7 b7 71 a0 01
     0010  63 0f f4 bc e7 c3 03 d3  c2 48 72 7f 85 90 b3 70
     0020  17 d1 50 20 f7 8c ce aa  d1 fe 68 fa 64 b3 8d 00
     0030  b5 38 4a c9 0d 96 1f 6b  42 1f a9 44 05 c5 12 b1
     0040  24 26 fd 19 bb 74 6f bf  16 ef 35 5c 4c d1 dd 30
     0050  ac 64 3c e7 4f 10 14 49  d7 0e 20 c8 ac 36 af 01
     0060  ca 80 ff 04 fb 9d 79 56  4b 8a 7b 11 4e d8 e2 97
     0070  7e 1d 87 cd e5 e1 b1 3e  e6 5f d0 9c 62 6d f6 8c
     0080  dc ca e3 4a f2 e5 5c 29  bb 49 66 68 17 02 75 70
     0090  71 7c f1 78 64 d6 ed db  85 f3 67 ee fb e8 57 50
     00a0  35 94 7b 71 4d f7 b5 12  e5 bb e8 2b 40 de ec 5f
     00b0  29 af bb 7e c9 0b 97 b2  d2 46 dc 77 ef f4 f5 3f
     00c0  07 48 ab 25 c3 8a f3 5d  e1 23 8b c9 49 7d c0 8b
     00d0  c7 52 ca 5c 7f 29 4b 9b  fd 5d fe 71 a1 34 50 00
     00e0  10 a5 86 04 94 e8 07 b7  4b 58 05 4c 67 ca 76 ca
     00f0  5a cc cf 27 d5 a4 04 a8  31 71 83 72 73 ab 4a 00
 Non-root Certificate
 Key Id Hash(rfc-sha1): d6 11 4d 36 37 9e 6e e3 9e 9f 2f 61 88 98 f2 8d 56 38 69 c9
 Key Id Hash(sha1): 38 ea d5 44 de a9 3f 76 78 43 6e 95 f0 2d 58 82 42 f6 55 dd
 Cert Hash(md5): ea 99 4e 63 fe 99 06 60 02 c9 9b 09 e3 50 06 2e
 Cert Hash(sha1): 1d 19 0f ac f0 6e 13 3e 87 54 e5 64 c7 6c 17 da 8f 56 6f bb
 CertUtil: -dump command completed successfully.

 

该证书具有一个非同寻常的字段 - Issuer Unique Identifier。 此字段已过时,微软软件或基础架构不会使用。 当详细审查该字段时,我们意识到它包含的并不是随机数据,而是具有一定的结构。 它包含一个正确编码的 X.509V3 扩展字段,从字节偏移量 0x119 开始直到 Issuer Unique Identifier 字段。 下面是一些我们提取出来的丢失的扩展的示例:

偏移量

字段

数据

0x161

CDP(CRL 分发点)

https://tkxpasrv36.partners.extranet.microsoft.com/CertEnroll/Microsoft%20LSRA%20PA.crl

0x226

授权信息访问

 https://tkxpasrv36.partners.extranet.microsoft.com/CertEnroll/tkxpasrv36.partners.extranet.microsoft.com_Microsoft%20LSRA%20PA.crt

0x35b

微软Hydra 扩展 [1]

值“TLS~BASIC”的对象标识符 1.3.6.1.4.1.311.18,标记为关键 

“关键”链接

Microsoft Hydra 扩展标记为“关键”,这就是为什么攻击者需要发起碰撞攻击的重要原因。在 X.509 方面,如果扩展对于证书链的正确验证是必要的,则该扩展必须标记为关键。加密库在遇到一个标记为关键的扩展而它不能理解该扩展的情况下,验证就会失败。Window Vista 和最新版本的 Windows 中的加密 API 不会出现这种行为,证书在这些平台上会验证失败。因此,如果攻击者希望一个证书可以在所有版本的 Windows 上都能有效,他们需要清除此字段。

碰撞环境

要清除关键扩展,攻击者会利用一些环境来发起碰撞攻击:

•             攻击者利用终端服务器授权系统的注册过程来获取链接到微软根证书颁发机构的证书,该证书不要求对通过内部访问微软PKI。

•             此证书的签名算法为 md5RSA.

•             证书颁发机构使用已知的有效期和证书序列号,这个序列号非常有可能预测出来。

发起碰撞攻击的一个重要环节就是攻击者需要能够完全预测由CA 签名的证书内容。由于序列号可预测,攻击者可以执行一组证书注册,当他们发起碰撞攻击时,证书注册可以提示可能的序列号。这也称为“选择的前缀碰撞攻击”[2]。然后攻击者可以将应用 Sotirov et. al. [3] 编写的碰撞算法,来创建一个伪造的证书,清除关键 Microsoft Hydra 扩展,并且仍然符合 CA 签署的合法证书的 MD5 哈希。

快速响应以抑制 “火焰”和山寨攻击

如果没有碰撞攻击,是有可能对代码进行签名使其在早于 Windows Vista 的系统上通过验证的,但是这种签过名的代码在 Windows Vista 及以上的系统中将无法通过验证。在发动此次攻击后,攻击者具有一个证书,可以用于签署链接到微软根证书颁发机构的代码,在所有版本的 Windows上有效。由于在早于Windows Vista的系统上存在不需要进行复杂的碰撞攻击就能发起山寨攻击的风险,我们决定采取措施发布紧急安全补丁。

加固终端服务器授权证书基础架构

我们还对终端服务器授权基础架构进行了大量更改,以便将未来的风险降到最低:

•             不仅仅是使“火焰”恶意软件所使用的证书无效,我们还使与终端服务器授权相关的整个证书颁发机构层次结构无效,不论是现在的还是过去的。这是一次广泛的行动,是保护最大数量用户的最快方式。 这些证书会在安全公告2718704的更新中无效。现有终端服务器客户端访问许可证 (CAL) 不受影响,您可以在终端服务器官方博客中阅读更多详细信息。

•             引入了新的证书链,该证书链不再链接到微软根证书颁发机构。它具有独立的根,并且不受 Windows 客户端信任,以便降低未来的风险。该证书在签名中使用 SHA1。

•             我们还停止为此新的层次结构颁发具有代码签名能力的证书。另外,其证书受不用于代码签名的新增强型密钥使用的约束。这会有效地将证书的功能仅限于终端服务器授权。

微软十分重视用户的安全;因此我们会采取最快速灵活的行动来首要保护最大数量的用户。我们将继续采取必要的措施来保护我们的用户。

 

致谢

感谢 John Lambert、Magnus Nystrom、David Molnar,特别是 Tolga Acar,感谢各位对本次调查的贡献。

- 微软安全响应中心工程团队 Jonathan Ness

 

推荐关注微软安全官方微博  以及时获取最新微软安全信息:

腾讯微博 - https://t.qq.com/MicrosoftTwC

新浪微博 - https://www.weibo.com/microsofttwc

 

参考文献

[1] Microsoft, “Object IDs associated with Microsoft cryptography”, https://support.microsoft.com/kb/287547/pt-b, March 1, 2007

[2] M. Stevens and A. Lenstra and B. de Weger. "Chosen-prefix Collisions for MD5 and Colliding X.509 Certificates for Different Identities", https://www.win.tue.nl/hashclash/EC07v2.0.pdf, https://www.win.tue.nl/hashclash/ChosenPrefixCollisions/, June 16, 2009.

[3] A.Sotirov, M.Stevens, J.Applebaum, A.Lenstra, D.Molnar, D.A. Osvik, B. de Weger, “MD5 considered harmful today”, https://www.win.tue.nl/hashclash/rogue-ca/, Dec.30, 2008.