0% ont trouvé ce document utile (0 vote)
309 vues95 pages

Investigation Numérique : Méthodologie Forensic

L'investigation numérique consiste à analyser des supports numériques pour comprendre des événements passés, comme une attaque informatique. Elle peut être utilisée dans un cadre judiciaire ou pour répondre à un incident de sécurité. Il est important de suivre une méthodologie en collectant les preuves de manière appropriée et en les analysant à l'aide d'outils forensiques.

Transféré par

tapha06300
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
309 vues95 pages

Investigation Numérique : Méthodologie Forensic

L'investigation numérique consiste à analyser des supports numériques pour comprendre des événements passés, comme une attaque informatique. Elle peut être utilisée dans un cadre judiciaire ou pour répondre à un incident de sécurité. Il est important de suivre une méthodologie en collectant les preuves de manière appropriée et en les analysant à l'aide d'outils forensiques.

Transféré par

tapha06300
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Dans cette partie, nous allons définir l’investigation numérique, ou forensic, ainsi

que l’intérêt de réaliser une investigation lors d’un incident. Nous aborderons
brièvement les enjeux juridiques, pour finalement terminer sur la méthodologie
d’investigation.

Qu’est-ce que l’investigation numérique ?


Le terme « forensic » est fortement associé au domaine scientifique et notamment à
la médecine légale. En informatique, on parle de digital forensic, c’est-à-dire
l’analyse d’un ordinateur pour comprendre les évènements passés et en extraire des
conclusions.

L'investigation numérique, ou digital forensic, consiste à utiliser des techniques


spécialisées dans la recherche, la collecte et l'analyse de données issues de
supports numériques.
L’investigation numérique peut également être utilisée dans le cadre d’enquêtes
judiciaires. Lorsque des supports numériques sont impliqués dans un crime ; c’est
notamment le cas lors de perquisitions liées à des actes de cybercriminalité, par
exemple.

Toutefois, cette investigation devra être réalisée par un expert judiciaire et


nécessite d’être assermentée, pour que les preuves puissent être recevables. Par
ailleurs, la collecte de preuves devra respecter des besoins spécifiques. Par
exemple, il faudra utiliser un bloqueur en écriture lors de la copie, ou lors de l’accès
au disque compromis.

Pour en savoir plus sur les experts judiciaires, rendez-vous sur le site du
gouvernement.

Il est également possible de réaliser une investigation numérique en laboratoire, par


exemple pour étudier le fonctionnement d’un logiciel malveillant.
Ainsi, on peut schématiquement diviser l’investigation numérique en trois activités
distinctes :

L’analyse forensic judiciaire

Principalement utilisée dans le cadre d'enquêtes judiciaires, elle a pour but de


rechercher toutes les preuves numériques (par exemple lors d’une perquisition), afin
de collecter et rassembler un maximum de preuves pouvant incriminer ou innocenter
le suspect d'une enquête.

L’analyse forensic en réponse à un incident ⛑

Elle vise à identifier les conditions et les origines d’une attaque informatique,
quelles sont les machines infectées ou encore par quel vecteur l’attaque est
survenue. Dans le cas d’une réponse à une intrusion, elle joue le rôle de « pompier »
et permet d’identifier rapidement les éléments du système d’information compromis,
dans le but de combler les failles et d’éradiquer le ou les malwares.

L’analyse forensic scientifique🔬


Elle consiste à étudier les mécanismes et les aspects techniques d’un malware ou
autre logiciel/matériel malveillant, afin d’identifier les méthodes utilisées par les
attaquants pour pénétrer et compromettre un réseau informatique. Les analyses sont
souvent réalisées dans un environnement maîtrisé (appelé sandbox).

Il existe différents objectifs pour réaliser une investigation numérique. Dans ce


cours, nous nous concentrerons sur l’investigation numérique lors de réponse sur
incident.
Pourquoi utiliser l’investigation numérique en entreprise ?
Les attaquants d’aujourd’hui rivalisent d’ingéniosité pour pirater des entreprises
et voler des informations sensibles. Il existe tout un tas de menaces et de
techniques. Pour pouvoir les contrer efficacement et améliorer la sécurité d’une
entreprise, il est nécessaire de comprendre les techniques utilisées par les
attaquants.

Lorsqu’une entreprise est compromise en raison d'une attaque informatique, les


dégâts peuvent avoir de multiples impacts :

 sur l’image de la société, si l’attaque devient publique ;


 opérationnel direct, en mettant hors service des infrastructures ;
 financier, si des fuites de données ou des versements frauduleux ont été
effectué ;
 géopolitique ou économique.
En 2017, le malware NotPetya a impacté plusieurs multinationales en mettant hors
service des centaines de milliers de machines en l’espace d’une dizaine de minutes.
Causant pour certaines d’entre elles plus de 300 millions d’euros de pertes.

Le malware NotPetya
Pour pouvoir comprendre d’où vient l’attaque et quel a été le mode opératoire, il est
nécessaire de réaliser des investigations. Par ailleurs dans certains cas, ces
investigations permettront d’obtenir des dommages et intérêts auprès des
assurances.

Utilisez une méthodologie d’investigation


Sur le terrain, vous serez parfois amené à travailler dans des situations extrêmement
tendues et critiques ; vous devrez alors faire preuve de sang-froid. Pour réaliser une
investigation, il est nécessaire de suivre une méthodologie.

Dans certaines situations, l’analyste peut être perçu comme un contrôleur qui est à la
recherche d’une personne qui a commis une faute. Ce n’est pas du tout le cas, vous
êtes sur les lieux pour réaliser une analyse factuelle et en aucun cas vous ne devez
apporter un jugement de valeur. Par ailleurs, il se peut que vous soyez confronté à
des situations où les informations qu’on vous communiquera seront volontairement
camouflées ou dissimulées. Ces éléments pourront être mentionnés dans votre
rapport.
Voici la méthodologie que je vous propose de suivre et que nous allons appliquer
dans ce cours.

Étape 1 — Identifiez le contexte et récupérez les informations


L’identification du contexte est une phase très importante, car elle permet
d’obtenir des informations liées à l’incident de sécurité. Lors de cette phase, vous
devrez rencontrer diverses personnes telles que les personnes de l’IT,
les administrateurs, les responsables des machines infectées ou encore le
RSSI. Ceci vous permettra d’orienter vos recherches pour ne pas faire fausse route.

Étape 2 — Collectez les supports numériques à analyser


Vous avez précédemment identifié le contexte de l’attaque et également
des machines potentiellement compromises. La phase de collecte va permettre
de copier les données pour pouvoir les analyser (copie de la mémoire vive, et copie
du disque dur). Vous réaliserez des hashs des informations collectées. Cela
permettra de réaliser l’analyse sur la copie sans altérer les données originales.

Lors d’une analyse forensic, il est primordial de calculer une empreinte (hash) qui
identifiera le fichier à l’aide d’une fonction de hachage. Cette empreinte doit être
unique, car elle permet de valider que le fichier n’a pas été altéré durant
l’investigation. Le calcul des hash permettra ainsi de garantir l’intégrité des fichiers
analysés. Il existe plusieurs algorithmes de hachage, tels que MD5, SHA1, SHA2,
SHA5… À noter que les algorithmes MD5 et SHA1 comportent des faiblesses de
collision (c’est-à-dire le même hash pour deux fichiers différents), et sont de moins
en moins utilisés.
Étape 3 — Analysez les données collectées
Après avoir collecté les données, il faut maintenant les analyser. C'est la phase la
plus technique de l'investigation. Dans cette phase, vous réaliserez
la chronologie des évènements pour extraire la date et le moment précis de
l’incident, ainsi que l’analyse des artefacts tels que les processus, le registre et le
réseau. Une phase de triage sera également réalisée.
Nous découperons cette phase en 3 étapes :

1. L'analyse du dump mémoire, c'est-à-dire de la RAM de l'ordinateur — nous


verrons cette étape dans la partie 2 de ce cours.
2. L'analyse du disque dur de l'ordinateur et de tous les fichiers qu'il contient
— nous verrons cette étape dans la partie 3 de ce cours.
3. L'analyse des fichiers identifiés comme suspects ou malveillants — nous
verrons cette étape dans la partie 4 de ce cours.
Étape 4 — Corrélation et reporting
Dans cette phase, vous présenterez dans un rapport le résultat de vos analyses.
Vous présenterez de manière factuelle les éléments découverts. Vous indiquerez
également les indicateurs de compromission et les recommandations à mettre
en place pour améliorer la sécurité de l’entreprise.

Cette étape sera vue dans la partie 5 de ce cours.

Un indicateur de compromission est un élément unique et qui permet de


caractériser et d’identifier les éléments d’une attaque. Cela peut être :
 les hash de fichier ou logiciel malveillant ;
 des adresses IP ;
 des clés de registre ;
 des emplacements sur le disque ;
 une adresse email ;
 une adresse de portefeuille de cryptomonnaie (pour une rançon, par exemple)
;
 un mutex.
En résumé
Vous venez de découvrir ce qu'est le forensic et dans quelles situations il peut être
nécessaire de réaliser une investigation.

L’analyse forensic peut donc être utilisée dans le cadre d’une enquête judiciaire,
d’une réponse sur incident ou en laboratoire pour de l’analyse de malware, par
exemple.

Vous avez également découvert la méthodologie d’investigation qui comporte 4


grandes étapes :

1. L’identification du contexte.
2. La collecte des supports numériques.
3. L’analyse des données collectées.
4. La corrélation et le reporting.
Dans le prochain chapitre, nous verrons quels sont les outils à utiliser pour l'analyse.
L’analyse forensic nécessite de respecter des bonnes pratiques en utilisant
les outils adéquats. Il existe une multitude d’outils open source, freeware ou
propriétaires, permettant d’analyser des supports numériques. Dans certains cas et
notamment lors d’enquêtes judiciaires, il sera également nécessaire d’utiliser du
matériel tel que des bloqueurs en écriture lors de la collecte de données.

Dans ce chapitre, nous allons étudier et parcourir quelques outils qui vous
permettront de réaliser une analyse forensic. Nous verrons principalement des outils
open source ou gratuits.

Toutefois, notez qu’il n’y a pas de « meilleur outil ». C’est à vous de vous
familiariser avec l’utilisation de ces utilitaires pour en comprendre les
limites et adapter les utilisations en fonction des besoins. Par ailleurs, dans
certaines situations, il pourra être nécessaire de développer vos propres scripts
d’analyse.

Choisissez l'outil adapté à vos besoins


Pour réaliser une analyse forensic de support numérique, il existe sur le marché des
outils reconnus.

La société Guidance Software propose une suite d’utilitaires appelée Encase dédiée
à l’analyse forensic, en passant de l’analyse du disque et au tri des
données jusqu’à l’analyse des fichiers et le déchiffrement des volumes
analysés. Les licences sont payantes et restent relativement chères. Toutefois, ce
genre d’outil est largement utilisé par les experts judiciaires ou encore les
organismes de police.

Il existe également des outils hardware permettant la collecte de supports


numériques sans altération des données, tels que des bloqueurs en écriture que
nous avons évoqués plus haut.

Les bloqueurs en écriture sont donc des dispositifs qui permettent de


faire l’acquisition d’une image d’un disque dur en bloquant le mécanisme
d’écriture, mais pas de lecture, dans le but de préserver le contenu. L’utilisation de
ce type de dispositif permet de protéger le contenu du disque et garantit ainsi son
intégrité́ .
Un exemple de bloqueur en écriture, connecté à un disque dur pour copier ses
données sans qu'elles soient altérées
Un bloqueur en écriture matériel s’interpose entre le disque dur (la preuve) et le
PC qui servira à l’acquisition de l’image. Il existe également des bloqueurs en
écriture logiciels.

Il existe également des utilitaires gratuits ou open source qui sont très souvent
utilisés lors d’analyses forensic.

Le framework The Sleuth Kit permet de réaliser une analyse forensic en passant de
la génération d’une timeline au triage des données et à l’analyse des artefacts
Windows (registre, email, historique…), jusqu’à la génération d’un rapport. Il
comporte une interface graphique appelée Autopsy.
Les utilitaires NirSoft ou encore la suite Sysinternal de Microsoft sont également
utilisés dans l’analyse forensic. Google a également développé son propre
framework d’analyse, Google Rapid Response (GRR), qui permet de faire de
l’analyse forensic à distance de postes compromis.

Certains projets proposent également des OS Linux destinés à l’analyse


forensic et embarquant des outils préinstallés tels que SIFT, Tsurugi, CAINE ou
encore DEFT.

Pour l’analyse de la mémoire vive, il existe également des frameworks tels


que Volatility et Rekall.

Pour la copie des disques durs et de la RAM, il est possible d’utiliser le


freeware FTK Imager Lite.

Nous reviendrons en détail sur ces outils tout au long de ce cours.

Préparez votre environnement d’analyse


Nous allons à présent préparer notre environnement d’analyse. Dans ce cours,
nous utiliserons 2 machines virtuelles pour réaliser les investigations. Cela vous
permettra d’appréhender des outils sur les différentes plateformes.

1. Une VM Windows sur laquelle il faudra installer les outils The Sleuth Kit
Autopsy, FTK Imager et Mft2Csv.
Je vous conseille de télécharger les différents utilitaires et de les copier dans
un répertoire pour les avoir au même endroit. N’hésitez pas non plus
à réaliser un snapshot de vos machines virtuelles une fois configurées.
2. Une VM Linux SIFT que vous pouvez télécharger à cette adresse (puis
suivez les instructions d’installation).
Libre à vous d’utiliser les outils que vous souhaitez !

Méfiez-vous de ce que disent les outils


Lors de votre analyse, il peut s’avérer que les résultats des outils que vous
utilisez ne soient pas toujours fiables ou ne soit pas corrects. Il faudra alors
investiguer pourquoi cela ne fonctionne pas correctement, et parfois aller
jusqu'à développer vos propres utilitaires.

Les techniques d'anti-forensic


Attention, ce n'est pas parce que vous ne trouvez pas de traces d'activité qu'aucune
activité n'a eu lieu. Les attaquants utilisent des techniques d'anti-forensic qui
permettent de contourner les techniques d'analyse en masquant leurs traces, tout
en dissimulant ou en protégeant des données. Ces techniques ralentiront votre
travail !
La stéganographie, par exemple, permet de dissimuler des informations
en masquant un message dans un conteneur anodin, une photo par exemple, de
manière à le rendre invisible pour un individu qui n’est pas concerné par le message,
et de le transmettre en toute discrétion.
Le malware Duqu, par exemple, fut l’un des premiers à utiliser ce genre de
techniques pour exfiltrer des données volées en les cachant dans des fichiers
JPEG.

Certains attaquants vont effacer des données du disque dur ou encore falsifier
les timestamps. Un attaquant ou un utilisateur malveillant pourra couvrir ses traces
en falsifiant les attributs d’accès aux fichiers. Les outils comme Timestomp, dont
le but est de modifier les attributs des fichiers, sont capables de réécrire les dates
d’accès des systèmes de fichiers NTFS (date de création, modification, accès, etc.).

L’investigation forensic nécessite l’analyse et la corrélation de multiples sources. Si


