• 6 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 12/21/23

Compromettez un premier compte

Avec les notes que vous avez prises sur les différents éléments du système d’information cible, vous êtes maintenant capable de choisir vos premières cibles pour compromettre un premier compte sur le domaine.

Prenez la main sur une machine

Lors de votre découverte du réseau, vous avez sans doute identifié des machines présentes sur le réseau, les services proposés par ces machines, ainsi que les versions des systèmes d’exploitation et des services.

Exploiter un défaut de mise à jour

Parmi ces services, voici quelques vulnérabilités que je trouve régulièrement, et qui me permettent de prendre la main sur la machine lorsqu’elle est exploitée :

MS17-010 est une vulnérabilité sur le service SMB des machines Windows. Elle a été corrigée en 2017, mais vous trouverez régulièrement des  machines qui ne sont plus mises à jour dans un système d’information. Pour identifier des machines vulnérables, l’outil nmap vous sera utile.

nmap --script smb-vuln-ms17-010.nse -p445 10.10.10.0/24

Pour l’exploiter, le framework Metasploit sera d’une grande aide.

Impression d'écran de l'outil Metasploit
Utilisation de Metasploit pour exploiter MS17-010

Il existe d’autres vulnérabilités Windows permettant de prendre le contrôle à distance de la machine, comme la CVE-2019-0708, appelée BlueKeep et affectant le protocole RDP, ou encore la CVE-2020-1350, appelée SIGRed affectant le service DNS. Ces vulnérabilités, bien que critiques, sont cependant plus difficiles à exploiter que MS17-010.

Utiliser des identifiants par défaut

Lorsque vous découvrez des serveurs et services, prenez soin de repérer les mires d’authentification web. Vous savez, ces pages internet sur lesquelles il faut renseigner un nom d’utilisateur et un mot de passe pour accéder au site. Vous aurez très souvent ce type de page lorsque vous voudrez accéder à la partie administration d’une application.

Or pour de nombreuses solutions, il existe des identifiants par défaut utilisables lorsque l’application est installée pour la première fois. Il faudrait bien sûr qu’ils soient changés, mais ce n’est pas toujours fait par les administrateurs. C’est pourquoi, dès que je tombe sur une interface d’authentification, je regarde le nom et la version de l’application web, et je cherche la documentation de cette application pour y découvrir les identifiants par défaut. Croyez-moi, ça fonctionne très souvent !

Vous pourrez alors vous connecter à des interfaces d’administration de plusieurs types d’applications :

  • des serveurs d’application, ce qui vous permettra d’ajouter une application arbitraire sur le serveur, et ainsi exécuter du code à distance. Il y a par exemple les serveurs Tomcat, Jenkins ou JBoss ;

  • des serveurs d’impression qui sont parfois connectés à l’Active Directory pour connaître les utilisateurs de l’entreprise et leurs adresses mail. Vous pourrez alors trouver les identifiants de l’imprimante ;

  • des équipements réseau, comme des switchs ou des routeurs. Vous serez alors en mesure de lire leur configuration, et découvrir des VLAN cachés ;

  • des outils d’administration comme des interfaces iLo, ou des serveurs vCenter.

Profitez d’une politique de mot de passe faible

Vous avez découvert la politique de mot de passe de l’entreprise lors de votre phase de reconnaissance. La connaître vous permettra de tenter de trouver des premiers identifiants valides mais faibles.

Pour cela, vous pouvez faire du password spraying. Cela signifie que vous allez tenter d’utiliser un mot de passe simple sur tout ou partie des utilisateurs du domaine.

Qu’est-ce que tu appelles un mot de passe simple ?

Un mot de passe simple, c’est un mot de passe qui est très facile à retenir pour l’utilisateur, avec un nom commun ou un nom propre, et peut-être un chiffre et un symbole. Ça peut également être une suite de chiffres.

D’accord, mais concrètement, je teste quoi comme mot de passe ?

C’est vrai que ça laisse quand même beaucoup de possibilités ! Il vous faudra alors bien choisir le ou les mots de passe que vous allez tester. Voici donc quelques idées que j’applique lors de mes audits.

  • Je prends le nom de l’entreprise, j’ajoute l’année actuelle à la fin et je mets une majuscule au début. Par exemple Medicex2022. Je teste également avec un point d’exclamation à la fin, Medicex2022!.

  • Je peux faire pareil avec le nom de la ville dans laquelle se trouve l’entreprise, pour donner Paris2022 ou Paris2022!.

  • Parfois je teste également des choses très simples qui sont des combinaisons des mots de passe les plus utilisés en France. J’évite de tester des mots de passe qui ne sont que des chiffres. Mon expérience m’a montré que ça ne fonctionnait que très rarement.

    • azerty ;

    • tiffany ;

    • qwerty ;

    • loulou ;

    • marseille.

Vous pouvez donner libre cours à votre imagination bien sûr, et adapter vos tests à votre contexte. Si vous savez que le mot de passe de tous les nouveaux arrivants est Welcome123 et qu’ils doivent le changer à leur arrivée, ça vaut le coup de l’essayer !

Il existe d’ailleurs beaucoup d’outils pour vérifier la validité d’un mot de passe sur plusieurs comptes. L’outil SprayHound en est un.

sprayhound -U ./utilisateurs.txt -p Medicex1 -d medic.ex -dc 10.10.10.2

Le mot de passe Medicex1 sera testé sur la liste des utilisateurs fournie dans le fichier utilisateurs.txt.

