“火焰”恶意软件碰撞攻击详解
自上篇 MSRC 博客发布以来,我们收到了许多问题,询问有关“火焰”的恶意软件中所看到的算法攻击。 本篇博客总结了我们的调查结果以及我们为什么决定在太平洋夏令时上周日晚上发布安全公告 2718704。 简而言之,默认情况下,攻击者的证书在Windows Vista 或最新版本的 Windows 系统上不会有效。他们必须进行碰撞攻击,伪造一个证书,才能在 Windows Vista 或最新版本的 Windows 操作系统上可以进行代码签名。 在早于 Windows Vista 的系统上,不利用 MD5 哈希碰撞也可以发起攻击。 安全公告2718704中撤销了该证书以及相关证书颁发机构颁发的所有证书。我们继续推荐所有尚未自动安装更新的用户立即安装更新。
神秘丢失的扩展
当首次审查 “火焰”时,我们看到一个文件具有有效数字签名,该数字签名链接到 微软根证书颁发机构。当核查该证书时,我们注意到有以下几个问题。首先,它没有 X.509 扩展字段,这与我们通过终端服务器授权基础结构颁发的证书不一致。我们希望可以找到证书吊销列表 (CRL) 分发点 (CDP) 扩展、授权信息访问 (AIA) 扩展和“Microsoft Hydra”关键扩展。所有这些扩展都没有。
当我们用 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 |
授权信息访问 |
|
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.