vous avez un doute sur un élément, il faudra confirmer ou infirmer via l’analyse d’un
autre artefact.
Assurez-vous d'utiliser les bons outils
Lorsque vous utilisez un outil d'analyse forensic, assurez-vous de bien comprendre
de quoi il s'agit. Vérifiez que vous connaissez ses limites et sa fiabilité.

S'il s'agit d'un nouvel outil, renseignez-vous sur la documentation officielle de


l'outil, mais aussi auprès d'experts qui l'ont déjà utilisé, ainsi que sur des sites
comparatifs. En bref, recoupez les sources pour bien comprendre de quoi il s'agit.

En résumé
Dans ce chapitre, nous venons de voir plusieurs outils et utilitaires pour vous
permettre d’appréhender les différentes situations de l’analyse forensic.

Nous avons également préparé notre environnement d’analyse et discuté brièvement


des méthodes utilisées par les attaquants pour contourner l’investigation
forensic et effacer les traces d’une intrusion.

C’est maintenant à vous de tester et de choisir vos outils pour réaliser vos
investigations !

Dans le prochain chapitre, nous verrons comment collecter les informations de


base pour réaliser votre analyse forensic.
Dans les chapitres précédents, nous venons de découvrir les principes et les
concepts de l’investigation numérique. Nous avons également introduit quelques
outils utilisés. Dans ce chapitre, nous allons à présent passer à la première phase
de l’investigation : la collecte des informations à analyser.

Les formats de collecte de données


La phase de collecte des données, ou encore « l’acquisition », est la phase qui
doit permettre de copier les données volatiles et non volatiles sur un support
externe, dans le but de réaliser une analyse approfondie par la suite.

Cette phase est très importante, car elle nécessite de respecter une procédure stricte
qui n’altérera pas les données stockées. Les données collectées seront stockées
dans un container que l’on appelle image. Une image est un dump brut extrait d’un
support numérique. Il existe plusieurs formats d’image.

Les images RAW


Les images brutes, au format RAW, ne sont pas un format en soi, mais un bloc de
données brutes reproduites à partir d’une image. Les images brutes ne contiennent
aucune métadonnée supplémentaire en dehors des informations sur le fichier image
lui-même (nom, taille, horodatage et autres informations).

Les formats de forensic


Plusieurs problèmes avec les images brutes ont conduit à la création de formats de
fichiers pour le forensic. Les formats de forensic comportent des éléments
supplémentaire tels que l’horodatage, les hash des images et
d’autres métadonnées. Par ailleurs, il peut être nécessaire de compresser ou
chiffrer une image acquise. Les formats de forensic facilitent la mise en œuvre de
ces fonctionnalités. Vous retrouverez entre autres :

 EnCase EWF, développé par Guidance Software, l’une des plus


anciennes entreprises de logiciels de forensic. Il utilise le format EWF
(Expert Witness Format) qui prend en charge les métadonnées, la
compression, le chiffrement, le hachage, etc. ;
 FTK Smart, par AccessData, est un concurrent direct d’EnCase EWF.
Ce format propriétaire inclut également les métadonnées, la compression, le
chiffrement, le hachage, etc. ;
 AFF, pour Advanced Forensic Format, a été créé par Simson Garfinkel en tant
que format ouvert. Il comprend toutes les fonctionnalités attendues et inclut
également des fonctionnalités de chiffrement et de signature utilisant des
certificats X.509 standard.
Différence entre mémoire volatile et non volatile
La mémoire non volatile est issue d’un support numérique qui conserve les
données présentes même lorsqu’il n’est pas alimenté électriquement — typiquement,
un disque dur ou une clé USB.
Ce type de mémoire autorise l'analyse dite à froid, ou post mortem, c'est-à-dire
après l'incident et une fois que le système a été éteint.

La mémoire volatile, elle, est une mémoire informatique qui a besoin d'alimentation
électrique continue pour conserver l'information qui y est enregistrée. Lorsque
l'alimentation électrique est interrompue, l'information contenue dans la mémoire
volatile est, quasi immédiatement, perdue. Dans notre cas, on parle de la RAM, ou
de la mémoire vive.
Ce type de mémoire doit obligatoirement être enregistré (dumpé) sur un support
externe à chaud, c'est-à-dire avant extinction de l'ordinateur, sinon tout sera perdu.
Sans ça, vous ne pourrez pas l'analyser pour mener votre investigation.

La mémoire vive d’un ordinateur peut contenir de nombreuses informations : mots


de passe, identifiants, clefs de chiffrement ou encore processus actifs. Elle est
donc très utile pour l'analyse forensic.

Réalisez un dump mémoire et une copie bit à bit d’un disque dur
Dans le processus de forensic, il faut dans un premier temps collecter les données
qui seront analysées par la suite. Dans la réalité, il se peut que vous ayez accès à
la machine en cours de fonctionnement ; dans ce cas il faudra réaliser dans un
premier temps un dump de la RAM pour collecter un instantané des processus en
cours d'exécution. Cela vous permettra d'identifier un processus malveillant, par
exemple.

Puis il faudra par la suite réaliser la copie bit à bit du disque dur, c'est-à-dire
une copie fidèle de chaque bit du disque. Cela vous permettra d'accéder à toutes
les données du disque pour réaliser l'analyse.

Chaque cas est différent, il se peut que les copies soient déjà réalisées, ou alors que
l'on vous transmette uniquement le disque dur. C'est à vous de vous adapter à la
situation pour réaliser au mieux l'analyse.
Dans cette section, nous allons effectuer le dump du contenu de la RAM et du
disque dur.

Acquisition de la mémoire volatile


L’acquisition de la mémoire vive intervient généralement lors d’une réponse à
incident et sur un système en fonctionnement. Lors de l’acquisition, l’analyste doit
éviter au maximum toutes modifications, afin de récupérer une image fidèle du
système à analyser.

Il existe une multitude d’outils pour dumper le contenu de la RAM. Nous allons ici
utiliser le logiciel free FTK imager, téléchargeable à cette adresse. Libre à vous
d’utiliser un autre outil ; par exemple, l’utilitaire free Dumpit est une référence dans
l’acquisition de la mémoire volatile.

Avec le logiciel FTK, il suffit de cliquer sur l’icône RAM pour réaliser la capture.

Il faudra ensuite préciser le répertoire où le dump sera stocké, puis cliquer


sur Capture Memory ; il est également possible d’inclure le fichier système
[Link] à la copie.
La copie du dump est ensuite réalisée et stockée dans le répertoire mentionné.
Nous réaliserons dans la partie suivante l’analyse de ce dump.

Acquisition de la mémoire non volatile


Comme pour la mémoire volatile, l’acquisition de la mémoire non volatile est une
partie très importante de l’investigation numérique ; elle doit respecter une procédure
stricte, afin de ne pas altérer le contenu du support.

De nombreux outils ont pour but de copier le contenu d’un disque dur pour
l’analyser. Nous allons ici utiliser le logiciel FTK.

Pour ce faire, il suffit de cliquer sur l’icône Create Image, puis sélectionner la source
de la copie à réaliser, ici le disque dur Physical Drive de notre machine.

S’il existe plusieurs disques durs ou des partitions, il faudra sélectionner celui que
l’on souhaite copier, puis cliquer sur Finish.

Il faudra ensuite cliquer sur Add pour sélectionner le format de l’image.

Ici nous choisirons le format Raw, mais vous pouvez utiliser le format que vous
désirez.

Il faudra ensuite spécifier quelques informations qui permettront d’identifier la preuve


collectée.

Enfin, il faudra sélectionner le répertoire dans lequel le disque sera copié. Il faudra
stocker cette image sur un support amovible externe suffisamment grand.

Dans la plupart des cas, les dumps que vous devrez réaliser feront plusieurs
centaines de Go, il faudra par conséquence utiliser des disques durs externes
de plusieurs téraoctets pour stocker ces données.
Il faudra ensuite cliquer sur Start pour réaliser la copie du disque dur.

Le temps nécessaire à la copie du disque sera fonction de la taille du disque.

Calculez l’empreinte (hash) des dumps réalisés


Lors d’une analyse forensic, il est primordial de calculer une empreinte qui identifiera
le fichier à l’aide d’une fonction de hachage. Cette empreinte doit être unique, car
elle permet de valider que le fichier n’a pas été altéré durant l’investigation. Le calcul
de condensat ou le hachage permettra ainsi de garantir l’intégrité des fichiers
analysés.

Le calcul de hash s’effectuera directement après l’acquisition des données. Voici les
fonctions de hachage les plus utilisées :

 MD5 (Message Digest) : hash de 128 bits ;


 SHA1 (Secure Hash Algorithm) : hash de 160 bits ;
 SHA224 : hash de 224 bits, communément appelé SHA2 ;
 SHA256 : hash de 256 bits, communément appelé SHA2 ;
 SHA384 : hash de 384 bits ;
 SHA512 : hash de 512 bits.
Sous Linux, il est possible d’utiliser les fonctions de hachage simplement :
md5sum [Link]

382e0a06865ddcf5aee46aa414fa011b [Link]

sha256sum [Link]

e35a660421752b58989ee575566ff42a7c16ed3c9869a69dbce0bc23405d3a7c
[Link]

sha512sum [Link]

fec5c420fdf5633887e5f2095ed52ea066fded881245d263c13cfc8f2a08990bb62ef62296a
6c5c42cfcd1b0e16b33dc9f5d498fa3695260e3800cbd9d132e7e [Link]
Les indicateurs de compromission permettent d’identifier des éléments d’une attaque
pour pouvoir identifier d’autres compromissions. Nous verrons en détail cette
partie dans le dernier chapitre.
En résumé
Dans ce chapitre, nous venons d’aborder la phase de collecte qui est une phase
primordiale de l’investigation numérique. Nous avons découvert qu’il existait différent
formats pour le stockage des données :

 le format RAW ;
 les formats Forensic (AFF, SMART, EWF).
Enfin, nous avons réalisé des copies du contenu de la mémoire ainsi qu’une copie
bit à bit d’un disque dur. Le calcul de condensat ou hash permet d’identifier des
fichiers en particulier, et est une composante importante de l’analyse forensic.

Dans les parties suivantes, vous découvrirez comment analyser les données que
nous venons de collecter.
Récupérez les informations importantes de la mémoire
Windows pour l'analyse
Ç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 [Link] 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 !

💡Petit conseil efficacité : dans la prochaine partie, nous analyserons le disque dur et vous
aurez aussi besoin de télécharger le fichier de copie du disque dur, mais celui-ci est très

lourd ! Alors démarrez le téléchargement dès maintenant en cliquant ici. 🙂


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.

Parser les données, ça veut dire les lire et les interpréter afin de comprendre ce
qu'elles signifient. Selon le type de profil que vous signalez à Volatility, il
n'interprétera pas les données de la même manière.
Pour cela, nous allons utiliser l'option ImageInfo de Volatility sur notre dump mémoire
avec la commande volatility -f [Link] imageinfo.
$ volatility -f [Link] imageinfo
Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86
AS Layer1 : IA32PagedMemoryPae (Kernel AS)
AS Layer2 : FileAddressSpace (/home/rocfor/forensic_case001/[Link])
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.

Attention, pour effectuer des actions malveillantes, un malware doit être exécuté
mais il peut dissimuler son fonctionnement derrière un processus légitime, via de
l’injection de code, par exemple.
Pour extraire la liste des processus, il est possible d’utiliser l’option pslist.
$ volatility -f [Link] –-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 [Link] 272 4 2 29 ------ 0 2019-
07-31 11:49:59 UTC+0000
0x8673f030 [Link] 360 352 9 381 0 0 2019-
07-31 11:50:00 UTC+0000
0x867f7030 [Link] 412 352 3 74 0 0 2019-
07-31 11:50:01 UTC+0000
0x867f55f8 [Link] 420 404 11 388 1 0 2019-
07-31 11:50:01 UTC+0000
0x86879d40 [Link] 468 404 3 110 1 0 2019-
07-31 11:50:01 UTC+0000
0x8684a6c0 [Link] 512 412 8 209 0 0 2019-
07-31 11:50:01 UTC+0000

[...]

0x84b5a030 [Link] 1632 512 12 143 0 0 2019-07-31 12:17:50


UTC+0000
0x84b1c030 [Link] 3544 588 13 621 1 0 2019-07-31 12:45:34
UTC+0000
0x84e19030 [Link] 1416 3544 11 472 1 0 2019-07-31
12:45:47 UTC+0000

[...]

0x84aeebf8 [Link] 2728 1416 5 198 1 0 2019-07-31


12:53:57 UTC+0000
0x84f04030 [Link] 2876 420 1 33 1 0 2019-07-31
12:53:57 UTC+0000
0x84d165e8 [Link] 1292 2728 0 -------- 1 0 2019-07-31
12:53:57 UTC+0000 2019-07-31 13:45:12 UTC+0000
0x84ad3a08 [Link] 2204 1416 0 -------- 1 0 2019-07-31
12:55:36 UTC+0000 2019-07-31 12:58:21 UTC+0000
0x84e6fa90 [Link] 1896 1416 0 -------- 1 0 2019-07-31
13:00:28 UTC+0000 2019-07-31 13:01:09 UTC+0000

[...]

0x84a835a8 [Link] 2100 3992 0 -------- 1 0 2019-07-31


13:40:09 UTC+0000 2019-07-31 13:40:09 UTC+0000
0x86e1dcd0 [Link] 3972 2772 0 -------- 1 0 2019-07-31
13:40:10 UTC+0000 2019-07-31 13:40:10 UTC+0000
0x84dc3d40 [Link] 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 [Link] et [Link]
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 [Link], [Link] ou encore [Link]. En
revanche, le processus [Link] semble suspect, à cause de son nom avec
des lettres aléatoires !
À noter toutefois que le nom ne suffit pas à identifier si un processus est légitime ou
non ! Mais c'est un premier signe.
Pour déceler les processus malveillants des processus légitimes, rendez-vous
sur ce document du SANS (un organisme spécialisé dans la sécurité
informatique) qui répertorie les différents processus de Windows. Si vous décelez un
processus qui n'en fait pas partie, creusez vos recherches, car il peut être malveillant
!
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 [Link] –-profile=Win7SP1x86 dlllist -p 1808
************************************************************************
[Link] pid: 1808
Command line : "C:\Users\johnoc\AppData\Local\Temp\[Link]\
[Link]"
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\[Link]\[Link]
0x777d0000 0x13c000 0xffff 1970-01-01 00:00:00 UTC+0000 C:\Windows\
SYSTEM32\[Link]
0x773f0000 0xd4000 0xffff 2019-07-31 13:45:17 UTC+0000 C:\Windows\
system32\[Link]
0x75ac0000 0x4a000 0xffff 2019-07-31 13:45:17 UTC+0000 C:\Windows\
system32\[Link]

[...]

0x72160000 0xd000 0x1 2019-07-31 13:45:18 UTC+0000 C:\Windows\


system32\[Link]
0x72140000 0x12000 0x1 2019-07-31 13:45:18 UTC+0000 C:\Windows\
system32\[Link]
Nous pouvons voir ici que l'emplacement du fichier C:\Users\johnoc\AppData\Local\
Temp\[Link]\[Link] 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 [Link] –-profile=Win7SP1x86 hivelist
Virtual Physical Name
---------- ---------- ----
0x95281008 0x675df008 \??\C:\Users\johnoc\AppData\Local\Microsoft\Windows\
[Link]
0x95289008 0x6c12a008 \??\C:\Users\johnoc\[Link]

