• 20 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 28/11/2019

Récupérez les informations importantes de la mémoire Windows pour l'analyse

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Ça y est, vous avez collecté les informations, vous pouvez procéder à votre analyse ! Commençons, dans cette partie, par l'analyse du dump de la mémoire. Si ce n'est pas déjà fait, vous pouvez télécharger le fichier memdump.mem en cliquant ici. Ce fichier contient la mémoire vive brute du PC juste après l'attaque. Ainsi, vous pourrez mener l'investigation de chez vous en même temps que moi !

Dans ce chapitre, nous verrons quelles sont les informations que nous pouvons extraire de la mémoire Windows. Nous découvrirons également comment utiliser le framework Volatility pour débuter l’analyse mémoire.

Débutez l’analyse mémoire avec Volatility

Les données de traitement d'un ordinateur sont toujours stockées dans la mémoire RAM (Random Access Memory) car elle possède un temps d'accès beaucoup plus faible que la mémoire disque. 

Ces données permettent à l’analyste de retrouver des informations concernant des connexions réseaux, des clés de registre, des mots de passe ou encore des processus en cours d’exécution.

Lors d’une analyse forensic, l’étude de l’image mémoire d’un système avec des outils spécifiques peut s’avérer utile, car elle permettra d’extraire des informations difficilement exploitables lorsque le système est en fonctionnement. C’est ce qui vous permettra de comprendre quelles actions ont été effectuées. 

Dans notre situation, nous savons que l'infection est survenue à la suite de l'ouverture d'une pièce jointe reçue par email. Il faudra alors orienter nos recherches dans cette direction et identifier si un logiciel malveillant a été exécuté, et de quelle manière.

Pour extraire ces informations sur le dump mémoire que nous avons réalisé, nous utiliserons le framework open source Volatility. 

Prenez en main Volatility

Volatility peut être téléchargé sur le site de Volatility Foundation. Il existe une version pour Windows, Mac et Linux. Dans votre machine d’analyse SIFT, Volatility est préinstallé ! 

Pour lancer Volatility, il suffit d’ouvrir un terminal et d’entrer par exemple la commande volatility -h  pour afficher les options disponibles (le retour de cette commande est très long, en voici le début).

Usage: Volatility - A memory forensics analysis platform.

Options:
-h, --help            list all available options and their default values.
Default values may be set in the configuration file
(/etc/volatilityrc)
--conf-file=/home/rocfor/.volatilityrc
User based configuration file
-d, --debug           Debug volatility
--plugins=PLUGINS     Additional plugin directories to use (colon separated)
--info                Print information about all registered objects
--cache-directory=/home/rocfor/.cache/volatility

[...]

Il existe une multitude d’options disponibles que vous pouvez explorer depuis l’aide. Ces options permettent d’explorer le contenu de la mémoire et de reconstruire les structures de données pour en extraire les informations pertinentes. Le wiki du projet Volatility présente chaque option. 

Récupérez le profil de l'image avec ImageInfo

La première étape pour pouvoir analyser un dump mémoire est de récupérer les informations de l’image qui permettront à Volatility de correctement parser les données, c'est-à-dire déterminer son profile.

Pour cela, nous allons utiliser l'option ImageInfo de Volatility sur notre dump mémoire avec la commande volatility -f memdump.mem imageinfo.

$ volatility -f memdump.mem imageinfo
Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86
AS Layer1 : IA32PagedMemoryPae (Kernel AS)
AS Layer2 : FileAddressSpace (/home/rocfor/forensic_case001/memdump.mem)
PAE type : PAE
DTB : 0x185000L
KDBG : 0x82b39c28L
Number of Processors : 1
Image Type (Service Pack) : 1
KPCR for CPU 0 : 0x82b3ac00L
KUSER_SHARED_DATA : 0xffdf0000L
Image date and time : 2019-07-31 13:45:40 UTC+0000
Image local date and time : 2019-07-31 15:45:40 +0200

Cette option vous permettra d’obtenir les informations de profil de votre image. Comme vous pouvez le voir sur la sortie console ci-dessus, le champ « suggested profile » propose des suggestions de profils qu’il faudra ensuite préciser à Volatility avec l’option « --profile= ». 