Si vous avez déjà compromis un compte du domaine, vous pouvez laisser SprayHound chercher tous les utilisateurs. Vous n’avez qu’à lui fournir le nom d’utilisateur ( -lu  )  et le mot de passe ( -lp  )  que vous connaissez. Par ailleurs, ayant un compte valide, l’outil a l’avantage de tester intelligemment, en prenant en compte la politique de mot de passe. Il ne testera pas les comptes qui seront bloqués au prochain échec.

sprayhound -p Medicex2022 -d medic.ex -dc 10.10.10.2 -lu pixis -lp P4ssw0rd
Exemple d’utilisation de SprayHound
Exemple d’utilisation de SprayHound

Enfin, une technique qui peut parfois fonctionner, c'est le user-as-pass. Vous allez chercher les utilisateurs pour lesquels le mot de passe est exactement leur nom d’utilisateur. Cela arrive régulièrement, et vous pourrez trouver des comptes comme test ayant pour mot de passe test, ou encore servicesql ayant également comme mot de passe servicesql.

SprayHound est capable de faire ces tests. Pour cela, vous pouvez utiliser les mêmes lignes de commande que précédemment, sauf que vous ne précisez pas de mot de passe à tester. Vous pourrez alors fournir une liste de noms d’utilisateurs ( -U  ), ou fournir un premier compte ( -lu  et -lp  ).

sprayhound -U ./utilisateurs.txt -d medic.ex -dc 10.10.10.2
sprayhound -d medic.ex -dc 10.10.10.2 -lu pixis -lp P4ssw0rd

Utilisez le réseau à votre avantage

Si vous n’avez toujours pas récupéré de compte, ou si vous souhaitez en trouver de nouveaux pour avoir de nouveaux privilèges, vous pouvez exploiter des comportements par défaut de Windows au niveau du réseau.

LLMNR et NBT-NS

Le premier point concerne les protocoles LLMNR (Link-local Multicast Name Resolution) et NBT-NS (NetBIOS Name Service). Ce sont tous les deux des protocoles de résolution de nom. Quand une machine Windows cherche à trouver l’adresse IP associée à un nom de domaine ou de machine, elle va tenter plusieurs choses. Elle vérifiera s’il n’y a pas une entrée dans le fichier hosts, puis elle utilisera le protocole DNS, mais si ça ne fonctionne toujours pas, elle utilisera les protocoles NetBIOS et LLMNR. En utilisant ces protocoles, Windows enverra la demande de résolution de nom à toutes les machines qui l’entourent, ce qu’on appelle du broadcast.

Échanges de requêtes avec les protocoles obsolètes
Fonctionnement des protocoles NBT-NS et LLMNR

Dans cette vidéo, regardez à quel moment et comment vous pouvez intervenir pour récupérer des informations clés.

L’outil Respondervous permet de faire ça automatiquement, en précisant l’interface réseau qu’il doit utiliser pour se mettre en écoute des sollicitations LLMNR et NBT-NS.

./Responder.py -I eth0

Vous récolterez parfois des identifiants en clair, mais plus souvent des hashs NTLMv1 ou NTLMv2, en fonction de la version de NTLM configurée pour les machines attaquées. Ces condensats doivent ensuite être cassés, avec l’outil hashcat, par exemple.

hashcat -m 5600 ./NTLMv2-hash.txt /home/pixis/wordlist.txt

IPv6

Windows a un comportement par défaut assez étonnant en entreprise. Alors que l’immense majorité des entreprises sont entièrement configurées pour utiliser IPv4, le système d’exploitation Windows fonctionne par défaut en IPv4 et IPv6. Mais ça ne s’arrête pas là. IPv6 est prioritaire par rapport à IPv4. Ainsi, dans une entreprise, toutes les machines reçoivent des configurations IPv4, mais vous pouvez venir en tant qu’attaquant proposer des configurations IPv6 à tous les postes, et ce sera votre configuration qui prendra le dessus.

Dans une configuration IPv6, on peut notamment indiquer où se trouve le serveur DNS, ou la route par défaut. C’est donc une manière très puissante de vous placer à nouveau en position d’homme du milieu.

L’outil mitm6 exploite ce comportement.

mitm6 -i eth0

Il se mettra en écoute sur l’interface réseau fournie, et répondra aux requêtes DHCPv6. L’outil Responder peut être lancé en parallèle pour récolter des condensats de mots de passe.

Avant d’exploiter un autre chemin d’attaque, demandons à Charlie comment il s’y prend de son côté pour compromettre un premier compte, et ce qu’il fait lors des premières minutes d’un test d’intrusion interne :

En résumé

Vous connaissez maintenant plusieurs techniques qui peuvent être appliquées pour prendre la main sur un premier compte. Les voici dans l’ordre dans lequel je les applique personnellement pendant mes tests d’intrusion :

  • exploiter les systèmes et applications vulnérables ;

  • profiter des mots de passe par défaut ;

  • compromettre un utilisateur via du password spraying ;

  • compromettre un utilisateur ou une machine via une attaque réseau,  en se positionnant en homme du milieu.

Félicitations, vous avez réussi à mettre le pied dans l’entreprise en compromettant un premier compte ! Rassurez-vous, le voyage ne s’arrête pas là. Vous pouvez effectuer une nouvelle phase de reconnaissance avec ces identifiants fraîchement récupérés, et ensuite procéder à une phase de mouvement latéral pour tenter de compromettre encore plus de choses dans le système d’information.

Example of certificate of achievement
Example of certificate of achievement