[...]
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 [Link] --profile=Win7SP1x86 hashdump -y 0x8981c008 -s
0x8a6579c8

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7
e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
:::
johnoc:1000:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b758
6c:::
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 connections, sockscan 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 [Link] --profile=Win7SP1x86 netscan
Volatility Foundation Volatility Framework 2.6.1
Offset(P) Proto Local Address Foreign Address State Pid Owner Created
0x19472208 UDPv4 [Link]:3702 *:* 1488 [Link] 2019-07-31 12:43:12
UTC+0000
0x19472208 UDPv6 :::3702 *:* 1488 [Link] 2019-07-31 12:43:12 UTC+0000
0x24d773a0 UDPv4 [Link]:5355 *:* 1240 [Link] 2019-07-31 13:43:08
UTC+0000
0x5d30e208 UDPv4 [Link]:3702 *:* 1488 [Link] 2019-07-31 12:43:12
UTC+0000
0x5d30e208 UDPv6 :::3702 *:* 1488 [Link] 2019-07-31 12:43:12 UTC+0000
0x6ec043a0 UDPv4 [Link]:5355 *:* 1240 [Link] 2019-07-31 13:43:08
UTC+0000
0x7beddf50 UDPv6 ::1:1900 *:* 1488 [Link] 2019-07-31 12:43:10 UTC+0000
0x7ce3fe20 UDPv6 fe80::94b5:ad60:33d0:3773:1900 *:* 1488 [Link] 2019-
07-31 12:43:10 UTC+0000
0x7d0028d8 UDPv4 [Link]:0 *:* 948 [Link] 2019-07-31 11:50:02 UTC+0000
0x7d0028d8 UDPv6 :::0 *:* 948 [Link] 2019-07-31 11:50:02 UTC+0000
0x7d002de0 UDPv4 [Link]:500 *:* 948 [Link] 2019-07-31 11:50:02
UTC+0000
0x7d002de0 UDPv6 :::500 *:* 948 [Link] 2019-07-31 11:50:02 UTC+0000
0x7d003428 UDPv4 [Link]:4500 *:* 948 [Link] 2019-07-31 11:50:02
UTC+0000
0x7d003428 UDPv6 :::4500 *:* 948 [Link] 2019-07-31 11:50:02 UTC+0000
0x7d003d50 UDPv4 [Link]:500 *:* 948 [Link] 2019-07-31 11:50:02
UTC+0000
0x7d003e98 UDPv4 [Link]:4500 *:* 948 [Link] 2019-07-31 11:50:02
UTC+0000
0x7d004918 UDPv4 [Link]:0 *:* 948 [Link] 2019-07-31 11:50:02 UTC+0000
0x7d04f8c8 UDPv4 [Link]:65331 *:* 1488 [Link] 2019-07-31 11:50:02
UTC+0000
0x7d04f8c8 UDPv6 :::65331 *:* 1488 [Link] 2019-07-31 11:50:02 UTC+0000
0x7d04fd80 UDPv4 [Link]:65330 *:* 1488 [Link] 2019-07-31 11:50:02
UTC+0000
0x7d0cfa28 UDPv4 [Link]:0 *:* 1240 [Link] 2019-07-31 12:43:11
UTC+0000
0x7d0cfa28 UDPv6 :::0 *:* 1240 [Link] 2019-07-31 12:43:11 UTC+0000
0x7d0d02e8 UDPv4 [Link]:62504 *:* 1488 [Link] 2019-07-31
12:43:10 UTC+0000
0x7d14f558 UDPv4 [Link]:3702 *:* 1488 [Link] 2019-07-31 12:43:12
UTC+0000
0x7d14f558 UDPv6 :::3702 *:* 1488 [Link] 2019-07-31 12:43:12 UTC+0000
0x7d15f008 UDPv4 [Link]:0 *:* 1960 [Link] 2019-07-31 11:50:03
UTC+0000
0x7d15f8b8 UDPv4 [Link]:0 *:* 1960 [Link] 2019-07-31 11:50:03
UTC+0000
0x7d15f8b8 UDPv6 :::0 *:* 1960 [Link] 2019-07-31 11:50:03 UTC+0000
0x7d2e2530 UDPv4 [Link]:3702 *:* 1488 [Link] 2019-07-31 12:43:12
UTC+0000
0x7d2e7c90 UDPv4 [Link]:62505 *:* 1488 [Link] 2019-07-31 12:43:10
UTC+0000
0x7d392e98 UDPv4 [Link]:3702 *:* 1488 [Link] 2019-07-31 12:43:12
UTC+0000
0x7d031f60 TCPv4 [Link]:139 [Link]:0 LISTENING 4 System
0x7d033908 TCPv4 [Link]:5357 [Link]:0 LISTENING 4 System
0x7d033908 TCPv6 :::5357 :::0 LISTENING 4 System
0x7d0722e8 TCPv4 [Link]:445 [Link]:0 LISTENING 4 System
0x7d0722e8 TCPv6 :::445 :::0 LISTENING 4 System
0x7d07bca8 TCPv4 [Link]:49155 [Link]:0 LISTENING 512 [Link]
0x7d11e390 TCPv4 [Link]:49157 [Link]:0 LISTENING 520 [Link]
0x7d152920 TCPv4 [Link]:49156 [Link]:0 LISTENING 1960 [Link]
0x7d152920 TCPv6 :::49156 :::0 LISTENING 1960 [Link]
0x7d23d110 TCPv4 [Link]:135 [Link]:0 LISTENING 728 [Link]
0x7d23fa70 TCPv4 [Link]:135 [Link]:0 LISTENING 728 [Link]
0x7d23fa70 TCPv6 :::135 :::0 LISTENING 728 [Link]
0x7d2446e0 TCPv4 [Link]:49152 [Link]:0 LISTENING 412 [Link]
0x7d246548 TCPv4 [Link]:49152 [Link]:0 LISTENING 412 [Link]
0x7d246548 TCPv6 :::49152 :::0 LISTENING 412 [Link]
0x7d25f528 TCPv4 [Link]:49153 [Link]:0 LISTENING 780 [Link]
0x7d25f528 TCPv6 :::49153 :::0 LISTENING 780 [Link]
0x7d25ff60 TCPv4 [Link]:49153 [Link]:0 LISTENING 780 [Link]
0x7d361148 TCPv4 [Link]:49154 [Link]:0 LISTENING 948 [Link]
0x7d363980 TCPv4 [Link]:49154 [Link]:0 LISTENING 948 [Link]
0x7d363980 TCPv6 :::49154 :::0 LISTENING 948 [Link]
0x7d3d7f20 TCPv4 [Link]:49156 [Link]:0 LISTENING 1960 [Link]
0x7de8e220 UDPv4 [Link]:1900 *:* 1488 [Link] 2019-07-31
12:43:10 UTC+0000
0x7de32ea8 TCPv4 [Link]:49155 [Link]:0 LISTENING 512 [Link]
0x7de32ea8 TCPv6 :::49155 :::0 LISTENING 512 [Link]
0x7df93c98 TCPv4 [Link]:49157 [Link]:0 LISTENING 520 [Link]
0x7df93c98 TCPv6 :::49157 :::0 LISTENING 520 [Link]
0x7ecfd7c8 UDPv4 [Link]:5355 *:* 1240 [Link] 2019-07-31 13:43:08
UTC+0000
0x7ecfd7c8 UDPv6 :::5355 *:* 1240 [Link] 2019-07-31 13:43:08 UTC+0000
0x7f0ddc70 UDPv6 ::1:62503 *:* 1488 [Link] 2019-07-31 12:43:10
UTC+0000
0x7f175890 UDPv4 [Link]:137 *:* 4 System 2019-07-31 12:43:11
UTC+0000
0x7f32cc28 UDPv4 [Link]:138 *:* 4 System 2019-07-31 12:43:11
UTC+0000
0x7f3a6f50 UDPv6 fe80::94b5:ad60:33d0:3773:62502 *:* 1488 [Link] 2019-
07-31 12:43:10 UTC+0000
0x7f5e8e28 UDPv4 [Link]:1900 *:* 1488 [Link] 2019-07-31 12:43:10
UTC+0000
0x7ee2edf8 TCPv4 [Link]:49848 [Link]:4444 ESTABLISHED 1416
[Link].e
0x7eeb9138 TCPv4 [Link]:49850 [Link]:4444 CLOSED 1292
[Link]
0x7ef91008 TCPv4 [Link]:49858 [Link]:4444 ESTABLISHED 1808
[Link]
0x7f1a9820 TCPv4 [Link]:49857 [Link]:4444 CLOSED 24
0x7f224220 TCPv4 [Link]:49852 [Link]:993 ESTABLISHED 3476
[Link]
0x7f34f278 TCPv4 -:49789 [Link]:443 CLOSED 2472 [Link]
0x7f3c9568 TCPv4 [Link]:49855 [Link]:4444 CLOSED 2708
[Link]
Ici, nous pouvons voir que les processus identifiés effectuent plusieurs connexions
vers l'adresse IP [Link]: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.

[Link]
[Link] 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 [Link] 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 [Link] -–profile=Win7SP1x64 imagecopy -O [Link]
[Link]
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 [Link] 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%\[Link] », 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.

[Link] 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 [Link] | grep “[Link]
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.
Analysez un dump mémoire en profondeur
Nous venons de voir comment fonctionne la mémoire sous Windows et comment
utiliser le framework Volatility pour l'analyse de base. Dans ce chapitre, nous verrons
un peu plus en détail l’exploration de la mémoire Windows.

Analysez en détail les processus avec Volatility


Dans le premier chapitre, nous avons vu quelques commandes de base pour
extraire des informations liées aux processus en cours de fonctionnement. Il
existe de nombreuses autres commandes permettant l’exploration et l’analyse des
processus.

Certaines de ces informations nécessitent de connaître un peu plus en détail les


structures de données utilisées. Je ne vais donc pas détailler ces éléments dans ce
cours. Mais si vous voulez aller plus loin dans l'analyse, je vous invite à lire le livre «
Windows Internals », édité par Microsoft.

Affichez l'arborescence des processus avec pstree


Nous avons vu qu’il était possible de lister les processus en cours de fonctionnement
dans le dump mémoire avec la commande pslist. Il existe toutefois une autre
commande, pstree, qui permet d’afficher la liste des processus sous forme
d’arborescence.
L’option pstree peut s’avérer très utile car elle permettra d’identifier les processus
parents d’un processus en particulier. Ainsi, vous pourrez noter les structures
suspectes. Par exemple, il n'est pas normal qu’un CMD soit un processus fils
d’Internet Explorer !
Voici la commande à exécuter pour afficher l'arborescence des processus :
$ volatility -f [Link] –-profile=Win7SP1x64 pstree
Name Pid PPid Thds Hnds Time
-------------------------------------------------- ------ ------ ------
------ ----
0x867f7030:[Link] 412 352 3 74 2019-07-31 11:50:01 UTC+0000
. 0x8684a6c0:[Link] 512 412 8 209 2019-07-31 11:50:01 UTC+0000
.. 0x84a49a80:[Link] 1644 512 9 205 2019-07-31 11:56:18 UTC+0000
.. 0x86a46030:[Link] 780 512 18 502 2019-07-31 11:50:01 UTC+0000
.. 0x85c4e030:[Link] 728 512 9 310 2019-07-31 11:50:01 UTC+0000
.. 0xa75ffa80:SearchIndexer. 3012 512 13 734 2019-07-31 11:52:04 UTC+0000
.. 0x86cac748:[Link] 1960 512 5 98 2019-07-31 11:50:03 UTC+0000
.. 0x84964d40:[Link] 2408 512 9 223 2019-07-31 11:56:25 UTC+0000
.. 0x86abd510:[Link] 948 512 41 1226 2019-07-31 11:50:01 UTC+0000
.. 0x86a33030:[Link] 696 512 3 53 2019-07-31 11:50:01 UTC+0000
.. 0x86c20640:[Link] 1596 512 9 306 2019-07-31 11:50:02 UTC+0000
.. 0x86c4ca08:[Link] 2896 512 13 364 2019-07-31 11:52:03 UTC+0000
.. 0x86b6a378:[Link] 1348 512 12 321 2019-07-31 11:50:02 UTC+0000
.. 0x86bca4a0:[Link] 1488 512 14 243 2019-07-31 11:50:02 UTC+0000
.. 0x86ae5728:[Link] 1108 512 9 280 2019-07-31 11:50:02 UTC+0000
.. 0x86b0bb78:[Link] 1240 512 16 491 2019-07-31 11:50:02 UTC+0000
.. 0x86c0ed18:VGAuthService. 1572 512 3 89 2019-07-31 11:50:02 UTC+0000
.. 0x86ca4030:TPAutoConnSvc. 2012 512 9 129 2019-07-31 11:50:03 UTC+0000
... 0x84ba8890:TPAutoConnect. 1984 2012 3 111 2019-07-31 11:56:19 UTC+0000
.. 0x84b5a030:[Link] 1632 512 12 143 2019-07-31 12:17:50 UTC+0000
.. 0x86ca1790:[Link] 1916 512 6 90 2019-07-31 11:50:03 UTC+0000
.. 0x86a7cd00:[Link] 876 512 15 382 2019-07-31 11:50:01 UTC+0000
... 0x868b8030:[Link] 1176 876 3 70 2019-07-31 11:56:18 UTC+0000
.. 0x86b754d0:[Link] 1384 512 18 313 2019-07-31 11:50:02 UTC+0000
.. 0x8690e190:[Link] 636 512 10 361 2019-07-31 11:50:01 UTC+0000
... 0x86bd1988:[Link] 332 636 10 291 2019-07-31 11:50:03 UTC+0000
. 0x868d6b80:[Link] 520 412 7 610 2019-07-31 11:50:01 UTC+0000
. 0x868d7960:[Link] 528 412 10 150 2019-07-31 11:50:01 UTC+0000
0x8673f030:[Link] 360 352 9 381 2019-07-31 11:50:00 UTC+0000
0x867f3030:[Link] 588 288 31 945 2019-07-31 11:56:18 UTC+0000
. 0x84948030:[Link] 3476 588 26 1643 2019-07-31 11:56:34 UTC+0000
. 0x84b1c030:[Link] 3544 588 13 621 2019-07-31 12:45:34 UTC+0000
.. 0x84e19030:[Link].e 1416 3544 11 472 2019-07-31 12:45:47 UTC+0000
... 0x84a46030:[Link] 2472 1416 0 ------ 2019-07-31 12:51:36
UTC+0000
... 0x84aeebf8:[Link] 2728 1416 5 198 2019-07-31 12:53:57 UTC+0000
.... 0x84d165e8:[Link] 1292 2728 0 ------ 2019-07-31 12:53:57
UTC+0000
.... 0x84dc3d40:[Link] 1808 2728 3 91 2019-07-31 13:45:17 UTC+0000
... 0x84ad3a08:[Link] 2204 1416 0 ------ 2019-07-31 12:55:36 UTC+0000
... 0x84aca030:[Link] 3360 1416 0 ------ 2019-07-31 12:51:38 UTC+0000
... 0x84dbcd40:[Link] 3300 1416 0 ------ 2019-07-31 12:52:35 UTC+0000
... 0x84f58030:[Link] 2192 1416 0 ------ 2019-07-31 13:11:32 UTC+0000
... 0x86e61c88:[Link] 3860 1416 0 ------ 2019-07-31 13:16:12 UTC+0000
... 0x84e07030:[Link] 3876 1416 0 ------ 2019-07-31 12:51:28 UTC+0000
... 0x84cd81b8:[Link] 3136 1416 0 ------ 2019-07-31 12:51:40 UTC+0000
... 0x84957030:[Link] 2592 1416 0 ------ 2019-07-31 13:39:28 UTC+0000
... 0x84c84d40:[Link] 1716 1416 0 ------ 2019-07-31 12:51:27 UTC+0000
... 0x87b2b030:[Link] 1256 1416 0 ------ 2019-07-31 12:52:25 UTC+0000
... 0x8617b2f0:[Link] 1892 1416 0 ------ 2019-07-31 12:52:24 UTC+0000
... 0x84ff0778:[Link] 3928 1416 0 ------ 2019-07-31 12:51:27 UTC+0000
... 0x849b25f0:[Link] 2284 1416 0 ------ 2019-07-31 12:51:27 UTC+0000
... 0x84e6fa90:[Link] 1896 1416 0 ------ 2019-07-31 13:00:28 UTC+0000
. 0x86ca1030:FTK [Link] 2108 588 14 323 2019-07-31 12:46:05 UTC+0000
. 0x86ca8030:[Link] 724 588 0 ------ 2019-07-31 12:03:30 UTC+0000
. 0x84a787d0:[Link] 2500 588 5 328 2019-07-31 11:56:19 UTC+0000
0x848338e8:System 4 0 90 547 2019-07-31 11:49:59 UTC+0000
. 0x87002020:[Link] 272 4 2 29 2019-07-31 11:49:59 UTC+0000
0x84d9a5b8:[Link] 2856 3288 0 ------ 2019-07-31 12:06:58 UTC+0000
0x84bc6790:[Link] 1940 3464 0 ------ 2019-07-31 12:51:27 UTC+0000
0x86d94d40:[Link] 3432 3996 0 ------ 2019-07-31 13:38:21 UTC+0000
0x867f55f8:[Link] 420 404 11 388 2019-07-31 11:50:01 UTC+0000
. 0x84bae6c8:[Link] 2312 420 1 33 2019-07-31 11:56:19 UTC+0000
. 0x84f04030:[Link] 2876 420 1 33 2019-07-31 12:53:57 UTC+0000
0x86879d40:[Link] 468 404 3 110 2019-07-31 11:50:01 UTC+0000
0x86d70d40:[Link] 2220 2916 0 ------ 2019-07-31 12:51:36 UTC+0000
0x849940f8:[Link] 3100 3796 0 ------ 2019-07-31 13:39:27 UTC+0000
0x86c83030:[Link] 2924 2680 0 ------ 2019-07-31 13:38:22 UTC+0000
0x86c4e888:[Link] 1276 3124 0 ------ 2019-07-31 12:51:35 UTC+0000
0x86dcbd40:[Link] 2072 1972 0 ------ 2019-07-31 13:39:28 UTC+0000
0x86e1a9f0:[Link] 1880 3936 0 ------ 2019-07-31 13:40:09 UTC+0000
0x84af7030:[Link] 4052 3340 0 ------ 2019-07-31 12:51:28 UTC+0000
0x84a835a8:[Link] 2100 3992 0 ------ 2019-07-31 13:40:09 UTC+0000
0x86da1030:[Link] 2532 1700 0 ------ 2019-07-31 12:51:28 UTC+0000
0x86e1dcd0:[Link] 3972 2772 0 ------ 2019-07-31 13:40:10 UTC+0000
0x84f30648:[Link] 596 2304 0 ------ 2019-07-31 13:39:52 UTC+0000