Ce profil correspond au système d’exploitation de votre dump mémoire. Volatility suggère ici un système Windows 7 SP1 en 32 bits qui correspond bien à notre système cible. Nous pourrons donc lui spécifier par la suite de traiter le dump avec l'option  –-profile=Win7SP1x86.

Maintenant que nous avons déterminé le profil de notre image, c'est-à-dire le type de machine, nous pouvons commencer à en extraire des informations.

Récupérez la liste des processus

L’OS est responsable de la gestion, de la suspension et de la création de processus, c'est-à-dire des instances d’un programme.

Lorsqu'un programme s'exécute, un nouveau processus est créé et associé à son propre ensemble d’attributs, y compris un ID de processus unique (PID) propre à chacun, et un espace d'adressage.

L’espace mémoire d’un processus devient un conteneur pour le code de l’application, les bibliothèques partagées, les données dynamiques et la pile d'exécution. 

Un aspect important de l’analyse de la mémoire consiste à énumérer les processus qui s'exécutent sur un système et analyser les données stockées dans leur espace d'adressage. L'objectif ? Dénicher les processus correspondant à des programmes potentiellement malveillants, ainsi que comprendre leur fonctionnement, leur origine, et les analyser en détail

Pour extraire la liste des processus, il est possible d’utiliser l’option  pslist.

$ volatility -f memdump.mem –-profile=Win7SP1x86 pslist 
Offset(V)  Name                 PID    PPID   Thds   Hnds     Sess   Wow64  Start                          Exit

---------- -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------

0x848338e8 System                    4 0 90     547      ------ 0 2019-07-31 11:49:59 UTC+0000
0x87002020 smss.exe                272 4 2    29     ------        0 2019-07-31 11:49:59 UTC+0000
0x8673f030 csrss.exe               360 352    9      381 0         0 2019-07-31 11:50:00 UTC+0000
0x867f7030 wininit.exe             412 352    3      74 0          0 2019-07-31 11:50:01 UTC+0000
0x867f55f8 csrss.exe               420 404    11     388 1         0 2019-07-31 11:50:01 UTC+0000
0x86879d40 winlogon.exe            468 404    3      110 1         0 2019-07-31 11:50:01 UTC+0000
0x8684a6c0 services.exe            512 412    8      209 0         0 2019-07-31 11:50:01 UTC+0000

[...]

0x84b5a030 msdtc.exe              1632 512 12 143 0 0 2019-07-31 12:17:50 UTC+0000 
0x84b1c030 WINWORD.EXE            3544 588 13 621 1 0 2019-07-31 12:45:34 UTC+0000 
0x84e19030 rad5163B.tmp.exe         1416 3544 11 472 1 0 2019-07-31 12:45:47 UTC+0000

[...]

0x84aeebf8 cscript.exe            2728 1416 5 198 1      0 2019-07-31 12:53:57 UTC+0000
0x84f04030 conhost.exe            2876 420 1 33 1      0 2019-07-31 12:53:57 UTC+0000
0x84d165e8 rfhyMVOQxfc.exe         1292 2728 0 -------- 1      0 2019-07-31 12:53:57 UTC+0000 2019-07-31 13:45:12 UTC+0000  
0x84ad3a08 cmd.exe                2204 1416 0 -------- 1      0 2019-07-31 12:55:36 UTC+0000 2019-07-31 12:58:21 UTC+0000
0x84e6fa90 cmd.exe                1896 1416 0 -------- 1      0 2019-07-31 13:00:28 UTC+0000 2019-07-31 13:01:09 UTC+0000

[...]

0x84a835a8 whoami.exe             2100 3992 0 -------- 1      0 2019-07-31 13:40:09 UTC+0000 2019-07-31 13:40:09 UTC+0000
0x86e1dcd0 whoami.exe             3972 2772 0 -------- 1      0 2019-07-31 13:40:10 UTC+0000 2019-07-31 13:40:10 UTC+0000
0x84dc3d40 rfhyMVOQxfc.exe         1808 2728 3 91 1      0 2019-07-31 13:45:17 UTC+0000

Cette option nous permet d’afficher la liste des processus en cours de fonctionnement lors du dump.

Vous retrouvez ici plusieurs informations, dont voici les plus importantes :

  • offset : l’adresse mémoire du processus ;

  • name : le nom du processus en cours d’exécution ;

  • PID (Process IDentification) : le numéro d’identification du processus ;

  • PPID (Parent Process ID) : le PID du processus parent ;

  • start : la date et l’heure de lancement du processus. 

