On décompresse intro.mem.xz avec la commande xz -dk intro.mem.xz. Étant donnée que l’on fait de l’analyse de RAM, j’ai choisi d’utiliser le framework open-source Volatility3.
Pour la première commande, je cherche à identifier le kernel, ici je retrouve la chaine Linux version 6.18.0.
$ vol -f intro.mem banners.Banners
Volatility 3 Framework 2.28.0
Progress: 100.00 PDB scanning finished
Offset Banner
0x20000a0 Linux version 6.18.0 (fcsc@fcsc) (gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #1 SMP PREEMPT_DYNAMIC 0
0x2165100 Linux version 6.18.0 (fcsc@fcsc) (gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #1 SMP PREEMPT_DYNAMIC 0
0x32919e0 Linux version 6.18.0 (fcsc@fcsc) (gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #1 SMP PREEMPT_DYNAMIC 0 0
On apprends donc que le kernel 6.18.0 (fcsc@fcsc) est unique et par consequence nous ne pouvons pas utiliser les commandes parsant le kernel. Mais cela ne nous empeche pas de lancer des commandes sans tables comme vol -f intro.mem linux.vmcoreinfo.VMCoreInfo.
virt est noté SYMBOL(_stext) 0xffffffff81000000. Pour phys, sachant que KERNELOFFSET 0x0 indique la valeur aléatoire générée par KASLR et NUMBER(phys_base) 0 indique qu’il n’y a pas de relocalisation d’adresse physique d’ou 0x0000000001000000 car étant la position matérielle du kernel Linux standard x86 / x86_64.
On retrouve donc le flag:
FCSC{0x0000000001000000-0xffffffff81000000}