Stellar Wars

Thomas C., Matthieu H., Aurelien K.

← Stellar Wars · L'appel du Site / Le Réveil du VPN / Le Réseau Contre-Attaque / Le Dernier Défi

Le Réveil du VPN

**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.

Cote 26 pts

Indices

Il pourrait être utile d'utiliser KeePass Password Dumper !

Faire son rapport

Résolution Scénario 1 "Stellar Wars" - Exercice 2 "Le Réveil du VPN"

Présentation de la vulnérabilité exploitée

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.

Outils utilisés

  • Volatility 3 (framework d'analyse mémoire)
  • KeePass Password Dumper .NET (outil d'exploitation de la CVE)
  • N.B. : Une version Python du dumper existe également.

Fichiers fournis

  • memdump.mem : dump mémoire principale
  • db1.kdbx : base de données KeePass chiffrée

Étape 1 : Identifier le système

Utilisation de Volatility 3 pour obtenir les données sur l'OS :

python3 vol.py -f memdump.mem windows.info

Étape 2 : Rechercher les processus KeePass.

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.

Étape 3 : Utilisation du KeePass Password Dumper

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).

**Étape 4 : Exploitation CVE avec le dumper

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)

Étape 5 : Génération de liste de mots de passe possibles (optionnel)

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.

Étape 6 : Déchiffrer la base KeePass

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).

Étape 7 : Recherche du compte VPN compromis dans la base

Cette étape peut être réalisée via interface graphique ou via ligne de commande.