Dans notre cas, nous pouvons déjà identifier plusieurs processus suspects, comme les processus rad5163B.tmp.exe et  rfhyMVOQxfc.exe

Lors de l’analyse des processus Windows, on peut vite se rendre compte qu’il existe tout un tas de processus en cours d’exécution. Lors d’une analyse mémoire, il est nécessaire de pouvoir identifier les processus légitimes et ceux qui ne le sont pas.

Dans notre cas par exemple, nous pouvons voir les différents processus système en cours d'exécution tels que  smss.exe,  winlogon.exe  ou encore  services.exe. En revanche, le processus  rfhyMVOQxfc.exe  semble suspect, à cause de son nom avec des lettres aléatoires !

Listez les DLL d'un processus

Les DLL, pour Dynamic Link Library, sont les librairies dans Windows. Ce sont des fonctions préalablement codées et disponibles sur le système. Pour éviter de recoder certaines fonctions, l’API Windows fournit une liste de DLL permettant de manipuler des données, de faire des connexions réseau ou encore d’écrire des fichiers.

Un logiciel malveillant va également utiliser ces API pour effectuer des actions sur le système. Via l’analyse mémoire, il sera possible de lister les DLL utilisées par un processus permettant de déduire son fonctionnement sur le système.

Avec Volatility, il est possible d’extraire les DLL utilisées pour un processus donné, avec l’option dlllist. Par exemple, pour le processus avec le PID 1808 que nous avons précédemment identifié comme étant suspect :

$ volatility -f memdump.mem –-profile=Win7SP1x86 dlllist  -p 1808
************************************************************************
rfhyMVOQxfc.ex pid:   1808
Command line : "C:\Users\johnoc\AppData\Local\Temp\rad41020.tmp\rfhyMVOQxfc.exe" 
Service Pack 1

Base             Size LoadCount LoadTime                       Path
---------- ---------- ---------- ------------------------------ ----
0x00400000    0x16000 0xffff 1970-01-01 00:00:00 UTC+0000   C:\Users\johnoc\AppData\Local\Temp\rad41020.tmp\rfhyMVOQxfc.exe
0x777d0000   0x13c000 0xffff 1970-01-01 00:00:00 UTC+0000   C:\Windows\SYSTEM32\ntdll.dll
0x773f0000    0xd4000 0xffff 2019-07-31 13:45:17 UTC+0000   C:\Windows\system32\kernel32.dll
0x75ac0000    0x4a000 0xffff 2019-07-31 13:45:17 UTC+0000   C:\Windows\system32\KERNELBASE.dll

[...]

0x72160000     0xd000 0x1 2019-07-31 13:45:18 UTC+0000   C:\Windows\system32\dhcpcsvc6.DLL
0x72140000    0x12000 0x1 2019-07-31 13:45:18 UTC+0000   C:\Windows\system32\dhcpcsvc.DLL

Nous pouvons voir ici que l'emplacement du fichier C:\Users\johnoc\AppData\Local\Temp\rad41020.tmp\rfhyMVOQxfc.exe n'est pas commun. Ce qui nous donne des indices pour notre investigation. 

Analysez le registre

Le registre contient divers paramètres et configurations pour le système d'exploitation Windows. En tant que composant principal de Windows, il est accédé en permanence pendant le temps d'exécution. Ainsi, il est logique que le système place en mémoire tout ou partie des fichiers du registre.  

En outre, le registre Windows détient une mine d'informations utiles à des fins d’analyses. Par exemple, il sera possible de déterminer les programmes récemment exécutés, d’extraire les hash de mots de passe à des fins d'audit, ou encore d'étudier les clés et les valeurs introduites par un code malveillant dans le système.

Avec Volatility, il est possible d’extraire les informations du registre et de lister les fichiers correspondants avec l’option hivelist

$ volatility -f memdump.mem –-profile=Win7SP1x86 hivelist
Virtual    Physical Name
---------- ---------- ----
0x95281008 0x675df008 \??\C:\Users\johnoc\AppData\Local\Microsoft\Windows\UsrClass.dat
0x95289008 0x6c12a008 \??\C:\Users\johnoc\ntuser.dat

