Ceci est un exercice d'analyse de mémoire vive. J'ai récupéré la mémoire de mon ordinateur Windows à un moment donné, et pleins d'informations utiles s'y cachent.
On va commencer par rechercher quelque chose de simple : le nom de l'ordinateur
C'est simple, il porte le mot CTFREI dedans. Le flag sera alors les mots qui suivent.
Format : CTFREI{Mots-trouvés}NB : Le hostname est composé de 3 mots, CTFREI ne compte pas
Note : Le fichier est le même pour les 4 étapes
sha1: c91d17b27d8bf5df0830bd6104801b065cca6ee9
Solution
2 fichiers sont fournis pour ce challenge :
memory.vmem : Les .vmem sont des fichiers de mémoire virtuelle utilisés dans des environnements comme VMware. Ils contiennent une image de la mémoire vive (RAM) de la machine virtuelle, sauvegardée sur le disque pour permettre des opérations telles que la mise en pause, la suspension ou la reprise de la VM. Le fichier .vmem stocke donc l'état complet de la mémoire de la VM à un instant donné.
memory.vmsn : Les .vmsn sont des fichiers de snapshot utilisés par VMware. Ils stockent l'état de la VM à un moment spécifique, incluant les données de la RAM, les paramètres de la VM et d'autres métadonnées comme les informations sur les disques virtuels.
En bref :
.vmem : sauvegarde l'état de la mémoire vive d'une VM.
.vmsn : contient un snapshot complet de la VM (incluant la RAM et les métadonnées).
$ volatility3 -f memory.vmem windows.info.Info
Volatility 3 Framework 2.7.0
Progress: 100.00 PDB scanning finished
Variable Value
Kernel Base 0xf80330002000
DTB 0x1ad000
Symbols ...volatility3/symbols/windows/ntkrnlmp.pdb/89284D0CA6ACC8274B9A44BD5AF9290B-1.json.xz
Is64Bit True
IsPAE False
layer_name 0 WindowsIntel32e
memory_layer 1 FileLayer
KdVersionBlock 0xf80330c113a0
Major/Minor 15.19041
MachineType 34404
KeNumberProcessors 4
SystemTime 2024-09-12 10:52:17
NtSystemRoot C:\Windows
NtProductType NtProductWinNt
NtMajorVersion 10
NtMinorVersion 0
PE MajorOperatingSystemVersion 10
PE MinorOperatingSystemVersion 0
PE Machine 34404
PE TimeDateStamp Fri May 20 08:24:42 2101
On sait maintenant qu'on a un Windows devant nous. Pour récupérer le nom de la machine, on peut lire les clés de registre avec le plugin windows.registry.printkey.PrintKey. Celle qui contient cette information sont situées dansControlSet001\Control\ComputerName\ComputerName :
$ volatility3 -f memory.vmem windows.registry.printkey.PrintKey --key "ControlSet001\Control\ComputerName\ComputerName"
Volatility 3 Framework 2.7.0
Progress: 100.00 PDB scanning finished
Last Write Time Hive Offset Type Key Name Data Volatile
- 0xdd04bc44a000 Key ?\ControlSet001\Control\ComputerName\ComputerName - -
2024-09-10 20:32:18.000000 0xdd04bc48c000 REG_SZ \REGISTRY\MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName (Default) "mnmsrvc" False
2024-09-10 20:32:18.000000 0xdd04bc48c000 REG_SZ \REGISTRY\MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName ComputerName "CTFREI-NICE-HOS" False
Nom de la machine : CTFREI-NICE-HOS. Mais il y a un souci puisque la description du challenge nous parle de trois mots sans compter CTFREI, donc ce que nous avons récupéré est tronqué.
D'autres clés de registre contiennent cette information, on peut aller chercher ControlSet001\Services\Tcpip\Parameters par exemple :