NewbieContest

News => News Hacking/Cracking/Phreaking => Discussion démarrée par: neibb le 19 Janvier 2020 à 05:50:09



Titre: Crypt32.dll certificate spoofing.
Posté par: neibb le 19 Janvier 2020 à 05:50:09
Bonjour à tous!
Alors on parlait comme ça sur IRC que ça faisait longtemps qu'il n'y avait pas eu de news, et effectivement, la dernière date un peu... Et ben alors, qu'est ce qui se passe???
Et puis on a parlé aussi de Crypt32.dll, et que ce serait bien d'avoir une news là dessus, et comme je suis super sympa, voici un petit résumé.

Ce Mardi 14 Janvier 2020, Microsoft a corrigé  une faille de sécurité majeure touchant les dernières versions de Windows (apparemment seulement Windows 10, Windows Server 2016 et Windows Server 2019).
La faille a été découverte par la NSA qui l'a gentiment fait remonter à Microsoft, elle concerne Crypt32.dll, qui est utilisée pour vérifier l'authenticité d'un logiciel ou d'une mise à jour.

Petite explication de ce qu'est Crypt32.dll :
Ce que nous en dit Microsoft, crypt32.dll est un module fourni avec les systèmes d'exploitation Windows et Windows Server, implémentant de nombreuses fonctions de certificat et de messagerie chiffrée dans CryptoAPI, tel que CryptSignMessage.

« Crypt32.dll is the module that implements many of the Certificate and Cryptographic Messaging functions in the CryptoAPI, such as CryptSignMessage. Crypt32.dll is a module that comes with the Windows and Windows Server operating systems, but different versions of this DLL provide different capabilities. There is no API to determine the version of CryptoAPI that is in use, but you can determine the version of Crypt32.dll that is currently in use by using the GetFileVersionInfo and VerQueryValue functions. »

Pour faire simple, crypt32.dll est un outil spécifique à Windows qui permet de vérifier l’authenticité des certificats fournis, et ainsi approuver une application ou bien un site Web.

Un patch a donc été proposé, mise à jour de la faille : CVE-2020-0601.
Comme on peut s'attendre à que cette vulnérabilité voit rapidement fleurir des outils un peu partout (merci l'internet!), s’il vous plait les administrateurs, attendez un peu avant de l'appliquer !  :twisted:  (le vieux script kiddy...)

Sinon, pour ce qui est de la vulnérabilité :
Elle est présente dans la façon dont Windows CryptoAPI valide les certificats ECC (Elliptic Curve Cryptography) et est classée comme importante ! Ces certificats sont créés par Windows par exemple pour la gestion du traffic HTTPS.  La cause principale de cette vulnérabilité est une implémentation défectueuse de la Elliptic Curve Cryptography (ECC) dans le code de Microsoft.
Alors je suis allé voir ce qu’était cette fameuse ECC, je vous ferais bien un résumé mais c’est très bien expliqué ici par un jeu de billard pour ceux qui veulent se rendre un peu plus compte :
https://medium.com/zengo/win10-crypto-vulnerability-cheating-in-elliptic-curve-billiards-2-69b45f2dcab6
En gros il s’agit de la façon dont Windows gère ses chiffrements, je laisse la parole aux experts !


Pour l’exploitation,
il s’agirait de se créer une nouvelle clé privée qui correspondrait à la clé publique, car le code de Windows vérifie des certificats non standards, ce qui permet à un attaquant de spécifier des paramètres dans son certificat et de le signer au nom d'autrui, pour se faire passer pour tel site web, ou encore de distribuer des mises à jour logicielles...
La vulnérabilité de validation de certificat permet donc d'outrepasser la façon dont Windows fait confiance à une entité, et peut ainsi laisser activer une exécution de code à distance.
Pour ce qui est d’un fichier exécutable, l'utilisateur n'aurait aucun moyen de savoir s’il s’agit d’une source fiable car la signature numérique proviendrait d'un fournisseur dit de "confiance".
De fil en aiguille, il est ainsi possible de se positionner Man in the Middle, et on imagine vite un large panel d’exploitations.

Voici les exemples trouvés où la validation de confiance peut être affectée:
  • Les connexions HTTPS.
  • Les fichiers signés et les courriers électroniques.
  • Les exécutables signés passés en user-mode.



Comment détecter et se prévenir de cette attaque ?
Selon le billet de la NSA (https://media.defense.gov/2020/Jan/14/2002234275/-1/-1/0/CSA-WINDOWS-10-CRYPT-LIB-20190114.PDF),
L'utilisation de proxys d'inspection TLS correctement configurés et gérés valident indépendamment les certificats TLS des entités externes et rejetteront les certificats non valides ou non approuvés, protégeant ainsi les endpoints des certificats qui tentent d'exploiter ces vulnérabilités.
Il faut donc s'assurer que la validation des certificats est activée pour les proxys TLS afin de limiter son exposition, et bien sûr examiner les logs pour détecter les signes d'exploitation (Merci à la NSA pour ce commentaire très pertinent).

Wireshark peut être utilisé pour analyser et extraire les certificats des données de protocole réseau pour une analyse supplémentaire.
Les utilitaires OpenSSL et Windows certutil peuvent être utilisés pour effectuer une analyse approfondie des certificats afin de de vérifier les propriétés malveillantes.

Certutil peut être utilisé pour examiner un certificat X509 (format standard de certificat électronique et algorithme pour la validation de chemin de certification) par la commande suivante:
Code:
certutil –asn <certificate_filename>
Avec OpenSSL:
Code:
openssl asn1parse –inform DER –in <certificate_filename> –i –dump
ou
Code:
openssl x509 –inform DER –in <certificate_filename> –text

Je vous laisse lire la suite !;)  N'hésitez pas à me corriger, et si on avait un ou deux cas pratiques ce serait super cool ! (À bon entendeur.)

Sources:
https://www.lemonde.fr/pixels/article/2020/01/14/microsoft-corrige-une-faille-de-securite-majeure-apres-un-signalement-de-la-nsa_6025873_4408996.html
https://www.guru3d.com/news-story/microsoft-patches-crypt32-dll-vulnerability-that-allows-certificate-spoofing.html
https://docs.microsoft.com/fr-fr/windows/win32/seccrypto/crypt32-dll-versions
https://media.defense.gov/2020/Jan/14/2002234275/-1/-1/0/CSA-WINDOWS-10-CRYPT-LIB-20190114.PDF
https://gist.github.com/SwitHak/62fa7f8df378cae3a459670e3a18742d
https://medium.com/zengo/win10-crypto-vulnerability-cheating-in-elliptic-curve-billiards-2-69b45f2dcab6