[...]

0x8f091900 0x006a5900 \Device\HarddiskVolume1\Boot\BCD
0x8f100098 0x0734d098 \SystemRoot\System32\Config\SOFTWARE

Avec ces informations et l’option hashdump, il sera possible de dumper les hash des mots de passe des comptes Windows.

$ volatility -f memdump.mem --profile=Win7SP1x86 hashdump -y 0x8981c008 -s 0x8a6579c8

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
johnoc:1000:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

Analysez les connexions réseaux

Presque tous les logiciels malveillants peuvent communiquer sur le réseau avec leur serveur de Command et de Control, pour se propager, ou encore pour la mise en place d’une porte dérobée.  

Ces actions utilisent les API réseaux de Windows, ce qui laisse inévitablement des traces en mémoire. L’analyse mémoire du réseau permettra de recouvrer des informations telle que des connexions d’IP distantes, les ports de connexion et même certaines données échangées.

Volatility propose plusieurs options permettant d’extraire des informations de connexion. Les options connectionssockscan et socket fonctionnent uniquement sur des systèmes antérieurs à Windows 7.

Toutefois, il est possible de lister les connexions réseaux actives sur les systèmes plus récents, avec l’option netscan.

$ volatility -f memdump.mem --profile=Win7SP1x86 netscan
Volatility Foundation Volatility Framework 2.6.1
Offset(P) Proto Local Address Foreign Address State Pid Owner Created
0x19472208 UDPv4 0.0.0.0:3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x19472208 UDPv6 :::3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x24d773a0 UDPv4 0.0.0.0:5355 *:* 1240 svchost.exe 2019-07-31 13:43:08 UTC+0000
0x5d30e208 UDPv4 0.0.0.0:3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x5d30e208 UDPv6 :::3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x6ec043a0 UDPv4 0.0.0.0:5355 *:* 1240 svchost.exe 2019-07-31 13:43:08 UTC+0000
0x7beddf50 UDPv6 ::1:1900 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7ce3fe20 UDPv6 fe80::94b5:ad60:33d0:3773:1900 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7d0028d8 UDPv4 0.0.0.0:0 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d0028d8 UDPv6 :::0 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d002de0 UDPv4 0.0.0.0:500 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d002de0 UDPv6 :::500 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d003428 UDPv4 0.0.0.0:4500 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d003428 UDPv6 :::4500 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d003d50 UDPv4 0.0.0.0:500 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d003e98 UDPv4 0.0.0.0:4500 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d004918 UDPv4 0.0.0.0:0 *:* 948 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d04f8c8 UDPv4 0.0.0.0:65331 *:* 1488 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d04f8c8 UDPv6 :::65331 *:* 1488 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d04fd80 UDPv4 0.0.0.0:65330 *:* 1488 svchost.exe 2019-07-31 11:50:02 UTC+0000
0x7d0cfa28 UDPv4 0.0.0.0:0 *:* 1240 svchost.exe 2019-07-31 12:43:11 UTC+0000
0x7d0cfa28 UDPv6 :::0 *:* 1240 svchost.exe 2019-07-31 12:43:11 UTC+0000
0x7d0d02e8 UDPv4 172.16.169.167:62504 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7d14f558 UDPv4 0.0.0.0:3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x7d14f558 UDPv6 :::3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x7d15f008 UDPv4 0.0.0.0:0 *:* 1960 svchost.exe 2019-07-31 11:50:03 UTC+0000
0x7d15f8b8 UDPv4 0.0.0.0:0 *:* 1960 svchost.exe 2019-07-31 11:50:03 UTC+0000
0x7d15f8b8 UDPv6 :::0 *:* 1960 svchost.exe 2019-07-31 11:50:03 UTC+0000
0x7d2e2530 UDPv4 0.0.0.0:3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x7d2e7c90 UDPv4 127.0.0.1:62505 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7d392e98 UDPv4 0.0.0.0:3702 *:* 1488 svchost.exe 2019-07-31 12:43:12 UTC+0000
0x7d031f60 TCPv4 172.16.169.167:139 0.0.0.0:0 LISTENING 4 System 
0x7d033908 TCPv4 0.0.0.0:5357 0.0.0.0:0 LISTENING 4 System 
0x7d033908 TCPv6 :::5357 :::0 LISTENING 4 System 
0x7d0722e8 TCPv4 0.0.0.0:445 0.0.0.0:0 LISTENING 4 System 
0x7d0722e8 TCPv6 :::445 :::0 LISTENING 4 System 
0x7d07bca8 TCPv4 0.0.0.0:49155 0.0.0.0:0 LISTENING 512 services.exe 
0x7d11e390 TCPv4 0.0.0.0:49157 0.0.0.0:0 LISTENING 520 lsass.exe 
0x7d152920 TCPv4 0.0.0.0:49156 0.0.0.0:0 LISTENING 1960 svchost.exe 
0x7d152920 TCPv6 :::49156 :::0 LISTENING 1960 svchost.exe 
0x7d23d110 TCPv4 0.0.0.0:135 0.0.0.0:0 LISTENING 728 svchost.exe 
0x7d23fa70 TCPv4 0.0.0.0:135 0.0.0.0:0 LISTENING 728 svchost.exe 
0x7d23fa70 TCPv6 :::135 :::0 LISTENING 728 svchost.exe 
0x7d2446e0 TCPv4 0.0.0.0:49152 0.0.0.0:0 LISTENING 412 wininit.exe 
0x7d246548 TCPv4 0.0.0.0:49152 0.0.0.0:0 LISTENING 412 wininit.exe 
0x7d246548 TCPv6 :::49152 :::0 LISTENING 412 wininit.exe 
0x7d25f528 TCPv4 0.0.0.0:49153 0.0.0.0:0 LISTENING 780 svchost.exe 
0x7d25f528 TCPv6 :::49153 :::0 LISTENING 780 svchost.exe 
0x7d25ff60 TCPv4 0.0.0.0:49153 0.0.0.0:0 LISTENING 780 svchost.exe 
0x7d361148 TCPv4 0.0.0.0:49154 0.0.0.0:0 LISTENING 948 svchost.exe 
0x7d363980 TCPv4 0.0.0.0:49154 0.0.0.0:0 LISTENING 948 svchost.exe 
0x7d363980 TCPv6 :::49154 :::0 LISTENING 948 svchost.exe 
0x7d3d7f20 TCPv4 0.0.0.0:49156 0.0.0.0:0 LISTENING 1960 svchost.exe 
0x7de8e220 UDPv4 172.16.169.167:1900 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7de32ea8 TCPv4 0.0.0.0:49155 0.0.0.0:0 LISTENING 512 services.exe 
0x7de32ea8 TCPv6 :::49155 :::0 LISTENING 512 services.exe 
0x7df93c98 TCPv4 0.0.0.0:49157 0.0.0.0:0 LISTENING 520 lsass.exe 
0x7df93c98 TCPv6 :::49157 :::0 LISTENING 520 lsass.exe 
0x7ecfd7c8 UDPv4 0.0.0.0:5355 *:* 1240 svchost.exe 2019-07-31 13:43:08 UTC+0000
0x7ecfd7c8 UDPv6 :::5355 *:* 1240 svchost.exe 2019-07-31 13:43:08 UTC+0000
0x7f0ddc70 UDPv6 ::1:62503 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7f175890 UDPv4 172.16.169.167:137 *:* 4 System 2019-07-31 12:43:11 UTC+0000
0x7f32cc28 UDPv4 172.16.169.167:138 *:* 4 System 2019-07-31 12:43:11 UTC+0000
0x7f3a6f50 UDPv6 fe80::94b5:ad60:33d0:3773:62502 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7f5e8e28 UDPv4 127.0.0.1:1900 *:* 1488 svchost.exe 2019-07-31 12:43:10 UTC+0000
0x7ee2edf8 TCPv4 172.16.169.167:49848 172.16.169.164:4444 ESTABLISHED 1416 rad5163B.tmp.e 
0x7eeb9138 TCPv4 172.16.169.167:49850 172.16.169.164:4444 CLOSED 1292 rfhyMVOQxfc.ex 
0x7ef91008 TCPv4 172.16.169.167:49858 172.16.169.164:4444 ESTABLISHED 1808 rfhyMVOQxfc.ex 
0x7f1a9820 TCPv4 172.16.169.167:49857 172.16.169.164:4444 CLOSED 24  
0x7f224220 TCPv4 172.16.169.167:49852 66.102.1.108:993 ESTABLISHED 3476 OUTLOOK.EXE 
0x7f34f278 TCPv4 -:49789 54.154.128.160:443 CLOSED 2472 systeminfo.exe 
0x7f3c9568 TCPv4 172.16.169.167:49855 172.16.169.164:4444 CLOSED 2708 bVwHCYX.exe 