Nous pouvons voir énormément de processus en cours de fonctionnement sur le


système. Il sera ainsi possible d’identifier un processus suspect.
Par exemple, dans notre cas, nous pouvons voir que le processus avec le PID 1416
précédemment identifié est fils du process avec le PID 3544 correspondant au
processus Winword.

Affichez les processus cachés avec psxview


Une autre commande qui peut être utilisée pour lister les processus est psxview.
Cette commande permet d’afficher les processus cachés.
$ volatility -f [Link] –-profile=Win7SP1x86 psxview

Offset(P) Name PID pslist psscan thrdproc pspcid csrss session deskthrd
ExitTime
---------- -------------------- ------ ------ ------ -------- ------ -----
------- -------- --------
0x7d4d6b80 [Link] 520 True False True True True True False
0x7d27cd00 [Link] 876 True False True True True True False
0x7ef04030 [Link] 2876 True False True True True True False

[...]

0x7ce1a9f0 [Link] 1880 True False False True False True False 2019-07-
31 13:40:09 UTC+0000
0x7d083030 [Link] 2924 True False False True False True False 2019-07-
31 13:38:22 UTC+0000
0x7f2f7030 [Link] 4052 True False False True False True False 2019-07-31
12:51:28 UTC+0000
Si un processus est caché, la colonne pslist, psscan sera marquée comme False.
Détectez l'injection de code avec malfind
La commande malfind peut être utilisée pour détecter de l’injection de code
malveillant. Pour cela, utilisez cette commande :
$volatility -f [Link] –-profile=Win7SP1x86 malfind
Process:[Link]:1416Address:0x18b0000
VadTag:VadSProtection:PAGE_EXECUTE_READWRITE
Flags:CommitCharge:33,MemCommit:1,PrivateMemory:1,Protection:6
0x018b00004d5a90000300000004000000ffff0000MZ..............
0x018b0010b8000000000000004000000000000000........@.......
0x018b002000000000000000000000000000000000................
0x018b0030000000000000000000000000e8000000................
0x018b00004dDECEBP
0x018b00015aPOPEDX
0x018b000290NOP
0x018b00030003ADD[EBX],AL
0x018b00050000ADD[EAX],AL
0x018b0007000400ADD[EAX+EAX],AL
0x018b000a0000ADD[EAX],AL
0x018b000cffDB0xff
0x018b000dff00INCDWORD[EAX]
0x018b000f00b800000000ADD[EAX+0x0],BH
0x018b00150000ADD[EAX],AL
0x018b0017004000ADD[EAX+0x0],AL
0x018b001a0000ADD[EAX],AL
0x018b001c0000ADD[EAX],AL
0x018b001e0000ADD[EAX],AL
0x018b00200000ADD[EAX],AL
0x018b00220000ADD[EAX],AL
0x018b00240000ADD[EAX],AL
0x018b00260000ADD[EAX],AL
0x018b00280000ADD[EAX],AL
0x018b002a0000ADD[EAX],AL
0x018b002c0000ADD[EAX],AL
0x018b002e0000ADD[EAX],AL
0x018b00300000ADD[EAX],AL
0x018b00320000ADD[EAX],AL
0x018b00340000ADD[EAX],AL
0x018b00360000ADD[EAX],AL
0x018b00380000ADD[EAX],AL
0x018b003a0000ADD[EAX],AL
0x018b003ce8DB0xe8
0x018b003d0000ADD[EAX],AL
0x018b003f00DB0x0
Ici, nous pouvons voir un extrait de l’en-tête du processus avec le PID1416. Nous
pouvons voir ici qu’il s’agit d’un exécutable avec l’en-tête MZ.

L’injection de code permet de dissimuler un processus malveillant dans un


processus légitime. Ces techniques sont largement utilisées par les malwares pour
se dissimuler et contourner les solutions de sécurité sur le poste.
Il existe une multitude de techniques d’injection, telles que la technique « Process
Hollowing » ou encore la technique « Process Doppelganging ». L’analyse de la
mémoire peut permettre de détecter ces injections de codes.

Process dump avec procdump


Lors de l’analyse mémoire, il sera possible de dumper un processus en particulier
pour l’analyser en détail. Il est également possible de réaliser un dump mémoire
d’un processus en cours d’exécution.

Ce dump est un instantané d’un processus en cours d'exécution et contient les


modules chargés pour l’application à un moment donné.

Volatility possède une option permettant de dumper un processus spécifique.


$ volatility -f [Link] –-profile=Win7SP1x86 procdump -D dir/ -p 1416
Les dumps de processus sont principalement utilisés pour résoudre les problèmes
de machines auxquelles les développeurs n’ont pas accès. Toutefois, ils peuvent
s’avérer très utile, pour l’analyse détaillée d’un processusmalveillant, par
exemple. Gardez bien ce dump, car nous l'analyserons plus tard.

L’investigation de la mémoire pour la détection et l’analyse de processus malveillants


permet d’extraire des informations qui peuvent être difficilement récupérables avec
une analyse statique. Volatility permet également d’analyser d’autres éléments qui
peuvent être intéressants.

Listez les mutex avec mutantscan


Il est également possible de lister les mutex (Mutual Exclusion) avec la commande
mutantscan. Un mutex est une primitive de synchronisation. C'est un outil utilisé
en programmation informatique pour éviter que des ressources partagées d'un
système ne soient utilisées en même temps.

Les mutex peuvent être utilisés par des logiciels malveillants pour ne pas réinfecter
une même machine. Ce type d’information permet également d’identifier un
malware en particulier, c’est un indicateur de compromission.

La commande mutantscan permet de scanner les mutex dans la mémoire.


$ volatility -f [Link] –-profile=Win7SP1x86 mutantscan
Offset(P) #Ptr #Hnd Signal Thread CID Name
------------------ -------- -------- ------ ---------- --------- ----
0x000000000ed801f0 2 1 1 0x00000000
ASP.NET_4.0.30319_Perf_Library_Lock_PID_63c
0x000000000f124030 1 1 1 0x00000000
0x00000000165e1180 1 1 1 0x00000000

[...]

0x000000007f5d2228 1 1 1 0x00000000
0x000000007f5d4cb8 1 1 1 0x00000000
0x000000007f5eb6f8 2 1 1 0x00000000 SMSvcHost
4.0.0.0_Perf_Library_Lock_PID_14c
Extraction des services
La commande svcscan permet de lister les services sur la machine en cours
d’investigation.
Les malwares peuvent utiliser les services Windows comme moyen de
persistance permettant de survivre au redémarrage. Il peut être intéressant
d’analyser ces éléments pour détecter un mécanisme de persistance. Le malware
Emotet utilisait cette techniques pour se réexécuter.
Allez plus loin avec d'autres options de Volatility
Volatility permet une analyse en profondeur de la mémoire. Nous n'allons pas voir en
détail toutes les options possibles, mais voici quelques autres commandes qui
pourront vous servir :

 cmdscan pour extraire l’historique des commandes entrées dans l’invite de


commande, et donc voir quelles ont été les dernières commandes entrées
avant l'incident. Si vous détectez une commande suspecte entrée juste avant
l'incident, vous avez peut-être trouvé le déclencheur du malware !
 yarascan permettant d'utiliser des YARA rules. Les YARA rules sont un moyen
de chercher des caractéristiques particulières des malwares dans des fichiers,
afin de détecter des fichiers malveillants. Ce sont des techniques particulières,
mais sachez que vous pouvez les utiliser avec Volatility. Je vous invite à
consulter cette page sur les YARA rules pour en savoir un peu plus.
Les plugins Volatility
Il est également possible de développer et d’utiliser des plugins complémentaires,
par exemple pour extraire des informations relatives à un malware en particulier.

Pour utiliser un plugin, il suffit de spécifier l’emplacement du plugin avec l’option --


plugins=“”. Nous pouvons voir ici un exemple avec le plugin autoruns. Ce plugin
permet d’extraire les clés de registre Run permettant l’exécution de programmes à
chaque démarrage. En d'autres termes, il vous permet de détecter quelles sont les
manières dont le malware persiste sur la machine.
$ [Link] --plugins="/home/rocfor/forensic_case001/volatility-autoruns/" -f
[Link] --profile=Win7SP1x86_23418 autoruns
Volatility Foundation Volatility Framework 2.6.1

Autoruns==========================================

Hive: \SystemRoot\System32\Config\SOFTWARE
Microsoft\Windows\CurrentVersion\Run (Last modified: 2019-07-31 12:34:18
UTC+0000)
"C:\Program Files\VMware\VMware Tools\[Link]" -n vmusr : VMware User
Process (PIDs: 2500)

[...]

Hive: \??\C:\Windows\ServiceProfiles\NetworkService\[Link]
Software\Microsoft\Windows\CurrentVersion\RunOnce (Last modified: 2019-07-
24 04:59:44 UTC+0000)
C:\Windows\System32\[Link] : mctadmin (PIDs: )

Hive: \??\C:\Users\johnoc\[Link]
Software\Microsoft\Windows\CurrentVersion\Run (Last modified: 2019-07-31
12:53:57 UTC+0000)
C:\Users\johnoc\AppData\Local\Temp\[Link] : YPDKhVAXzZSU (PIDs:
2728)

Winlogon (Shell)==================================

Shell: [Link]
Default value: [Link]
PIDs: 588
Last write time: 2019-07-31 11:50:01 UTC+0000

Winlogon (Userinit)===============================

Userinit: C:\Windows\system32\[Link],
Default value: [Link]
PIDs:
Last write time: 2019-07-31 11:50:01 UTC+0000

Services==========================================

Service: clr_optimization_v4.0.30319_32 - Microsoft .NET Framework NGEN


v4.0.30319_X86 (Win32_Own_Process - Auto Start)
Image path: C:\Windows\[Link]\Framework\v4.0.30319\[Link]
(Last modified: 2019-07-31 12:16:55 UTC+0000)
PIDs:

[...]

Service: VMware Physical Disk Helper Service - VMware Physical Disk Helper
Service (Win32_Own_Process - Auto Start)
Image path: "C:\Program Files\VMware\VMware Tools\[Link]" (Last
modified: 2019-07-23 19:06:13 UTC+0000)
PIDs: 696
Hive: \??\C:\Users\johnoc\[Link]
Software\Microsoft\Windows\CurrentVersion\Run (Last modified: 2019-07-31
12:53:57 UTC+0000)
C:\Users\johnoc\AppData\Local\Temp\[Link] : YPDKhVAXzZSU (PIDs:
2728)

Active Setup======================================
Command line: %SystemRoot%\system32\[Link] /ShowWMP
Last-written: 2010-11-20 21:35:23 UTC+0000 (PIDs: )

Command line: C:\Windows\System32\[Link] -UserIconConfig


Last-written: 2019-07-24 04:59:42 UTC+0000 (PIDs: )

[...]
Ici, nous pouvons voir qu'une clé autorun a été identifiée et démarre un fichier VBS
dans le répertoire : C:\Users\johnoc\AppData\Local\Temp\[Link].
Il existe de nombreux plugins que vous pourrez utiliser au cas par cas selon vos
besoins. Vous pourrez trouver une liste des plugins Volatility sur cette page.

Développer un plugin sur Volatility n'est pas tâche facile, mais vous pourrez trouver
des informations et des conseils sur cette page GitHub.

En résumé

Ça y est, vous avez terminé l'analyse du dump mémoire du poste infecté ! ✅

Comme nous avons pu le voir, Volatility est un outil open source extrêmement
complet, qui permet une analyse mémoire en profondeur. Pour comprendre plus en
détail comment est organisée la mémoire Windows, il sera nécessaire d’approfondir
vos connaissances de l’OS. Toutefois, cette introduction vous permettra de réaliser
des investigations de base.

Dans ce chapitre, nous avons utilisé quelques options du framework Volatility afin
de mener notre analyse du dump mémoire :

 pstree afin de lister l’arborescence des processus ;


 psxview pour détecter si un processus est caché ;
 malfind révèle les injections de code potentiellement malveillant ;
 mutantscan permet de lister les mutex sur le système ;
 il est possible de dumper un processus avec les commande memdump et
procmemdump ;
 il est possible d’utiliser cmdscan, les YARA rules et les plugins pour une
utilisation avancée.
Nous avons identifié plusieurs éléments :

1. Le processus [Link] est fils du processus Winword et exécute des


actions sur le système avec ses processus enfants.
2. Nous avons dumpé ce processus pour l'analyser plus tard.
3. Une clef autorun a été identifiée et démarre un fichier VBS.
Récupérez les informations de base du disque pour
l'analyse
Ça y est, vous avez analysé le dump mémoire du poste sur lequel vous investiguez.
Dans cette partie, nous allons passer à l'analyse du disque dur ! Si ce n'est pas
déjà fait, vous pouvez télécharger la copie du disque dur en cliquant ici. Ce fichier
contient tout le contenu du disque dur du PC juste après l'attaque. Ainsi, vous
pourrez mener l'investigation de chez vous en même temps que moi !

Attention, le fichier est très lourd ! Il fait environ 8 Go et pourra donc être très long à
télécharger selon votre débit Internet. Alors, pensez à démarrer le téléchargement au plus vite.

🙂
Une fois le fichier téléchargé, vous pouvez le décompresser en utilisant la commande tar
xvf copie_DD.[Link] copie_DD .
L’analyse forensic de la mémoire permet d’analyser les données volatiles, comme
nous avons pu le voir. L’analyse du disque dur nous permettra de comprendre un
peu plus en détail les actions menées sur le système, et confirmer les éléments
observés sur le dump mémoire.

Après avoir vu comment analyser un dump mémoire, nous allons à présent


étudier comment les données sont stockées sur un système Windows et
comment réaliser une chronologie des évènements, afin de mieux comprendre ce
qu'il est passé sur la machine.

Comment sont stockées les données sur un système Windows ?


Pour fonctionner correctement, un système d’exploitation à besoin d’un système de
fichiers. Un système de fichiers est une partie obligatoire du système d'exploitation,
qui détermine la manière dont les fichiers sont nommés, stockés et organisés
sur un volume. Un système de fichiers gère les fichiers et les dossiers, ainsi que les
informations nécessaires pour localiser et accéder à ces éléments par les utilisateurs
locaux et distants.

Pour stocker et organiser les données, Windows utilise le système de fichier NTFS
(New Technology File System) développé par Microsoft. NTFS est utilisé sur
Windows depuis la version Windows NT4.

Pour avoir plus d’informations sur le système de fichier NTFS, vous pouvez vous
rendre sur la documentation de Microsoft.

Le système de fichier NTFS comporte des particularités qui sont intéressantes à


connaître pour l’analyse forensic :

 NTFS améliore la sécurité grâce à ACL (Access Control List), pour gérer les
droits d’accès aux fichiers ;
 NTFS permet la gestion des ADS (Alternate Data Stream), permettant
de dissimuler des flux de données ;
 chaque fichier stocké possède un timestamp, ainsi que des attributs MACE,
Modified, Access, Create, Entry Modified ;
NTFS utilise une structure de données appelée MFT (Master File Table) qui

stocke les données sur le système avec des informations de timestamp.
Organisation des données sur un volume NTFS
Un volume NTFS est organisé de la manière suivante :

 NTFS Boot Sector : contient le bloc de paramètres BIOS qui stocke des
informations sur la structure du volume et les structures du système de
fichiers, ainsi que le code de démarrage qui charge Windows ;
 Master File Table : contient les informations nécessaires pour extraire des
fichiers de la partition NTFS, tels que les attributs d'un fichier ;
 File System Data : stocke les données qui ne sont pas contenues dans la
MFT ;
 Master File Table Copy : inclut des copies des enregistrements
indispensables à la restauration du système de fichiers en cas de problème
avec la copie originale.
Maintenant que vous savez un peu plus comment fonctionne un système de fichier
NTFS, nous allons à présent rentrer un peu plus en détail dans le fonctionnement
de la MFT et son analyse forensic.

Extraction de la MFT pour l'analyser


Lorsque vous formatez un volume avec NTFS, Windows crée une MFT et des
fichiers de métadonnées sur la partition. La MFT est une base de données
relationnelle composée de lignes d'enregistrements de fichiers et de colonnes
d'attributs de fichiers. Il contient au moins une entrée pour chaque fichier d'un volume
NTFS, y compris la MFT elle-même.

MFT et métadonnées
Comme la MFT stocke des informations sur elle-même, NTFS réserve
les 16 premiers enregistrements de la MFT pour les fichiers de
métadonnées (environ 16 Ko) qui sont utilisés pour décrire la MFT. Les fichiers de
métadonnées commençant par un signe dollar ($) sont décrits dans le
tableau Fichiers de métadonnées stocké dans la MFT. Les enregistrements restants
de la MFT contiennent les enregistrements de fichiers et de dossiers, pour chaque
fichier et dossier du volume.

Le tableau suivant présente les fichiers système présents à la racine.

Entrée Filename Description

0 $MFT Il contient tous les enregistrements des fichiers stockés et leurs


informations (nom, horodatage, type de fichier, etc.).

1 $MFTMirr Cette partie est une copie des 4 premières entrées MFT utilisées
pour restaurer une partition.

2 $LogFile Il s'agit d'un fichier journal contenant toutes les actions effectuées
sur le volume.
3 $Volume Il contient toutes les informations du volume, telles que le nom ou
la version du système de fichiers.

4 $AttrDef Il contient la liste de tous les attributs définis par le système sur le
volume.

5 . Le répertoire racine.

6 $Bitmap Cette partie représente les clusters free ou inutilisés sur le volume.

7 $Boot Cette partie contient les informations de Boot.

8 $BadClus Cette partie contient tous les clusters ayant des secteurs défectueux
sur le volume. Cela permet également d'identifier les clusters non
référencés.

9 $Secure Contient des descripteurs de sécurité uniques pour tous les fichiers
d'un volume.

10 $UpCase Il contient une table de caractères Unicode en majuscules pour


effectuer la correspondance sous Windows et DOS.

11 $Extend Utilisé pour diverses extensions facultatives telles que $Quota,


$ObjId, $Reparse.
Extrayez la MFT
La MFT se situe à la racine du disque dur. Pour y accéder, il suffit d’utiliser le
logiciel FTK Imager. La copie d’écran ci-dessous nous montre la MFT sur le disque
monté.
MFT
Pour l’extraire, il suffit de sélectionner le fichier et de cliquer sur Export File.

Export
MFT
Il n’y a plus qu'à sélectionner l’emplacement où stocker le fichier.

MFT in
folder
Pensez à changer les paramètres d’affichage des fichiers cachés et systèmes.
Maintenant que nous avons extrait la MFT, il ne nous reste plus qu’à exploiter ses
données.
Exploitez les données de la MFT
Comme mentionné, la MFT enregistre toutes les informations relatives à un
fichier, y compris sa taille, son nom, ses horodatages, ses autorisations et, dans
certains cas, ses données.

Lorsque des fichiers sont ajoutés au système de fichiers, la taille de la MFT


augmente. Toutefois, lorsque les fichiers sont supprimés du système, leurs entrées
dans la MFT sont marquées comme disponibles pour une utilisation ultérieure,
mais la taille de la MFT ne diminue pas.

Chaque fichier du volume a une entrée contenue dans la MFT. Chaque entrée MFT
est composée d'un en-tête et de plusieurs attributs. Voici la liste complète de tous
les attributs trouvés dans les entrées MFT décrites par le site MSDN de Microsoft.

Valeur Description

$STANDARD_INFORMATION Attributs de fichier (Read-Only ou Archive),


horodatage et nombre de liens physiques.
0x10

$ATTRIBUTE_LIST Une liste d'attributs qui constituent le fichier et la


référence de fichier du fichier MFT dans lequel
0x20 chaque attribut est situé.

$FILE_NAME Le nom du fichier en Unicode

0x30

$OBJECT_ID Identificateur d'objet de 16 octets attribué par le


service de suivi de liens.
0x40

$VOLUME_NAME Le nom du volume.

0x60

$VOLUME_INFORMATION Information sur le volume

0x70

$DATA Le contenu du fichier

0x80

$INDEX_ROOT Utilisé pour implémenter l'allocation de nom de


fichier pour les grands répertoires.
0x90

$INDEX_ALLOCATION Utilisé pour implémenter l'allocation de nom de


fichier pour les grands répertoires.
0xA0
$BITMAP Un index bitmap pour un grand répertoire.

0xB0

$REPARSE_POINT Les données du point d’analyse.

0xC0
Pour pouvoir exploiter et décoder la MFT, il est possible d’utiliser l’outil open source
Mft2Csv qui va convertir le contenu de la MFT en fichier CSV. Beaucoup plus
simple pour lire les données.

Vous pouvez télécharger Mft2Csv ici. Lorsque vous lancez Mft2Csv, il faut ensuite
spécifier le fichier MFT en cliquant sur « Choose $MFT ».

Mft2Csv possède plusieurs fonctionnalités, dont vous retrouverez le détail ici.

Mft2Csv
Il vous suffit ensuite de cliquer sur « Start Processing » pour décoder la MFT et
générer le fichier CSV.
M
FT Decoding
En fonction de la taille de votre MFT, ce processus peut durer un certain temps.
Une fois cela terminé, Mft2Csv crée un répertoire contenant toutes les informations
récupérées.
Timeline
Le principal fichier qui nous intéresse est le fichier du type "MFT_date_.csv". C'est le
fichier qui va contenir toutes les entrées de la MFT, et c'est lui qui va nous permettre
d'identifier la création de fichiers sur le système par timestamp.

Une fois remis en forme, il vous sera possible de trier les données par date de
création, par exemple.
MFT trié
Ici, nous pouvons identifier plusieurs choses :

1. Le fichier C:\Users\johnoc\AppData\Local\Temp\[Link] a été


créé sur le disque à 2019-07-31 12:45:47.4047080. Nous retrouvons
également la création de notre fichier VBS, quelques instant après la création
du premier exécutable détecté.
2. Si on remonte la timeline, on s'aperçoit que le fichier [Link] a
récemment été ouvert.
3. Ce fichier proviendrait d'un fichier [Link] stocké dans le répertoire
Download, mais aussi dans le répertoire temporaire Outlook.
Plein de données sont disponibles dans ce tableau ; pour comprendre en détail à
quoi correspond chaque colonne, n’hésitez pas à vous référez au Wiki de l’outil
Mft2Csv.
Une fois que vous avez trié les données, il ne vous reste plus qu'à générer une
timeline pour mettre en exergue les informations correspondant à votre analyse.

En résumé
Windows utilise le système de fichiers NTFS (New Technology File System) qui
permet d’organiser les données du disque.

Ce système utilise notamment la MFT (Master File Table), un élément crucial de


l’investigation numérique, car elle permet de retracer les évènements. C’est un
fichier système propre à NTFS. Il peut être extrait depuis chaque partition avec
l’outil FTK Imager.

Pour traiter les données de la MFT, l’outil Mft2Csv permet de décoder les données et
de générer un fichier CSV. Une fois les données extraites, une chronologie des
évènements qui ont eu lieu avant l'attaque pourra donc être réalisée.

Nous avons ici retrouvé la trace de notre fichier [Link], ainsi que le
fichier VBS précédemment identifié dans le dump mémoire. Par ailleurs, en
remontant la chronologie, nous avons pu identifier que ce fichier proviendrait d'un
fichier [Link], lui-même provenant d'un fichier [Link] téléchargé au moment
de la date présumée d'infection.
Enfin, nous savons que c'est un email malveillant qui a été reçu, et notre fichier zip
se trouve dans le répertoire temporaire Outlook.
Identifiez les artefacts Windows d'intérêt pour
l'investigation
Nous venons de voir le fonctionnement du système de fichiers NTFS, ainsi
que l’extraction de la MFT pour générer une timeline des fichiers créés sur le
disque.

Dans ce chapitre, nous verrons quels sont les éléments d'intérêt pour l’analyse
forensic.

Découvrez les principaux artefacts d’intérêt sous Windows


Le principe d’échange de Locard, appliqué aux sciences forensic dans la police
scientifique, indique que lorsque deux corps entrent en contact l'un avec l'autre,
il y a nécessairement un transfert entre ceux-ci, et donc une trace. Ce principe
s’applique également à l’investigation numérique, et c’est ce qui va nous permettre
d’identifier les éléments passés sur la machine compromise.

Windows est un système complexe qui est composé de plusieurs éléments


permettant de comprendre les événements passés. Si vous savez où chercher,
vous pourrez retrouver toutes les informations dont vous avez besoin pour
réaliser votre investigation.

Il y a énormément d’informations disponible sur Windows. Ce cours a pour objectif


de vous synthétiser certains d’entre eux. Pour aller plus loin, vous pouvez visiter le
site du SANS qui propose des posters sur l’investigation forensic :
 Windows Forensic Analysis ;
 Digital Forensic and Incident Response.
Windows event logs
Les event logs Windows sont des journaux qui répertorient chaque action de
chaque application sur le système, tels que les messages d’erreur, d’information et
de warning. Il est possible d’y accéder en utilisant l’outil natif Event Viewer.
Windows Event Viewer
Les catégories de logs se trouvent sur le panneau de gauche et vous donnent
l’accès aux événements liés à cette catégorie.

Pour obtenir plus d’informations sur un évènement, il est possible d’utiliser le


site [Link].
Pour extraire les event logs, il est possible d’utiliser FTK Imager. Sous Windows 7,
les logs se situent dans le répertoire %SystemRoot%\System32\Winevt\Logs.
Emplacement des event logs
Enfin, il sera possible de les analyser sur un autre système avec le logiciel Event Log
Explorer. Il est payant, mais la démo est utilisable 30 jours.

Les services
Les services Windows sont des applications qui démarrent généralement au
démarrage de l'ordinateur et s'exécutent silencieusement en arrière-plan jusqu'à
son arrêt. À proprement parler, un service est une application Windows implémentée
avec l'API de services et gérant des tâches de bas niveau, ne requérant que peu ou
pas d'interaction de l'utilisateur. Les malwares peuvent utiliser cette
fonctionnalité de Windows pour rester persistants.

Les techniques de persistance permettent à un malware de se réexécuter même


après que le système ait rebooté. Les techniques de persistance utilisées par les
malwares sont nombreuses.

Il est possible d’y accéder avec l’interface native [Link].


[Link]
Dans notre cas, aucun service malveillant n'a été créé.

Les Prefetch
Les Prefetch sont des fichiers créés par le système lorsqu’une application
s’exécute sur le système. Les fichiers Prefetch sont d'excellents artefacts pour
analyser les applications exécutées sur un système.