Ici, nous pouvons voir que les processus identifiés effectuent plusieurs connexions vers l'adresse IP  172.16.169.164:4444.

L’analyse mémoire permet de révéler énormément de choses sur l’environnement infecté. Un processus malveillant sera plus facile à détecter et à analyser sur un dump mémoire que sur un environnement en cours de fonctionnement. Par ailleurs, il sera possible d’accéder à d’autres informations cruciales sur le système.  

Découvrez les différents fichiers de mémoire

Il existe différent type de fichiers qui peuvent être utilisés pour l’analyse mémoire. Windows utilise des fichiers système pour pouvoir stocker certaines informations qui sont propres à des fonctionnalités internes, telles que l’hibernation ou la pagination.  

Hiberfil.sys

Hiberfil.sys est le fichier utilisé par défaut par Windows pour enregistrer l'état de la machine dans le cadre du processus d'hibernation. Ce processus permet de restaurer l'état de la machine, c'est-à-dire sa mémoire vive, au moment du démarrage, pour retrouver l'état lors de la mise hors tension.

Le système d'exploitation conserve également un descripteur de fichiers ouverts sur ce fichier afin qu'aucun utilisateur, y compris l'administrateur, ne puisse lire le fichier lorsque le système est en cours d'exécution.

Le fichier hiberfil.sys est par défaut compressé ; pour pouvoir l'analyser avec Volatility, il faudra d’abord utiliser l’option imagecopy pour décompresser l’image. 