Windows crée un fichier Prefetch (.pf) lorsqu'une application est exécutée pour la
première fois à partir d'un emplacement particulier. Cela permet d’accélérer le
chargement des applications. La fonctionnalité «Prefetch» de Windows est
généralement activée par défaut.

Le répertoire Prefetch contiendra un enregistrement historique des 128 derniers


programmes "uniques" exécutés sur le système. Les Prefetch se trouvent dans
le répertoire C:\Windows\Prefetch. En les classant par ordre chronologique, il sera
possible d’identifier les programmes qui se sont exécutés sur le système.
Le registre
Le registre Windows est une base de données hiérarchique qui stocke les
paramètres de bas niveau pour le système d'exploitation Microsoft Windows et pour
les applications qui choisissent d'utiliser le registre.

Le noyau, les pilotes de périphérique, les services, le gestionnaire de comptes de


sécurité (SAM) et l'interface utilisateur peuvent tous utiliser le registre.

Le registre contient des informations auxquelles Windows fait constamment


référence pendant son fonctionnement, telles que les profils de chaque utilisateur,
les applications installées sur l'ordinateur et les types de documents que chacun
peut créer, les propriétés des dossiers et des icônes d'application, le matériel
existant sur le système, et les ports utilisés.

Les ruches du registre sont stockées dans le répertoire %SystemRoot%\System32\


config.
Registry files
Une ruche est un groupe logique de clés, de sous-clés et de valeurs dans le registre,
qui contient un ensemble de fichiers de prise en charge contenant des sauvegardes
de ses données.

Chaque fois qu'un nouvel utilisateur ouvre une session sur un ordinateur, un
nouveau répertoire est créé pour cet utilisateur avec un fichier distinct pour le profil
utilisateur. Ceci s'appelle la ruche de profil d'utilisateur.

La ruche d'un utilisateur contient des informations de registre spécifiques concernant


ses paramètres d'application, son bureau, son environnement, ses connexions
réseau et ses imprimantes. Les ruches de profil utilisateur se trouvent sous la clé
HKEY_USERS.

Les ruches spécifiques à l’utilisateur ([Link]) sont stockées dans le répertoire


C:\Users\<username>.

Ruches Fichier

HKEY_CURRENT_CONFIG System, [Link], [Link], [Link]

HKEY_CURRENT_USER [Link], [Link]

HKEY_LOCAL_MACHINE\SAM Sam, [Link], [Link]

HKEY_LOCAL_MACHINE\Security Security, [Link], [Link]

HKEY_LOCAL_MACHINE\Software Software, [Link], [Link]

HKEY_LOCAL_MACHINE\System System, [Link], [Link], [Link]

HKEY_USERS\.DEFAULT Default, [Link], [Link]


Voici à quoi correspond chaque ruche :

 SAM (gestionnaire de compte de sécurité) : contient toutes les informations de


comptes utilisateurs et de droits d'accès ;
 Sécurité : le noyau y accédera pour lire et appliquer la politique de sécurité
applicable à l'utilisateur actuel et à toutes les applications ou opérations
exécutées par cet utilisateur ;
 Défaut : ruche utilisée par le compte système local. Utilisée par les
programmes et services exécutés en tant que système local ;
 Système : contient des informations sur la configuration du système Windows,
la liste des périphériques montés contenant un système de fichiers, ainsi que
plusieurs "HKLM \ SYSTEM \ Control Sets" numérotés, contenant d'autres
configurations de pilotes de système et de services exécutés sur le système
local ;
 Logiciel : contient le logiciel et les paramètres Windows, principalement
modifiés par les installateurs d'applications et de systèmes ;
 [Link] : contient les paramètres spécifiques à chaque utilisateur (les
profils itinérants l'utilisent).
Il est possible de dumper les fichiers de registre avec FTK Imager.
Dump du registre
Les fichiers extraits seront ensuite stockés dans votre répertoire pour analyse.

Registre dumpé
Pour explorer ces fichiers, il est possible d'utiliser l'outil RegRipper. Pour cela, il
faudra sélectionner le fichier [Link] du profil de la victime, ici JohnOC. Puis
sélectionner le nom du rapport à générer et le profil a utiliser ; ici nous choisissons le
profil "ntuser".
RegRipper
Une fois cela terminé, un rapport sera généré. Si nous recherchons dans les clés
RUN que nous avons précédemment identifiées avec Volatility, nous retrouvons
rapidement notre clé de registre malveillante.
Clé Run
Utilisez Autopsy pour analyser la copie du disque
Ici, nous allons utiliser le framework Autopsy téléchargeable à cette adresse.
Autopsy est une interface graphique de l’outil open source The Sleuth Kit.

Créez une enquête


La première étape est de créer notre enquête, ou case dans Autopsy. Pour cela,
ouvrez Autopsy et cliquez sur New Case.
Autopsy -
Création d'un nouveau case
Nous nommons ici notre case "IR_001".

Autopsy
Remplissez ensuite les informations de base : le numéro de l'enquête ainsi que votre
nom.
Autopsy
Maintenant que notre cas est créé dans Autopsy, nous allons pouvoir ajouter notre
image disque.

Ajouter les images à analyser


Ensuite, il faudra ajouter l’image du disque dur précédemment collectée, en cliquant
sur Add Data Source.
Autopsy
Autopsy
Il est ensuite possible de spécifier les modules.
Autopsy modules
Enfin, les données seront analysées et parsées par Autopsy. Vous devriez avoir un
écran comme ci-dessous. Le processing peut durer un certain temps en fonction de
la taille de votre image.
Autopsy
Analyse des données
Lorsque les données ont fini d’être parsées par Autopsy, il est possible d’explorer
notre image.

Par exemple, il est possible de voir les différents types de fichiers sur le système. Ici
nous affichons par exemple les exécutables sur le système, et nous retrouvons nos
exécutables suspects.
Exécutables
Nous récupérons ici les différent fichiers précédemment identifiés en faisant un clic
droit, puis Extract File.

Les différents fichiers exécutables récupérés sont les suivants :

 [Link] ;
 [Link] ;
 [Link] ;
 [Link].
En faisant une recherche par type de fichier ou par fichiers récents, nous trouvons
des fichiers suspects ouverts juste avant l'incident : [Link], [Link] et
[Link].
Extraction fichier PDF
Extraction fichiers zip et DOCM
Nous pouvons ajouter ça à nos indices pour l'investigation !

Il est également possible d’afficher les fichiers avec l’utilisation de chiffrement. Ci-
dessous, nous pouvons voir que le fichier [Link] utilise du chiffrement.
Extraction fichier zip
Il est possible de générer une timeline directement avec Autopsy. Une fois les
fichiers analysés, vous pourrez explorer les différents événements et filtrer sur les
dates de l’incident. Ici nous filtrons sur la date d'infection correspondant au 31 juillet
2019.

Timeline
Enfin, il sera possible de générer un rapport en cliquant sur Generate Report.
Autopsy report
Le rapport généré sera au format HTML et vous y retrouverez de nombreuses
informations analysées par Autopsy.

En résumé
Dans ce chapitre, nous avons exploré les éléments d’intérêt pour notre analyse sur
la copie du disque dur. Nous avons vu comment analyser et collecter la base
de registre, les event logs ou encore les services. Finalement, nous avons vu
comment utiliser le framework Autopsy pour analyser notre image disque.

Nous avons pu confirmer que l'attaquant a utilisé un moyen de persistance en créant


une clé run avec le nom YPDKhVAXzZSU qui démarre le script VBS C:\Users\johnoc\
AppData\Local\Temp\[Link].
Nous avons également récupéré les logiciels malveillants identifiés, ainsi qu'un
fichier [Link], un fichier [Link] et un fichier [Link].
Découvrez les différents vecteurs d’infection
Dans les parties précédentes nous avons étudié comment investiguer un système
Windows pour rechercher des indices de compromission et quelles actions ont
été menées sur la machine. Vous avez identifié des fichiers et des éléments

malveillants qui sont à l’origine de la compromission, félicitation ! 🎉

Il faut à présent analyser ces éléments pour comprendre le mode opératoire et


comment le contrer.

Dans cette partie, nous découvrirons ce qu'est un vecteur d’infection et comment


ils sont utilisés par un attaquant pour infecter une machine.

Qu’est-ce qu’un vecteur d’infection ?


Pour pouvoir infecter un ordinateur un attaquant doit faire en sorte d’exécuter du
code malveillant sur la machine cible. Pour ce faire il doit utiliser un vecteur
d’infection.

Le terme vecteur d’infection est à l’origine utilisé dans le médical. Un vecteur est un
organisme qui ne provoque pas lui-même une maladie mais qui disperse
l'infection en transportant les agents pathogènes d'un hôte à l'autre. En informatique
c’est le même procédé, un vecteur d’infection sera à l’origine de la propagation et
de la diffusion d’un logiciel malveillant on parle aussi de dropper,
downloader ou loader.
Un vecteur d’infection est donc un moyen d’infecter un ordinateur. Il existe plusieurs
types de vecteur.

 La navigation internet via le téléchargement ou via l’exploitation de


vulnérabilités.
 L’email contenant une pièce jointe malveillante ou un lien
malveillant. Les pièces jointe peuvent être des fichiers compromis tel que
qu’un fichier PDF, ZIP, Office… Cela peut également être un SMS, ou un
message sur les réseaux sociaux par exemple.
Dans certains environnements sensibles tels que les centrales nucléaire, l’accès
internet n’est pas autorisé. En 2010, le malware Stuxnet a infecté les centrales
nucléaires iranienne par le biais d’une clef USB, le malware s’est ensuite propagé
sur le réseau interne. Il avait pour objectif de ralentir les centrifugeuses responsables
de l’enrichissement de l’uranium.

 Les clefs USB et autres supports externes, peuvent aussi être des vecteurs
d’infection.
 Un autre vecteur d’infection est ce qu’on appelle la « Supply Chain Attack
», il s’agit ici de compromettre un tiers de confiance de l’entreprise cible pour
pouvoir la compromettre. Ainsi elle bénéficiera d’un canal de confiance qui
lui permettra de contourner les protections mis en place. Ce genre de vecteur
est beaucoup plus difficile à détecter et à éviter car il s’agit de la sécurité des
tierces parties avec lequel l’entreprise travaille.
En 2017, le malware NotPetya s’est répandu par le biais d’une mise à jour
logiciel d’un outils de comptabilité en Ukraine. Lorsque les clients de cette entreprise
ont mis à jour le logiciel elles ont téléchargé le malware qui s’est ensuite répandu de
manière très rapide sur les réseaux infectés.

Quels sont les techniques utilisé par les attaquants ?


Comme nous venons de le voir il existe plusieurs vecteurs d’infection qui implique
dans la plupart des cas une action utilisateur. Toutefois l’exploitation de
vulnérabilité ne nécessite pas toujours l’interaction humaine. Nous allons à présent
étudier quelques techniques utilisées par un attaquant.

L’exploitation de vulnérabilité
L’exploitation de vulnérabilité permet de compromettre une machine en exploitant
un bugs d’un programme. Elle permet dans le pire des cas une élévation de
privilège ou l’installation d’un logiciel malveillant par exemple. Lorsque la
vulnérabilité n’a pas de correctif disponible on parle de faille Zéro Day. C’est
généralement celle-ci qui est la plus redouté car tant que le patch n’est pas
disponible les systèmes sont vulnérables.

En 2017, le ransomware Wannacry utilisait une vulnérabilité dans le Protocol SMB


de Microsoft (Eternal Blue) pour pouvoir se répandre. Il a infecté en l’espace de
quelques heures près de 300 000 machines.
Il existe de nombreuse vulnérabilités qui sont référencé par des numéros de CVE
(Common Vulnérabilité Exposure). Pour en savoir plus vous pouvez visiter le site du
Mitre.

L’utilisation de fichier anodins


L’email reste un des moyens les plus utilisés pour compromettre une cible. Pour
pouvoir inciter un utilisateur à ouvrir une pièce jointe, les attaquants pourront utiliser
des fichiers communément utilisés tous les jours tels que des fichier PDF, Office
Documents, zips, etc.

Généralement la pièce jointe sera accompagnée d’un message qui incitera


l’utilisateur à cliquer.
Sp
am Email
La pièce jointe pourra contenir :

 Du code malveillant permettant l’exploitation d’une vulnérabilité par


exemple exploitation d’une faille dans Adobe Reader avec un fichier PDF
spécifiquement créé.
 Du code malveillant permettant de télécharger un autre composant. Par
exemple une macro malveillante dans un fichier Excel ou Word qui
téléchargera sur une source distance un logiciel malveillant. On appelle ce
type de document un Dropper ou un Downloader.
Microsoft office bloque par défaut l’exécution de macro toutefois l’utilisateur à la
possibilité de les activer.
Les autres types de fichiers
Les attaquants peuvent également utiliser d’autre type de fichiers qui seront
exécutés par l’utilisateur : des fichiers ZIP contenant une vulnérabilité, des
fichiers JavaScript, VBS, etc.

Utiliser les outils de base pour analyser le fichier


Pour analyser un fichier malveillant il faut d’abord identifier quel type de fichier nous
avons devant nous avant même de l’ouvrir pour l’analyse dynamiquement. On parle
ici d’analyse statique.

Déterminez si le fichier est malveillant


Une des premières étapes est de savoir si le fichier est connu comme étant
malveillant. La plateforme VirusTotal permet de vérifier si le malware est connu
ou non. Il s’agit d’une plateforme d’analyse regroupant plusieurs antivirus.
Il est possible d’uploader un fichier pour l’analyser, analyser une url et faire une
recherche de malware.

Les attaquants surveillent également Virustotal. Si vous uploadez votre fichier cela
pourra donner l’alerte que vous avez détecté leur intrusion. Il est donc préférable de
faire une requête avec le hash du fichier pour vérifier qu’il existe et de ne pas
l’uploader si le fichier n’est pas connu de VirusTotal.
Déterminez le type de fichier avec l'outil file
File est un outil natif sous Linux qui permet d’identifier le type de fichier en lisant
le magic number. Le magic number est un nombre hexadecimal utilisé dans l’entête
d’un fichier pour identifier son format.

Ci-dessous, quelques exemple :


fr0gger@crash:~OpenClassroom$ file invoice
invoice.7z: 7-zip archive data, version 0.4
fr0gger@crash:~OpenClassroom$ file forensic
[Link]: Zip archive data, at least v2.0 to extract
fr0gger@crash:~OpenClassroom$ file Forensic
[Link]: Microsoft Word 2007+
fr0gger@crash:~OpenClassroom$ file calc
[Link]: PE32+ executable (GUI) x86-64, for MS Windows
fr0gger@crash:~OpenClassroom$ file forensic
[Link]: PDF document, version 1.4
Un attaquant pourra changer l’extension d’un fichier pour tromper un utilisateur.
L’outil file vous permettra d’identifier le réel type de fichier que vous analyser.

Extrayez les chaines de caractère avec l'outil strings


Un autre outil natif sous Linux est l’outil strings il permet d’extraire les chaînes de
caractère d’un fichier sans l’ouvrir. Dans certains cas cela vous permettra
d’identifier des fonctionnalités du fichier malveillant que vous analysez.
Dans la plupart des cas les attaquants utilise l’obfuscation, un moyen qui permet
d’obscurcir le contenu d’un fichier. Les chaînes de caractère extraites ne
signifieront alors pas grand-chose et il faudra continuer l’analyse pour comprendre
en détail le fonctionnement du fichier malveillant.
En résumé
Les attaquants ne cessent de rivaliser d’ingéniosité pour infecter des cibles. Dans
cette partie nous venons de passer en revue les différents types de vecteurs
d'infection comme les pièces jointes de mails, les supports externes, etc.

Nous avons également les outils de base pour commencer l’analyse :

 VirusTotal pour vérifier que le fichier n'est pas déjà identifié par malveillant ;
 file pour déterminer le type du fichier ;
 strings pour en extraire les chaines de caractère.
Analysez un email malveillant
Pourquoi les attaquants utilisent l’email comme vecteur d’infection ?
L’email est un des vecteurs les plus utilisés par les attaquants pour transmettre un
logiciel malveillant. Vous avez surement déjà reçu un email contenant une facture à
payer ou vous informant que vous avez été sélectionné pour toucher l’héritage d’une
personne très riche ? Ce type d’email est fréquent et la plupart du temps exploite le
vecteur humain.

L’envoi d’email malveillant est une technique de social engineering, c’est-à-dire


qu’il n’exploite pas une faille logicielle mais une faille humaine.
Il se peut que votre adresse email se retrouve dans une liste utilisée pour du spam,
mais dans certains cas cet email peut être ciblé, c'est à dire adapté à vous pour
vous inciter encore plus à ouvrir la pièce jointe.

En forensic, l’analyse des emails peut être fastidieuse car on se retrouve souvent à
analyser et trier des centaines voire des milliers d’emails.

Récupérer un email pour l’analyser


Le stockage des emails avec Outlook
Avec Outlook, les emails sont stockés dans un fichier PST. Chaque compte de
messagerie que vous avez configuré dans Outlook reçoit sa propre base de
données sous la forme d'un fichier PST (Personal Storage Table), où les courriers
électroniques, les éléments de calendrier, les contacts et les rappels sont tous
stockés.

Les données d'un fichier PST peuvent ou non être compressées et chiffrés, en
fonction de vos paramètres.

Vous pouvez également remarquer des fichiers avec une extension .ost dans votre
dossier de données Outlook. Les fichiers OST ont le même format que PST, mais
sont généralement utilisés comme stockage temporaire hors connexion de
courriers électroniques pour les serveurs Exchange et les hôtes de messagerie Web
tels que Gmail et [Link].

L'idée est que vous pouvez toujours interagir avec les messages stockés dans le
fichier OST lorsque vous êtes déconnecté du serveur de messagerie (par exemple,
lorsque vous n'avez pas Internet), puis lorsque vous vous reconnectez au serveur à
nouveau, Outlook synchronise tout.

Cela signifie que vos données seront stockées dans un fichier PST si vous utilisez un
compte POP3 ou IMAP standard, ou un compte Exchange pour lequel le stockage
hors connexion n’est pas configuré. Gmail, [Link] et les autres hôtes de
messagerie Web obtiendront un fichier OST. Les comptes Exchange peuvent même
utiliser à la fois un fichier OST pour un accès hors connexion et un fichier PST pour
la sauvegarde des données.

Pour extraire les fichier OST et PST il est possible de se rendre dans le répertoire
suivant C:\users\username\AppData\Local\Microsoft\Outlook .
Nous récupérons ici notre fichier a l'aide de FTK Imager.
Fichier OST
Visualiser les fichiers OST/PST
Pour ouvrir ce type de fichier vous pouvez utiliser un simple viewer. Il existe de
nombreux outils de forensic que vous pouvez également utiliser mais il ne sont pas
gratuits.

Si vous utiliser Outlook vous pouvez tout simplement ouvrir ce fichier directement.
Nous utiliserons ici Free OST Viewer Tool.

Une fois que le fichier OST est chargé, nous pouvons explorer la boite email :
Email
Nous pouvons voir ici qu'un email a été reçu provenant d'un adresse
@[Link] qui est un fournisseur d'email temporaire en ligne. Par ailleurs
nous pouvons voir également le contenu de l'email ainsi que sa pièce jointe
[Link].

Il est également possible d’extraire cet email, vous obtiendrez alors un fichier avec
l’extension .msg.

Pour analyser un fichier PST/OST il sera également possible d’utiliser PFFEXPORT .


Pour installer pffexport il faudra rentrer la commande suivante sur votre machine
Linux.
sudo apt install pff-tools
Analyser l’en-tête et récupérer une pièce jointe
Nous venons d’extraire un email pour l’analyser. Un entête email est composé de
plusieurs informations qui peuvent être utile pour l’analyse forensic.

From Champs indiquant l'émetteur de l'email.

Subject Champs indiquant le sujet de l'email

Date indique la date et l'heure de l'email

To L'adresse qui recoit l'email

Return-Path L'adresse de retour pour l'option Reply To

Received liste de tous les serveurs traversés par le message pour atteindre le
destinataire.

Mime- MIME (Multipurpose Internet Mail Extensions) est une norme Internet qui
Version étend le format du courrier électronique.

Content- En règle générale, cela vous indiquera le format du message, tel que
Type HTML ou texte brut.

Message-id Chaîne unique attribuée par le système de messagerie lors de la création du


message.

Message Le contenu de l'email ainsi que la piece jointe.


Body
Pour obtenir ces informations il faudra d’abord convertir le .MSG en fichier EML.
sudo apt install libemail-outlook-message-perl libemail-sender-perl
msgconvert Your\ invoice\ [Link]
Cette commande va générer un fichier eml.

Il sera ensuite possible de lire l'entête avec un editeur de texte.


Contenu du fichier EML
Nous retrouvons ici nos éléments de l'en-tête email. Nous pouvons identifier les
éléments suivant:

 L'email a été envoyé le 31 juillet 2019 a 12h16


 L'objet de l'email est : "You invoice 34625"
 L'adresse emettice est hu6nsk+fgbeuap1buy4o@[Link]
 L'adresse receveur est john.opoc2@[Link]
 Une piece jointe appelé [Link] est présente.
En descendant un peu plus vous trouverez du texte encodé en base 64. Ce morceau
en base64 correspond à la pièce jointe de l’email.

Base64 est un encodage utilisé pour l’échange de données sur internet.


Il suffit de copier/coller cette base64 dans un fichier pour pouvoir ensuite le décoder.
base64 -d pj.b64 >> [Link]
Et nous nous retrouvons avec un fichier ZIP contenant la pièce jointe.

En ouvrant cette piece jointe avec le mot de passe mentionné dans l'email, nous
nous retrouvons avec 2 fichiers :

 [Link] ;
 [Link] .
En résumé
Nous venons de voir que l’email était un vecteur de choix pour les attaquants. Nous
avons vu également comment trier et extraire des emails. Enfin nous avons vu
comment récupérer une pièce jointe.

Dans cette pièce jointe, nous trouvons un fichier PDF et un fichier DOC que nous
allons analyser
Analysez un fichier malveillant
Après avoir analyser les emails nous avons récupérer des pièces jointes qui
correspondent au vecteur d’infection. Dans ce chapitre nous allons à présent étudier
comment analyser des fichiers malveillants. Nous nous concentrerons sur les fichiers
PDF et Office précédemment découvert.

Analysez un fichier PDF


Comme discuté les fichiers PDF peuvent embarquer du code malveillant. Il
représente un atout pour les attaquants car énormément d’utilisateurs ne se doute
pas qu’un fichier PDF peut être malveillant.

Structure d’un fichier PDF


Le format PDF est un format de document portable qui peut être utilisé pour
présenter des documents comprenant du texte, des images, des éléments
multimédias, des liens de pages Web, etc. Il comporte un large éventail de
fonctionnalités. Il existe près de 800 pages de documentation pour le seul format de
fichier PDF.

Vous pouvez retrouver plus d’information sur le format PDF sur le site d'Adobe.
Le format PDF a beaucoup plus de fonctions que juste du texte ; il peut inclure des
images et d'autres éléments multimédias, il peut être protégé par un mot de passe, il
peut exécuter du code JavaScript, etc.

PDF utilise le langage PostScript qui permet de structurer les données. Il peut
emporter plusieurs objets.

 Chaque objet commence par un numéro d'objet suivi d'un numéro de


version commençant par la chaîne "obj" ;
 À l'intérieur de l'objet, une série de balises décrit le contenu ou les
références à d'autres objets ;
 Chaque object se termine avec le retour chariot et la chaîne "endobj".
Chaque fichier PDF comporte la structure suivante :

 Header : il s'agit de la première ligne d'un fichier PDF. Il spécifie le numéro


de version de la spécification PDF utilisée par le document.
 Body : le corps du document PDF contient des objets qui incluent
généralement des flux de texte, des images, d’autres éléments multimédias,
etc. La section Corps permet de stocker toutes les données du document
présentées à l’utilisateur.
 Table xref : Il s'agit de la table de références croisées, qui contient les
références à tous les objets du document. Le but d’une table de références
croisées est d’autoriser un accès aléatoire aux objets du fichier. Nous n’avons
donc pas besoin de lire le document PDF en entier pour localiser cet objet.
Chaque objet est représenté par une entrée dans la table de références
croisées, qui a toujours une longueur de 20 octets.
Analyse d’un fichier PDF
Maintenant que nous en savons un peu plus sur le format PDF nous pouvons a
présent analyser un fichier PDF un peu plus en détail. L'objectif va être d'y
rechercher des caractéristiques suspectes, telles que du code Javascript caché
dans le fichier, une technique souvent utilisée des attaquants.

Un des premiers outils que nous pouvons utiliser est PDFID qui nous permet
d’obtenir des informations de statistiques sur le fichier analysé.
[Link] [Link]
PDFiD 0.2.1 [Link]
PDF Header: %PDF-1.0
obj 12
endobj 12
stream 2
endstream 2
xref 2
trailer 2
startxref 2
/Page 2
/Encrypt 0
/ObjStm 0
/JS 1
/JavaScript 1
/AA 1
/OpenAction 1
/AcroForm 0
/JBIG2Decode 0
/RichMedia 0
/Launch 1
/EmbeddedFile 0
/XFA 0
/Colors > 2^24 0
Ici nous pouvons voir des informations concernant le contenu du fichier, le nombre
d’objets etc.. Par exemple nous voyons ici que le fichier PDF embarque du
Javascript.

Il est également possible d’utiliser l’outil pdf-parser pour parser le contenu du fichier
PDF.
$ [Link] [Link]
PDF Comment '%PDF-1.0\r
'

obj 1 0
Type: /Catalog
Referencing: 2 0 R

<<
/Pages 2 0 R
/Type /Catalog
>>

[...]

obj 10 0
Type: /Action
Referencing:

<<
/S /Launch
/Type /Action
/Win
<<
/F ([Link])
/D '(c:\\\\windows\\\\system32)'
/P (
/Q '/C %HOMEDRIVE%&cd %HOMEPATH%&(if exist "Desktop\\\\[Link]" (cd
"Desktop"))&(if exist "My Documents\\\\[Link]" (cd "My
Documents"))&(if exist "Documents\\\\[Link]" (cd "Documents"))&(if
exist "Escritorio\\\\[Link]" (cd "Escritorio"))&(if exist "Mis
Documentos\\\\[Link]" (cd "Mis Documentos"))&(start [Link])
To view the encrypted content please tick the "Do not show this message
again" box and press Open.)'
>>
>>

[...]

xref

trailer
<<
/Size 11
/Prev 429
/Root 10R
/Info 00R
>>

startxref 45930

PDF Comment '%%EOF\r


'
En regardant bien, nous voyons qu'une portion de code est exécutée dans l'objet
10 :

'/C %HOMEDRIVE%&cd %HOMEPATH%&(if exist "Desktop\\\\[Link]" (cd "Desktop"))&(if


exist "My Documents\\\\[Link]" (cd "My Documents"))&(if exist "Documents\\\\
[Link]" (cd "Documents"))&(if exist "Escritorio\\\\[Link]" (cd
"Escritorio"))&(if exist "Mis Documentos\\\\[Link]" (cd "Mis Documentos"))&(start
[Link])

To view the encrypted content please tick the "Do not show this message again" box and
press Open.)'
Cette portion est potentiellement malveillante et nécessitera de faire l'objet
d'analyse approfondie puis d'être mis dans votre rapport final, c'est un indicateur
de compromission !

Analyse d’un document Office


Tout comme les fichiers PDF, les fichiers Office sont également des fichiers
intéressants pour les attaquants.

Structure d’un fichier Office