$ volatility -f hiberfil.sys -–profile=Win7SP1x64 imagecopy -O hiberfil.dmp

Pagefile.sys

La pagination est un concept qui permet d’étendre la mémoire RAM disponible en stockant dans un fichier des éléments de la RAM qui ne sont pas utilisés. Windows utilise le fichier système Pagefile.sys pour stocker ces informations, qui peuvent également être exploitées durant l’investigation.  

Bien que Windows prenne en charge jusqu'à 16 fichiers de pagination, en pratique un seul est utilisé. Ce fichier, stocké dans « %SystemDrive%\pagefile.sys », est un fichier système caché. 

Étant donné que le système d'exploitation maintient ce fichier ouvert pendant son fonctionnement normal, il ne peut jamais être lu ou consulté par un utilisateur. Toutefois, il peut contenir des informations intéressantes lors d’une analyse post mortem, une fois extrait. 

Pagefile.sys ne peut pas être parsé par Volatility. Toutefois, il est possible d’extraire des informations avec la commande strings. Attention, notez que ceci peut être extrêmement long et qu’il est préférable de coupler la commande "strings" avec la commande "grep".

$ strings pagefile.sys | grep “http://”

En résumé

La mémoire Windows est un environnement complexe qui nécessite d’être connu pour pouvoir extraire les informations lors d’une analyse forensic.

Toutefois, cette introduction au fonctionnement de la mémoire permettra de connaître les informations de base pour analyser les informations les plus importantes et comprendre les actions menées par un processus malveillant :

  • la mémoire est utilisée pour le stockage des données en cours de traitement. On parle de mémoire volatile, car les données disparaissent après l’extinction du système ; 

  • la pagination est utilisée pour étendre la mémoire en utilisant un fichier système ;

  • la mémoire révèle des informations qui peuvent être difficiles à observer sur un système en cours de fonctionnement ;

  • le framework Volatility permet d’extraire ces informations ;

  • il faut spécifier le profil (la version de l’OS) du dump avec Volatility pour parser correctement les données ; 

  • il existe différents types de fichiers mémoire qui peuvent être exploités lors d’une analyse forensic. 

Dans ce premier chapitre, nous avons également identifié plusieurs éléments suspect :

  1. Des processus avec des noms aléatoires ont été identifiés.

  2. L'emplacement d'un de ces processus n'est pas courant et nécessite vérification.

  3. Des connexions réseau sont effectués par ces processus. 

Exemple de certificat de réussite
Exemple de certificat de réussite