Les fichier office sont compressés comme des ZIPs. Le contenu peut être analysé
sans modification en décompressant le fichier et en analysant le contenu de l'archive.
La majorité des fichiers sont des fichiers XML lisibles par l'homme, mais dans
certains cas, tels que les documents activés par macro, les archives peuvent
également contenir des fichiers OLE (Object Linking and Embedding). Dans un
document avec une macro un objet OLE nommé [Link] sera présent.
$[Link]
Archive:[Link]
inflating:[Content_Types].xml
inflating:_rels/.rels
inflating:word/_rels/[Link]
inflating:word/[Link]
inflating:docProps/[Link]
inflating:word/theme/[Link]
inflating:word/[Link]
inflating:word/[Link]
inflating:customXml/[Link]
inflating:customXml/_rels/[Link]
inflating:word/[Link]
inflating:customXml/[Link]
inflating:docProps/[Link]
inflating:word/[Link]
inflating:word/[Link]
inflating:docProps/[Link]
inflating:word/[Link]
inflating:word/_rels/[Link]
inflating:word/[Link]
Analyse d’un document Office
Pour parser et analyser le contenu d’un fichier Office il est possible d’utiliser
l’outil oledump disponible sur cette page Github.
$ [Link] -h
Usage: [Link] [options] [file]
Analyze OLE files (Compound Binary Files)

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-m, --man Print manual
-s SELECT, --select=SELECT
select item nr for dumping (a for all)
-d, --dump perform dump
-x, --hexdump perform hex dump
-a, --asciidump perform ascii dump
-A, --asciidumprle perform ascii dump with RLE
-S, --strings perform strings dump
-T, --headtail do head & tail
-v, --vbadecompress VBA decompression
--vbadecompressskipattributes
VBA decompression, skipping initial attributes
--vbadecompresscorrupt
VBA decompression, display beginning if corrupted
-r, --raw read raw file (use with options -v or -p
-t TRANSLATE, --translate=TRANSLATE
string translation, like utf16 or .decode("utf8")
-e, --extract extract OLE embedded file
-i, --info print extra info for selected item
-p PLUGINS, --plugins=PLUGINS
plugins to load (separate plugins with a comma , ;
@file supported)
--pluginoptions=PLUGINOPTIONS
options for the plugin
--plugindir=PLUGINDIR
directory for the plugin
-q, --quiet only print output from plugins
-y YARA, --yara=YARA YARA rule-file, @file, directory or #rule to check
streams (YARA search doesn't work with -s option)
-D DECODERS, --decoders=DECODERS
decoders to load (separate decoders with a comma , ;
@file supported)
--decoderoptions=DECODEROPTIONS
options for the decoder
--decoderdir=DECODERDIR
directory for the decoder
--yarastrings Print YARA strings
-M, --metadata Print metadata
-c, --calc Add extra calculated data to output, like hashes
--decompress Search for compressed data in the stream and
decompress it
-V, --verbose verbose output with decoder errors
-C CUT, --cut=CUT cut data
-E EXTRA, --extra=EXTRA
add extra info (environment variable: OLEDUMP_EXTRA)
-j, --jsonoutput produce json output
--password=PASSWORD The ZIP password to be used (default infected)
Pour afficher les éléments du fichier Word il suffit de passer en paramètre votre
fichier.
$ [Link] [Link]
A: word/[Link]
A1: 385 'PROJECT'
A2: 71 'PROJECTwm'
A3: M 5871 'VBA/NewMacros'
A4: m 1073 'VBA/ThisDocument'
A5: 4400 'VBA/_VBA_PROJECT'
A6: 734 'VBA/dir'
Le “M” signifie qu’une macro est présente a cette endroit. Il est donc possible
d’afficher le contenu de la macro avec la commande [Link] -s A3 -v
[Link] .
$ [Link] -s A3 -v [Link]
Attribute VB_Name = "NewMacros"
Public Declare PtrSafe Function system Lib "[Link]" (ByVal command As
String) As Long

Sub AutoOpen()
On Error Resume Next
Dim found_value As String

For Each prop In [Link]


If [Link] = "Comments" Then
found_value = Mid([Link], 56)
orig_val = Base64Decode(found_value)
#If Mac Then
ExecuteForOSX (orig_val)
#Else
ExecuteForWindows (orig_val)
#End If

[...]

pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _


Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
Chr(CByte("&H" & Mid(nGroup, 5, 2)))

sOut = sOut & Left(pOut, numDataBytes)


Next

Base64Decode = sOut
End Function
Ici nous voyons que des actions sont effectuées mais le code est obfusqué, c'est-a-
dire qu'il est difficilement lisible et nécessitera d'autres analyse pour en comprendre
son fonctionnement en détail. Il sera également possible d'exécuter ce fichiers Word
dans une sandbox ou environnement controlé pour analyser dynamiquement le
comportement du fichier.

Dans notre cas il s'agit de l'exécution de l'exécutable malveillant précédemment


identifié.

En résumé
Dans cette partie nous venons d’étudier le fonctionnement des
fichiers PDF et Office comme vecteurs d’infections. Nous avons également vu
comment les analyser pour comprendre leur fonctionnement.

Ça y est ! La troisième étape de l'investigation forensic, l'étape d'analyse, est


terminée ! Vous avez analysé les différents artefacts qui vous ont été donnés et
vous avez identifié plusieurs indicateurs de compromission.
Répertoriez les indicateurs de compromission avec la
matrice ATT&CK
Maintenant que vous avez terminé votre analyse, il vous faut rassembler et structurer le tout
dans votre rapport d'investigation, afin de la communiquer à votre hiérarchie.

Le rapport d’investigation doit comprendre les indicateurs de compromission, ou IoC. Il


s’agit des éléments découverts pendant l’analyse qui permettront de caractériser
l’incident. Dans ce chapitre, nous verrons un peu plus en détail ce qu'est un indicateur de
compromission, et comment les répertorier dans le rapport.

Qu’est-ce qu’un indicateur de compromission (IoC) ?


Une fois que les analyses ont été effectuées, il est important de créer des indicateurs de
compromission permettant d’identifier des menaces similaires dans le futur. Ces
indicateurs de compromission ont pour but de capitaliser les analyses effectuées afin
d’accélérer les futures réponses sur incidents. Ces indicateurs peuvent également être
partagés entre plusieurs entités.

Les indicateurs de compromission peuvent être de plusieurs types ; découvrons-les


ensemble afin de mieux les répertorier.

Les IoC réseaux


Les IoC peuvent faire référence à une activité réseau malveillante, telle que la connexion à
un serveur de commande et de contrôle. La connaissance de ces indicateurs permettra très
rapidement de bloquer ces connexions pour contenir une menace sur tout un réseau. En
analysant les trames réseau générées par un logiciel malveillant, il sera également possible
de créer des règles IDS pour détecter de manière proactive une intrusion ou une
connexion malveillante.

Les noms de domaines et URL font également partie de ces IoC.

Les hash de fichiers


Les hash sont des empreintes uniques qui identifient des fichiers. Ces hash sont des IoC
qui permettront d’identifier les fichiers malveillants sur une machine. Il peut également être
utile d’identifier les répertoires d’écriture de ces fichiers sur le système.

Les adresses emails


Les adresses emails délivrant du spam, du phishing ou autre sont également des
indicateurs de compromission qui pourront être bloqués sur les passerelles de messagerie.

Les actions sur le système


Les actions menées sur le système par un logiciel malveillant peuvent également être des
IoC. Par exemple, si le malware crée un service Windows en particulier, ou une clé registre.

Répertoriez vos IoC


La société Mandiant a créé un format OpenIOC basé sur le format XML, pour stocker et
gérer ses indicateurs de compromission. Il existe un outil permettant la génération de fichiers
IoC, appelé IoC-Editor, disponible ici.
L’utilitaire permet de créer son propre fichier d’IoC. Il suffit de faire un clic droit puis
d’ajouter un item supplémentaire. Il est ensuite possible d’ajouter un IoC en fonction
de ses besoins. Ici, nous ajoutons un IoC en rapport avec l’adresse email.

Un IoC correspondant à l'email malveillant dans IoC-Editor

Il sera donc possible de construire sa liste d'IoC.


Liste des IoC

À vous de la compléter avec les éléments précédemment découverts.

Il existe également le format STIX qui permet de réaliser des fichiers d’IoC très complets.

La matrice ATT&CK
La matrice ATT&CK est une initiative du MITRE qui permet d’identifier les tactiques et les
techniques utilisées par un attaquant. Elle fournit un ensemble de classifications
permettant d’identifier les différentes phases d’une attaque, ainsi que les techniques utilisées
pour chaque phase.
La matrice ATT&CK
Le schéma ci-dessus vous permet de voir quelques exemples de techniques et d'étapes
répertoriées dans la matrice ATT&CK, mais vous trouverez sa version officielle et exhaustive
sur le site du MITRE.

Initial Access
La phase d’accès initial permet de définir les techniques utilisées par un attaquant pour
obtenir un accès dans le réseau cible ; par exemple, une attaque de phishing.

✅ Dans notre cas, nous avons pu identifier qu'il s'agissait d'un email malveillant.

Execution
La phase d’exécution permet d’identifier quelles techniques ont été utilisées pour
permettre l’exécution de code.

✅ Dans notre cas, nous avons identifié qu'il s'agissait d'un fichier DOC et d'un fichier
PDF. À noter que seul le fichier DOC a été exécuté par l'utilisateur.

Persistence
La phase de persistance permet de définir quelles techniques sont utilisées pour permettre
un accès continu à l’attaquant.

✅ L'attaquant a ici créé une clé RUN avec un script VBS permettant de réexécuter le
logiciel malveillant après chaque démarrage.

Privilege Escalation
La phase d’élévation de privilège permet de définir les moyens utilisés par
l’attaquant pour obtenir des privilèges plus élevés sur les machines cibles.

❓ Dans notre cas, l'attaquant a peut-être élevé ses privilèges, mais il n'en avait pas
besoin puisque l'utilisateur compromis était déjà administrateur de son poste.

Defense evasion
Cette phase permet de définir les moyens utilisés pour contourner les solutions de
sécurité et les protections mises en place.

✅ Dans notre cas, nous avons découvert du code caché avec malfind. C'est donc
une combinaison d'une technique d'injection de code – car c'est du code injecté
dans un autre fichier (ici un fichier PDF) – et d'obfuscation de code, car le code
était dissimulé dans un objet du fichier afin de retarder l'analyse.
Credential Access
L'accès aux informations d'identification représente un ensemble de techniques
permettant d'accéder aux informations d'identification du système, du domaine ou du
service, ou de les contrôler dans un environnement d'entreprise. Les adversaires
tenteront probablement d'obtenir des informations d'identification légitimes
d'utilisateurs ou de comptes d'administrateur (administrateur système local ou
utilisateurs du domaine disposant d'un accès administrateur), à utiliser sur le réseau.

❓ Dans notre cas, l'accès au poste cible a permis à l'utilisateur de récupérer les
identifiants du compte. Aucun faux compte n'a été découvert pendant l'analyse.

Discovery
La découverte consiste en des techniques permettant à l'adversaire d'acquérir des
connaissances sur le système et le réseau interne. Lorsqu'ils ont accès à un
nouveau système, les attaquants doivent découvrir ce qu'il est et comment il
fonctionne.

❓ Dans notre exemple, aucune technique de Discovery n'a été découverte.

Lateral Movement
Le mouvement latéral consiste en des techniques permettant à un attaquant
d'accéder à des systèmes distants sur un réseau et de les contrôler. Il peut inclure
l'exécution d'outils sur ces systèmes distants. Les techniques de déplacement latéral
pourraient permettre à un adversaire de collecter des informations d'un système sans
avoir besoin d'outils supplémentaires, tels qu'un outil d'accès à distance.

❓ Dans notre cas, il semblerait que l'attaquant n'ait compromis que la machine
investiguée.

Collection
La collection consiste en des techniques permettant d'identifier et de rassembler des
informations, telles que des fichiers sensibles, à partir d'un réseau cible avant
l'exfiltration. Cette catégorie couvre également les emplacements sur un système ou
un réseau où l'adversaire peut rechercher des informations pour exfiltrer des
données.

❓ Aucun point de collection n'a été identifié durant l'analyse.

Command and Control


La tactique de commande et de contrôle montre comment les adversaires
communiquent avec les systèmes sous leur contrôle au sein d'un réseau cible. Un
adversaire peut établir le commandement et le contrôle de différentes manières,
selon la configuration du système et la topologie du réseau. En raison du large degré
de variation disponible pour l'adversaire au niveau du réseau, seuls les facteurs les
plus courants ont été utilisés pour décrire les différences de commandement et de
contrôle. Les méthodes documentées contiennent encore de nombreuses techniques
spécifiques, dues en grande partie à la facilité avec laquelle il est possible de définir
de nouveaux protocoles et d'utiliser des protocoles et des services réseau légitimes
existant pour la communication.

✅ Nous avons identifié plusieurs connexions vers une adresse IP distante sur le port
4444, généralement utilisé pour Metasploit.

Exfiltration
L'exfiltration consiste à voler des données, les altérer ou les supprimer. L'attaquant pourra
utiliser des techniques pour masquer ces actions, vous ne saurez donc peut-être pas s'il l'a
réellement fait ou pas !

❓ L'attaquant a eu accès ici à tous les fichiers de la machine compromise, il a


potentiellement supprimé, altéré ou volé des informations !

Impact
La tactique Impact représente des techniques dont l'objectif principal réduit directement la
disponibilité ou l'intégrité d'un système, d'un service ou d'un réseau. y compris la
manipulation de données, pour impacter une activité ou un processus opérationnel. Ces
techniques peuvent représenter l'objectif final de l'adversaire ou fournir une couverture en
cas de violation de la confidentialité.

En résumé
Nous venons de voir comment identifier les indicateurs de compromission et comment les
répertorier dans votre rapport d’incident. Enfin, nous avons découvert la matrice
ATT&CK qui nous permet de caractériser et d’identifier le mode opératoire d’une attaque.

Il ne vous reste plus qu'à créer votre rapport final contenant tous les éléments mis en
exergue.
Structurez votre rapport d’investigation
Après avoir analysé les informations collectées, il est crucial de répertorier vos
investigations de manière claire et concise dans un rapport d’investigation. Dans
ce chapitre, nous verrons comment rédiger et structurer votre rapport d’investigation.

Pourquoi rédiger un rapport d’investigation ?


Le rapport d’investigation est le document qui récapitule vos analyses et vos
conclusions. Il se base sur des faits analysés et mis en exergue par votre
investigation. Il se doit d’être documenté avec le plus de détails possible. Il doit
également comporter une synthèse et des recommandations, ainsi que la liste des
indicateurs de compromission qui permettront d’identifier d’autres machines
infectées.

Son objectif : communiquer vos observations et votre analyse aux personnes


concernées. Ça pourra être le responsable de la sécurité du SI de votre entreprise si
ce n'est pas vous, le DSI lui-même, ou les experts en cybersécurité qui vont
implémenter vos recommandations. Il pourra également être lu par d'autres
décideurs, notamment du service concerné par l'attaque. C'est pourquoi le résumé,
plus accessible par des personnes moins techniques, est très important.

Attention, dans certains cas (voire dans tous), le rapport d'investigation sera
confidentiel car il présentera des informations sensibles concernant la sécurité du
SI. Vous ne serez autorisé à le communiquer qu'à un faible nombre de personnes.
Assurez-vous de ne pas le communiquer à n'importe qui !
Le rapport devra être le plus compréhensible possible par ce type de personnes.

Respecter la structure du rapport d’investigation


Le rapport devra respecter une structure définie qui détaillera vos investigations.
Voici ci-dessous un exemple de plan à respecter :

1. Page de garde.
2. Sommaire.
3. Résumé des investigations, rappel du contexte et des conclusions.
4. Détail des investigations :
o phase de collecte et hash (copie d’écran, photos) ;
o analyse réalisée et mise en exergue des découvertes (copie d’écran,
photos).
5. Hypothèse de l’analyse.
6. Recommandations.
7. Liste des indicateurs de compromission.
1. Page de garde
La page de garde doit permettre d’identifier le contenu de l’analyse. La date, le titre
et les auteurs du document doivent figurer dessus.

2. Sommaire
Le sommaire doit contenir les références aux pages du document.
3. Résumé
Le résumé est une des parties les plus importantes. Cette page est destinée aux
managers et aux décideurs qui n’ont pas forcément de connaissance technique.
Le résumé doit présenter de manière succincte l’incident, les analyses menées et les
conclusions. C’est également à cet endroit que l’on mettra la chronologie de
l’incident.

4. Détails des investigations


Cette partie doit être le plus détaillée possible et répertorier toutes les actions
menées pendant votre analyse. Elle doit suivre un fil directeur. Il faudra également
ajouter les copies d’écran de vos analyses.

5. Hypothèse de l’analyse
Dans cette partie doivent figurer vos hypothèses ou conclusions sur l’analyse :
que pensez-vous qu'il s'est passé sur le poste infecté ? Quels sont les risques pour
l'entreprise ?

6. Les recommandations
Les recommandations sont une partie très importante qui permet de suggérer
des mesures correctrices à mettre en place pour ne pas qu’un incident similaire se
reproduise.

7. Liste des indicateurs de compromission


Il faudra ici fournir des détails sur les indicateurs de compromission qui
caractérisent l'attaque. Chaque élément permettra de démontrer le cheminement de
votre analyse et de justifier vos hypothèses.

Bien entendu, cette structure est une proposition et il faudra potentiellement adapter
le rapport en fonction de l’incident de sécurité auquel vous serez confronté.
En résumé
Le rapport d’analyse est une partie très importante de l’investigation, car il permet
de centraliser vos analyses ; c’est également le document qui gardera la trace de
l’incident. Il est donc crucial pour l’entreprise dans le cadre de leur base de
connaissance.

Vous aimerez peut-être aussi