Date post: | 16-Apr-2017 |
Category: |
Technology |
Upload: | thomas-roccia |
View: | 240 times |
Download: | 6 times |
Ce document est disponible sous Licence Creative Commons
Mémoire de recherche appliquée
Contribution à l’investigation numérique
Les méthodes de forensic
Comment mener à bien une investigation numérique et corréler les
données extraites ?
Thomas ROCCIA
Julien SOUPPOD
Sécurité Informatique
Maître de Mémoire : Kamal HENNOU
5A 2014
Mémoire de recherche appliquée 2014
Page 1
Résumé
L’utilisation massive des technologies de l’information et le développement de la cybercriminalité, a
conduit à créer une nouvelle branche dans le domaine de l’informatique : l’investigation numérique.
Le forensic est une suite de méthodes d’investigation qui permet de collecter des preuves
numériques dans une enquête judiciaire ou de traiter un incident lié à une attaque sur un système.
A travers ce document de recherche appliquée, nous nous sommes interrogés sur la manière de
mener une investigation numérique en utilisant les méthodes de forensic et sur les moyens
d’analyser et corréler les données extraites d’un système.
Nous avons élaboré ce document comme un guide pratique permettant aux enquêteurs d’avoir une
vision globale des méthodologies d’investigation (CTOSE, Digital Forensic Process, McKemmish) à
travers différents supports numériques (disque dur, mémoire vive, SSD).
Un focus a également été porté sur les aspects légaux dans un contexte national et international.
Tout au long de cette étude vous découvrirez les étapes d’une investigation numérique avec une
démonstration de certains outils spécialisés (Volatility, FTK, EnCase…) ainsi que les techniques
utilisées pour complexifier le travail des enquêteurs aussi appelées anti-forensic. Un chapitre a été
consacré à l’utilisation de ces techniques sur une analyse de malware.
Enfin nous avons choisi de terminer ce document sur la création d’une boite à outils installée sur une
clef USB, comprenant une partition multiboot ainsi qu’une suite d’utilitaires pour mener une
investigation sur n’importe quel système. Cette boite à outils est ouverte et permet à l’utilisateur d’y
inclure ces propres outils.
L’analyse forensic est un domaine technologique en plein développement du fait de la rivalité entre
ceux qui veulent voler et ceux qui veulent protéger les données des entreprises ou des particuliers.
Il constitue à ce jour une des meilleures approches pour la traque des cybercriminels et la protection
de nos données.
Mots clefs
Investigation Numérique Malware Reverse Engineering
Forensic
Post-mortem Méthodologie Anti-forensic Cybercriminalité Guide pratique
Mémoire de recherche appliquée 2014
Page 2
Abstract
The massive use of information technologies and the growth of cyber criminality create a new branch
in computing science: digital investigation.
This branch named « forensic » is made of a suite of investigation methods with the aim to collect
digital proofs in case of judicial inquiry or fix a system attack.
With this document of applied research, we question ourselves about the way to develop a digital
investigation by using forensic methods and the resources to analyze and correlate extracted datas
from a system.
We elaborate this document as a user guide for investigators to give an overview of investigation
methods (CTOSE, Digital Forensic Process, McKemmish) applied to several digital storage items such
like hard drives, live memories and SSD.
We also complete this document focusing on national and international legal aspects.
Reading this study, you will go through a step by step digital investigation with demonstrations of
specialized dedicated tools (Volatility, FTK, EnCase…) and common techniques used to lose the
investigators named anti-forensic. A chapter has been dedicated to the use of those techniques
applied to a malware analysis.
Finally, we conclude this document giving a toolbox available in an USB key which contains a multi
boot partition and a suite of software tools to do a digital investigation on any known system. This
toolbox is open to welcome tools developed by the user.
The forensic analysis is a growing domain due to the competition between hackers and investigators.
The first ones want to corrupt or steal datas and the other ones want to protect data of companies
and private users.
This is the best way to track hackers and protect data.
Keywords
Investigation Digital Malware Reverse Engineering
Forensic
Post-mortem Methodology Anti-forensic Cybercriminality User guide
Mémoire de recherche appliquée 2014
Page 3
Remerciements
Nous souhaitons adresser nos remerciements les plus sincères aux personnes qui nous ont apporté
leur aide et qui ont contribué à l’élaboration de ce document.
Ces remerciements vont tout d’abord au corps professoral et administratif de l’Ecole Supérieur de
Génie Informatique et plus particulièrement à Monsieur Kamal HENNOU, pour son accompagnement
tout au long de la rédaction de ce document.
Nous remercions également Monsieur Hubert BITAN et ses collaborateurs pour nous avoir reçus et
conseillés sur les techniques et méthodes de l’investigation numérique.
Mémoire de recherche appliquée 2014
Page 4
Sommaire Résumé .................................................................................................................................................... 0
Abstract ................................................................................................................................................... 2
Remerciements ....................................................................................................................................... 3
Sommaire ................................................................................................................................................ 4
Licence Creative Commons ..................................................................................................................... 9
Préambule ............................................................................................................................................. 10
Introduction ........................................................................................................................................... 11
Chapitre I : Définition du forensic ......................................................................................................... 12
I.1 – Étymologie et usage .................................................................................................................. 12
I.2 – De la médecine à l’informatique ............................................................................................... 12
I.3 – Le cadre légal ............................................................................................................................. 14
Chapitre II : La méthodologie d’investigation ....................................................................................... 17
II.1 – Etat de l’art ............................................................................................................................... 17
A – La méthode McKemmish ......................................................................................................... 17
B – Le projet CTOSE ....................................................................................................................... 18
C – L’approche Smith et Petreski (DEFCON) .................................................................................. 18
D – Digital Forensic Process ........................................................................................................... 18
II.2 – Les supports numériques ......................................................................................................... 19
A – Disque Dur magnétique........................................................................................................... 19
B – Disque Dur « solides « (SSD) .................................................................................................... 22
C – Mémoire vive (RAM) ............................................................................................................... 25
II.3 – Les outils utilisés pour l’analyse forensic ................................................................................. 26
A – EnCase ..................................................................................................................................... 26
B – FTK (Forensic ToolKit) .............................................................................................................. 27
C – DFF (Digital Forensic Framework) ........................................................................................... 27
D – Les bloqueurs en écriture ........................................................................................................ 28
II.4 – Proposition d’une méthodologie .............................................................................................. 29
Chapitre III : Les méthodes de forensic ................................................................................................. 31
III.1 – Calcul de condensat ................................................................................................................. 31
III.2 – Acquisition et analyse de la mémoire volatile ......................................................................... 34
A – Acquisition de la mémoire volatile .......................................................................................... 34
B – Analyse de la mémoire volatile ............................................................................................... 37
III.5 – Acquisition et analyse de la mémoire non-volatile ................................................................. 42
Mémoire de recherche appliquée 2014
Page 5
A – Acquisition de la mémoire non-volatile .................................................................................. 42
B – Monter une image ................................................................................................................... 44
C – Analyse de la mémoire non-volatile ........................................................................................ 46
Chapitre IV : Les méthodes anti-forensic .............................................................................................. 60
IV.1 – Stéganographie ....................................................................................................................... 60
IV.2 – Formatage Sécurisé ................................................................................................................. 61
A – Effacement des disques durs magnétiques ............................................................................. 62
B – Effacement des disques flash, SSD .......................................................................................... 63
C – Effacement de mémoire vive .................................................................................................. 63
D – Effacement sécurisé au niveau matériel ................................................................................. 63
IV.3 – Falsification de Timestamp ..................................................................................................... 63
IV.4 – Cryptographie .......................................................................................................................... 67
A – Détection de partition ou conteneur chiffré ........................................................................... 67
B – Récupération de mot de passe ................................................................................................ 70
IV.5 – Obfuscation de code et packers .............................................................................................. 73
A – Obfuscation ............................................................................................................................. 73
B – Packers ..................................................................................................................................... 74
Chapitre V : Analyse de malware .......................................................................................................... 75
V.1 – Définition et types de malwares .............................................................................................. 75
V.2 – Création d’un environnement d’analyse .................................................................................. 77
V.3 – Etude de cas : le malware NjRAT .............................................................................................. 80
A –Création du programme malveillant ........................................................................................ 82
B – Analyse statique ...................................................................................................................... 85
C – Analyse dynamique ................................................................................................................. 94
Chapitre VI : Création d’un outil .......................................................................................................... 108
VI.1 – Le multiboot USB ................................................................................................................... 108
VI.2 – RocFor : l’utilitaire « Live » .................................................................................................... 110
Conclusion ........................................................................................................................................... 112
Annexes ............................................................................................................................................... 113
A – Options Volatility ....................................................................................................................... 113
B – Script Hash.py ............................................................................................................................ 115
C – Script ForPower.ps1 .................................................................................................................. 117
D – Référence et bibliographie ........................................................................................................ 122
Mémoire de recherche appliquée 2014
Page 6
Sommaire des tableaux
Tableau 1 - Représentation de la méthode d’allocation contigus ........................................................ 20
Tableau 2 - Représentation de la méthode d’allocation par lien .......................................................... 20
Tableau 3 - Représentation de la méthode d’allocation indexée ......................................................... 21
Tableau 4 - Représentation de la méthode par stratégie de stockage ................................................. 21
Tableau 5 - Temps de rémanence des données contenues dans la RAM ............................................. 35
Tableau 6 - Liste des fichiers relative aux emails .................................................................................. 57
Tableau 7 - Localisation des fichiers de configuration .......................................................................... 57
Tableau 8 - Comment accéder aux en-têtes d’emails ........................................................................... 59
Tableau 9 - Représentation des différents type d’effacement ............................................................. 61
Tableau 10 - Temps de cassage d’un mot de passe en fonction de sa complexité ............................... 72
Tableau 11 - Configuration de la machine infectée .............................................................................. 78
Tableau 12 - Configuration des autres machines .................................................................................. 79
Tableau 13 - Empreinte des 3 malware générés ................................................................................... 84
Tableau 14 - Extraction de la commande strings .................................................................................. 86
Tableau 15 - DLL utilisé par les keyloggueurs ........................................................................................ 88
Tableau 16 - Fichier créer par le malware ............................................................................................. 95
Tableau 17 - Clef de registre créer par le malware ............................................................................... 96
Tableau 18 - DLL nécessaire au fonctionnement du malware .............................................................. 96
Tableau 19 - Flux réseau du malware décodé ....................................................................................... 99
Sommaire des figures
Figure 1 - Les domaines de l’investigation numérique.......................................................................... 13
Figure 2 - Schéma général d’un disque dur ........................................................................................... 19
Figure 3 - Charge magnétique à la surface d’un disque ........................................................................ 20
Figure 4 - Schéma d’un disque dur SSD ................................................................................................. 22
Figure 5 - Représentation d’une cellule mémoire ................................................................................. 23
Figure 6 - Fonctionnement de TRIM ...................................................................................................... 24
Figure 7 - Représentation d’une barrette mémoire RAM ..................................................................... 25
Figure 8 - Interface d' EnCase ................................................................................................................ 26
Figure 9 - Interface de FTK..................................................................................................................... 27
Figure 10 - Interface de DFF .................................................................................................................. 28
Figure 11 - Bloqueur en écriture ........................................................................................................... 28
Figure 12 - Méthodologie d’une investigation numérique ................................................................... 30
Figure 13 - Principe de fonctionnement d’une fonction de hachage sur 3 entrées différentes ........... 31
Figure 14 - Calcul d’empreinte sous Linux ............................................................................................. 32
Figure 15 - Calcul de hash avec le script hash.py .................................................................................. 32
Figure 16 - Comparaison de hash avec le script hash.py ...................................................................... 33
Figure 17 - Copie de la mémoire vive avec l’utilitaire Dumpit .............................................................. 34
Figure 18 - Bombe à air sec ................................................................................................................... 35
Figure 19 - Gel de barrette mémoire .................................................................................................... 36
Figure 20 - Copie de la mémoire vive avec l’utilitaire MSRAWSDMP ................................................... 36
Figure 21 - Option imageinfo de Volatility ............................................................................................ 38
Figure 22 - Option pslist de Volatility .................................................................................................... 39
Figure 23 - Option memdump de Volatility ........................................................................................... 39
Figure 24 - Option procmemdump de Volatility ................................................................................... 39
Mémoire de recherche appliquée 2014
Page 7
Figure 25 - Liste des ruches systèmes avec l’option hivelist de Volatility ............................................. 40
Figure 26 - Extraction des hash avec l’option hashdump de volatility .................................................. 40
Figure 27 - Décryptage du hash NTLM .................................................................................................. 41
Figure 28 - Copie d’un disque dur avec l’utilitaire dd ........................................................................... 42
Figure 29 - Copie d’un disque dur et calcul de condensat avec l’utilitaire dcfldd ................................ 43
Figure 30 - Copie d’une image virtuelle ESXi avec l’utilitaire esximager.pl........................................... 43
Figure 31 - Montage d’une image avec l’utilitaire mount ..................................................................... 44
Figure 32 - Conversion d’une image en vmdk ....................................................................................... 45
Figure 33 - Interface de Forensic Registry Editor .................................................................................. 47
Figure 34 - Affichage chronologique avec UserAssist ........................................................................... 48
Figure 35 - Utilisation de log2timeline .................................................................................................. 48
Figure 36 - Utilisation de photorec ........................................................................................................ 49
Figure 37 - Récupération de fichier jpg avec foremost ......................................................................... 49
Figure 38 - Récupération de tout type de fichier avec foremost .......................................................... 49
Figure 39 - Récupération de l’historique de navigation avec Browser Forensic Tool ........................... 50
Figure 40 - Extraction de mot de passe avec BrowserPasswordDump ................................................. 51
Figure 41 - Analyse de trace réseau avec Wireshark ............................................................................ 52
Figure 42 - Traces d’une activité d’envoi d’informations a un serveur Web (méthode POST) ............. 53
Figure 43 - Analyse d’une capture réseau avec Xplico .......................................................................... 53
Figure 44 - Analyse de trame SSL avec OSPY ......................................................................................... 54
Figure 45 - IHM de Transend Migration, conversion depuis gmail vers pst .......................................... 55
Figure 46 - IHM de Nucleus, conversion des fichiers ost ...................................................................... 55
Figure 47 - Interface de Paraben’s, énumération des emails d’un fichier OST ..................................... 56
Figure 48 - Enumération des pièces jointes .......................................................................................... 56
Figure 49 - Exemple d’une en-tête d’email ........................................................................................... 58
Figure 50 - Détection de logciciel de stéganographie avec StegDetect ................................................ 61
Figure 51 - Effacement de données avec DBAN .................................................................................... 62
Figure 52 - Falsification des dates d’un fichier avec Timestomp .......................................................... 64
Figure 53 - Falsification des dates d’un document WORD avec Timestomp ........................................ 65
Figure 54 - Propriété du document WORD après modification du timestamp ..................................... 65
Figure 55 - Propriété du document WORD affiché dans Office Word après modification du timestamp
Figure 56 - Document WORD dissocié avec 7zip ................................................................................... 66
Figure 57 - Contenu du fichier XML ....................................................................................................... 66
Figure 58 - Création d’un conteneur TrueCrypt .................................................................................... 68
Figure 59 - Analyse de l’entête d’un conteneur TrueCrypt ................................................................... 69
Figure 60 - Détection d’un conteneur TrueCrypt avec TCHunt ............................................................. 69
Figure 61 - Détection d’une partition TrueCrypt avec EDD ................................................................... 70
Figure 62 - Attaque simple sur un mot de passe avec John The Ripper ............................................... 71
Figure 63 - Attaque par dictionnaire sur un mot de passe avec John The Ripper ................................ 71
Figure 64 - Reset du mot de passe BIOS avec CmosPWD ..................................................................... 72
Figure 65 - Détection du packer UPX avec hexdump ............................................................................ 74
Figure 66 - Représentation de la diffusion de malware ........................................................................ 75
Figure 67 - Schéma de l’environnement d’analyse ............................................................................... 78
Figure 68 - Malware NjRAT/Bladabindi recensé fin 2013 ..................................................................... 80
Figure 69 - Interface de commande et de contrôle du malware .......................................................... 81
Figure 70 - Fonctionnalité du malware NjRAT ....................................................................................... 81
Mémoire de recherche appliquée 2014
Page 8
Figure 71 - Emplacement du « Builder » ............................................................................................... 82
Figure 72 - Fenêtre de configuration du Malware ................................................................................ 82
Figure 73 - Utilisation du packer Themida ............................................................................................ 83
Figure 74 - Représentation des 3 versions du malware ........................................................................ 84
Figure 75 - Utilisation de l’outil file ....................................................................................................... 85
Figure 76 - Analyse des dépendances DLL du malware non packé ....................................................... 87
Figure 77 - Analyse des dépendances DLL du malware packé .............................................................. 88
Figure 78 - Détection de packer avec PEiD ............................................................................................ 90
Figure 79 - Détection de packer avec Stud_PE ...................................................................................... 91
Figure 80 - Détection de packer avec RDG Packer Detector ................................................................. 91
Figure 81 - Interface d' IDA pro ............................................................................................................. 92
Figure 82 - Analyse du code du malware avec CodeReflect ................................................................. 92
Figure 83 - Extraction du code contenant certaines informations du malware ................................... 93
Figure 84 - Analyse du processus du malware avec ProcessExplorer ................................................... 94
Figure 85 - Analyse de l’activité du malware avec Process Monitor ..................................................... 95
Figure 86 - Extrait du fichier du keyloggueur ........................................................................................ 95
Figure 87 - Contenu de la clef de registre créé par le malware ............................................................ 96
Figure 88 - Activité réseau du malware ................................................................................................. 97
Figure 89 - Activité réseau du malware ................................................................................................. 97
Figure 90 - Flux réseau échangé par le malware lors de son exécution ............................................... 98
Figure 91 - Récupération des informations échangées ......................................................................... 98
Figure 92 - Flux réseau de la fonctionnalité de gestion des fichiers ..................................................... 99
Figure 93 - Flux réseau de la fonctionnalité d’exécution de fichier .................................................... 100
Figure 94 - Flux réseau de la fonctionnalité bureau à distance .......................................................... 100
Figure 95 - Flux réseau de la fonctionnalité caméra à distance .......................................................... 101
Figure 96 - Capture d’écran de la caméra (côté C&C) ......................................................................... 101
Figure 97 - Flux réseau de la fonctionnalité terminal distant ............................................................. 102
Figure 98 - Flux réseau de la fonctionnalité gestion des processus .................................................... 102
Figure 99 - Flux réseau de la fonctionnalité d’accès au registre ......................................................... 103
Figure 100 - Extrait du fichier relatif au Keyloggueur.......................................................................... 103
Figure 101 - Flux réseau de la fonctionnalité Keyloggueur ................................................................. 104
Figure 102 - Flux réseau de la fonctionnalité messagerie instantanée ............................................... 104
Figure 103 - Flux réseau de la fonctionnalité de récupération de mot de passe ................................ 105
Figure 104 - Trame réseau de récupération des mots de passe ......................................................... 105
Figure 105 - Copie d’écran de l’extraction des mots de passe ............................................................ 106
Figure 106 - Réplication du malware sur une clef USB ....................................................................... 106
Figure 107 - Propriété du malware répliqué ....................................................................................... 107
Figure 108 - Copie d’écran du multiboot USB ..................................................................................... 108
Figure 109 - Copie d’écran de l’utilitaire RocFor ................................................................................. 111
Mémoire de recherche appliquée 2014
Page 9
Licence Creative Commons
Cette œuvre, création, site ou texte est sous licence Creative Commons Attribution -
Partage dans les Mêmes Conditions 4.0 International. Pour accéder à une copie de cette
licence, merci de vous rendre à l'adresse suivante http://creativecommons.org/licenses/by-
sa/4.0/deed.fr ou envoyez un courrier à Creative Commons, 444 Castro Street, Suite 900,
Mountain View, California, 94041, USA.
Droits intellectuels et usage des noms et marques déposées :
L’usage des noms, marques produits et logos, personnes physiques ou morales figurants dans
le présent document se fait sous couvert de la tolérance accordée en matière de rédaction de
mémoires ou d’études journalistiques en vertu du droit à l’information et ce dans le respect
de la dignité humaine et de la vie privée ni sans porter atteinte aux entreprises ou
organisations détentrices des brevets, marques et modèles cités dans cet ouvrage.
Mémoire de recherche appliquée 2014
Page 10
Préambule
L’utilisation massive des technologies de l’information et le développement de la cybercriminalité a
conduit à la création d’une nouvelle branche dans le domaine de l’informatique : l’investigation
numérique.
Les techniques et méthodes d’investigation ne cessent d’évoluer et la diversité des supports
numériques implique de suivre des règles et des procédures strictes, nécessaires à la recherche, la
conservation et l’interprétation des données extraites.
Cette branche initialement exercée par des experts judiciaires de la police nationale ou de la
gendarmerie à des fins de perquisition numérique, s’étend et se développe au secteur privé dans le
cadre d’audit de sécurité et de réponse à incident. Encore relativement nouvelle en France,
l’investigation numérique est de plus en plus demandée par des sociétés privées telles que les
banques et les multinationales.
Ainsi de nombreuses sociétés spécialisées en sécurité informatique ont développé cette activité pour
répondre à la demande croissante des entreprises. Certaines en ont fait leur cœur de métier en
créant des outils spécialisés et reconnus comme AccessData ou Arxys. D’autres encore telles que
LEXSI ou XMCO sont allées jusqu’à développer des offres spécialisées.
L’objectif de ce document est de traiter les différentes techniques d’investigation en apportant une
méthodologie basée sur les principes existants. Il a pour but de guider l’expert en charge de
l’investigation au moyen de règles dites de « bonnes pratiques » mais également de faire découvrir
les méthodes de forensic à toutes les personnes désirant développer leurs compétences dans ce
domaine. Un chapitre sera également consacré à l’analyse de malware qui est une branche
spécifique de l’investigation numérique.
Mémoire de recherche appliquée 2014
Page 11
Introduction
A l’heure où la sécurisation des données est une des préoccupations principales et où les systèmes
informatiques sont de plus en plus piratés, l’informatique légale ou « computer forensic » apparait
comme une méthode d’investigation permettant d’identifier les traces laissées par une intrusion et
de rassembler les preuves numériques.
Souvent utilisée dans le cadre d’enquêtes criminelles ou en réponse à incident, l’analyse forensic
peut également être effectuée en laboratoire afin d’étudier le comportement de malwares ou autres
logiciels malveillants. Egalement utilisée pour le recouvrement de données, on retrouve cette
discipline dans les salles blanches pour extraire des données difficilement récupérables.
La diversification des supports numériques (Disque Dur, Mémoire vive, Smartphone…), complexifie
les recherches et les analyses. Il convient donc de maîtriser les différentes techniques d’investigation,
afin de collecter et corréler les informations le plus justement possible.
C’est dans un contexte de « cybercriminalité » ascendante, que ces méthodes apportent un appui
considérable à la lutte contre le cyber-crime.
Notre recherche se déroulera selon le schéma suivant :
Dans un premier temps nous définirons l’analyse forensic et le cadre légal associé.
Nous ferons ensuite un état de l’art des méthodologies existantes et présenterons les
différents supports numériques ainsi que les produits phare du marché.
Ce chapitre se terminera par une proposition d’une méthodologie d’investigation.
Notre troisième partie sera consacrée à la démonstration des techniques nécessaires à
l’investigation numérique.
Dans la quatrième partie nous aborderons les méthodes utilisées pour faire obstacle au
travail des enquêteurs dans leur investigation aussi appelées « l’anti-forensic ».
Dans la cinquième partie, nous appliquerons les méthodes de forensic sur un malware,
en utilisant notamment des techniques de rétro ingénierie (reverse engineering).
Enfin, nous proposerons un outil dédié aux analyses forensic.
Nous traiterons l'investigation numérique, principalement sur des systèmes Windows, car il s'agit du
système le plus utilisé en entreprise.
Mémoire de recherche appliquée 2014
Page 12
Chapitre I : Définition du forensic
I.1 – Étymologie et usage Le terme « forensic » vient du latin « forēnsis » qui signifie « Avocat, Défenseur ». A l’époque romaine
le défenseur présentait le cas devant la justice, les arguments et les preuves énoncés déterminaient
l’issue du procès. Cette origine est la base de deux utilisations modernes du terme « forensic » :
Une preuve légale,
Une argumentation publique.
Aujourd’hui le terme « forensic » est synonyme du terme « légal » et est fortement associé au
domaine scientifique et notamment à la médecine légale.
Dans la littérature informatique on retrouve différentes orthographes pour désigner l’investigation
numérique. Le mot « forensic » vient de l’anglais : « computer forensic », mais on voit souvent écrit
« forensique » ou encore « inforensique » (contraction du mot « informatique » et « forensique »).
Etant donné qu’il n’existe à ce jour aucune traduction française officielle nous utiliserons par
conséquent le terme « forensic » dans ce document.
I.2 – De la médecine à l’informatique Comme énoncé ci-dessus, l’analyse forensic fait référence à la médecine légale qui permet de
déterminer les causes d'un décès, au moyen d'analyses approfondies et complexes.
Ainsi la médecine légale comporte trois champs d'activité :
La médecine légale judiciaire : principalement utilisée dans le cadre d'enquêtes judiciaires,
elle aide à définir les conditions et les causes d'un décès au moyen de l'autopsie médico-
légale.
La médecine légale clinique : elle consiste à étudier la victime. Utilisée dans les sciences
criminelles, elle vise à définir les origines d'un décès, ou comment est survenu l'acte
délinquantiel.
La médecine légale scientifique : elle consiste à étudier les mécanismes et les aspects
médicaux légaux de la mort. elle permet ainsi d'identifier les changements corporels qui
accompagnent la mort et la période post-mortem. On parle ici de science thanatologique.
Ces différents aspects de la médecine légale sont principalement utilisés dans le cadre d'enquêtes
judiciaires ou de recherches scientifiques La médecine légale permet donc de définir les causes d'un
décès et de rassembler les différentes preuves, nécessaires à une action en justice.
Dans le cadre de la recherche scientifique elle permettra de mettre en place des vaccins (analyse de
virus) ou encore de découvrir les faiblesses immunitaires d'une personne.
Mémoire de recherche appliquée 2014
Page 13
Par analogie, l'analyse forensic en informatique s'inspire de ces méthodologies et techniques. Basée
sur les mêmes principes, l'investigation numérique consiste à utiliser des techniques spécialisées
dans la recherche, la collecte et l'analyse de données issues de supports numériques.
Tout comme la médecine légale, l’investigation numérique peut être divisée en trois champs
d’activité :
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 à incident : elle vise à identifier les conditions et les origines
d’une attaque informatique, quel est le canal infecté 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 malfaisant, afin d’identifier les méthodes
utilisées par les assaillants pour pénétrer et compromettre un réseau informatique.
Les analyses sont souvent réalisées dans un environnement maîtrisé (sandbox) afin d’éviter
une infection totale du système hôte.
Figure 1 - Les domaines de l’investigation numérique
Les objectifs poursuivis par une analyse forensic sont donc variés. On peut schématiquement définir
l’analyse forensic comme un moyen de sanctionner (judiciaire) et de réparer (réponse à incident) des
actes de malveillance sur un système informatique mais également de les anticiper (R&D) pour une
meilleure sécurité.
Mémoire de recherche appliquée 2014
Page 14
I.3 – Le cadre légal L’étendu d’Internet et des nouvelles technologies est très complexe à encadrer d’un point de vue
juridique ; il est en effet difficile d’identifier d’une part l’auteur de l’infraction sur Internet et d’autre
part, de collecter les preuves de l’infraction. Le fautif pourra très facilement déplacer, supprimer ou
rendre inaccessible les preuves de son infraction, d’autant plus si les données sont hébergées sur des
serveurs à l’étranger.
Afin de permettre aux autorités d’agir, la loi a dû s’adapter pour encadrer la collecte de preuves dans
l’environnement numérique international.
Le Conseil de l’Europe a d’ailleurs préconisé1 la création d’unités spécialisées requérant une expertise
en matière de technologie de l’information dans le but de mettre en application cette nouvelle
branche du droit.
Ci-dessous, les principales unités existantes pour agir dans le cadre de collecte de preuves
numériques :
L’IRCGN : Le département informatique de l’Institut de Recherche Criminelle de la
Gendarmerie Nationale a été créé en 1990. Il a pour mission de collecter des éléments
numériques pour les mettre à disposition des enquêteurs et des magistrats, et effectue des
expertises dans le cadre d’enquêtes judiciaires.
La BEFTI : La Brigade d’Enquêtes sur les Fraudes aux Technologies de l’information a été
créée en 1994. Sa mission consiste à lutter contre les atteintes aux systèmes de traitement
automatisés de données et la contrefaçon de logiciels ou matériels, ainsi que contre les
infractions liées à la loi informatique et libertés. Elle assiste aussi les autres services de la
police judiciaire dans la recherche de preuves numériques, lorsque celle-ci est confrontée à
un environnement informatique.
L’OCLCTIC : L’Office Central de Lutte contre la Criminalité liée aux Technologies de
l’Information et de la Communication a été institué par le décret du 15 mai 2000 pour
remplacer la Brigade Centrale de Répression de la Criminalité Informatique. Il a pour mission
de traiter toutes les formes de criminalité ayant recours aux nouvelles technologies.
Il existe d’autres organismes étatiques spécialisés dans les investigations cybercriminelles (DNRAPB,
ICC, STRJD, DGCCRF, le service Cyberdouane). Ces unités interviennent sur des périmètres bien
spécifiques de la cybercriminalité tels que la contrefaçon, la pédophilie ou encore les fraudes à la
consommation.
Tous ces organismes travaillent conjointement dans le but de faire appliquer la loi et protéger les
personnes victimes d’actes malveillants.
Mémoire de recherche appliquée 2014
Page 15
Des organismes similaires ont également vu le jour à l’étranger :
La National Hi-Tech Crime Unit (NHTCU) au Royaume-Uni.
Le Korps Landelijke Politiediensten (KLPD) et le Computer Emergency Response Team aux
Pays-Bas.
Le Bundeskriminalamt (BKA) en Allemagne.
Le Gruppo Anticrimine Tecnologico (GAT) en Italie
Le Grupo de Delitos Telematicos (GDT) en Espagne.
Afin de réaliser les collectes de données dans un environnement numérique, les lois des différents
pays confèrent des pouvoirs aux autorités de police et judiciaire. Cependant, ces pouvoirs
connaissent des limites car ils peuvent difficilement être appliqués en dehors du cadre national.
Malheureusement, le domaine de la cybercriminalité dépasse par nature les frontières, ce qui rend
complexe et délicat l’encadrement juridique de la collecte de preuves.
En France, plusieurs lois ont été adoptées dans ce domaine. Dans le cadre de saisies à l’occasion de
perquisitions, le Code de procédure pénale (articles 54, 56, 76, 97) autorise les officiers de police
judiciaire effectuant la perquisition à saisir tous les éléments ayant servi à l’infraction, ainsi les
supports informatiques peuvent être mis sous scellés. Il est également possible pour les officiers de
police d’accéder directement aux systèmes informatiques sur les lieux de la perquisition, pour
recueillir les éléments nécessaires à l’enquête.
La Loi pour la Confiance dans l’Economie Numérique du 21 juin 2004 apporte des précisions
complémentaires :
« Il est procédé à la saisie des données informatiques nécessaires à la manifestation de la vérité en
plaçant sous main de justice soit le support physique de ces données, soit une copie réalisée en
présence des personnes qui assistent à la perquisition. » (LCEN, Article 43)
« Si une copie est réalisée dans le cadre de cette procédure, il peut être procédé, sur ordre du juge
d'instruction, à l'effacement définitif, sur le support physique qui n'a pas été placé sous main de
justice, des données informatiques dont la détention ou l'usage est illégal ou dangereux pour la
sécurité des personnes ou des biens. « (LCEN, Article 43)
Le Code de procédure pénale (articles 77-1-1, 77-1-2, 60-2) prévoit également la réquisition des
données de connexion susceptibles de contenir des éléments intéressant l’enquête, tandis que la
LCEN (article 6-II bis) permet la conservation et la communication des données de connexion aux
autorités compétentes
L’article R. 15-33-62 du Code de procédure pénale, prévoit expressément que l’officier de police
judiciaire en charge de l’enquête, habilité par le responsable de service, peut demander aux
organismes fournisseurs de service internet (FAI, hébergeurs…), la communication de données à
caractère personnel des abonnés et utilisateurs.
Mémoire de recherche appliquée 2014
Page 16
Le déchiffrement des données est aussi prévu par le Code de procédure pénale à l’article 230-1.
« …lorsqu'il apparaît que des données saisies ou obtenues au cours de l'enquête ou de l'instruction
ont fait l'objet d'opérations de transformation empêchant d'accéder aux informations en clair qu'elles
contiennent ou de les comprendre, le procureur de la République, la juridiction d'instruction ou la
juridiction de jugement saisie de l'affaire peut désigner toute personne physique ou morale qualifiée,
en vue d'effectuer les opérations techniques permettant d'obtenir la version en clair de ces
informations ainsi que, dans le cas où un moyen de cryptologie a été utilisé, la convention secrète de
déchiffrement, si cela apparaît nécessaire. »
Enfin, l’article 156 du Code de procédure civile précise qu’un expert peut être mandaté par le
magistrat pour réaliser une investigation ou toute opération à caractère technologique nécessaire à
l’enquête. Cet expert intervient entre autres dans le but de caractériser des faits, d’analyser des
éléments de l’enquête, ou encore d’apporter son assistance lors de la perquisition.
Par ailleurs, en plus d’encadrer légalement la collecte de données dans un environnement
numérique, la Commission Européenne a créé la procédure CTOSE (Cybertools Online Search
Evidence), pour permettre aux enquêteur de collecter les preuves en respectant des règles de
bonnes pratiques, afin qu’elles soient recevables devant un tribunal.
On notera également que lors d’une investigation, il convient de préserver la preuve des données et
de faire appel à des techniques probatoires pour éviter tout risque de modification ou de destruction
des données par des fichiers pièges ou autres éléments destinés à corrompre les preuves.
Malgré les difficultés à réguler le domaine de l’informatique et des nouvelles technologies de
communication, la loi s’efforce de maintenir un équilibre entre la nécessité de réprimer les crimes et
délits qui constituent la cybercriminalité, et certains principes et libertés tels que la neutralité du net,
le respect du droit à la vie privée et la compétence territoriale des Etats.
Mémoire de recherche appliquée 2014
Page 17
Chapitre II : La méthodologie
d’investigation
II.1 – Etat de l’art A l’heure où nous écrivons ces lignes, il n’existe pas de méthodologie officielle pour mener une
investigation numérique, seulement des méthodes dites de « bonne pratique ». Cependant plusieurs
experts ont formalisé le processus d’investigation numérique laissant apparaître les prémices d’une
méthodologie.
A travers ce chapitre nous en étudierons quelques exemples. La liste présentée ci-dessous n’est
cependant pas exhaustive.
A – La méthode McKemmish Rodney McKemmish, expert Australien en forensic, a ainsi formalisé le processus d’investigation
d’une réponse à incident en 4 étapes.
1. L’identification de la preuve digitale : cette première partie consiste à identifier clairement le
média d’analyse ( disque dur, clef USB mais aussi Smartphone…).
L’identification permet à l’analyste de choisir les bons outils dès le début de l’investigation.
2. La préservation de la preuve digitale : dans le cas d’une présentation devant une cour de
justice, il est essentiel de conserver la preuve en l’état originel. Cette partie est indispensable
pour garantir l’intégrité et l’authenticité des données extraites.
3. L’analyse de la preuve digitale : cette troisième partie consiste à extraire les données dans le
but de les reconstruire, de les identifier et de les rendre compréhensibles pour un être
humain.
4. La présentation de la preuve digitale : pour qu’une preuve soit recevable devant une cour de
justice, l’analyste doit la présenter sous une forme compréhensible par une personne non
technicienne.
Rodney McKemmish dans son approche de la méthodologie d’investigation énonce également les règles à respecter par les logiciels d’investigation, pour garantir une recevabilité devant un tribunal.
Pas ou peu de modification des données d’origine,
Documentation de tout changement intervenu pendant l’analyse,
Le respect des règles de bon usage des outils.
Mémoire de recherche appliquée 2014
Page 18
B – Le projet CTOSE Le projet CTOSE (Cyber Tools On-line Search for Evidence) de la Commission Européenne a été mis en
place dans le but d’élaborer un modèle de processus destiné aux entreprises dans le cas d’un
incident informatique. L’objectif de ce projet est d’améliorer le processus d’investigation pour que
les preuves recueillies soit admissibles dans le cadre d’une procédure judiciaire.
Ainsi le projet CTOSE est regroupé sur 5 phases :
1. La phase de préparation
2. La phase d’exécution
3. La phase d’évaluation
4. La phase d’enquête
5. La phase d’apprentissage
C – L’approche Smith et Petreski (DEFCON) En 2010, deux experts en sécurité informatique, David C. Smith et Samuel Petreski de l’université de
Georgetown aux Etats-Unis ont également formalisé le processus d’investigation numérique et
proposé leur propre approche lors de la DEFCON (une des conférences de sécurité les plus réputées).
Leur méthode est basée sur trois composants.
1. La pré-analyse : définir le type de cas, les objectifs de l’analyse, et les exigences.
2. L’analyse : Sélection des méthodes optimales pour atteindre le but défini.
3. L’évaluation du temps de l’analyse : définir le temps d’analyse en fonction du but, de
l’expérience, du budget et de la taille des données.
D – Digital Forensic Process De nombreuses formalisations du processus d’investigation existent. Le modèle le plus utilisé
actuellement est nommé le « Digital Forensic Process » mis au point par Eoghan Casey. Ce dernier est
composé de 4 parties distinctes :
1. La saisie : cette étape correspond au moment où les différents média numériques sont saisis.
2. L’acquisition : elle consiste à extraire, dupliquer et conserver la preuve dans le but de ne pas
modifier l’original de la saisie.
3. L’analyse : Elle consiste à analyser et identifier les preuves de chaque support, afin d’en
extraire les éléments qui constitueront le dossier final. C’est lors de l’analyse que les
enquêteurs utiliseront les outils dédiés de l’investigation numérique.
4. La création du rapport : Après l’analyse des supports, les enquêteurs devront établir un
dossier comprenant tous les éléments de l’investigation et compréhensible par toutes les
personnes concernées par l’enquête.
Il existe de nombreuses autres méthodes pour mener une analyse forensic. Certaines plus
spécialisées sont destinées aux études en laboratoire mais peuvent également être appliquées dans
le cadre de réponse à incident.
Mémoire de recherche appliquée 2014
Page 19
Les méthodologies d’analyse de malware sont quelque peu différentes des méthodes de l’analyse
légale, néanmoins elles utilisent les mêmes procédés et les mêmes outils.
Nous traiterons l’analyse de malware dans le chapitre 5 de ce document.
II.2 – Les supports numériques Il existe différents supports numériques qui peuvent faire l’objet d’une investigation. Au préalable, il
est nécessaire pour l’analyste de comprendre le fonctionnement de ces supports.
A – Disque Dur magnétique Un disque dur magnétique est composé d’éléments mécaniques et électroniques. La partie
mécanique est composée de :
Plateaux circulaires double face, la plupart du temps en aluminium, recouvert d’un
revêtement magnétique.
Un axe rotatif qui supporte les disques entrainés par un moteur. La vitesse de rotation peut
aller de 5400 tours/min pour les disques d’ordinateurs personnels et jusqu’à 15000
tours/min pour des disques haute performance souvent employés pour le stockage de
données sur des serveurs.
Les têtes de lecture/écriture : pilotées par un bras leur permettant de pivoter et balayer
toute la surface des disques. Ces dernières ne sont jamais en contact avec la surface.
La partie électronique est en charge du transport des données entre la carte mère et les disques. Elle
est composée de :
un circuit électronique permettant de faire fonctionner les différents composants du disque.
un micro-processeur qui convertit les signaux électriques en signaux digitaux.
une mémoire cache qui traite les informations temporaires que le disque doit effectuer.
Figure 2 - Schéma général d’un disque dur
Les données sont stockées sur un disque dur magnétique sous forme d’une série de bits. Il s’agit de
charges magnétiques positives ou négatives. Elles sont ensuite converties en code binaire. Un disque
est composé de pistes, de cylindres et de secteurs. Une piste est un sillon gravé à la surface du
disque. On parle de cylindres lorsque des données sont stockées sur la même piste de différents
plateaux. Chaque piste est divisée en secteurs (le plus souvent un secteur fait 512 octets).
Mémoire de recherche appliquée 2014
Page 20
Figure 3 - Charge magnétique à la surface d’un disque
Au sein d’un disque dur il existe une table d’allocation de fichiers et des clusters. Un cluster est la
plus petite unité de stockage présente sur un disque dur, on l’appelle aussi unité d’allocation.
Un disque dur possède des milliers d’unités d’allocations. La table d’allocation répertorie les clusters
présents sur le disque et contient le statut de chacun d’eux. Un cluster peut présenter trois états
(disponible, réservé, ou défectueux). S’il est disponible, le système permet d’utiliser l’espace qu’il
occupe pour y stocker une information. Dans l’état réservé ou défectueux, aucune opération
d’écriture n’est possible. La table d’allocation référence aussi les clusters en groupe si un fichier est
stocké sur plusieurs d’entre eux.
Il existe trois méthodes d’allocation sur un disque :
1. La méthode d’allocation contigüe : les clusters se suivent les uns les autres. Elle est
aujourd’hui considérée comme obsolète, mais on la retrouve encore sur certains systèmes
d’exploitation industriels. Elle oblige à pré-allouer les clusters pour prévoir l’utilisation
grandissante de l’espace occupé par des fichiers, ce qui sous-entend une perte d’espace
disque, mais aussi des difficultés d’agrandissement du volume dans le cas où la pré-allocation
aurait été sous-dimensionnée.
Fichier A A A A B B B C C
Cluster 1 2 3 4 5 6 7 8 9
Tableau 1 - Représentation de la méthode d’allocation contigus
2. Méthode d’allocation par lien : chaque cluster contient, en plus de la donnée, un pointeur
vers la prochaine unité d’allocation. Les clusters n’ont donc pas besoin d’être contigus.
Fichier A A B A C A B B C
Cluster 1->2 2->4 3->7 4->6 5->9 6->1 7->8 8->3 9->5
Tableau 2 - Représentation de la méthode d’allocation par lien
Mémoire de recherche appliquée 2014
Page 21
3. Méthode d’allocation indexée : la méthode indexée est particulière en cela qu’elle est gérée
par le système d’exploitation qui indexe chaque cluster d’un même ensemble. Comme avec
la méthode par lien, les clusters n’ont pas à être contigus. Les systèmes de fichiers FAT et
NTFS utilisent la méthode d’allocation indexée.
INDEX
Fichier A Clusters : 1, 2, 4, 6 Fichier B Clusters : 3, 7, 8 Fichier C Clusters : 5, 9
Fichier A A B A C A B B C
Cluster 1 2 3 4 5 6 7 8 9
Tableau 3 - Représentation de la méthode d’allocation indexée
Une autre approche consiste à s’intéresser à la manière dont le système d’exploitation alloue
l’espace disque.
Il existe trois stratégies de stockage :
La stratégie du premier emplacement disponible : si un fichier occupe 3 clusters, le système
placera le fichier au cluster 2, puis au 5 et enfin au 7.
La stratégie du prochain emplacement disponible : le fichier sera stocké aux clusters 5, puis 7
et 8.
La stratégie du meilleur emplacement disponible : le système recherchera l’emplacement le
plus petit possible où le fichier pourra être stocké sans être fragmenté, c’est-à-dire aux
clusters 7, 8 et 9.
Etat Alloué Alloué Dernier alloué
Alloué
Cluster 1 2 3 4 5 6 7 8 9
Tableau 4 - Représentation de la méthode par stratégie de stockage
Dans le cadre d’une investigation, il est important de connaître les méthodes de stockage et les
stratégies utilisées par le système de fichier, notamment pour permettre de procéder à des analyses
de cohérence surtout en matière de falsification de dates.
Mémoire de recherche appliquée 2014
Page 22
B – Disque Dur « solides « (SSD) Un disque dur SSD est composé de puces électroniques, qu’on appelle aussi semi-conducteurs. La
majorité des constructeurs utilisent de nos jours des composants appelés mémoire flash. Les semi-
conducteurs sont réinscriptibles, c’est ce que l’on appelle une mémoire de masse. Contrairement à la
mémoire vive, les données ne disparaissent pas en cas de mise hors tension. La mémoire flash stocke
des bits de données dans des cellules de mémoire.
Puce
Cellule mémoire
Figure 4 - Schéma d’un disque dur SSD
Un SSD présente un avantage certain sur un disque dur magnétique, à savoir qu’il ne présente aucun
élément mécanique, ce qui le rend particulièrement résistant aux chocs. En revanche, en raison de la
présence de semi-conducteurs, il est nécessaire de limiter l’exposition d’un SSD à des rayonnements
électromagnétiques qui pourraient endommager les puces.
Au niveau de son interface, on trouve de nos jours des disques durs de types SATA, qui est l’interface
la plus utilisée dans les ordinateurs personnels, mais également des interfaces PCI Express haut de
gamme qui permettent d’améliorer encore de manière très significative les débits sur ce type de
composants.
Le processus d’écriture sur un SSD est très différent de celui d’un disque dur ordinaire, les stratégies
mentionnées lors de l’étude des disques durs ne s’appliquent pas. L’écriture sur un disque SSD ne se
fait pas simplement en écrasant la donnée comme pour un disque dur. Elle est en fait une suite de
bits qui sont eux-mêmes une charge électrique mémorisée par la cellule. Pour écrire dans une cellule,
le système doit effacer entièrement la page, qui contient plusieurs autres cellules, avant d’y inscrire
la donnée, ce qui entraîne un jeu de déplacement des données à l’intérieur des puces. Cela signifie
que le système ne réécrit pas nécessairement les données dans les mêmes cellules.
Mémoire de recherche appliquée 2014
Page 23
La structure générale d’un SSD est assez simple par rapport à un disque dur magnétique, elle se
compose d’un « control chip » qui contrôle les opérations du disque :
ECC Checking (Error Correction Code) est un protocole de vérification d’erreurs sur les blocs
après écriture.
Wear Leveling (Répartition d’usure) va répartir l’utilisation des blocs afin d’optimiser la durée
de vie du disque.
True FFS est le processus de vérification du nombre de lectures/écritures d’un bloc.
Aujourd’hui, on estime à 100000 lectures/écritures sur un bloc avant qu’il ne soit plus
utilisable.
On retrouve trois types de puces à base de mémoire flash dans le commerce:
NOR : C’est une mémoire à accès rapide, l’écriture à répétition est plus problématique, c’est
pourquoi les ROM (Read Only Memory) comme les BIOS utilisent plus généralement ce
format.
NAND : C’est le type de mémoire le plus utilisé, décris ci-dessous.
DRAM : C’est le type de puce le plus rapide. Il est la plupart du temps utilisé dans la mémoire
vive. Ses caractéristiques structurelles font que l’information disparait si ses condensateurs
ne sont pas stimulés par une charge électrique plus de quelques millisecondes.
Structure de la mémoire NAND
Un composant tel qu’une puce de mémoire Flash est composé d’un grand nombre de cellules de
stockage. Chaque cellule est en réalité composée de plusieurs éléments, une base matérielle en
silicium surmontée de ce que l’on appelle une « floating gate » et d’un « contrôl gate ».
La « floating gate » ou « barrière flottante » est utilisée dans tous les composants à base de mémoire
flash, pour sa capacité à stocker une charge électrique même sans alimentation pendant très
longtemps. Pour stocker cette charge, un transistor est la plupart du temps composé de plusieurs
éléments électroniques dont des condensateurs destinés à contrôler la tension délivrée.
Figure 5 - Représentation d’une cellule mémoire
Il existe deux technologies de puces à mémoire flash, SLC (Single Layer Cells) et MLC (Multi Layer
Cells). Les puces à base de SLC ne stockent qu’un seul bit à la fois, quand la MLC en stocke plusieurs.
La durée de vie est sensiblement différente et les temps d’accès sont également différents sans être
une caractéristique importante pour les performances. Nous nous attarderons sur les puces MLC.
Mémoire de recherche appliquée 2014
Page 24
Une puce MLC est constituée de plusieurs couches de cellules. Lors du processus d’écriture des
données, le système écrit sur toutes les couches. Les puces MLC peuvent donc stocker plus
d’informations que les SLC, pour une puce de taille identique.
Pour comprendre comment sont stockées les données, il faut connaitre la structure des puces MLC :
Il faut 8 cellules pour stocker un bit
16 cellules pour stocker un mot
Un secteur peut contenir entre 512 et 2048 bits
Un block fait 64 fois la taille d’un secteur
Un secteur a également 64 bits supplémentaires pour étiqueter le secteur
Une page est constituée de l’ensemble secteur plus un flag
Figure 6 - Fonctionnement de TRIM
La connaissance de la commande TRIM permet de comprendre comment fonctionne un SSD dans ses
processus d’écriture. La recherche de données après le passage de la commande TRIM est vaine dans
la mesure où les pages sont effacées après que le système a envoyé au contrôleur l’instruction de
libération des pages.
Il existe cependant une méthode qui consiste à dessouder les puces NAND et à analyser les
fragments de données. Toutefois, cette méthode n’a pas encore réellement fait ses preuves.
Mémoire de recherche appliquée 2014
Page 25
C – Mémoire vive (RAM) La mémoire vive, qu’on nomme en anglais RAM (Random Access Memory), possède des
caractéristiques différentes des autres types de mémoire, disque dur magnétique et SSD. La
principale étant le temps d’accès considérablement plus faible, c’est la raison pour laquelle les
données en traitement sont toujours stockées dans la RAM.
La mémoire RAM est prise en charge par une carte mère sur un support de type DIMM, et est reliée
par un BUS très rapide pour fournir les données au processeur. Une autre caractéristique très
importante de la RAM est sa volatilité, en effet, en l’absence d’un courant électrique, la mémoire
vive se vide de ses données, lorsque l’on éteint un ordinateur, les données en mémoire sont donc
perdues.
Dans la mémoire vive, les données sont organisées sous forme de mots de 8, 16, 32, ou 64 bits.
La connaissance de la volatilité de l’information sur la mémoire vive est d’un intérêt capital lors de
réponse à incident. Dans de très rares cas où un expert a la possibilité d’analyser un ordinateur
infecté ou subissant une attaque, l’analyse de la RAM peut s’avérer importante. Un attaquant
préfèrera charger les éléments infectieux en RAM afin de faire disparaitre ses traces lors du
redémarrage de la machine.
Figure 7 - Représentation d’une barrette mémoire RAM
Mémoire de recherche appliquée 2014
Page 26
II.3 – Les outils utilisés pour l’analyse forensic Les outils présentés ci-après sont ceux les plus utilisés et font partie des produits que les tribunaux
reconnaissent dans le cadre d’enquêtes où des supports numériques font l’objet d’analyse.
Ces outils sont retenus en fonction de leurs capacités à analyser et à préserver les objets. L’enquête
et l’analyse des supports ne doit pas altérer les éléments qui seront à terme présentés comme
preuves.
A – EnCase2 EnCase Forensic est une suite logicielle dédiée à l’investigation. Il dispose d’un moteur puissant
permettant la recherche rapide d’une grande variété de fichiers, de fournir un niveau de détail élevé
dans les rapports d’analyse et de préserver les données collectées.
C’est un logiciel très utilisé par les départements d’investigation numérique de la police et la
gendarmerie. Il constitue une des seules suites logicielles reconnues par les tribunaux pour la
recherche de preuves. Il supporte les analyses par mot clé, par comparaison d’empreintes et
implémente également son propre langage de scripting permettant ainsi le développement de ses
propres modules pour des analyses personnalisées.
Figure 8 - Interface d' EnCase
Mémoire de recherche appliquée 2014
Page 27
B – FTK (Forensic ToolKit)3 FTK (Forensic ToolKit) est une autre suite de logiciel dédiée à l’investigation. Elle est capable
d’analyser tous types de systèmes, (FAT 12/16/32, NTFS, EXT).
Elle fonctionne uniquement sur Windows. Elle est livrée avec un moteur de base de données
PostgreSQL qui indexe toutes les données présentes sur le support et réduit considérablement le
temps de réponse des analyses.
FTK est également capable d’analyser des images créées à partir d’autres outils comme EnCase.
Figure 9 - Interface de FTK
C – DFF (Digital Forensic Framework)4 DFF (Digital Forensic Framework) est une suite logicielle spécialisée dans la recherche forensic. C’est
un outil open source écrit en C++ et Python. C’est aussi une plateforme de développement qui
permet de créer ses propres modules pour des investigations personnalisées et très fines.
DFF permet l’acquisition et la corrélation d’éléments suspects, provenant de différents types de
supports, disques, mémoire vive, puces électroniques (téléphonie mobile, etc.).
De nombreux professionnels de l’informatique utilisent aussi DFF pour récupérer des données
supprimées.
Mémoire de recherche appliquée 2014
Page 28
Figure 10 - Interface de DFF
Il existe, en plus de ces différents logiciels, des distributions spécialisées dans la récupération de
données. Parmi les plus connues, SIFT et DEFT Linux, toutes deux basées sur Ubuntu et offrant un
environnement contenant de nombreux outils pour l’investigation numérique.
D – Les bloqueurs en écriture Les bloqueurs en écriture sont 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é. Il existe des bloqueurs en écriture matériel et logiciel.
Il est possible de se procurer un bloqueur en écriture auprès de sociétés spécialisées telles que
TRACIP5.
Figure 11 - Bloqueur en écriture
Un bloqueur en écriture matériel s’interpose entre le disque dur (la preuve) et le PC qui servira à
l’acquisition de l’image.
Mémoire de recherche appliquée 2014
Page 29
II.4 – Proposition d’une méthodologie La méthodologie présentée ci-dessous peut être appliquée dans le cadre de recherches en
laboratoire mais également sur le terrain lors d’une enquête ou d’une réponse à incident. Elle devra
être adaptée en fonction des besoins et de l’objectif poursuivi. En effet, u vol de données
confidentielles ne fera pas l’objet des mêmes techniques qu’une réponse à incident après un
piratage par exemple
1. Identification du contexte (Architecture réseaux, flux ouvert, heure, date, actions menées
par les utilisateurs ou les administrateurs) : Cette partie consiste à obtenir un maximum
d’informations de la part des utilisateurs, des administrateurs ou autres. Elle a pour but
d’identifier toutes les composantes du système d’information à analyser et de discerner les
éléments pouvant accélérer ou retarder l’analyse forensic (poste/serveur éteints après
intrusion : données volatiles effacées).
2. Copie et analyse de la mémoire RAM
a. Copie de la mémoire : réalisation d’une copie de la mémoire avec calcul de
condensat (MD5, SHA1..) conservation et intégrité des données.
b. Analyse de la mémoire : analyse des données volatiles, réalisation d’une chronologie
d’utilisation (timeline), extraction de données volatiles (mot de passe...).
3. Copie et analyse du disque dur
a. Copie du disque dur : réalisation d’une image système avec calcul de condensat
(MD5, SHA1..), conservation et intégrité des données.
b. Analyse du disque dur : analyse du système de fichier, de la base de registre et des
journaux d’évènements, de l’historique et des artefacts de navigation, décodage de
mot de passe, chronologie d’utilisation, extraction de binaires et de documents.
4. Analyse des éléments connexes : Logs annexes (logs firewall, logs d’IPS ou d’IDS, proxy,
Active Directory, serveur web), si possible.
5. Constitution du dossier des différentes preuves numériques pouvant servir en justice.
6. Corrélation des évènements
Un des éléments essentiels de l’analyse forensic est de noter et horodater tous les éléments. Dans le
but de ne pas compromettre le dossier de preuves pouvant servir en justice, l’analyste pourra par
ailleurs mandater un huissier de justice pour certifier la procédure.
Mémoire de recherche appliquée 2014
Page 30
Le schéma ci-dessous représente la méthodologie énoncée :
Figure 12 - Méthodologie d’une investigation numérique
Ces méthodes et techniques peuvent être utilisées à mauvaise escient par des pirates. En effet il est
probable que dans le cas d’une attaque informatique ciblée (dans le but de récupérer mots de passe,
comptes utilisateur, documents sensibles…), un attaquant abuse de cette méthodologie pour
accéder à des informations confidentielles.
Mémoire de recherche appliquée 2014
Page 31
Chapitre III : Les méthodes de forensic
Les méthodes de forensic constituent tous les éléments permettant de mener à bien une
investigation numérique. Chaque support nécessite des outils particuliers.
Nous verrons dans ce chapitre les outils existants ainsi que les méthodes nécessaires à l’extraction,
l’analyse et la corrélation des données.
III.1 – Calcul de condensat 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 permettra ainsi de garantir
l’intégrité des fichiers analysés.
Figure 13 - Principe de fonctionnement d’une fonction de hachage sur 3 entrées différentes
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
Mémoire de recherche appliquée 2014
Page 32
Sous linux il est possible d’utiliser les fonctions de hachage simplement :
r1tch1e@forensic:~$ md5sum case1.raw
edcdc33fd185c17e6d3813b1bcf77af9 case1.raw
r1tch1e@forensic:~$ sha1sum case1.raw
018f3bdf11378f8d69b1767058f6c7303707307a case1.raw
r1tch1e@forensic:~$ sha224sum case1.raw
304696ba8d9abf7f7eb4153c69b970abb328843a79b2ddc65abdab1a case1.raw
r1tch1e@forensic:~$ sha256sum case1.raw
e3126128f08662b496936d45d563f4e1acf012138a9a52557e9295f8ede8df4d case1.raw
r1tch1e@forensic:~$ sha384sum case1.raw
c89b5611dca6954261aff47bc10f63c0117c83e500829a302ee0f0b749ade077ae753846b04
1d46091859e29286dc7fb case1.raw
r1tch1e@forensic:~$ sha512sum case1.raw
29ed0d167a46991def4af168ec300d799d85075531dbc86116e7370540292b8e539910d901b
30ec499b7ca06dd5ef5ca4ca1e115877305a81d2bda9bb39283d7 case1.raw
Figure 14 - Calcul d’empreinte sous Linux
Afin de réaliser un contrôle d’empreinte sur un ensemble de fichiers, il peut être intéressant de
réaliser un script en python pour automatiser cette tâche. La bibliothèque « hashlib » permet de
réaliser des empreintes avec les algorithmes usuels.
Nous avons développé un script hash.py6 disponible en annexe.
Le script s’execute ainsi:
r1tch1e@forensic:~$ python hash.py -f case1.raw –msx
The MD5 hash is 37da7f205f894fd449d446e40422bdf1
The SHA256 hash is
30827d0e70951b12ad89c9747c63c22e0613f976e6d1c1d8d8d5316c308b28c1
The SHA512 hash is
ff4f639634f1e537b8a207f3603bf130a57f154dd2de3f83718ba78e2e440c085d06b6ef81c
82c6bd68178e8e100ec6318a93ebbbaac172adaf3e5c17297a7ba
Figure 15 - Calcul de hash avec le script hash.py
Il permet de générer une empreinte avec les 3 algorithmes principaux (MD5, SHA256, SHA512).
Mémoire de recherche appliquée 2014
Page 33
Le script permet également de comparer 2 fichiers afin de vérifier que les deux empreintes
coïncident :
r1tch1e@forensic:~$ python hash.py -c case1.raw case1.raw -m
This is the same file ! :)
37da7f205f894fd449d446e40422bdf1 case1.raw
37da7f205f894fd449d446e40422bdf1 case1.raw
r1tch1e@forensic:~$ python hash.py -c case1.raw case2.raw -m
This is not the same file ! :(
37da7f205f894fd449d446e40422bdf1 case1.raw
66349e73f9a42db317292c34917ed8b2 case2.raw
Figure 16 - Comparaison de hash avec le script hash.py
Il est à noter que l’algorithme MD5 n’est plus totalement fiable car il a montré des faiblesses de
collision (2 empreintes identiques pour 2 fichiers différents).
Des banques d’empreintes de fichiers, mises à disposition sur internet permettent d’identifier tous
les fichiers connus inutiles pour l’analyse. Le site http://www.nsrl.nist.gov/ recense les hash connus,
il sera ainsi possible d’automatiser l’identification de fichier en comparant leurs empreintes sur le
site.
Mémoire de recherche appliquée 2014
Page 34
III.2 – Acquisition et analyse de la mémoire volatile La mémoire vive d’un ordinateur peut contenir de nombreuses informations : mots de passe,
identifiants, clefs de chiffrement ou encore processus actifs. Lors d’une analyse forensic, l’étude de
l’image mémoire d’un système peut s’avérer utile.
La manipulation de la mémoire vive intervient dans le cadre d’une « analyse à chaud », c’est-à-dire
lorsque le système est encore en fonctionnement et n’a pas été arrêté ou redémarré au moment de
l’investigation.
Nous verrons dans cette partie comment extraire un dump de la mémoire RAM pour l’analyser.
A – 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.
Certains outils permettent spécifiquement de copier le contenu de la mémoire RAM.
L’utilitaire Dumpit
Afin de réaliser une image de la RAM nous utiliserons l’utilitaire gratuit de la société Moonsols :
Dumpit, disponible sur Internet7.
Cet outil est composé des 2 utilitaires suivants :
- Win32DD : permettant de réaliser une image mémoire d’un système Windows 32 bits
- Win64DD : permettant de réaliser une image mémoire d’un système Windows 64 bits
Nous lançons l’utilitaire :
Figure 17 - Copie de la mémoire vive avec l’utilitaire Dumpit
On obtient ici une image mémoire de 9Go, qui pourra par la suite être analysée.
Mémoire de recherche appliquée 2014
Page 35
Extraction de la mémoire vive par « cold boot »
Lorsque l’on éteint subitement un ordinateur, la totalité des données présentes dans la mémoire vive
est disponible environ 5 à 10 secondes. Le tableau ci-dessous indique le temps de rémanence des
données après extinction.
Temps % de données
5 à 10 secondes 100%
10 à 60 secondes 80%
1 à 3 minutes 50%
après 3 minutes 0% à 2%
Tableau 5 - Temps de rémanence des données contenues dans la RAM
La technique de « cold boot » consiste à exploiter cette rémanence en refroidissant la mémoire vive.
Une étude menée par des chercheurs de l’université de Princeton aux Etats-Unis en 2008, a montré
que refroidir la mémoire vive à très basse température permettait de conserver plus longtemps les
données présentes. Il devient ainsi possible d’extraire les données sans être contraint par le temps. A
titre d’exemple, à moins 50 degrés les données peuvent être conservées jusqu’à 10 minutes. En
plongeant les barrettes mémoires dans l’azote liquide le temps de conservation peut alors s’élever à
plusieurs heures, voire plusieurs jours.
Pour réaliser cette technique, nous devons :
1 – Refroidir les barrettes mémoires sur un ordinateur allumé,
2 – Couper brusquement l’alimentation de l’ordinateur,
3 – Brancher les barrettes sur un autre ordinateur (ou sur le même),
4 – Booter sur un système tiers afin d’éviter que le système n’écrase les données,
5 – Dumper la mémoire.
Une bombe à air sec (disponible dans le commerce), nous permet de refroidir les barrettes
mémoires.
Figure 18 - Bombe à air sec
Puis nous utiliserons l’utilitaire MSRAWDMP8.
Mémoire de recherche appliquée 2014
Page 36
Refroidissement de la mémoire vive de l’ordinateur allumé :
Figure 19 - Gel de barrette mémoire
Redémarrage de l’ordinateur et boot sur clef USB préparée avec l’utilitaire MSRAWSMP et copie du
contenu de la RAM pour récupération et exploitation des données :
Figure 20 - Copie de la mémoire vive avec l’utilitaire MSRAWSDMP
Mémoire de recherche appliquée 2014
Page 37
B – Analyse de la mémoire volatile Afin de procéder à l’analyse de la mémoire volatile, nous traiterons ici de l’outil le plus réputé et le
plus utilisé dans l’investigation numérique pour les systèmes Windows : le Framework Volatility9.
Une version pour les systèmes Linux est également disponible : Volatilitux10.
Ainsi que pour les systèmes MAC : Volafox11.
Présentation du Framework Volatility
Volatility est un Framework open-source écrit en python, utilisé pour les réponses à incident ou pour
l’analyse de malware. Il est distribué par la société Volatile Systems.
Le Framework Volatility dispose des fonctionnalités suivantes :
Informations sur l'image (date, heure, nombre d'UC)
Extraction des processus en cours
Extraction des processus SID et des variables d'environnement
Affichage des sockets réseau
Affichage des connexions réseau
Extraction des DLL chargées pour chaque processus
Affichage des modules du noyau
Dump des processus, des DLL, ou des modules de disque
Cartographie des compensations physiques à des adresses virtuelles
Extraction des informations de descripteur d'adresses virtuelles
Extraction de la mémoire adressable pour chaque processus
Extraction des cartes de mémoire pour chaque processus
Extraction des échantillons exécutables
Extraction des historiques de commande (cmd.exe) et des tampons d'entrée/sortie console
Fonctions de l'API importées et exportées
Affichage des informations de version de PE
Affichage des tables d'appels système (IDT, GDT, SSDT)
Exploration des ruches du registre cache
Dump des hash LM/NTLM et secrets LSA
Analyse des modes d'octets, des expressions régulières, ou des chaînes en mémoire
Analyse du timers du noyau et des fonctions de rappel
Rapport sur les services Windows
La liste des options de Volatility est disponible en annexe.
Mémoire de recherche appliquée 2014
Page 38
Identification du profil
La première étape pour l’analyse de l’image mémoire est d’utiliser l’option « imageinfo » pour
obtenir les informations concernant le système d’exploitation de l’image.
r1tch1e@forensic:~$ python vol.py –f case.dmp imageinfo
Volatile Systems Volatility Framework 2.2
Determining profile based on KDBG search...
Suggested Profile(s) : Win7SP0x86, Win7SP1x86
AS Layer1 : JKIA32PagedMemoryPae (Kernel AS)
AS Layer2 : FileAddressSpace(/case.dmp)
PAE type : PAE
DTB : 0x185000L
KDBG : 0x82929be8L
Number of Processors : 1
Image Type (Service Pack) : 0
KPCR for CPU 0 : 0x8292ac00L
KUSER_SHARED_DATA : 0xffdf0000L
Image date and time : 2013-01-12 16:59:18 UTC+0000
Image local date and time : 2013-01-12 17:59:18 +0100
Figure 21 - Option imageinfo de Volatility
La commande retourne les informations du système. Il faudra alors utiliser le profile Win7SP1x86
ou Win7SP0x86 avec l’option « --profile= », pour le reste de l’analyse.
Lister les processus en cours
Afin d’identifier les applications utilisées lors de la récupération de l’image mémoire, Volatility
permet de lister les processus en cours d’utilisation avec l’option « pslist ».
r1tch1e@forensic:~$ python vol.py --profile=Win7SP1x86 –f case.dmp pslist
Volatile Systems Volatility Framework 2.2
Offset(V) Name PID PPID Thds Hnds
---------- -------------------- ------ ------ ------ --------
0x83db4b78 System 4 0 94 496
0x8509f020 smss.exe 260 4 2 29
0x85078d40 csrss.exe 372 364 8 453
0x846ad760 wininit.exe 412 364 3 75
0x851ced40 csrss.exe 420 404 9 275
0x85770cc8 winlogon.exe 468 404 6 114
0x8582e820 services.exe 512 412 9 209
0x85833668 lsass.exe 520 412 6 588
0x85835898 lsm.exe 528 412 10 148
0x8597ed40 svchost.exe 644 512 11 353
0x859a1310 svchost.exe 704 512 7 277
0x859b1cd8 svchost.exe 756 512 22 492
0x85a4f530 svchost.exe 868 512 16 352
0x85a4f030 spoolsv.exe 1236 512 13 343
0x85a1d030 svchost.exe 1272 512 19 314
0x85a68a98 vmtoolsd.exe 1428 512 9 293
0x85d45420 TPAutoConnSvc. 1716 512 10 139
0x85d4fd40 svchost.exe 1760 512 7 94
0x85d521b0 svchost.exe 1856 512 5 101
0x85d80918 dllhost.exe 2016 512 15 192
0x85d6fd40 msdtc.exe 1008 512 14 147
0x85e03d40 svchost.exe 2040 512 15 356
Mémoire de recherche appliquée 2014
Page 39
0x83ef62d8 SearchIndexer. 1828 512 11 602
0x83f21d40 SearchProtocol 288 1828 7 319
0x83f4b778 WmiPrvSE.exe 2404 644 6 111
0x85d0d430 taskhost.exe 2696 512 11 212
0x83f2a710 dwm.exe 2756 868 4 71
0x83f911e0 explorer.exe 2792 2740 34 982
0x83fab6c8 TPAutoConnect. 2816 1716 6 126
0x83f76398 conhost.exe 2824 420 1 33
0x83febd40 vmtoolsd.exe 2968 2792 7 187
0x83f594d0 audiodg.exe 3024 756 7 133
0x84c72ab0 wmpnetwk.exe 3332 512 11 213
0x84e90030 svchost.exe 3376 512 10 142
0x84d0cd40 firefox.exe 3820 2792 39 494
0x85e2e030 TrueCrypt.exe 4080 2792 6 258
0x85d7b720 SearchFilterHo 2536 1828 4 97
0x8523e030 KeePass.exe 852 2792 10 260
0x846a3030 DumpIt.exe 3816 2792 2 37
0x848018e8 conhost.exe 3892 420 2 53
Figure 22 - Option pslist de Volatility
On obtient ici toutes les informations liées au processus du système. Le PID d’un processus peut être
récupéré pour l’analyser plus en profondeur. Par exemple, dans le cas d’un utilitaire de protection de
mot de passe tel que Keepass, il peut être intéressant d’extraire un dump dans le but de récupérer
des identifiants stockés en mémoire ou le mot de passe principal.
Dumper l’image mémoire d’un processus
L’option « memdump » permet d’extraire l’image d’un processus afin de l’analyser. Pour dumper le
processus il faut d’abord récupérer son PID à l’aide de la commande « pslist ». Ici nous dumperons le
processus « KeePass.exe » avec le PID 852.
r1tch1e@forensic:~$ python vol.py --profile=Win7SP1x86 –f case.dmp memdump
-p 852 --dump-dir /tmp/
Volatile Systems Volatility Framework 2.2
************************************************************************
Writing KeePass.exe [ 852] to 852.dmp
Figure 23 - Option memdump de Volatility
Volatility crée ici un fichier nommé 852.dmp qui pourra par la suite être analysé.
Il est également possible de dumper le processus sous forme d’un exécutable avec l’option
« procmemdump ». L’exécutable pourra ensuite être décompilé et analysé. Nous prenons pour
exemple le processus « svchost.exe » avec le PID 2040.
r1tch1e@forensic:~$ python vol.py --profile=Win7SP1x86 –f case.dmp
procmemdump -p 2040 --dump-dir /tmp/
Volatile Systems Volatility Framework 2.2
Process(V) ImageBase Name Result
---------- ---------- -------------------- ------
0x85e03d40 0x00890000 svchost.exe OK: executable.2040.exe
Figure 24 - Option procmemdump de Volatility
Mémoire de recherche appliquée 2014
Page 40
Extraction des hash LM/NTLM
Les données du registre Windows peuvent être extraites lors d’un dump de la mémoire volatile.
Volatility propose plusieurs options permettant d’afficher et, d’explorer (hivelist, hivescan…) la base
de registre et d’extraire les identifiants du système (hashdump).
On procédera comme suit pour extraire les hash NTLM.
r1tch1e@forensic:~$ python vol.py --profile=Win7SP1x86 –f case.dmp hivelist
Volatile Systems Volatility Framework 2.2
Virtual Physical Name
---------- ---------- ----
0x960de9d0 0x135329d0 \SystemRoot\System32\Config\SECURITY
0x961b78e8 0x12a3f8e8
\??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT
0x82bb3140 0x02bb3140 [no name]
0x8760c008 0x19e8d008 [no name]
0x8761c008 0x19e1b008 \REGISTRY\MACHINE\SYSTEM
0x8763c6b8 0x19cbb6b8 \REGISTRY\MACHINE\HARDWARE
0x876c69d0 0x19e569d0 \SystemRoot\System32\Config\DEFAULT
0x882569d0 0x074a09d0 \SystemRoot\System32\Config\SAM
0x882f43f0 0x071193f0
\??\C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT
0x8b2999d0 0x1966c9d0 \Device\HarddiskVolume1\Boot\BCD
0x8cfb9008 0x17aaa008 \SystemRoot\System32\Config\SOFTWARE
0x900ec008 0x04efb008 \??\C:\System Volume Information\Syscache.hve
0x90bf5008 0x0157c008 \??\C:\Users\R1TCH1E\ntuser.dat
0x92ac7650 0x0f165650
\??\C:\Users\R1TCH1E\AppData\Local\Microsoft\Windows\UsrClass.dat
Figure 25 - Liste des ruches systèmes avec l’option hivelist de Volatility
On utilisera ensuite l’option « hashdump » en précisant le « -y » (qui correspond à l’OFFSET de la
ruche SYSTEM) et l’option « -s » (qui correspond à l’OFFSET de la ruche SAM, où sont stockés les mots
de passe).
r1tch1e@forensic:~$ python vol.py --profile=Win7SP1x86 –f case.dmp hashdump
-y 0x8761c008 -s 0x882569d0
Volatile Systems Volatility Framework 2.2
Administrateur:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c
0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
R1tch1e:1000:aad3b435b51404eeaad3b435b51404ee:b9f917853e3dbf6e6831ecce60725930:::
Figure 26 - Extraction des hash avec l’option hashdump de volatility
Après avoir récupéré les hash il est possible de les décrypter.
Mémoire de recherche appliquée 2014
Page 41
La copie d’écran ci-dessous illustre le décryptage12 du mot de passe :
Figure 27 - Décryptage du hash NTLM
Le hash retrouvé correspond ici à « passw0rd »
On notera tout de même qu’un mot de passe fort (constitué de plus de 8 caractères
alphanumériques minuscules, majuscules et caractères spéciaux) est très difficile à décrypter.
Volatility dispose de nombreuses autres options telles que « dlllist » qui permet de lister les DLL du
système ou celles utilisées par un processus. L’option « dlldump » permettra quant à elle d’extraire
une DLL en particulier afin de l’analyser.
D’autres options utilisées pour l’analyse de malware sont également présentes comme « malfind »
qui analyse les injections de code ou encore « yarascan » qui vérifie la signature YARA d’un binaire.
Enfin on ajoutera qu’il est possible d’ajouter des modules ou de développer ses propres outils pour
les utiliser avec Volatility.
Mémoire de recherche appliquée 2014
Page 42
III.5 – Acquisition et analyse de la mémoire 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.
On distingue alors la mémoire non-volatile de la mémoire volatile. Les supports non-volatiles
peuvent être des disques durs ou des clefs USB. On appelle cette partie l’analyse à froid ou post
mortem, elle sera effectuée après l’incident de sécurité ou lorsque que le système a été éteint ou
redémarré.
Lors d’une analyse forensic les supports numériques de données non volatiles peuvent fournir une
multitude d’informations à l’analyste. Nous verrons dans cette partie comment acquérir une image
d’un disque dur, comment l’utiliser et l’analyser.
A – 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.
L’utilitaire dd
L’utilitaire « dd », connu aussi sous la dénomination « GNU dd » est un outil en ligne de commande
permettant de copier des données en mode bloc. Il permet notamment de créer des images de
disques, ou de parties de disques qui seront ensuite utilisées avec des outils tels que FTK, DFF ou
EnCase.
L’utilitaire « dd » est par défaut disponible sur tous les systèmes Linux. Il permet de faire une copie
bit à bit garantissant ainsi une reproduction parfaite du disque dur.
Pour récupérer le contenu du disque dur d’un système Windows il suffit de booter la machine sur un
live cd ou USB afin d’obtenir un Shell Linux.
La commande pour cloner un disque dur entier sur un périphérique externe est la suivante :
r1tch1e@forensic:~$ dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror
dd : writing to `/dev/sdb`
15769601+0 records in
15769600+1 records out
8074035200 bytes (8,1 GB) copied, 2449,65 s, 3.3 MB/s
Figure 28 - Copie d’un disque dur avec l’utilitaire dd
L’option « notrunc » signifie de ne pas tronquer le fichier en sortie.
L’option « noerror » signifie de continuer en cas d'erreur, dd s'arrête normalement en cas
d'erreur.
L’utilitaire « dd » permet également de nombreuses possibilités pour la manipulation de volume.
Mémoire de recherche appliquée 2014
Page 43
L’utilitaire dcfldd
L’utilitaire « dcfldd »13 est une version de « dd » améliorée. Il permet de faire une copie bit à bit d’un
disque dur tout en calculant l’empreinte qui servira à garantir son intégrité. « dcfldd » est open
source.
r1tch1e@forensic:~$ dcfldd if=/dev/sda of=/dev/sdb hash=sha1 hash=md5
Figure 29 - Copie d’un disque dur et calcul de condensat avec l’utilitaire dcfldd
L’utilitaire Esximager
Esximager14 est un script perl qui utilise netcat pour effectuer une copie à distance d’un système
virtuel. La virtualisation étant de plus en plus présente dans nos infrastructures, il convient d’utiliser
les outils adéquats pour récupérer des images issues de logiciels de virtualisation comme VMWARE.
Figure 30 - Copie d’une image virtuelle ESXi avec l’utilitaire esximager.pl
Mémoire de recherche appliquée 2014
Page 44
B – Monter une image Après avoir récupéré l’image d’un disque dur, l’analyste doit pouvoir exploiter son contenu afin d’en
récupérer les informations nécessaires à l’enquête. Il faut donc pouvoir monter l’image sur un
système tout en gardant à l’esprit que le support ne doit pas subir de modifications.
Le montage de l’image est ici une étape importante qu’il faut mener avec précaution.
L’utilitaire mount
Après avoir effectué la copie d’un système, l’analyste doit pouvoir y accéder facilement pour
l’analyser. Il s’agit ici de monter le disque dur ou l’image sur un système tiers. Il est important de
monter l’image seulement en lecture afin de ne pas entraîner de modifications.
L’utilitaire « mount » présent sur tous les systèmes UNIX permet d’effectuer cette action.
r1tch1e@forensic~$ mount -t FAT -o ro,noexec case1.dd /mnt
Figure 31 - Montage d’une image avec l’utilitaire mount
L’option « -t » permet de spécifier le système de fichier
L’option « -o » permet de spécifier plusieurs options :
o « ro » permet de monter l’image en lecture seulement (Read Only)
o « noexec » ne permet pas l’exécution de binaire sur le système monté
Le « /mnt » permet d’indiquer le répertoire de montage
Mémoire de recherche appliquée 2014
Page 45
L’utilitaire Live view
L’utilitaire Live View15 sert à convertir une image en machine virtuelle pour VMWARE pour pouvoir la
démarrer dans un environnement virtualisé. Ainsi, l’analyste pourra naviguer dans le système de
fichiers et exploiter l’image de manière graphique. Il nécessite cependant l’installation du
« VMWARE’s Virtual Disk Developement Kit »16 pour fonctionner.
Figure 32 - Conversion d’une image en vmdk
L’utilitaire Live View est disponible sous Windows mais la conversion d’une image sous Linux est
également possible.
Mémoire de recherche appliquée 2014
Page 46
C – Analyse de la mémoire non-volatile L’analyse du système consiste à récupérer et interpréter tous les éléments nécessaires à l’enquête
(les dernières actions de l’utilisateur, les fichiers effacés, l’historique des sites visités..). Cette étape
de l’investigation numérique est la plus étendue, car de nombreux éléments peuvent être analysés
sur l’image récupérée. Lors d’une enquête, l’analyste n’a pas souvent le temps nécessaire pour
examiner en profondeur tous les éléments du système. Il est donc important de prendre les éléments
qui fourniront les informations les plus judicieuses comme la base de registre, les logs ou encore les
boîtes mails.
Analyse du registre
L’analyse du registre fournit de nombreuses informations sur l’attaquant ou le logiciel responsable
de l’infection en question. Le registre regorge de clés depuis Windows 2000 permettant de démarrer
des programmes quand l’ordinateur est allumé ou quand un utilisateur y est connecté. Par exemple
un malware va laisser de nombreuses traces dans le registre local de l’utilisateur connecté.
Si une clé de registre suspecte s’y trouve, on peut facilement affiner ces recherches pour trouver la
source de l’infection.
L’analyse du registre se fait par le biais d’outils. Comme par exemple un l’éditeur de registre
Windows : regedit. Il est possible qu’il n’affiche pas les clés dont la valeur est nulle, la plupart du
temps les malwares utilisent ce genre de vecteurs pour infecter une machine, et sont difficiles à
détecter dans un système.
Voici une liste des emplacements où un malware peut être dissimulé pour s’exécuter :
Les clés de registre logiciel : HKLM(HKEY_LOCAL_MACHINE)\Software\
Microsoft\Windows\CurrentVersion\RunServicesOnce
Microsoft\Windows\CurrentVersion\RunServices
Microsoft\Windows\CurrentVersion\RunOnce
Microsoft\Windows\CurrentVersion\RunOnceEx
Microsoft\Windows\CurrentVersion\Policies\Run
Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
Microsoft\Windows\CurrentVersionShellServiceObjectDelayLoad
Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
Les clés de registre utilisateur, que l’on retrouve dans le fichier de ruche NTUSER.DAT :
Software\ Microsoft\Windows\CurrentVersion\RunServicesOnce
Software\ Microsoft\Windows\CurrentVersion\RunServices
Software\ Microsoft\Windows\CurrentVersion\Run
Software\ Microsoft\Windows\CurrentVersion\RunOnce
Software\ Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
Software\ Microsoft\Windows NT\CurrentVersion\Windows\load
Mémoire de recherche appliquée 2014
Page 47
L’analyse du registre est plus simple en utilisant un logiciel adapté. On peut citer le projet open
source FRED17 : un éditeur de registres disponible sur plusieurs plateformes.
Figure 33 - Interface de Forensic Registry Editor
Le registre n’est pas le seul endroit où l’on peut trouver des logiciels ou du code malveillant.
En effet, sur un ordinateur on trouve des fichiers de démarrage et autres exécutables :
C:\autoexec.bat : Fichier batch contenant des commandes à exécuter au démarrage du
système.
C:\config.sys : Contient des ordres de lancement de dispositifs matériels.
C:\windows\wininit.ini : Contrôle le démarrage des programmes.
C:\windows\winstart.bat : Contrôle le démarrage des composants de Windows
C:\windows\win.ini : Fichier de lancement des programmes Windows antérieur à Windows
XP
Analyse des journaux d’évènements et logs
Le journal des évènements de Windows peut être une bonne source d’informations lorsque l’on peut
analyser une machine sur un profil d’utilisateur ouvert.
L’outil UserAssist18, présent dans les versions antérieures à Windows Vista, visualise la chronologie
des évènements. UserAssist va afficher les accès aux logiciels, les double-clics, les lancements de
programmes etc., si par exemple le compte de l’utilisateur subit une attaque par force brute, les
évènements d’échec seront enregistrés dans les journaux systèmes.
Mémoire de recherche appliquée 2014
Page 48
Figure 34 - Affichage chronologique avec UserAssist
Sous Linux, on utilisera alors l’outil log2timeline19 qui est un framework sous licence GPL permettant
de compiler les logs de différentes sources et de les afficher selon la date des évènements.
Figure 35 - Utilisation de log2timeline
La création d’une timeline et l’analyse des évènements permettent de retracer les dernières actions
effectuées par l’utilisateur ou un logiciel malveillant sur le système.
Récupération de fichier
La récupération des fichiers effacés d’un système fait partie intégrante de l’analyse forensic. En effet
l’auteur d’un acte malveillant peut très bien avoir supprimé certains fichiers qui pourraient
l’incriminer. Par ailleurs un système infecté peut avoir subi des pertes de fichiers. Les fichiers
recouvrés permettront dans certains cas d’identifier les intentions d’une personne.
Lorsqu’un fichier est effacé, seule sa référence dans l’index du disque dur est supprimée, mais le
fichier est encore présent. Il existe des outils pour permettre de récupérer ces fichiers effacés.
Néanmoins ils peuvent être supprimés de manière sécurisée c’est-à-dire qu’ils ne seront pas, ou
difficilement, recouvrables.
Mémoire de recherche appliquée 2014
Page 49
L’utilitaire Photorec20 permet de récupérer des fichiers effacés. Il fonctionne aussi bien sur Linux que
sur Windows et est open source.
Figure 36 - Utilisation de photorec
L’interface de l’utilitaire Photorec est très intuitive. Ce dernier créera un dossier où les fichiers
récupérés seront stockés.
L’utilitaire Foremost21 permet également le recouvrement de fichiers.
Pour récupérer des fichiers jpg il faut entrer la ligne de commande suivante :
r1tch1e@forensic$ foremost -t jpg -i /dev/sda*
Figure 37 - Récupération de fichier jpg avec foremost
Pour récupérer tous types de fichiers il faudra entrer la commande suivante :
r1tch1e@forensic$ foremost -t all -i /dev/sda1*
Figure 38 - Récupération de tout type de fichier avec foremost
Mémoire de recherche appliquée 2014
Page 50
Analyse du navigateur
L'analyse du navigateur est importante pour retracer les activités d'un utilisateur. En effet, il est
possible de reconstituer les étapes d'une infection, ou la fuite de données en observant les différents
fichiers créés par les navigateurs.
Internet Explorer est le navigateur par défaut des systèmes d'exploitation Microsoft depuis Windows
95, il est donc un bon candidat pour une analyse forensic. En entreprise, l'utilisation de navigateurs
alternatifs est sujet à des problèmes de sécurité et comporte des risques. En effet ils permettent
parfois de contourner les mesures de sécurité de l’entreprise, et l'infection de ces navigateurs peut
provoquer des dégâts conséquents sur le système d’information. Un poste de travail infecté peut,
par exemple, être à l’ origine de la prolifération de codes malveillants et d'attaques depuis
l'extérieur.
Les navigateurs internet stockent dans des fichiers temporaires un grand nombre d'informations. Ces
fichiers contiennent les url visitées, mais aussi des mots de passe. Les cookies, qui sont des fichiers
envoyés par les serveurs web, peuvent contenir diverses informations, par exemple : des paramètres
personnels d’un site, le contenu d'un panier électronique etc...
Les cookies peuvent être utilisés pour la gestion des sessions et transporter des noms d'utilisateurs et
les mots de passe associés à un site internet.
Pour extraire les données du navigateur il existe différents outils qui vont explorer le système à la
recherche des fichiers temporaires et cookies.
L’utilitaire Browser Forensic Tool22 classe les données extraites en fonction du type de navigateur
(Chrome, IE, Firefox, etc…) mais également selon des critères de classification des pages consultées.
Figure 39 - Récupération de l’historique de navigation avec Browser Forensic Tool
Mémoire de recherche appliquée 2014
Page 51
A partir de Windows 7, Microsoft a choisi de centraliser les fichiers de données temporaires et les
informations contenues dans le cache d’Internet Explorer.
Ils se trouvent maintenant dans :
C:\Users\username\AppData\Local\Microsoft\Windows\Temporary Internet Files
Les fichiers temporaires de Google Chrome sont à l’emplacement suivant :
C:\Users\username\AppData\Local\Google\Chrome\User Data
Pour le navigateur Mozilla Firefox, on les stockent à l’emplacement :
C:\Users\username\AppData\Local\Mozilla\Firefox\Profiles
Connaître la localisation de ces fichiers permet de déceler facilement si un utilisateur a été
volontairement malveillant ou simplement négligeant. Les malwares, dont l’action est de voler des
informations sur le poste, laissent des traces dans les fichiers temporaires des navigateurs, c’est
pourquoi leur analyse n’est pas à négliger.
D’autres outils analysent les fichiers des différents navigateurs, et d’en extraire les mots de passe,
avec les URL associées. Par exemple l’utilitaire BrowserPasswordDump23.
Figure 40 - Extraction de mot de passe avec BrowserPasswordDump
Mémoire de recherche appliquée 2014
Page 52
Pour Google Chrome, les mots de passes sont stockés dans une base de données Sqlite3, à
l’emplacement suivant :
C:\Users\username\AppData\Local\Google\Chrome\User Data\Default, dans le fichier login
data.
Firefox stocke les informations de connexion dans le fichier :
C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\xxxxxxx.default
Enfin, Internet Explorer conserve les mots de passe dans la base de registre de Windows à
l’emplacement suivant :
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
Analyse de trace réseau
L'analyse de captures réseau implique que les activités sont enregistrées en permanence, pour
conserver les traces et faire une analyse en cas de besoin. Les traces réseaux sont des informations
précieuses puisqu'elles contiennent toute l'activité du réseau : adresses IP (source et destination),
protocoles utilisés, et de nombreuses en-têtes contenant des données. Le trafic non chiffré sera
rapidement identifiable et l'analyse grandement facilitée par les outils comme Wireshark24 qui
permettent une visualisation fine des traces réseaux à partir d'un fichier de capture au format
« pcap ».
Figure 41 - Analyse de trace réseau avec Wireshark
Wireshark offre de nombreux moyens de filtrage et d’analyse des traces. L’option follow TCP Stream
permet de suivre la totalité d’une session entre un client et un serveur.
Prenons l’exemple d’une session http entre un poste de travail et un site Web, ce type d’activité est
souvent tracé lors d’une contamination par un malware.
Mémoire de recherche appliquée 2014
Page 53
Figure 42 - Traces d’une activité d’envoi d’informations a un serveur Web (méthode POST)
Xplico25 est un autre outil présent dans la plupart des distributions dédiées au forensic. Xplico est un
analyseur réseau.
Il est différent de Wireshark car il ne permet pas la capture de trames, mais dispose d’outils d’analyse
des fichiers au format « pcap ». Il utilise des techniques d’identification de ports et de protocoles
pour détecter les données transitant sur le réseau.
Figure 43 - Analyse d’une capture réseau avec Xplico
Ospy26 est un analyseur réseau qui a la particularité d’afficher les paquets chiffrés par SSL en clair. Il
s’attache à un processus et trace tout le trafic. Si du SSL est capturé il sera affiché en clair.
Mémoire de recherche appliquée 2014
Page 54
Ci-dessous nous avons testé ces fonctionnalités avec la messagerie Gmail :
Figure 44 - Analyse de trame SSL avec OSPY
On remarque effectivement que le mot de passe est affiché en clair (flouté en fig 42), lors de la
connexion à la messagerie. D’autres tests ont été effectués sur le site d’une banque qui affiche bien
le numéro de compte et le mot de passe.
Ospy ne permet pas d’aller espionner son voisin puisqu’il ne s’attache qu’à un processus local.
Cependant cet outil est adapté si l’on souhaite faire du reverse engineering sur un protocole ou sur le
mode de fonctionnement d’une application utilisant le protocole SSL.
Analyse des emails
Aujourd’hui, l’utilisation de l’email est devenue un des principaux moyens de communication. Selon
une étude de Radicati Group27, il y a environ 182 milliards d’emails échangés chaque jour, moins de
la moitié de ces emails contiennent des informations personnelles, et environ 897 millions sont
envoyés depuis des terminaux mobiles.
L’utilisation quotidienne de moyens de communications électroniques permet aussi bien aux pirates
qu’aux éditeurs de services, distributeurs, annonceurs, etc. de récupérer des informations précieuses
sur les habitudes des utilisateurs.
Les emails sont de simples fichiers texte envoyés entre différents serveurs de mails en utilisant le
port 25. Trois éléments importants sont à prendre en compte lors de l’étude des fichiers constitutifs
d’un email : l’en-tête, le corps du mail et la pièce jointe (encodée sous forme de texte).
Qu’il s’agisse d’un client lourd (Outlook, ThunderBird) ou léger via une page web (Gmail, Yahoo!), ils
utilisent des fonctionnalités similaires définies dans des RFCs.
La recherche d’informations d’un client léger tel que Gmail, nécessitera une conversion dans un
format adapté pour son exploitation.
Mémoire de recherche appliquée 2014
Page 55
Transend Migrator28 est un outil de conversion permettant de télécharger les mails d’un client léger
pour les convertir en fichier OST/PST.
Figure 45 - IHM de Transend Migration, conversion depuis gmail vers pst
Nucleus propose un outil appelé Kernel for OST to PST29 qui répare en cas de besoin des fichiers OST
(Offline Storage Table) corrompus.
Les fichiers au format OST permettent à un client Outlook non connecté à Exchange de continuer à
consulter les emails. La conversion d’un fichier OST en PST (Personal Storage Table) permet
d’importer dans un client Outlook autonome ou un logiciel d’analyse. En effet le format OST n’est pas
exploitable directement sauf s’il est lié à un compte de messagerie.
Figure 46 - IHM de Nucleus, conversion des fichiers ost
Paraben’s Email Examiner30 est un outil propriétaire payant, il analyse directement des fichiers OST
issus de clients Outlook sur Exchange Server. Il permet de faire des recherches très poussées dans les
fichiers, énumérer les pièces jointes, voir les contacts temporaires, les adresses en cache
(anciennement fichier .NK2, intégré au pst depuis Office 2007).
Mémoire de recherche appliquée 2014
Page 56
Figure 47 - Interface de Paraben’s, énumération des emails d’un fichier OST
Figure 48 - Enumération des pièces jointes
Connaître l’emplacement des fichiers de configuration et des conteneurs des clients de messagerie
facilitent les recherches, car ces nombreux fichiers sont exploités chacun d’une manière différente.
Mémoire de recherche appliquée 2014
Page 57
Le tableau suivant présente la liste des fichiers de configuration et leur emplacement :
Personal Storage Table (.pst)
C:\documents and settings\username\AppData\Local\Microsoft \Outlook
Offline Storage Table (.ost)
C:\documents and settings\username\AppData\Local\Microsoft \Outlook
Personal Address Book (.pab)
C:\documents and settings\username\AppData\Local\Microsoft \Outlook
Offline Address Book (.oab)
C:\documents and settings\username\AppData\Local\Microsoft \Outlook
Outlook Contact Nick (.nk2) (avant 2007)
C:\documents and settings\username\Application Data\Microsoft \Outlook
Rules (.rwz) C:\documents and settings\username\Application Data\Microsoft \Outlook
Signatures C:\documents and settings\username\Application Data\Microsoft \Signatures
Tableau 6 - Liste des fichiers relative aux emails
Sur les versions de Windows antérieures à Windows 7, le client mail par défaut était Outlook Express.
Ce client séparait la configuration et les mails dans différents fichiers localisés à différents endroits
selon la version du système d’exploitation.
Win 2000/XP/2003 C:\documents and settings\username\Application Data\ identities\chaine unique id\Microsoft\Outlook Express
Windows NT C:\winnt\profiles\username\Local Settings\Application Data\Identities\ chaine unique id\Microsoft\Outlook Express
Win 98/95/Me C:\windows\Application Data\Identities\chaine unique id\Microsoft\ Outlook Express
Tableau 7 - Localisation des fichiers de configuration
De telles versions de Windows sont encore largement utilisées en entreprise, aussi il est important
de connaître les emplacements des fichiers pour une bonne investigation.
Mémoire de recherche appliquée 2014
Page 58
Les en-têtes présentes dans les emails sont riches en informations : adresse email de l’expéditeur,
adresse du destinataire, adresse du serveur SMTP, etc... Elles contiennent également les
caractéristiques du client utilisé pour envoyer le mail, le logiciel serveur d’origine, et le nom des
pièces jointes.
Ces informations sont très utiles dans le cas d’une investigation pour connaitre l’historique d’un mail,
et en cas d’infection, pour trouver d’où provient le code malicieux.
La RFC-822 établit les règles de construction des en-têtes. Les serveurs de messageries respectent
cette RFC et ajoutent automatiquement les en-têtes à chaque mail traité.
Description d’une en-tête :
Received: from localhost (localhost.localdomain [127.0.0.1])
by maia(Postfix) with ESMTP id 07058108013
for <djuj@forensic>;
Tue, 4 Feb 2014 16:42:40 +0100 (CET)
Received: from 46.216.13.89 (unknown [46.216.13.89])
by maia (Postfix) with SMTP id A18BE108011
for <djuj@forensic>; Tue, 4 Feb 2014 16:42:28 +0100 (CET)
Received: from unknown (HELO localhost) ([email protected]
@199.61.202.145)
By 46.216.13.89 with ESMTPA;
Tue, 4 Feb 2014 18:43:40 +0200
From: <[email protected]>
To: <djuj@foresic>
Subject: ***SPAM*** Do you want to amaze you at night?
Date: Tue, 4 Feb 2014 18:35:01 +0200
Message-ID: <20140204154229.A18BE108011@maia >
MIME-Version: 1.0
Content-Type: text/plain
Return-Path: < [email protected] >
X-MS-Exchange-Organization-AuthSource: CAIN
X-MS-Exchange-Organization-AuthAs: Anonymous
Figure 49 - Exemple d’une en-tête d’email
From: Identifie l’adresse email de l’expéditeur. Malheureusement, le protocole SMTP ne vérifie pas
l’identité de l’expéditeur, ce qui rend très facile la falsification de ce champ par manipulation des
commandes SMTP via Telnet par exemple.
From (différent de « From : ») : est une partie de l’en-tête ajoutée par le serveur, elle renseigne le
nom et l’IP du serveur. Si l’email a transité par plusieurs serveurs, chacun d’eux va ajouter un champ
« From » avec ses propres informations.
Reply-to: (Return-Path:) : renseigne l’adresse pour envoyer des réponses. Ce champ est facile à
falsifier, il est la plupart du temps vide. Pour les spammeurs, ce champ est intéressant pour inonder
des boîtes mails.
Sender: (X-Sender:) : ce champ renseigne normalement la version du client, cependant la plupart des
clients ignorent ce champ ; il disparait des en-têtes.
Message-id: Il s’agit d’une chaine unique assignée au mail par le serveur au moment où il est créé.
Mémoire de recherche appliquée 2014
Page 59
Received: Sans doute le champ le plus intéressant, car il contient beaucoup d’informations :
le serveur ayant émis l’email avec son nom et son IP,
l’adresse mail de l’expéditeur,
la version du connecteur SMTP,
le timestamp contenant la date, l’heure et une information géographique (+0200 dans
l’exemple) qui correspond au décalage par rapport au méridien de Greenwich (GMT).
Dans l’exemple ci-dessus l’email a été envoyé depuis un des pays du fuseau horaire GMT +2
Beyrouth, Liban.
Le tableau suivant donne une liste des clients de messagerie les plus utilisés ainsi que la manière
d’accéder aux en-têtes :
Outlook Ouvrir un message, cliquer sur Fichier, Propriétés, puis En-tête Internet
Outlook Express Sélectionner un message et cliquer sur Ctrl+F3
ThunderBird Sélectionner un mail, cliquer sur Autres Actions, puis afficher la source
AOL Client Ouvrir un email, chercher Envoyé depuis Internet, puis cliquer sur Détails
Yahoo! Ouvrir un mail, cliquer sur Afficher l’en-tête complète
Gmail Ouvrir un mail, cliquer sur Afficher l’original
Hotmail Depuis la boite de réception, Choisir Options, Affichage, cocher la case Avancé sous En-tête des messages
Tableau 8 - Comment accéder aux en-têtes d’emails
L’analyse de la mémoire non volatile révèle de nombreuses informations sur les habitudes des
utilisateurs et sur l’activité générale d’une machine. Les utilisateurs peuvent être confondus en
retraçant leurs actions sur le poste : visites de sites controversés, envoi volontaire ou involontaire de
données à l’extérieur.
Ce sont des informations importantes pour l’enquêteur qui, avec l’aide de ses outils, pourra faire une
analyse exhaustive du système d’exploitation.
Mémoire de recherche appliquée 2014
Page 60
Chapitre IV : Les méthodes anti-forensic
L’anti-forensic rassemble toutes les techniques employées pour masquer ou prévenir la création de
traces, tout en permettant de dissimuler ou protéger des données qui n’ont pas vocation à être
découvertes.
Ces méthodes sont non seulement utilisées par des pirates mais également par des entreprises ou de
simples utilisateurs pour protéger des données à caractère confidentiel. Ces techniques ralentissent
le travail de l’enquêteur et diminuent le risque d’identification d’un criminel.
Pour un criminel, il s’agit de falsifier, camoufler, détruire, effacer, chiffrer, ou supprimer les données
compromettantes.
Nous verrons dans cette partie quelques techniques d’anti-forensic ainsi que les méthodes de
l’enquêteur pour les déceler et les contourner.
IV.1 – Stéganographie La stéganographie est l’art de dissimuler des informations. Il s’agit de masquer 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.
La stéganographie diffère de la cryptographie qui se contente de rendre le message inintelligible.
Quand le message est dissimulé par la stéganographie l’enquêteur n’a pas connaissance de
l’existence d’un message caché. La recherche de contenu stéganographié repose donc la plupart du
temps sur des soupçons.
Pour un expert, il sera parfois nécessaire d’analyser des fichiers pour détecter un contenu caché.
Pour ce faire il existe plusieurs méthodes de détection, qui consistent à retrouver les traces que
laissent les différentes techniques de stéganographie.
La stéganalyse se propose de détecter des contenus stéganographiés dans des fichiers, ou des
médias physiques comme la peinture ou les images. Pour détecter un message à l’intérieur d’un
média numérique, il convient avant tout de comprendre comment l’information est dissimulée à
l’intérieur du média, cela revient à rechercher l’algorithme utilisé pour cacher un message dans un
fichier.
La recherche d’algorithmes connus pour la dissimulation de message constitue la principale méthode
de détection.
Mémoire de recherche appliquée 2014
Page 61
Prenons un fichier dans lequel nous avons caché un contenu :
Figure 50 - Détection de logciciel de stéganographie avec StegDetect
StegDetect31 permet de révéler que l’image testée a été traitée avec le logiciel jphide.
La connaissance de la technique stéganographique et du logiciel utilisé permet de retrouver le
contenu caché en utilisant cette technique de manière inverse. Par exemple pour jphide, il suffit
d’utiliser un éditeur héxadécimal pour recouvrer les données. En effet, jphide exploite les champs
vides d’un fichier au format JPEG pour y cacher les données, on retrouvera donc les données soit en
fin de fichier, soit dans le champ de commentaires du fichier JPEG.
IV.2 – Formatage Sécurisé Si le formatage d’un disque n’est pas indispensable lors du changement de son ordinateur personnel,
ce formatage est essentiel en entreprise pour éviter toute récupération de données confidentielles.
Les mesures de sécurité en entreprise imposent que les disques soient formatés de manière
sécurisée, voire même détruits. En effet, les fuites de données en entreprise constituent un risque
majeur.
Type d'effacement Temps de réalisation (Disque 100Go)
Niveau de sécurité
Commentaire
Formatage classique ~ 1 minute Faible Ne supprime que les entrées de la table d'indexation
Effacement par la méthode DoD 5220.22-M
Jusqu’à plusieurs jours Moyen Nécessite 3 écritures successives
Effacement Sécurisé > 1 heure Haut Toutes les données accessibles sont écrasée (écriture par-dessus)
Effacement Sécurisé par la méthode NIST 800-88
< 1 minute Très haut Modifie la clé de chiffrement du disque et réattribue l'indexation
Tableau 9 - Représentation des différents type d’effacement
La simple suppression d’un fichier sur un disque dur ne suffit pas à rendre cette donnée
irrécupérable. De même, le simple fait de formater un disque dur indique au système que
l’emplacement est libre, mais les données toujours présentes, restent récupérables. Pour effacer un
disque de manière sûre, nous devons utiliser des logiciels spécialisés.
Peter Gutmann, chercheur en informatique et auteur de nombreux articles traitant de la sécurité des
architectures matérielles, décrit une méthode d’effacement sécurisée qui porte son nom « Peter
Gutmann 35 passes ». On l’appelle aussi le formatage bas niveau, qui consiste à remettre chaque bit
du disque à la valeur 0, du début à la fin du volume.
Mémoire de recherche appliquée 2014
Page 62
DBAN32 est un système tiers contenant les outils mettant en œuvre les méthodes Quick Erase, DoD
5220.22-M, Gutmann Wipe, ces méthodes ne sont valables que pour les disques durs magnétiques.
Figure 51 - Effacement de données avec DBAN
A – Effacement des disques durs magnétiques L’effacement d’un disque dur magnétique sollicite les têtes de lectures qui vont remettre chaque bit
à 0. Certaines méthodes procèdent à plusieurs passages d’écriture/effacement pour aboutir à la
disparition totale des données. L’effacement est plus ou moins efficace selon la méthode. Nous
décrirons les plus utilisées mises en œuvre par DBAN.
Quick Erase : il s’agit d’un formatage simple qui met chaque bit a 0. Il n’y a qu’un seul
passage sur chaque secteur du disque.
DoD 5220-22.M : une méthode qui impose aux têtes de passer trois fois sur chaque secteur
pour le placer successivement à 0, 1 puis à nouveau 0.
Gutmann Wipe : C’est la méthode décrite par Peter Gutmann qui procède à 35 passages sur
chaque secteur du disque.
PRNG Stream : probablement la méthode la plus efficace pour définitivement effacer des
données, car elle écrit des données chiffrées sur chaque secteur de manière aléatoire. De
base elle s’emploie en 4 passes, mais donne un meilleur niveau de sécurité en 8 passes.
Mémoire de recherche appliquée 2014
Page 63
B – Effacement des disques flash, SSD La méthode Secure Erase permet l’effacement sûr d’un disque SSD en deux étapes : l’effacement
simple du disque, les mécanismes d’optimisation d’un SSD.
Les systèmes d’exploitation postérieurs à Windows XP exploitent la technologie TRIM vue au chapitre
« II.2 – Les supports numériques », qui indique au contrôleur de disque quels blocs sont inutilisés.
TRIM est utilisée par la méthode « Wear Leveling » des SSD qui prolonge sa durée de vie, en
réécrivant régulièrement les blocs inutilisés pour répartir l’usure.
Ainsi sur un SSD formaté, après réécriture même partielle, il n’est pas possible d’y récupérer des
données.
C – Effacement de mémoire vive Il n’y a pas de méthode d’effacement sécurisée des données d’une mémoire vive. Comme vu au
chapitre « III.2 – Acquisition et analyse de la mémoire volatile » les données en mémoire vive sont
volatiles, et disparaissent dans la minute suivant la mise hors tension de l’ordinateur.
D – Effacement sécurisé au niveau matériel Certains constructeurs n’hésitent pas à proposer du matériel embarquant un système d’effacement
voire de destruction du support.
La société RunCore33, grand fabriquant de SSD pour l’industrie et l’armée, propose en effet des
disques possédant deux boutons, l’un permettant de réécrire entièrement le disque avec des
données aléatoires, (ce qui rend la récupération très difficile), et l’autre permettant tout simplement
de détruire la puce NAND, qui ne sera plus lisible et rendra la récupération impossible.
IV.3 – Falsification de Timestamp Les suites logicielles, et Framework d’analyse forensic, comme Encase, FTK, sont capables de
produire un calendrier des actions en indexant les journaux et logs ; fournissant une chronologie
d’accès aux différents fichiers du système.
Un attaquant ou un utilisateur malveillant a la possibilité de couvrir ses traces en falsifiant les
attributs d’accès aux fichiers (timestamp). Les outils comme TimeStomp34 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…).
Mémoire de recherche appliquée 2014
Page 64
Figure 52 - Falsification des dates d’un fichier avec Timestomp
Timestomp exploite une faille des systèmes de fichiers NTFS, en utilisant deux appels systèmes
permettant de falsifier les informations MACE (Modification, Accès, Création, Ajout (Entry)).
Les informations MACE identifient les modifications et les accès aux fichiers.
Ces appels sont :
NtQueryInformationFile() : permet de renvoyer les informations MACE du fichier. Il est
impliqué dans l’affichage des informations de dernier accès lorsqu’un utilisateur consulte les
propriétés d’un fichier.
NtSetInformationFile() : permet de modifier les informations MACE, c’est cet appel qui est
impliqué dans la modification de la date de dernière modification quand un utilisateur édite
un fichier.
L’utilisation de Timestomp falsifie les attributs MACE, on remarque ici qu’un fichier créé pour
l’exemple le 18/08/2013, une fois passé au Timestomp, a pour date de dernière modification (option
–m) le 18/01/2038 à 22h23.
Une analyse de cohérence des fragments de fichier sur un disque dur permet d’analyser les
modifications apportées aux informations MACE.
La connaissance des méthodes d’allocation de données sur un disque dur permet une analyse plus
fine pour déterminer si les fichiers du système ont subi des modifications.
Il existe toutefois dans de nombreux fichiers, des metadatas qui attribuent aux fichiers des
informations différentes de celles des propriétés du système.
Mémoire de recherche appliquée 2014
Page 65
Pour l’exemple, nous prendrons un fichier créé avec le logiciel Microsoft Office Word que nous allons
modifier grâce à Timestomp.
Figure 53 - Falsification des dates d’un document WORD avec Timestomp
Le fichier est modifié, nous lui avons donné comme date de dernier accès : modification et création la
1er janvier 1985, le système de fichier NTFS renvoie les mêmes informations :
Figure 54 - Propriété du document WORD après modification du timestamp
Mémoire de recherche appliquée 2014
Page 66
Le logiciel Microsoft Word en revanche ne possède pas les mêmes informations. Pour les vérifier,
nous ouvrons le fichier, et nous consultons ses propriétés :
Figure 55 - Propriété du document WORD affiché dans Office Word après modification du timestamp
On remarque que les dates ne correspondent pas.
Pour modifier ces informations, il faut intervenir dans les fichiers contenant les metadatas, il s’agit
des relations contenant les propriétés XML du fichier docx. Elles sont consultables en dissociant le
fichier Word avec un logiciel comme 7zip :
Figure 56 - Document WORD dissocié avec 7zip
Le dossier docProps contient deux fichiers XML, donc core.xml :
Figure 57 - Contenu du fichier XML
Ces informations sont exploitées par Word pour les afficher. Leur modification permet de renvoyer
des informations différentes, et contribue à rendre la falsification plus probante. Le fichier core.xml,
une fois falsifié devra aussi être passé au logiciel timestomp pour crédibiliser encore la falsification du
fichier.
Mémoire de recherche appliquée 2014
Page 67
IV.4 – Cryptographie La cryptographie est l’art de protéger un contenu. C’est un domaine de la cryptologie qui assure la
confidentialité, l’authenticité, et l’intégrité des messages sécurisés à l’aide de clés, aussi appelées
« secret ».
La cryptographie diffère de la stéganographie car elle s’attache à chiffrer les messages et non à les
camoufler. L’existence d’un message n’est donc pas à prouver, mais il s’agit pour l’enquêteur de
décrypter le contenu de ce message.
La cryptographie est utilisée depuis l’antiquité. Les gouvernements, lors de conflits, l’ont associée à la
stéganographie pour diffuser des messages, et maintenir le contact avec les armées et les alliés. Le
recours à la cryptographie a été d’un intérêt stratégique très important, et la cryptanalyse a joué un
rôle déterminant dans le déroulement d’évènements historiques. Pendant la deuxième guerre
mondiale, la machine Enigma, développée par le gouvernement allemand, lui a permis de maintenir
un contact secret avec son armée. La découverte et le décryptage du code de cette machine par les
alliés ont conduit à la défaite de l’Allemagne.
La cryptanalyse est une technique de recouvrement de contenu en clair, cela implique que
l’enquêteur ne possède pas la clé de chiffrement et doit découvrir l’algorithme employé.
Aujourd’hui, la cryptographie est employée à de nombreux niveaux. On l’utilise pour chiffrer des
canaux d’échanges comme un tunnel VPN mais aussi pour chiffrer la communication entre un client
et un serveur (SSL). Elle est également utilisée sur un disque dur pour protéger des données
confidentielles.
Un enquêteur intervenant sur une machine ne va pas seulement chercher des fichiers selon les
critères qui lui sont imposés. Si une incohérence de taille de partition/disque révèle l’existence d’un
conteneur ou d’une partition chiffrée cachée, la recherche devra également porter sur ces derniers.
BitLocker et TrueCrypt sont les logiciels les plus répandus sur les systèmes d’exploitation Windows
pour chiffrer un conteneur ou toute une partition.
A – Détection de partition ou conteneur chiffré L’utilisation de TrueCrypt35 et BitLocker36, permet deux modes de dissimulation :
le mode conteneur chiffré,
le mode partition.
Le mode partition chiffre tout ou partie du disque dur, aucun fichier en clair n’est écrit sur le disque.
Les conteneurs sont aussi fiables que les partitions, mais présentent le risque d’être supprimés par
inadvertance, contrairement à une partition. Ils peuvent être partagés ou envoyés. Les fichiers
ajoutés à ces conteneurs ne seront plus lisibles une fois l’accès verrouillé par une passphrase, ou une
clé.
Truecrypt a la particularité de créer des fichiers qui n’ont pas d’en-tête, informant qu’il s’agit d’un
conteneur ou d’une partition Truecrypt. Ainsi une partition apparaitra vierge si le disque est analysé,
et un conteneur chiffré apparaitra comme un espace occupé sans pour autant révéler sa nature.
Mémoire de recherche appliquée 2014
Page 68
La détection d’un conteneur ou d’une partition chiffrée n’est pas simple, il existe cependant des
outils spécialisés qui peuvent aider l’analyste dans ses recherches. Les outils TCHunt37 et EDD38
(Encryption Disk Detector) permettent de révéler sur un disque la présence plausible de conteneurs
chiffrés et/ou cachés.
Prenons l’exemple de TCHunt pour la détection de conteneurs chiffrés et/ou cachés. Il va effectuer
les tests suivants sur les fichiers du système :
La division par 512 de la taille du fichier doit être égale à zéro.
La taille minimum du fichier doit être supérieure à 19kb.
TCHunt effectue le test du χ² [khi-carré] sur les fichiers suspects.
Le fichier suspect ne doit posséder aucune en-tête permettant de déterminer son origine.
Le résultat de l’analyse est une liste de fichiers suspectée d’être des conteneurs chiffrés. Les auteurs
de TCHunt ont cependant affirmé que la survenance de faux positifs/négatifs était tout de même
possible. Une étude sur TCHunt a montré que 11% des fichiers d’un système d’exploitation
répondent à au moins 3 des 4 critères cités.
Nous avons créé un conteneur chiffré sur le disque dur d’une machine :
Figure 58 - Création d’un conteneur TrueCrypt
Les conteneurs chiffrés et masqués sont la base de la défense par déni plausible.
Le déni plausible est la possibilité pour une personne soupçonnée d’utiliser un logiciel de
chiffrement, de nier de manière tout à fait plausible l’existence d’un fichier chiffré créé par ce
logiciel.
Les conteneurs cachés résistent à l’analyse par éditeur hexadécimal, ils ne peuvent donc pas être
identifiés comme étant un espace de stockage chiffré, il est alors très simple de lui donner une
extension qui n’attirera pas la curiosité.
Il faut ensuite suivre les étapes de configuration du logiciel pour aboutir à la création du conteneur
caché.
Mémoire de recherche appliquée 2014
Page 69
Voici l’en-tête du fichier ouvert avec un éditeur hexadécimal :
Figure 59 - Analyse de l’entête d’un conteneur TrueCrypt
Dans l’entête, il n’y a pas d’information du logiciel qui a produit ce fichier.
Utilisons TCHunt pour vérifier s’il détecte la présence du conteneur chiffré :
Figure 60 - Détection d’un conteneur TrueCrypt avec TCHunt
Ici TCHunt a détecté le fichier que nous venons de créer en lui donnant seulement comme critère de
recherche, un répertoire du système d’exploitation.
TCHunt est donc bien capable de détecter la présence possible d’un conteneur, comme expliqué
précédemment. Il est capable par analyse de la structure du fichier de déduire qu’il peut s’agir d’un
conteneur caché.
Mémoire de recherche appliquée 2014
Page 70
L’utilitaire EDD permet quant à lui de déterminer si un disque contient une partition chiffrée, il
permet la détection d’outil tel que TrueCrypt ou encore Bitlocker.
Figure 61 - Détection d’une partition TrueCrypt avec EDD
La détection et l’acquisition de ce mode de camouflage sont essentielles pour un enquêteur. En effet,
une enquête ne peut réellement être menée à bien que si toutes les possibilités sont explorées. Le
recours à une partition ou conteneur caché se répand rapidement dans l’usage public et doit être
étudié avec attention lors d’une analyse forensic.
B – Récupération de mot de passe Lors d’enquête, la sécurité du système cible devra parfois être forcée. Il s’agit de récupérer des mots
de passe, clés de chiffrements, et autres permettant d’accéder au système dont les données sont
protégées.
L’acquisition d’images et de dump mémoire constituent la première étape de l’analyse, pour y
récupérer :
Soit directement les mots de passe en clair pour les applications non sécurisées,
Soit des hashs de mots de passe, souvent stockés dans les systèmes d’exploitation au
format MD5 ou SHA pour Linux, LM et NTLM pour Windows.
Nous utiliserons John The Ripper39 pour illustrer la récupération de mot de passe. John est l’outil de
cassage de mot de passe OpenSource le plus populaire. Il est utilisé par de nombreux professionnels
de la sécurité et auditeurs lors de tests d’intrusion.
Mémoire de recherche appliquée 2014
Page 71
John The Ripper est capable de casser de nombreux formats de chiffrements de mots de passe tels
que MD5, BlowFish, AFS, les hashs LM et NTLM. D’autres extensions lui permettent de casser des
mots de passe stockés dans des bases MySQL et autres bases de données d’annuaire (LDAP).
Il existe trois modes d’utilisation de John :
Le mode simple : il s’agit de transformer le mot de passe sur la base du nom d’utilisateur ;
pour julien par exemple, il va tenter les mots de passe « jul1en, JuLiEn, julien123, etc… On
comprend qu’un mot de passe cassé par cette méthode est un mot de passe très faible.
Figure 62 - Attaque simple sur un mot de passe avec John The Ripper
L’attaque par dictionnaire : John utilise un fichier dictionnaire contenant de nombreux mots
susceptibles d’être le mot de passe testé. Il compare le mot de passe avec celui contenu dans
le dictionnaire pour le déterminer. Il est également capable d’utiliser une rainbow table
contenant des milliers de mots de passe et leurs hashs. John compare les Hashs pour
déterminer le mot de passe, lorsqu’un hash correspond le mot de passe est décrypté.
Figure 63 - Attaque par dictionnaire sur un mot de passe avec John The Ripper
L’attaque par force brute : elle consiste à tester une combinaison de caractères aléatoires
jusqu’à trouver le bon mot de passe. En fonction de la puissance de l’ordinateur et de la
complexité du mot de passe, l’attaque peut prendre beaucoup de temps.
Les techniques de récupération de mots de passe sont sensiblement identiques quel que soit le
logiciel employé. L’attaque simple par transformation ainsi que l’attaque par force brute sont
employées par ces logiciels.
Mémoire de recherche appliquée 2014
Page 72
Si la récupération d’images ou de dumps mémoire n’est pas possible, à cause d’un mot de passe BIOS
protégeant le système, il est toutefois possible d’obtenir l’accès à la machine en cassant le mot de
passe par l’utilisation d’un système tiers contenant des logiciels du type CmosPwd40. Voici un
exemple d’utilisation :
Figure 64 - Reset du mot de passe BIOS avec CmosPWD
Dans ce cas, le mot de passe est simplement supprimé, et l’accès au système d’exploitation sur le
disque de la machine est accessible.
Le cassage de mot de passe n’est pas toujours simple. Dans de nombreux cas, la récupération du mot
de passe n’est pas possible, en raison de la complexité du mot, ou simplement de l’absence de traces
ou de stockage du mot de passe.
Cependant, les statistiques d’utilisation de mot de passe montrent que l’utilisateur a en général
recours à un mot de passe simple et facile à retenir. Ainsi le manque de rigueur de l’utilisateur peut
conduire à faciliter le travail de l’enquêteur en recouvrant un mot de passe faible.
Le tableau suivant représente le temps qu’il faut pour casser un mot de passe en fonction de sa
complexité :
Taille Minuscules Avec une Majuscule
Avec des caractères spéciaux
6 caractères 10 minutes 10 heures 18 jours
7 caractères 4 heures 23 jours 4 ans
8 caractères 4 jours 3 ans 463 ans
9 caractères 4 mois 178 ans 44 530 ans
Tableau 10 - Temps de cassage d’un mot de passe en fonction de sa complexité
Mémoire de recherche appliquée 2014
Page 73
IV.5 – Obfuscation de code et packers A – Obfuscation L’obfuscation de code, ou rendre impénétrable un code, est une méthode de dissimulation du
langage. Il s’agit de rendre le code incompréhensible par un être humain, mais toujours compatible
avec le langage de l’ordinateur et compilable.
L’obfuscation est un moyen de protection du code source, en particulier pour une entreprise qui
souhaite protéger son investissement en développement. Les pirates utilisent également cette
technique pour dissimuler le fonctionnement de leur malware. Le but de l’obfuscation de code est
principalement de rendre plus difficile la rétro-ingénierie.
Il existe différentes méthodes pour obfusquer du code :
Méthode aléatoire : on remplace chaque identifiant ou variable du code, par une suite de
caractères aléatoires
Méthode Overload Induction : les identifiants du code sont remplacés par des caractères
aussi simples que possible a(), b(), etc…
Méthode d’invisibilité : les identifiants sont remplacés par des caractères accentués
généralement interdits dans le langage et inconnus pour les compilateurs
Exemple de code non obfusqué :
public obfucate void put(int key, Algorithm value) {
Integer I = new Integer(key);
super.put(I, (Object) value);
}
Obfusqué par la méthode aléatoire :
public obfucate void 5nbvj (int nfdjk, ke45v tbd6c) {
Integer cuzilb5cesqu5gf = new Integer(nfdjk);
super.vsd6qmv5fe9sqoi(nfdjk, (Object) tbd6c);
}
Obfusqué par la method Overload Induction :
public obfucate void a (int a, b c) {
Integer d = new Integer(a);
super.a(d, (Object) c);
}
Obfusqué par la méthode d’invisibilité :
public obfucate void #~a (int @b, f# a~) {
Integer #~b = new Integer(@b);
super.#~a(#~b,, (Object) a~);
}
Il existe encore plusieurs méthodes comme la suppression de commentaires, la suppression de style,
l’indentation ou encore le chiffrement des chaînes de caractères, etc…
Mémoire de recherche appliquée 2014
Page 74
B – Packers Les packers ou compacteurs sont des logiciels permettant de compresser des fichiers exécutables,
certains peuvent aussi chiffrer le contenu.
Ils sont intéressants car le résultat de la compression est un fichier, qui une fois lancé, se
décompresse lui-même. Comme les packers agissent sur le code du binaire ou de l’exécutable, ils
vont nécessairement changer l’empreinte du fichier « packé », et laisser des traces dans l’en-tête.
Les antivirus sont sensibles à la modification du fichier par un packer s’il est connu. En effet l’analyse
d’un fichier avec un éditeur hexadécimal révèle qu’il contient des informations sur le packer utilisé.
Les créateurs de malware préfèreront faire le choix d’un packer en fonction de ses statistiques de
détection par les différents anti-virus du marché.
Figure 65 - Détection du packer UPX avec hexdump
Nous venons de voir et de décrire différentes méthodes anti-forensic.
Cette étude n’est pas exhaustive, mais présente un large panel de techniques utilisées au quotidien
par les particuliers, les entreprises et surtout les pirates.
Elles font aussi bien appel à des notions d’informatique, tant logicielle que matérielle, et ont toutes
une finalité : empêcher la découverte des actions menées sur le système.
Toutes ces techniques ont différentes parades, et il est évident que ceux qui les emploient auront
toujours une longueur d’avance sur ceux qui tentent de les contourner.
Nous verrons par la suite comment ces techniques peuvent être mises en œuvre dans des logiciels
malveillants appelés malwares.
Mémoire de recherche appliquée 2014
Page 75
Chapitre V : Analyse de malware
Le développement des nouvelles technologies de l’information massivement utilisées aujourd’hui
dans nos sociétés a conduit à une nouvelle forme de menace : la cybercriminalité. Se présentant sous
diverses formes (arnaques, piratages, malwares…), ces menaces constituent un réel risque pour nos
données.
Les malwares (Trojan, Botnet, Vers…) sont depuis quelques années au cœur des problématiques de
sécurité et ne cessent de se développer tout en devenant de plus en plus complexes.
L’analyse de malware est une branche spécifique de l’investigation numérique, réalisée
généralement en laboratoire elle peut intervenir lors d’une réponse à incident dans le but d’identifier
les machines infectées.
Les chercheurs en sécurité réalisant ce type de tâche ont pour mission d’étudier le comportement de
ces logiciels malveillants afin de comprendre leur fonctionnement et identifier les personnes à
l’origine de ces logiciels.
Dans cette partie nous appliquerons les méthodes de forensic étudiées précédemment sur un cas
concret : le malware NJRAT/Bladabindi.
V.1 – Définition et types de malwares Un malware est un logiciel exécuté à l’insu de l’utilisateur, dans le but d’accomplir des actes
malveillants (vols de données, espionnage industriel, dénis de service…). Les malwares sont diffusés
de plusieurs manières : phishing, page web, téléchargement de contenus….
L’illustration ci-dessous présente de manière générale la diffusion d’un malware.
Figure 66 - Représentation de la diffusion de malware
Mémoire de recherche appliquée 2014
Page 76
Voici la liste des principaux types de malwares :
Cheval de Troie : Un cheval de Troie ou Trojan est un programme malveillant effectuant des
actions malicieuses à l’insu de l’utilisateur. Il est dissimulé dans un programme sain afin de
faire croire à l’utilisateur qu’il s’agit d’un programme sans danger. C’est lors de l’exécution du
programme que se lancera le Trojan.
Ver : Un ver informatique est un programme malicieux capable de s’auto répliquer en
utilisant un réseau informatique comme Internet. En 2010, le ver Stuxnet a été découvert
dans une centrale Iranienne, il espionnait et reprogrammait les systèmes industriels.
RAT (Remote Access Tool) : Un RAT est un programme permettant la prise de contrôle totale,
à distance, d'un ordinateur depuis un autre ordinateur. Il est constitué de deux parties : le «
client » et le « serveur ». De nombreux Trojan sont définis comme étant des RAT car ils
permettent un contrôle total de la machine infectée. En 2012, le RAT DarkComet a ainsi été
utilisé à mauvais escient par l’armée syrienne dans le but de récupérer des informations sur
les insurgés.
Rootkit : Un Rootkit permet de dissimuler les traces d’un pirate sur un système compromis
tout en pérennisant un accès (non autorisé) à l’ordinateur infecté.
Backdoor : Une Backdoor (porte dérobée), est une fonctionnalité inconnue de l’utilisateur
qui permet de donner un accès secret au logiciel ou matériel.
Ransomware : Un ransomware ou rançongiciel est un logiciel malveillant qui bloque l’accès
au contenu de la machine en chiffrant les données du disque dur. Une somme d’argent est
demandée à l’utilisateur en échange de la clef de déchiffrement. Fin 2013, le ransomware
CryptoLocker avait contaminé près de 250 000 machines dont 5,8% se trouvait en France.
Exploit : Dans le domaine de la sécurité informatique, un exploit est une fonctionnalité non
connue des concepteurs qui permet d’exploiter une faille de sécurité dans un système
d’exploitation ou dans un logiciel. Un exploit permet généralement de prendre le contrôle
d’un système, une élévation de privilège, ou d’effectuer une attaque de déni de service. Le
site http://www.exploit-db.com/ recense tous les exploits découverts.
Rogue : Un rogue est un faux logiciel de sécurité (anti-virus, anti-spyware) qui fait croire à
l’utilisateur que son système est infecté, dans le but de lui faire acheter ce faux logiciel.
Spyware : Un spyware ou logiciel espion est un logiciel malveillant qui s'installe dans un
ordinateur dans le but de collecter et transférer des informations sur l'environnement dans
lequel il s'est installé, très souvent sans que l'utilisateur en ait connaissance.
Adware : Un adware est un logiciel publicitaire qui affiche de la publicité de manière
intempestive sur le système de l’utilisateur. Certains adwares espionnent les habitudes de
l’utilisateur pour lui envoyer de la publicité ciblée.
Mémoire de recherche appliquée 2014
Page 77
Keyloggueur : Un keyloggueur ou enregistreur de frappes est un programme qui permet
d’enregistrer tout ce qui est tapé au clavier de l’ordinateur. Il est ensuite récupéré par la
personne à l’origine de l’installation du keyloggueur dans le but d’espionner l’utilisateur.
Certains malwares utilisent des techniques d’obfuscation dans le but de ne pas être détectés par les
anti-virus ou de rendre l’analyse difficile. Les concepteurs de malware utilisent généralement des
logiciels appelés « Packer » qui permettent de dissimuler le code contenus dans le binaire.
Plusieurs sites recensent des échantillons de malware dans le but de les mettre à disposition de la
communauté et lutter contre leur expansion.
Voici quelques sites permettant de télécharger des échantillons (samples) de malware :
http://malwaredb.malekal.com/ : Site regroupant plus de 35000 échantillons de malware.
http://openmalware.org/ : Site regroupant plus de 5 000 000 d’échantillons de malware.
http://virusshare.com/ : Site regroupant plus de 15 000 000 d’échantillons de malware.
V.2 – Création d’un environnement d’analyse La création d’un laboratoire d’analyse ou « bac à sable « (Sandbox) est essentielle dans l’étude
comportementale des malwares. Elle permet d’étudier le malware sans infecter le système hôte. Un
environnement d’analyse ne dispose d’aucune protection. Les logiciels anti-malwares ne doivent pas
être présents sur la machine infectée et le pare-feu doit être désactivé pour permettre au malware
de s’exécuter totalement. Ainsi l’analyste pourra étudier pleinement le comportement du malware.
Pour la mise en place de cet environnement nous utiliserons le logiciel de virtualisation VMWARE
largement répandu dans ce type d’analyse. VMWARE permet d’isoler complètement la machine
infectée, ainsi le système hôte ne risquera pas d’être contaminé.
Certains malwares évolués arrivent à détecter qu’ils sont dans un environnement virtualisé. Il
conviendra donc de désactiver à minima les outils tels que les « VMWARE tool » afin que le malware
ne détecte pas la supercherie.
Dans le cadre de cette analyse nous disposons du serveur de commande et de contrôle (C&C).
Mémoire de recherche appliquée 2014
Page 78
Notre architecture sera donc composée des machines suivantes.
Un serveur de C&C
Une machine infectée
Une machine supplémentaire saine pour étudier la possible capacité d’autoréplication
Une machine linux avec une distribution spécialisée
Notre architecture se présentera de la manière suivante.
Figure 67 - Schéma de l’environnement d’analyse
Configuration de la machine infectée Vmware : Lan Segment
Windows 7 SP1 32 bit (pas d’antivirus, pare-feu désactivé)
Le binaire du malware
Un éditeur hexadécimal
Un outil de capture réseau (Wireshark)
Des outils d'analyse d'exécutable (PEid, Stud_PE)
Des outils de supervision (Process Monitor, Process explorer, Autoruns)
Détecteur de packer (RDG packer detector)
Outil d'analyse de la mémoire vive (Volatility)
Outil de récupération de fichier (Foremost, Photorec)
Un désassembleur (IDA PRO)
Un débogueur (OllyDBG)
Tableau 11 - Configuration de la machine infectée
Mémoire de recherche appliquée 2014
Page 79
Configuration du serveur C&C Vmware : Lan Segment
Windows 7 SP1 32 bit
Le serveur de contrôle du malware
Un packer
Un outil de capture réseau (Wireshark)
Configuration de la machine saine Vmware : Lan Segment
Windows 7 SP1 32 bit (pas d’antivirus, pare-feu désactivé)
Un éditeur hexadécimal (Hexédit)
Un outil de capture réseau (Wireshark)
Des outils de supervision (Process Monitor, Process explorer, Autoruns)
Configuration de la machine Linux Vmware : NAT
Une distribution Linux (Sift, RemNux, KALI…)
Le binaire du malware
Tous les outils par défaut (File, Strings…)
Tableau 12 - Configuration des autres machines
Dans le domaine de la sécurité informatique il existe également des logiciels appelés Honeypot (pot
de miel) qui sont des environnements volontairement vulnérables dans le but d’attraper et d’étudier
les nouveaux malwares en circulation. Ce genre de dispositifs nécessite de grandes précautions pour
éviter tout risque d’infection.
Mémoire de recherche appliquée 2014
Page 80
V.3 – Etude de cas : le malware NjRAT Le malware NjRAT est un malware de type RAT (Remote Access Tool), c’est-à-dire qu’il permet un
accès total à l’ordinateur de la victime. Ce type de malware est légion sur Internet, car il est mis à
disposition gratuitement et est facile à mettre en place.
Voici quelques exemples de malware de type RAT :
DarkComet
Blackshales
Poison Ivy
Backorifice
Le malware NjRAT a été détecté par plusieurs anti-virus sous le nom de MSIL/Bladabindi.
Fin 2013, le site http://malwaredb.malekal.com/ recensait encore des malwares ayant la même
signature que NjRAT.
Le tableau ci-dessous montre les derniers malwares NjRAT recensés ayant la signature
MSIL/Bladabindi.
Le malware NjRAT dispose des fonctionnalités suivantes :
Gestion des fichiers : Possibilité de téléchargement, d’envoi, de modification, de création de
fichiers sur le poste de la victime.
Exécution de fichier : Possibilité d’exécuter des fichiers (script, programme..) à distance sur le
poste de la victime.
Bureau à distance : Prise de main à distance du poste infecté.
Caméra à distance : Possibilité d’activer la caméra du poste infecté à distance.
Terminal distant : Ouverture d’une fenêtre d’invite de commande à distance.
Gestion des processus : Gestion des processus en cours sur le poste infecté.
Registre : Accès et modification de la base de registre.
Figure 68 - Malware NjRAT/Bladabindi recensé fin 2013
Mémoire de recherche appliquée 2014
Page 81
Enregistreur de frappe : Cette fonctionnalité permet d’enregistrer tous les éléments tapés au
clavier.
Tchat instantané : Discussion en direct avec l’utilisateur du poste infecté
Obtention des mots de passe : Possibilité de récupérer tous les mots de passe stockés sur le
poste infecté.
Gestion du malware : Cette fonctionnalité permet de gérer le malware (mise à jour,
suppression, déconnexion, renommage, redémarrage).
L’interface propose également une vue des machines infectées, ainsi qu’un « Builder »
permettant de générer le malware.
La copie d’écran suivante montre l’interface d’administration du malware.
Figure 69 - Interface de commande et de contrôle du malware
Le schéma ci-dessous illustre quelques fonctionnalités du malware NjRAT.
Figure 70 - Fonctionnalité du malware NjRAT
Lors de cette analyse nous créerons nous-même le malware grâce au « Builder » intégré à l’interface
du serveur de commande et de contrôle.
Mémoire de recherche appliquée 2014
Page 82
A –Création du programme malveillant Avant de contaminer notre machine, nous devons créer le malware qui sera exécuté sur la machine
distante. Nous utiliserons pour ce faire le « builder » intégré à l’interface de NjRAT.
Figure 71 - Emplacement du « Builder »
Après avoir cliqué sur « Builder », la fenêtre suivante apparait.
Figure 72 - Fenêtre de configuration du Malware
Nous pouvons ici configurer le malware de la manière suivante :
Host : il s’agit de l’adresse IP du serveur C&C. Ici 192.168.42.100
Port : C’est le port sur lequel communiquera le malware avec le C&C. Ici le port 1177.
VicTim Name : C’est le nom qui apparaitra sur le serveur C&C lorsque la machine sera
infectée. HacKed est le nom donné par défaut par NjRAT.
ExeName : C’est le nom donné au malware. Ici ESGI.exe, il apparaitra sous ce nom dans la
liste des processus de la machine infectée.
1 2
3
4
5
6 7
1
2
3
4
Mémoire de recherche appliquée 2014
Page 83
Directory : C’est le répertoire dans lequel s’exécutera le malware. Ici le répertoire TEMP.
o USB spread permet de configurer le malware pour qu’il se répande via les clefs USB
o Icon permet d’attribuer une icône (par exemple l’icône d’une image jpg), pour
tromper l’utilisateur afin qu’il exécute le malware. Pour l’analyse nous avons ici mis
une icône avec un point d’exclamation.
o Protect Process [BSOD] : permet de provoquer un écran bleu de l’ordinateur si le
processus du malware est stoppé.
o Randomize Stub : permet de générer des caractères aléatoires lors de la création du
malware afin de tromper les logiciels de sécurité.
Certains pirates utilisent des techniques d’obfuscation pour leur malware afin de compliquer la tâche
des analystes et des détecteurs de virus. Pour cette analyse nous allons créer une version obfusquée
de notre malware. Nous utiliserons ici un Packer connu destiné à compresser le binaire : Themida.
Themida41 est un logiciel payant permettant de compresser des fichiers exécutables. Lors de
l’exécution du binaire il sera alors décompressé et placé en RAM.
L’utilitaire s’utilise ainsi :
Figure 73 - Utilisation du packer Themida
Le logiciel comprend de multiples fonctionnalités permettant par exemple de détecter si le binaire
est exécuté dans une machine virtuelle. Ces utilitaires servent également à diffuser plusieurs versions
du malware.
5
7 6
Mémoire de recherche appliquée 2014
Page 84
Nous avons donc créé 3 versions de notre malware :
Une version classique
Une version « random » créée avec l’option intégrée
Une version packée avec l’utilitaire Themida.
Figure 74 - Représentation des 3 versions du malware
Le tableau ci-dessous nous montre les différentes empreintes générées.
Nom du malware Empreintes Taille du binaire MD5 : 77813d77dcf59ecbf79e78f99fc9d13e
SHA256 : 8ebfb17e894434521101fa51f810f5197d0410804a1a9188e00a1d363ead5e32
MD5 : f961fdfae33404843421b095853f8c89
SHA256 : 60a7f7518d1f1b616f69f246517088a6cfac38e0112d162ac671db76fb2f0520
MD5 : 22e73587fbb304edb0a2c7a245c100a2
SHA256 : 349b853b6a1789bd2ae3fd7218f3ef190ce3b84cac119eb5d7f74a711d58f646
ESGI.exe
ESGI_random.exe
ESGI_packed.exe
44,5 Ko
44,5 Ko
1,11 Mo
Tableau 13 - Empreinte des 3 malware générés
Les empreintes récupérées ici nous montrent 3 versions du malware. Par ailleurs la taille du fichier
est la même pour les 2 premiers fichiers mais est complètement différente pour le binaire packé.
Nous avons comparé ces empreintes avec les bases de données publiques de malwares sur les sites
suivants :
http://malwaredb.malekal.com/
http://openmalware.org/
Aucune correspondance n’a été trouvée, nous venons donc de créer une nouvelle version du
malware. Bien que sans danger pour les utilisateurs, puisque destiné à une étude en laboratoire,
nous publierons ce malware à la fin de l’analyse.
Mémoire de recherche appliquée 2014
Page 85
B – Analyse statique L’analyse statique consiste à étudier le binaire du malware, sans l’exécuter, afin d’extraire un
maximum d’informations. Il est ici nécessaire de désassembler le malware afin de comprendre son
fonctionnement.
Dans le cas d’un binaire packé, il conviendra d’utiliser des techniques de reverse afin de comprendre
le code désassemblé.
Analyse de base – Utilitaire File
L’utilitaire « file » nous permet d’obtenir des informations sur les binaires.
r1tch1e@forensic:~# file ESGI.exe
ESGI.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for
MS Windows
r1tch1e@forensic:~# file ESGI_random.exe
ESGI_random.exe: PE32 executable (GUI) Intel 80386 Mono/.Net
assembly, for MS Windows
r1tch1e@forensic:~# file ESGI_packed.exe
ESGI_packed.exe: PE32 executable (GUI) Intel 80386, for MS Window
Figure 75 - Utilisation de l’outil file
L’utilitaire « file » permet de déterminer le type d’un fichier. Ici nous voyons qu’il s’agit d’un
exécutable Windows au format PE32. A noté : le binaire packé est le seul qui ne montre pas le
langage dans lequel est codé le malware (VB.NET).
Mémoire de recherche appliquée 2014
Page 86
Analyse de base – Utilitaire Strings
L’utilitaire « strings » permet d’extraire les chaines de caractères contenues dans les binaires.
L’extrait ci-dessous permet d’identifier clairement une différence entre les 3 binaires.
ESGI.exe ESGI_random.exe ESGI_packed.exe=+LS6 X%(' ]",G
=+LS6 I%(' |6;8m
3&(1 3&(0 &):_T
p.E +%(' ZvGV
q.@ 7%(' g=5+pL
=--sP p.E )tq/
BSJB q.@ FFquC)
v2.0.50727 r.; gZ47}
#Strings s.6 /*bg_X
#GUID t.1 #iFf
#Blob u., 0a]%j3tl
4@ v.' $9qp
w.exe w." :PIy
mscorlib #. Y`e.
Microsoft.VisualBasic 3 r] r}?;o
System.Windows.Forms .: a#/K
System .2 ;&~d
System.Drawing .% 2SFO
avicap32.dll B%(' BrMQ=
user32.dll =--sP P$~a;
kernel32 BSJB 6red
user32 v2.0.50727 A1Eq
ntdll #Strings T^#h(:
psapi #GUID iy4
kernel32.dll #Blob /#Vy
w.My & dIiW
ApplicationBase w.exe a6TQ
Microsoft.VisualBasic.ApplicationServices mscorlib )>fB
.ctor Microsoft.VisualBasic jH)k
GeneratedCodeAttribute System.Windows.Forms ZtV#(
System.CodeDom.Compiler System S|_@
EditorBrowsableAttribute System.Drawing rbV)i
System.ComponentModel avicap32.dll N+j|
EditorBrowsableState user32.dll fKl~}
Computer kernel32 0(|Q
Microsoft.VisualBasic.Devices user32 7ry&_
DebuggerHiddenAttribute ntdll g?0$
System.Diagnostics psapi :Kde-
Object kernel32.dll t-^o
get_GetInstance <Module> YHoU
User MyApplication 8wy+/kf
.cctor w.My vFrg?
[…] […] […]
Tableau 14 - Extraction de la commande strings
Le fichier « ESGI.exe » laisse apparaitre tout le contenu du binaire. On identifie ici le langage utilisé
(Visual Basic .NET) grâce à la chaîne de caractères « BSJB » en en-tête, mais aussi les appels système
et les DLL chargées.
Le fichier « ESGI_random.exe » laisse apparaitre des éléments présents dans le premier binaire,
cependant nous remarquons une plus forte disparité de caractères aléatoires au début du fichier.
Ceci s’explique par la génération de caractères aléatoires lors de la création du binaire.
Le fichier « ESGI_packed.exe » ne laisse apparaitre qu’une suite de caractères illisibles.
Mémoire de recherche appliquée 2014
Page 87
Analyse de base – Utilitaire Dependency Walker
Un outil intéressant pour l’analyse de malware est l’outil Dependency Walker42. Cet outil permet
d’afficher les dépendances entre un programme et les librairies (DLL).
Identifier les DLL auxquelles fait appel le malware, permet de déduire un grand nombre de ces
fonctionnalités.
Figure 76 - Analyse des dépendances DLL du malware non packé
Nous voyons ici que notre malware (ESGI.exe) fait appel au DLL suivantes :
KERNEL32.DLL : Elle est une des plus utilisées, elle permet plusieurs fonctionnalités telles que
l’accès et la manipulation de la mémoire, des fichiers mais aussi du matériel (hardware).
USER32.DLL : Elle contient tous les composants de l’interface utilisateur (bouton, barre de
défilement) ainsi que les composants qui permettent les actions utilisateurs.
OLEAUT32.DLL : Elle facilite la communication de données entre les applications logicielles.
Elle permet aux applications de manipuler des fichiers et des informations créées par
d'autres applications.
ADVAPI32.DLL : Elle permet d'accéder aux principaux composants avancés de Windows tels
que le gestionnaire de services et le registre.
SHLWAPI.DLL : Elle contient des fonctions pour des chemins d'UNC et d'URL, des entrées de
registre, et des configurations de couleur.
URLMON.DLL : module qui contient des fonctions employées par Microsoft OLE.
VERSION.DLL : module qui contient des fonctions (API) d'interface de programmation
d'applications employées pour les versions de Windows.
Typiquement, une DLL implémente une ou plusieurs fonctions et les exporte pour une utilisation par
un exécutable qui peut ensuite les importer et les utiliser.
Mémoire de recherche appliquée 2014
Page 88
Si le malware est packé, il y aura beaucoup moins d’importations de DLL. Ci-dessous, nous voyons la
liste des DLL importées pour le binaire ESGI_packed.exe.
Figure 77 - Analyse des dépendances DLL du malware packé
Nous voyons clairement une différence entre le binaire original (7 DLL) et le binaire packé (2 DLL).
A titre de comparaison, même un programme basic de type « Hello World » fait appel à plus de DLL
que le binaire packé.
Comme la majorité des programmes, le malware (non packé) contient de nombreuses fonctions
importées. Cependant, seulement quelques fonctions sont intéressantes pour l’analyste.
Il est possible de reconnaitre des fonctionnalités d’un malware en analysant les DLL auxquelles il fait
appel.
Le tableau ci-dessous fait référence aux fonctions communément utilisées par les keyloggueurs.
Kernel32.dll User32.dllCreateFileW ShowWindow
FindFirstFileW RegisterClassExW
FindNextFileW RegisterHotKey
GetCurrentProcess SetWindowTextW
GetProcessHeap SetWindowsHookExW
OpenProcess
ReadFile
WriteFile
Tableau 15 - DLL utilisé par les keyloggueurs
Comme vu précédemment, notre malware possède la fonctionnalité de keyloggueur, en analysant les
fonctions utilisées par notre binaire, nous avons retrouvé toutes les fonctions du tableau ci-dessus.
Cette analyse nous permet d’affirmer que notre malware dispose de la fonctionnalité d’enregistreur
de frappes.
Mémoire de recherche appliquée 2014
Page 89
Analyse sur le site Virus total
Le site https://www.virustotal.com/ permet d’effectuer des analyses en ligne. Nous avons soumis
nos malwares au site afin d’identifier le degré de détection par les anti-virus.
L’analyse du binaire « ESGI.exe » est disponible à cette adresse :
https://www.virustotal.com/en/file/8ebfb17e894434521101fa51f810f5197d0410804a1a9188e00a1
d363ead5e32/analysis/1388949363/
Le binaire ESGI.exe est détecté par 34 anti-virus sur 47. On retrouve dans l’analyse la signature du
malware (MSIL/bladabindi).
L’analyse du binaire « ESGI_random.exe » est disponible à cette adresse :
https://www.virustotal.com/en/file/60a7f7518d1f1b616f69f246517088a6cfac38e0112d162ac671db
76fb2f0520/analysis/1388949912/
Le binaire « ESGI_random » est détecté par 34 anti-virus sur 47. Il n’y a pas de grande différence avec
le premier binaire.
L’analyse du binaire « ESGI_packed.exe » est disponible à cette adresse :
https://www.virustotal.com/en/file/349b853b6a1789bd2ae3fd7218f3ef190ce3b84cac119eb5d7f74a
711d58f646/analysis/1388950258/
Mémoire de recherche appliquée 2014
Page 90
Le binaire « ESGI_packed.exe » n’est détecté que par seulement 15 anti-virus sur 47. Le fait qu’il soit
packé dissimule sa signature auprès de nombreux anti-virus.
On remarque également que les signatures détectées par les 15 anti-virus ne font pas référence à la
signature de NjRAT (MSIL/Bladabindi), cependant un des antivirus (ESET) fait référence au packer
utilisé pour le malware en l’occurrence Themida. Cette information permet à l’analyste d’identifier le
packer utilisé et ainsi de pouvoir le dépacker.
Après cette première approche nous pouvons clairement identifier que le malware Bladabindi est
développé en Visual Basic .NET. Nous pouvons affirmer qu’il s’agit de ce langage après l’analyse du
premier (ESGI.exe) et du second binaire (ESGI_random.exe). Par ailleurs, l’analyse du 3ème binaire n’a
rien laissé apparaître concernant le langage utilisé. De plus ce type de configuration (Binaire packé,
faible détection antivirale, chaines de caractères illisibles) est le cas le plus fréquemment rencontré.
Nous allons donc nous attarder sur la détection du packer utilisé.
Détection de packer
Les concepteurs de malware usent de nombreux stratagèmes pour rendre la détection et l’analyse de
leur code très difficile. Une des techniques les plus utilisées pour dissimuler le contenu d’un binaire
est le recours à un packer. Pour mémoire, un packer est un logiciel servant généralement à protéger
le contenu de son programme en le compressant ou en l’encodant ou encore en le chiffrant. Ces
actions n’altèrent en aucun cas le fonctionnement du binaire. De nombreux packers sont disponibles
sur internet, certains gratuits et d’autres payants. Des plus connus nous pouvons citer UPX, Armadillo
ou encore Themida (celui que nous avons utilisé pour notre malware).
Le but de cette analyse est de retrouver le binaire original afin de rendre son contenu lisible pour
l’analyste ; cette méthode s’appelle l’unpack.
Certains malwares utilisent plusieurs couches de packers, il sera alors nécessaire d’unpacker le
binaire couche après couche.
Il existe des outils qui permettent d’identifier un packer.
Un des plus connus est le logiciel PEid43 qui permet d’identifier le packer utilisé pour un binaire.
Figure 78 - Détection de packer avec PEiD
Comme le montre la copie d’écran ci-dessus, PEid n’a pas trouvé le packer utilisé.
Mémoire de recherche appliquée 2014
Page 91
Le logiciel stud_PE44 permet également de détecter le type de packer utilisé. Il propose de
nombreuses autres fonctionnalités qui permettent de parcourir ou encore de modifier le binaire
utilisé.
Figure 79 - Détection de packer avec Stud_PE
Stud_PE n’a, lui non plus, pas détecté le packer pour ce malware.
Un autre outil spécialisé dans la détection de packer est le logiciel RDG Packer Detector45.
Figure 80 - Détection de packer avec RDG Packer Detector
Le logiciel à cette fois-ci détecté le packer utilisé. On notera également que cette détection
correspond à la détection d’un anti-virus que nous avons vu lors de l’analyse du binaire sur le site
Virus Total.
Seul l’antivirus ESET NOD32 avait détecté que le binaire était packé avec Themida.
Mémoire de recherche appliquée 2014
Page 92
Reverse Engineering
Le reverse engineering consiste à étudier un objet, dans notre cas un malware, afin d’en déterminer
son fonctionnement interne.
Lorsque le malware est désassemblé, son contenu est affiché en code assembleur qui est un langage
machine de bas niveau.
Le logiciel IDA46 est une référence en matière de désassemblage et est incontournable dans l’analyse
de malware.
Figure 81 - Interface d’IDA pro
Comme nous l’avons vu précédemment au cours de notre analyse, le malware est développé en
Visual Basic .NET. Il existe des outils capables de décompiler ces programmes, tel que le logiciel
CodeReflect47.
Afin de retrouver le code source de notre application, nous avons décompilé notre malware.
Figure 82 - Analyse du code du malware avec CodeReflect
Mémoire de recherche appliquée 2014
Page 93
La copie d’écran ci-dessus nous permet d’obtenir des informations précises sur le malware.
Le nom donné à la victime (en base 64) : « SGFjS2Vk » => « HacKed »
Le répertoire du malware : « TEMP »
L’adresse IP du serveur C&C : « 192.168.42.100 »
Le port d’écoute du malware : « 1177 »
Une chaine de caractère non identifiée : « 8684ab1615a0f981e3e7f894c4e1ff95 »
Ces informations sont capitales lors d’une analyse car elles permettent de bloquer les fonctionnalités
du malware, par exemple en bloquant l’IP du serveur de commande et de contrôle.
Figure 83 - Extraction du code contenant certaines informations du malware
Mémoire de recherche appliquée 2014
Page 94
C – Analyse dynamique L’analyse dynamique consiste à exécuter le malware dans un environnement contrôlé afin d’étudier
son fonctionnement en action. Il est ainsi possible de voir en direct les modifications système
effectuées par le malware. Dans cette partie nous analyserons donc les points suivants :
Les flux réseaux (ports…)
Les modifications système (registre)
La création de fichiers
Les données échangées
Le code du malware en exécution
Sa capacité d’autoréplication
Modification Système
Après avoir exécuté le malware nous analysons ses actions sur le poste infecté.
Le logiciel Process Explorer48 permet d’analyser les processus de la machine infectée. Nous obtenons
ici des informations sur l’emplacement du processus mais aussi sur sa clef de registre.
Figure 84 - Analyse du processus du malware avec ProcessExplorer
Lors de son exécution le malware NjRAT se place dans le répertoire
« C:\Users\R1tch1e\AppData\local\Temp ».
On voit également qu’une clef de registre permettant de lancer le malware automatiquement à
chaque démarrage a été créée :
« HKCU\Software\Microsoft\Windows\CurrentVersion\Run\8684ab1615a0f981e3e7f894c4e1ff95 ».
Le nom de la clef de registre correspond à la chaine de caractères non identifiée lors de la
décompilation du malware.
Mémoire de recherche appliquée 2014
Page 95
Le logiciel Process Monitor49 nous permet de surveiller l’activité de la base de registre ainsi que les
fichiers liés à un processus.
Figure 85 - Analyse de l’activité du malware avec Process Monitor
Ici nous voyons les actions effectuées par le processus ESGI.exe, notre malware.
Ci-dessous la liste des fichiers utilisés par le binaire :
Fichiers relatifs au malware Description
C:\Users\R1TCH1E\AppData\Local\Temp\ESGI.exeIl s'agit de l'emplacement d'origine du
malware
C:\Users\R1TCH1E\AppData\Roaming\Microsoft\Windows\Start
Menu\Programs\Startup\8684ab1615a0f981e3e7f894c4e1ff95.exe
Ce fichier est une copie du malware avec un
nom différent. Il est ici placé dans le dossier
"startup", ce qui lui permet d'être persistant à
chaque redémarrage
C:\Users\R1TCH1E\AppData\Local\Temp\ESGI.exe.tmp
Il s'agit du fichier de keyloggeur toute les
touches du clavier tapées par l'utilisateur sont
enregistrées dans ce fichier
Tableau 16 - Fichier créer par le malware
Voici un extrait du fichier ESGI.exe.tmp :
Figure 86 - Extrait du fichier du keyloggueur
Mémoire de recherche appliquée 2014
Page 96
Clef de registre créées par le malware Description
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\8684ab16
15a0f981e3e7f894c4e1ff95
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
Ces clefs sont utilisées pour le démarrage
automatique du malware
Tableau 17 - Clef de registre créer par le malware
Ci-dessous, le contenu de la clef de registre :
Figure 87 - Contenu de la clef de registre créé par le malware
DLL nécessaire au bon fonctionnement du
malware DescriptionC:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\8c17
70d45c63cf5c462eeb945ef9aa5d\mscorlib.ni.dll
C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Config
uration\4b1350e31ff09cc583b34854816d8036\System.Configuration.
ni.dll
C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Windo
ws.Forms\fedf1ba58dced4f0b3f8c457648ceed9\System.Windows.Fo
rms.ni.dll
C:\Windows\assembly\NativeImages_v2.0.50727_32\System\5ba3b
f5367fc012300c6566f20cb7f54\System.ni.dll
C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
C:\Windows\System32\dwmapi.dll
Ces DLL sont des librairies .NET elles
permettent le bon fonctionnement du
malware
Tableau 18 - DLL nécessaire au fonctionnement du malware
Mémoire de recherche appliquée 2014
Page 97
Analyse Réseau
L’analyse réseau consiste à observer les connexions vers le serveur C&C ainsi que les ports ouverts et
les données qui transitent.
Après avoir exécuté notre malware, nous observons les ports de connexion grâce à l’outil netstat.
Figure 88 - Activité réseau du malware
Ici nous voyons qu’une connexion TCP est établie entre la machine infectée et le serveur C&C.
Nous voyons également que le serveur est connecté sur le port 1177, la machine infectée est, quant
à elle, connectée sur un port dynamique (49160).
Il est possible d’affiner la recherche afin d’identifier l’application qui est à l’origine de cette
connexion avec la commande : netstat –naob
Figure 89 - Activité réseau du malware
Ici nous voyons la connexion établie avec le serveur C&C, il s’agit du processus ESGI.exe.
Mémoire de recherche appliquée 2014
Page 98
Avec l’analyseur de réseau Wireshark nous pouvons voir le flux de données échangées lors de
l’exécution du malware.
Figure 90 - Flux réseau échangé par le malware lors de son exécution
En utilisant la fonction « follow tcp Stream » nous pouvons voir les interactions avec le serveur.
Figure 91 - Récupération des informations échangées
Nous voyons ici qu’un flux de données est échangé, nous allons à présent lister et décoder les
éléments de cette capture.
Mémoire de recherche appliquée 2014
Page 99
Chaine de caractère échangée (Base 64) Chaine décodée Description
SGFjS2VkX0ZBMDEwQkND HacKed_FA010BCC
Nom attribué à la machine
infectée pour la gestion dans
l'interface d'administration du
serveur C&C
INFECTED Nom de la machine infectée
R1TCH1E Nom de l'utilisateur courant
05/01/2014
Date de création du malware
(mais afficher comme étant la
date d'installation)
FRA Le pays d'infection ici France
Win.7 .dition Familiale Basique sp0 x86 Le système infecté
Yes
Ce "yes" n'est identifiable
qu'avec l'interface
d'administration. Il correspond
à la présence de webcam sur
l'ordinateur infecté
0.5.0E La version du malware
UHJvY2VzcyBFeHBsb3JlciAtIFN5c2ludGVybmFsczogd
3d3LnN5c2ludGVybmFscy5jb20gW0lORkVDVEVEXFI
xVENIMUVd
Process Explorer - Sysinternals:
www.sysinternals.com
[INFECTED\R1TCH1E]
Le malware communique ici la
fenêtre active
QXV0b3J1bnMgLSBTeXNpbnRlcm5hbHM6IHd3dy5ze
XNpbnRlcm5hbHMuY29t[endof]P[endof]P[endof]ac
t|'|'|QWRtaW5pc3RyYXRldXLCoDogQzpcV2luZG93c1
xTeXN0ZW0zMlxjbWQuZXhl[endof]act|'|'|
Autoruns - Sysinternals:
www.sysinternals.comzwh|vzwh}-
Administrateur :
C:\Windows\System32\cmd.exeProcess
Explorer - Sysinternals:
www.sysinternals.com
[INFECTED\R1TCH1E]
Le malware communique ici la
fenêtre active
Q2FwdHVyaW5nIGZyb20gQ29ubmV4aW9uIGF1IHLD
qXNlYXUgbG9jYWwgICAgW1dpcmVzaGFyayAxLjEwL
jUgIChTVk4gUmV2IDU0MjYyIGZyb20gL3RydW5rLTEu
MTApXQ==
Capturing from Connexion au réseau
local [Wireshark 1.10.5 (SVN Rev 54262
from /trunk-1.10)]
Le malware communique ici la
fenêtre active
QWRtaW5pc3RyYXRldXLCoDogQzpcV2luZG93c1xTeX
N0ZW0zMlxjbWQuZXhl
Administrateur :
C:\Windows\System32\cmd.exe
Le malware communique ici la
fenêtre active
N/A
Tableau 19 - Flux réseau du malware décodé
Le tableau ci-dessus nous montre les flux entre le malware et le serveur C&C. Il est à noter que le
malware communique également les fenêtres actives au premier plan.
Nous allons à présent effectuer une analyse réseau sur chaque fonctionnalité du malware.
Gestion des fichiers à distance.
Figure 92 - Flux réseau de la fonctionnalité de gestion des fichiers
Mémoire de recherche appliquée 2014
Page 100
Sur la capture ci-dessus, nous pouvons identifier l’indicateur de la fonction utilisée :
o FM qui correspond à File Manager
o UP qui correspond à Upload
o Les chaines de caractère en base 64 correspondent à des chemins UNC
(QzpcVXNlcnNcUjFUQ0gxRVxEb2N1bWVudHNc => C:\Users\R1TCH1E\Documents\)
Ici le pirate a donc effectué une navigation dans le système de fichiers de la victime et a envoyé un
fichier sur son poste. En décodant la chaine de caractères à la suite de l’indicateur UP nous pouvons
retrouver le fichier envoyé.
(QzpcVXNlcnNcUjFUQ0gxRVxEZXNrdG9wXGZpcmVzaGVlcC0wLjEtMS54cGk= =>
C:\Users\R1TCH1E\Desktop\firesheep-0.1-1.xpi)
Il s’agit ici du fichier « firesheep-0.1-1.xpi ».
Exécution de fichier à distance
Figure 93 - Flux réseau de la fonctionnalité d’exécution de fichier
Ici, les différents éléments de la fonction à dissocier sont :
o RN, en début de trame, qui correspond à la fonction RUN.
o VBS, qui est le format de fichier utilisé lors de l’exécution.
o La chaine de caractères correspond à la commande envoyée depuis le C&C.
Bureau à distance
Figure 94 - Flux réseau de la fonctionnalité bureau à distance
Mémoire de recherche appliquée 2014
Page 101
La trame du bureau à distance est presque exclusivement composée de flux en temps réel, de
données permettant la prise de main à distance, on distingue cependant quelques éléments :
o L’adresse IP du client et le port utilisé (192.168.42.10 :49159).
o SCPK, qui correspond à l’appel de la fonction Remote Desktop.
o Le PID du processus de connexion à distance.
Caméra à distance
Figure 95 - Flux réseau de la fonctionnalité caméra à distance
Ici encore pour la caméra à distance, les données transmises occupent presque entièrement la
trame, mais on repère tout de même les appels de fonctions :
o CAM correspond à l’appel de la fonction Remote Cam.
o Le matériel de la victime ici Laptop Integrated Webcam.
o La taille de l’affichage, 260x160 en pixels.
o Le port utilisé par le client pour envoyer le flux video.
Figure 96 - Capture d’écran de la caméra (côté C&C)
Mémoire de recherche appliquée 2014
Page 102
Terminal distant
Figure 97 - Flux réseau de la fonctionnalité terminal distant
Compte tenu du fait que le terminal distant fait intervenir des commandes explicites et des
affichages en mode texte, il est possible de décomposer la trame en différents éléments :
o RSS qui correspond à la fonction Remote Shell.
o Des chaines de caractères en base 64 correspondantes à la commande et au résultat
de celle-ci.
Dans la capture de la trame ci-dessus, la chaine en rouge [aXBjb25maWc=] correspond à la
commande IPCONFIG exécutée depuis le serveur C&C.
La chaine ci-dessus correspond à une partie du résultat de la commande, à savoir l’adresse IP de la
machine [ICAgQWRyZXNzZSBJUHY0LiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuOiAxOTIuMTY4LjQyLjEw]
-> [Adresse IPv4. . . . . . . . . . . . . .: 192.168.42.10] une fois décodée.
Gestion des processus
Figure 98 - Flux réseau de la fonctionnalité gestion des processus
Cette fois, la trame du gestionnaire de tâches est bien plus claire, aucun texte n’est encodé en base
64, et on remarque qu’il s’agit de la liste des processus de la machine infectée :
o Proc correspond à la fonction Process Manager du serveur C&C.
o Chaque processus a son numéro PID associé, et son chemin d’exécution
o Lorsqu’un processus est tué depuis le serveur C&C, le caractère « k » apparait, suivi
du PID du processus tué. Ici nous avons tué le processus 4004, qui correspond à
c:\Windows\system32\wuauclt.exe (Windows Update).
Mémoire de recherche appliquée 2014
Page 103
Accès au registre
Figure 99 - Flux réseau de la fonctionnalité d’accès au registre
Ici encore, la trame est facile à comprendre :
o RG correspond à la fonction REGISTRY qui permet l’accès depuis le serveur
o Les entrées de registre Windows
Les entrées de registre ne sont pas encodées, on remarque que le chemin employé par le pirate est
lisible et nous permet d’identifier la clef de registre qu’il cherche à modifier.
Enregistreur de frappe
Le serveur possède une fonction d’enregistrement de frappe. Lorsque le client infecté saisit des
données au clavier, elles sont lisibles directement en streaming par l’utilisateur du serveur C&C :
Figure 100 - Extrait du fichier relatif au Keyloggueur
Ici, on remarque que l’utilisateur a saisi d’abord une phrase, puis l’a effacée pour en saisir une
nouvelle.
Mémoire de recherche appliquée 2014
Page 104
Figure 101 - Flux réseau de la fonctionnalité Keyloggueur
o Kl au début de la trame, correspond à la fonction « keylogger »
Ici la chaine de caractères soulignée correspond à la phrase saisie en dernier au clavier que l’on peut
voir sur la capture ci-dessus. On comprend que la suite de caractères [bQmFja11] correspond à la
saisie de la touche [Back] du clavier de l’utilisateur.
Messagerie instantanée
Figure 102 - Flux réseau de la fonctionnalité messagerie instantanée
Ici la trame est très courte, nous allons la décomposer :
o CH correspond à la fonction CHAT (instant messaging).
o L’adresse IP du client.
o Le pseudo du pirate.
o Un caractère indiquant qu’il s’agit d’un message reçu, ici le point d’exclamation.
o Le texte envoyé depuis le serveur C&C.
o Un caractère indiquant qu’il s’agit d’un message envoyé vers le serveur C&C, ici un
arobase.
o Le texte envoyé au serveur.
Obtention des mots de passe
La capture des mots de passe fait intervenir des fichiers que nous avons référencés au « III.5 –
Acquisition et analyse de la mémoire non-volatile ».
Le malware va exploiter ces fichiers à la recherche des mots de passe enregistrés dans les fichiers de
base de données SQLite3.
Mémoire de recherche appliquée 2014
Page 105
Lors de l’analyse réseau, nous observons différentes informations :
Figure 103 - Flux réseau de la fonctionnalité de récupération de mot de passe
o CAP représente l’appel de la fonction de capture des mots de passe.
o La suite de la trame correspond à la lecture des fichiers SQLite3 dans lesquels
sont stockés les mots de passe des différents navigateurs.
Dans la suite de la trame, nous pouvons voir la fin de la lecture des fichiers contenant les mots de
passe, ainsi que la trace de l’envoi des URL, noms d’utilisateurs et mots de passe au serveur C&C :
Figure 104 - Trame réseau de récupération des mots de passe
La toute dernière ligne est en réalité une concaténation de toutes les informations envoyées au
serveur C&C. Décoder la ligne entière nous donne le résultat suivant :
KiAqICogKiAqICogKiAqICogKiBhSFIwY0hNNkx5OTNkM2N1Wm1GalpXSnZiMnN1WTI5dEx3PT06YW5WemIzVndjRzlrUUdkdFlXbHNMbU52YlE9PTpRR3B6YnpzeE9UZzFLZz09IA==
Décodé en base64 :
* * * * * * * * * * aHR0cHM6Ly93d3cuZmFjZWJvb2suY29tLw==:anVzb3VwcG9kQGdtYWlsLmNvbQ==:QGpzbzsxOTg1Kg==
Les étoiles cachent le mot de passe. Décoder à nouveau le reste de la ligne permet d’obtenir les
informations en clair :
https://www.facebook.com/W6WDv6Xxxx;0005*
L’adresse URL, ainsi que le mot de passe de l’utilisateur.
Le résultat obtenu est indexé dans une fenêtre affichée sur le serveur C&C.
Tous les sites pour lesquels l’utilisateur a enregistré son mot de passe sont affichés en clair. Cette
fonction est aussi fiable que l’utilisation des logiciels de récupération de mots de passe utilisables par
un utilisateur.
Mémoire de recherche appliquée 2014
Page 106
Figure 105 - Copie d’écran de l’extraction des mots de passe
Réplication du malware
Nous n’avons pas détecté de réplication via le réseau, cependant lors de la connexion d’une clef USB
sur la machine infectée, le malware se copie automatiquement sur la clef.
Figure 106 - Réplication du malware sur une clef USB
Ici le malware se réplique sur la clef USB avec son nom « codé » et en tant que fichier caché pour ne
pas être détecté.
Mémoire de recherche appliquée 2014
Page 107
Figure 107 - Propriété du malware répliqué
Il est à noter que le malware se réplique à chaque fois qu’on le supprime de la clef USB.
Lors de ce chapitre nous avons étudié quelques techniques utilisées pour l'analyse de malware.
Ainsi nous avons pu voir qu'il était possible de détecter un code malveillant à travers plusieurs
dispositifs d'analyse tels que l'étude de la base de registre ou du trafic réseau.
Cette branche de l'investigation numérique est très variée car de nombreux types de malwares
existent. Un ransomware ne fonctionnera pas de la même manière qu'un Trojan ou un ver et
nécessitera une investigation adaptée.
La cybercriminalité a ainsi pris un tournant ces dernières années à cause du développement de
nouvelles formes de malware, tels que les malwares polymorphes capables de se modifier selon des
paramètres ou des situations définies. Le travail des analystes consiste à répertorier et étudier ces
nouvelles souches pour réduire le risque de contamination et éradiquer les menaces.
Les techniques d'analyse et de traque ne cessent d'être réinventées pour lutter contre la
prolifération de ces malwares. Néanmoins, les cybercriminels gardent toujours une longueur
d'avance.
Mémoire de recherche appliquée 2014
Page 108
Chapitre VI : Création d’un outil
Lors d'une analyse forensic et particulièrement dans des environnements en cours de production, il
est nécessaire de disposer des outils adéquats qui permettront de mener à bien l'investigation.
Ces outils sont quelques fois difficiles à transporter, et souvent payants. C'est pour cela que nous
avons créé un outil USB facilement transportable et regroupant des outils gratuits spécialisés.
L'objectif de cet outil est de concentrer des utilitaires de forensic dans une clef USB afin de pouvoir
les transporter et les utiliser facilement.
Il est séparé en deux parties distinctes :
Une partie « MultiBoot » qui permettra de booter sur un système tiers afin d'enquêter sur le
support numérique. Ce multiboot est composé de plusieurs systèmes spécialisés en
investigation numérique et permet à l'analyste de faire le choix du système le plus adapté à
une investigation.
Une partie « Live Forensic » qui permettra d'effectuer une analyse sur un système en cours
de fonctionnement. Les utilitaires spécialisés et gratuits qui composent notre outil
permettent à l’analyste de disposer d’un choix d’outils pour réaliser son enquête.
Il accompagnera l'enquêteur dans toutes les situations de terrain mais également lors de recherche
«post mortem» en laboratoire.
VI.1 – Le multiboot USB Lors d'une analyse forensic, l'enquêteur peut avoir besoin de démarrer sur un système tiers dans le
but de copier le contenu du support numérique ou de l'analyser sans pour autant effectuer des
modifications ni altérer son contenu.
Cette manipulation permettra de conserver l'intégrité du support et garantira ainsi son authenticité
devant la justice.
Le multiboot USB permet de proposer à l'enquêteur une suite de systèmes tiers spécialisés en
forensic basée aussi bien sur des systèmes Unix que Windows.
Figure 108 - Copie d’écran du multiboot USB
Mémoire de recherche appliquée 2014
Page 109
Grace au logiciel Yumi50 nous avons sélectionné les systèmes suivants :
DEFT Linux 8 : Digital Evidence & Forensic Toolkit, est une distribution live dédiée au Forensic
et à l’investigation numérique. Basée sur Ubuntu, elle regroupe un grand nombre d’outil
d’acquisition, de recouvrement de données, analyse et de réponse à incident.
CAINE : Computer Aided INvestigative Environment est une autre distribution dédiée au
Forensic, basée également sur Ubuntu. La majeure partie des outils de Caine proposent une
interface graphique conviviale et les suites logicielles contiennent de nombreux scripts de
traitement automatique permettant une prise en main rapide et la production de rapports.
SIFT : SANS Sift est une distribution distribuée par le SANS (Organisation ayant pour but de
mutualiser les connaissances en sécurité informatique), disponible en Appliance ou en DVD.
Elle propose des outils d’acquisition et d’analyse permettant l’analyse forensic de nombreux
systèmes, la production de timeline et de rapports détaillés.
Santoku Linux : Santoku est une distribution linux en live CD dédiée au forensic sur
smartphone, et l’analyse de malware. Elle propose des outils d’analyse, et de test de sécurité
sous forme de script exécutables sur les plateformes mobiles.
REMnux : REMnux est une distribution basée sur Ubuntu utilisé pour l’analyse de malware et
la retro-ingénierie de code malicieux. La plupart des outils sont dédiées à l’analyse
d’exécutables pour Windows, basés sur les navigateurs Internet, et JavaScript. Cette
distribution propose aussi l’analyse de fichier PDF et d’autres formats de documents.
Ophcrack : Ophcrack est une distribution en live CD dédiée à l’exploitation de la base SAM de
Windows, permettant de réinitialiser un compte Windows, changer le mot de passe, le
mettre à zéro, ou encore de donner des droits super-utilisateur a un compte de la base.
DBAN : C’est un live CD permettant l’effacement sécurisé de disques durs proposant
différentes méthodes.
Afin de compléter ce dispositif nous avons développé une boîte à outils pour des systèmes en cours
de fonctionnement et qui permet la recherche d'informations.
Mémoire de recherche appliquée 2014
Page 110
VI.2 – RocFor : l’utilitaire « Live » RocFor est un utilitaire développé en VB.NET et destiné à une investigation numérique sur des
systèmes Windows. Il est conçu pour 'assister l'enquêteur lors de recherches d'informations sur des
systèmes en cours de fonctionnement. En effet, des éléments tels que la mémoire vive ou encore les
processus actifs ne peuvent être analysés que lorsque le système est allumé.
RocFor regroupe plusieurs outils disponibles gratuitement en un seul. Ces outils sont ainsi classés
sous différentes catégories facilement identifiables :
Acquisition : Les outils regroupés dans cette catégorie permettent à l’analyste d’effectuer
une copie fidèle d’un support numérique tel que le disque dur ou encore la mémoire RAM. Ils
permettent également la copie de fichiers protégés par le système.
Analyse : Les outils regroupés dans cette catégorie permettent à l’enquêteur d’analyser le
contenu d’un support numérique, le système de fichier, les processus actifs, les logs et
évènements du système.
Recouvrement : Les outils regroupés dans cette catégorie permettent à l’enquêteur de
récupérer des fichiers effacés ainsi que des mots de passe ou encore des données cachées.
Réseau : Les outils de cette catégorie permettent d’analyser les flux réseau d’une machine.
Malware : Cette catégorie regroupe des outils destinés à l’analyse de malware. Ils
permettent d’identifier le comportement d’un binaire et d’analyser son contenu.
Scripts : Cette catégorie regroupe différents scripts et les interpréteurs nécessaires à leur
fonctionnement (python, ruby, perl). De nouveaux scripts peuvent également être importés.
Utilitaires : Cette catégorie regroupe des outils pouvant servir à l’élaboration du rapport final
mais également dans la recherche de preuves.
Mémoire de recherche appliquée 2014
Page 111
Figure 109 - Copie d’écran de l’utilitaire RocFor
Nous avons conçu RocFor de sorte qu'il soit évolutif. Chaque utilisateur pourra ajouter ses propres
outils grâce à la fonction « Add Tools ». L'ajout de nouvelles catégories est également possible.
Mémoire de recherche appliquée 2014
Page 112
Conclusion
L'investigation numérique est un domaine relativement récent de l'informatique qui tend à se
développer.
Avec l’évolution des nouvelles technologies, les pirates ne cessent de rivaliser d'ingéniosité pour
dérober nos données numériques.
A travers ce document nous avons souhaité élaborer un guide pour l'analyste en apportant une
méthodologie d'investigation qui lui permettra de suivre un schéma directeur lors d'une enquête.
Le chapitre « analyse de malware » vise, quant à lui, à aiguiller l'analyste dans sa compréhension du
fonctionnement d'un logiciel malveillant.
Comme nous avons pu le voir, la législation française encadre la collecte de données dans un
environnement numérique international mais définit aussi les prérogatives accordées aux cybers
gendarmes.
Cependant les plateformes et les systèmes ne cessent de se diversifier, notamment pour la mobilité
avec des systèmes tels qu'Android ou encore iOS, nécessitant une adaptation de la méthodologie
même si les fondements restent identiques.
Il y a de fortes chances que dans les années à venir l'investigation numérique s'étende à d'autres
matériels que nos ordinateurs et nos smartphones.
Le développement des systèmes embarqués, l'arrivée des robots dans nos domiciles mais aussi la
bio-informatique sont autant de domaines qui intéressent les cybercriminels de demain.
Ainsi, dans un futur proche, il pourra être possible de pirater une voiture pour en prendre le contrôle,
de s'introduire dans une maison par le biais d'un robot compromis, ou encore d'arrêter les
battements d'un cœur artificiel à distance ou de contrôler un membre robotisé.
C'est dans ces environnements vulnérables que l'investigation numérique peut contribuer à la
protection de nos données mais également de l’individu.
Mémoire de recherche appliquée 2014
Page 113
Annexes
A – Options Volatility 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=.volatilityrc
User based configuration file
-d, --debug Debug volatility
--plugins=PLUGINS Additional plugin directories to use (semi-colon
separated)
--info Print information about all registered objects
--cache-directory=C:\Users\R1TCH1E/.cache\volatility
Directory where cache files are stored
--cache Use caching
--tz=TZ Sets the timezone for displaying timestamps
-f FILENAME, --filename=FILENAME
Filename to use when opening an image
--profile=WinXPSP2x86
Name of the profile to load
-l LOCATION, --location=LOCATION
A URN location from which to load an address space
-w, --write Enable write support
--dtb=DTB DTB Address
--output=text Output in this format (format support is module
specific)
--output-file=OUTPUT_FILE
write output in this file
-v, --verbose Verbose information
--shift=SHIFT Mac KASLR shift address
-g KDBG, --kdbg=KDBG Specify a specific KDBG virtual address
-k KPCR, --kpcr=KPCR Specify a specific KPCR address
Supported Plugin Commands:
apihooks Detect API hooks in process and kernel memory
atoms Print session and window station atom tables
atomscan Pool scanner for _RTL_ATOM_TABLE
bioskbd Reads the keyboard buffer from Real Mode memory
callbacks Print system-wide notification routines
clipboard Extract the contents of the windows clipboard
cmdscan Extract command history by scanning for _COMMAND_HISTORY
connections Print list of open connections [Windows XP and 2003 Only]
connscan Scan Physical memory for _TCPT_OBJECT objects (tcp connections)
consoles Extract command history by scanning for _CONSOLE_INFORMATION
crashinfo Dump crash-dump information
deskscan Poolscaner for tagDESKTOP (desktops)
devicetree Show device tree
dlldump Dump DLLs from a process address space
dlllist Print list of loaded dlls for each process
driverirp Driver IRP hook detection
driverscan Scan for driver objects _DRIVER_OBJECT
dumpcerts Dump RSA private and public SSL keys
dumpfiles Extract memory mapped and cached files
envars Display process environment variables
eventhooks Print details on windows event hooks
evtlogs Extract Windows Event Logs (XP/2003 only)
filescan Scan Physical memory for _FILE_OBJECT pool allocations
gahti Dump the USER handle type information
gditimers Print installed GDI timers and callbacks
gdt Display Global Descriptor Table
getservicesids Get the names of services in the Registry and return Calculated
SID
Mémoire de recherche appliquée 2014
Page 114
getsids Print the SIDs owning each process
handles Print list of open handles for each process
hashdump Dumps passwords hashes (LM/NTLM) from memory
hibinfo Dump hibernation file information
hivedump Prints out a hive
hivelist Print list of registry hives.
hivescan Scan Physical memory for _CMHIVE objects (registry hives)
hpakextract Extract physical memory from an HPAK file
hpakinfo Info on an HPAK file
idt Display Interrupt Descriptor Table
iehistory Reconstruct Internet Explorer cache / history
imagecopy Copies a physical address space out as a raw DD image
imageinfo Identify information for the image
impscan Scan for calls to imported functions
kdbgscan Search for and dump potential KDBG values
kpcrscan Search for and dump potential KPCR values
ldrmodules Detect unlinked DLLs
lsadump Dump (decrypted) LSA secrets from the registry
machoinfo Dump Mach-O file format information
malfind Find hidden and injected code
mbrparser Scans for and parses potential Master Boot Records (MBRs)
memdump Dump the addressable memory for a process
memmap Print the memory map
messagehooks List desktop and thread window message hooks
mftparser Scans for and parses potential MFT entries
moddump Dump a kernel driver to an executable file sample
modscan Scan Physical memory for _LDR_DATA_TABLE_ENTRY objects
modules Print list of loaded modules
mutantscan Scan for mutant objects _KMUTANT
patcher Patches memory based on page scans
printkey Print a registry key, and its subkeys and values
privs Display process privileges
procexedump Dump a process to an executable file sample
procmemdump Dump a process to an executable memory sample
pslist Print all running processes by following the EPROCESS lists
psscan Scan Physical memory for _EPROCESS pool allocations
pstree Print process list as a tree
psxview Find hidden processes with various process listings
raw2dmp Converts a physical memory sample to a windbg crash dump
screenshot Save a pseudo-screenshot based on GDI windows
sessions List details on _MM_SESSION_SPACE (user logon sessions)
shellbags Prints ShellBags info
shimcache Parses the Application Compatibility Shim Cache registry key
sockets Print list of open sockets
sockscan Scan Physical memory for _ADDRESS_OBJECT objects (tcp sockets)
ssdt Display SSDT entries
strings Match physical offsets to virtual addresses (may take a while,
VERY verbose)
svcscan Scan for Windows services
symlinkscan Scan for symbolic link objects
thrdscan Scan physical memory for _ETHREAD objects
threads Investigate _ETHREAD and _KTHREADs
timeliner Creates a timeline from various artifacts in memory
timers Print kernel timers and associated module DPCs
unloadedmodules Print list of unloaded modules
userassist Print userassist registry keys and information
userhandles Dump the USER handle tables
vaddump Dumps out the vad sections to a file
vadinfo Dump the VAD info
vadtree Walk the VAD tree and display in tree format
vadwalk Walk the VAD tree
vboxinfo Dump virtualbox information
vmwareinfo Dump VMware VMSS/VMSN information
volshell Shell in the memory image
windows Print Desktop Windows (verbose details)
wintree Print Z-Order Desktop Windows Tree
wndscan Pool scanner for tagWINDOWSTATION (window stations)
yarascan Scan process or kernel memory with Yara signatures
Mémoire de recherche appliquée 2014
Page 115
B – Script Hash.py
#!/usr/bin/python
import sys
import getopt
import hashlib
def usage():
print '**********************************************************************'
print '* Calculate Hash | by R1tch1e (Thomas ROCCIA) *'
print '* *'
print '* Usage : hash.py [FILEPATH] [OPTIONS] *'
print '* -h or --help : Display the help *'
print '* -f or --filepath : Put your filename *'
print '* -m or --md5 : Calculate a MD5 hash *'
print '* -s or --sha256 : Calculate a SHA256 hash *'
print '* -x or --sha512 : Calculate a SHA512 hash *'
print '* -c or --compare : Compare two hashfile *'
print '* *'
print '* Exemple : r1tch1e@forensic:~$ python hash.py -f /home/myfile -md5 *'
print '* Exemple : r1tch1e@forensic:~$ python hash.py -c file1 file2 -md5 *'
print '**********************************************************************'
def hashmd5(filename):
fichier = open(filename, 'r')
c = hashlib.md5()
while 1:
try:
d = fichier.next()
c.update(d)
except: break
fichier.close()
return c.hexdigest()
def hashsha2(filename):
fichier = open(filename, 'r')
c = hashlib.sha256()
while 1:
try:
d = fichier.next()
c.update(d)
except: break
fichier.close()
return c.hexdigest()
def hashsha5(filename):
fichier = open(filename, 'r')
c = hashlib.sha512()
while 1:
try:
d = fichier.next()
c.update(d)
except: break
fichier.close()
return c.hexdigest()
def compare(file1, file2):
if sys.argv[4] == «-m» or sys.argv[4] == «--md5»:
filename = file1
hash1 = hashmd5(filename)
Mémoire de recherche appliquée 2014
Page 116
filename = file2
hash2 = hashmd5(filename)
elif sys.argv[4] == «-s» or sys.argv[4] == «--sha256»:
filename = file1
hash1 = hashsha2(filename)
filename = file2
hash2 = hashsha2(filename)
elif sys.argv[4] == «-x» or sys.argv[4] == «--sha512»:
filename = file1
hash1 = hashsha5(filename)
filename = file2
hash2 = hashsha5(filename)
else:
usage()
sys.exit(2)
if hash1 == hash2:
print «This is the same file ! :)»
print hash1, file1
print hash2, file2
else:
print «This is not the same file ! :(«
print hash1, file1
print hash2, file2
try:
opts, args = getopt.getopt(sys.argv[1:], «hf:msxc», [«help», «filepath»,
«md5», «sha256», «sha512»])
except getopt.GetoptError as err:
print(err)
usage()
sys.exit(2)
output = None
verbose = True
for o, a in opts:
if o in («-h», «--help»):
usage()
sys.exit()
elif o in («-f», «--filepath»):
output = a
filename = a
elif o in («-m», «--md5»):
print 'The MD5 hash is', hashmd5(filename)
elif o in («-s», «--sha256»):
print 'The SHA256 hash is', hashsha2(filename)
elif o in («-x», «--sha512»):
print 'The SHA512 hash is', hashsha5(filename)
elif o in («-c»):
file1 = sys.argv[2]
file2 = sys.argv[3]
compare(file1, file2)
Mémoire de recherche appliquée 2014
Page 117
C – Script ForPower.ps1 <#
Forensic script
Author: Thomas ROCCIA - [email protected]
#>
Write-Host ************************************************************
Write-Host *Forensic script for windows V1 by Thomas ROCCIA [@R1tch1e_]*
Write-Host ************************************************************
# WARNING for execute this script on system you can enter this command line "set-
executionpolicy remotesigned" in admin powershell first
# Global Variable
[String]$date = $((get-date).tostring(‘dd-MM-yyyy’))
$Fulldate = get-date
$var =
"================================================================================"
$PCname = (Get-ItemProperty -path
registry::"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerN
ame").ComputerName
# Creating the target directory & files
md D:\Forensic_Report_$date
echo "Generated on $Fulldate" > D:\Forensic_Report_$date\Machine_Info.txt
echo "Generated on $Fulldate" > D:\Forensic_Report_$date\Account_Info.txt
echo "Generated on $Fulldate" > D:\Forensic_Report_$date\Network_Info.txt
# Obtain Information System
$title = "...............................System
Information..............................."
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
echo $title >> D:\Forensic_Report_$date\Machine_Info.txt
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
Get-WmiObject -Class Win32_ComputerSystem >>
D:\Forensic_Report_$date\Machine_Info.txt
# Obtain Bios Information
$title2 = "...............................BIOS
Information................................."
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
echo $title2 >> D:\Forensic_Report_$date\Machine_Info.txt
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
Get-WmiObject -Class Win32_BIOS -ComputerName . >>
D:\Forensic_Report_$date\Machine_Info.txt
# Obtain Installation Date & OS version
$title3 = "........................Date Installation & OS
version.........................."
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
echo $title3 >> D:\Forensic_Report_$date\Machine_Info.txt
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
# Fonction Get OS Information
Function Get-OSInfo
{
param ([String]$ComputerName = '.')
$infos = Get-WmiObject Win32_OperatingSystem -ComputerName $ComputerName
$infos | Select-Object -property @{Name='ComputerName'; Expression = {$_.Csname}},
@{Name='OS'; Expression = {$_.caption}},
Mémoire de recherche appliquée 2014
Page 118
@{Name='ServicePack'; Expression =
{$_.csdversion}},
@{Name='InstallationDate'; Expression
={[system.Management.ManagementDateTimeConverter]::ToDateTime($_.Installdate)}}
}
Get-OSInfo | Format-Table -AutoSize >> D:\Forensic_Report_$date\Machine_Info.txt
# Obtain last boot time
$title4 = "................................Last Boot
Time.................................."
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
echo $title4 >> D:\Forensic_Report_$date\Machine_Info.txt
echo $var >> D:\Forensic_Report_$date\Machine_Info.txt
#Return the last reboot time of a computer
Function Get-LastBootUpTime
{
param ([string]$computername=$env:computername)
$computername = $computername.toupper()
Get-WmiObject -ComputerName $computername win32_operatingsystem| select csname,
@{LABEL='LastBootUpTime';EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}}
}
Get-LastBootUpTime $PCname | Format-Table -AutoSize >>
D:\Forensic_Report_$date\Machine_Info.txt
###########################################################################
# Obtain Account information
$title5 = ".............................Account
Information................................"
echo $var >> D:\Forensic_Report_$date\Account_Info.txt
echo $title5 >> D:\Forensic_Report_$date\Account_Info.txt
echo $var >> D:\Forensic_Report_$date\Account_Info.txt
$strComputer = "."
$colItems = get-wmiobject -class "Win32_UserAccount" -namespace "root\CIMV2" -
filter "LocalAccount = True" -computername $strComputer
$envuser = $env:username
echo "Curent user is : $envuser" >> D:\Forensic_Report_$date\Account_Info.txt
echo $var >> D:\Forensic_Report_$date\Account_Info.txt
foreach ($objItem in $colItems) {
$account = $objItem.AccountType
echo "Account Type: $account" >> D:\Forensic_Report_$date\Account_Info.txt
$caption = $objItem.Caption
echo "Caption: $caption" >> D:\Forensic_Report_$date\Account_Info.txt
$desc = $objItem.Description
echo "Description: $desc" >> D:\Forensic_Report_$date\Account_Info.txt
$disa = $objItem.Disabled
echo "Disabled: $disa" >> D:\Forensic_Report_$date\Account_Info.txt
$dom = $objItem.Domain
echo "Domain: $dom" >> D:\Forensic_Report_$date\Account_Info.txt
$fname = $objItem.FullName
echo "Full Name: $fname" >> D:\Forensic_Report_$date\Account_Info.txt
$Idate = $objItem.InstallDate
echo "Installation Date: $Idate" >>
D:\Forensic_Report_$date\Account_Info.txt
$Lacc = $objItem.LocalAccount
echo "Local Account: $Lacc" >> D:\Forensic_Report_$date\Account_Info.txt
$lock = $objItem.Lockout
echo "Lockout: $lock" >> D:\Forensic_Report_$date\Account_Info.txt
Mémoire de recherche appliquée 2014
Page 119
$nname = $objItem.Name
echo "Name: $nname" >> D:\Forensic_Report_$date\Account_Info.txt
$passch = $objItem.PasswordChangeable
echo "Password Changeable: $passch" >>
D:\Forensic_Report_$date\Account_Info.txt
$passex = $objItem.PasswordExpires
echo "Password Expires: $passex" >>
D:\Forensic_Report_$date\Account_Info.txt
$passreq = $objItem.PasswordRequired
echo "Password Required: $passreq" >>
D:\Forensic_Report_$date\Account_Info.txt
$sid = $objItem.SID
echo "SID: $sid" >> D:\Forensic_Report_$date\Account_Info.txt
$sidt = $objItem.SIDType
echo "SID Type: $sidt" >> D:\Forensic_Report_$date\Account_Info.txt
$status = $objItem.Status
echo "Status: $status" >> D:\Forensic_Report_$date\Account_Info.txt
echo $var >> D:\Forensic_Report_$date\Account_Info.txt
}
###########################################################################
#Obtain network configuration and share
$title6 = ".............................Network
Information................................"
echo $var >> D:\Forensic_Report_$date\Network_Info.txt
echo $title6 >> D:\Forensic_Report_$date\Network_Info.txt
echo $var >> D:\Forensic_Report_$date\Network_Info.txt
ipconfig /all >> D:\Forensic_Report_$date\Network_Info.txt
$title8 = "............................Share directory
Local..............................."
echo $var >> D:\Forensic_Report_$date\Network_Info.txt
echo $title8 >> D:\Forensic_Report_$date\Network_Info.txt
echo $var >> D:\Forensic_Report_$date\Network_Info.txt
net view \\127.0.0.1 >> D:\Forensic_Report_$date\Network_Info.txt
$title7 = "...........................Share directory
distant.............................."
echo $var >> D:\Forensic_Report_$date\Network_Info.txt
echo $title7 >> D:\Forensic_Report_$date\Network_Info.txt
echo $var >> D:\Forensic_Report_$date\Network_Info.txt
net view >> D:\Forensic_Report_$date\Network_Info.txt
###########################################################################
#Obtain process id
$title8 = "..............................Process and
path.................................."
echo $var >> D:\Forensic_Report_$date\Process_Info.txt
echo $title8 >> D:\Forensic_Report_$date\Process_Info.txt
echo $var >> D:\Forensic_Report_$date\Process_Info.txt
Get-WmiObject win32_process | select
processname,@{NAME='CreationDate';EXPRESSION={$_.ConvertToDateTime($_.CreationDate)}}
,ProcessId,CommandLine |sort CreationDate -desc | format-table –auto -wrap >>
D:\Forensic_Report_$date\Process_Info.txt
###########################################################################
#Obtain Antivirus Information
function Get-LHSAntiVirusProduct {
[CmdletBinding()]
[OutputType('PSobject')]
param (
Mémoire de recherche appliquée 2014
Page 120
[parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[Alias('CN')]
[String[]]$ComputerName=$env:computername
)
BEGIN {
Set-StrictMode -Version Latest
${CmdletName} = $Pscmdlet.MyInvocation.MyCommand.Name
Write-Verbose -Message "${CmdletName}: Starting Begin Block" >>
D:\Forensic_Report_$date\AV_Info.txt
Write-Debug -Message "${CmdletName}: Starting Begin Block"
} # end BEGIN
PROCESS {
Write-Verbose "${CmdletName}: Starting Process Block" >>
D:\Forensic_Report_$date\AV_Info.txt
Write-Debug ("PROCESS:`n{0}" -f ($PSBoundParameters | Out-String))
ForEach ($Computer in $computerName) {
Write-Debug "`$Computer contains $Computer"
IF (Test-Connection -ComputerName $Computer -count 2 -quiet) {
$OSVersion = (Get-WmiObject win32_operatingsystem -computername
$Computer).version
$OS = $OSVersion.split(".")
Write-Debug "`$OS[0]: $($OS[0])"
IF ($OS[0] -eq "5") {
Write-Verbose "Windows 2000, 2003, XP" >>
D:\Forensic_Report_$date\AV_Info.txt
Try {
$AntiVirusProduct = Get-WmiObject -Namespace root\SecurityCenter
-Class AntiVirusProduct -ComputerName $Computer -ErrorAction Stop
} Catch {
Write-Error "$Computer : WMI Error"
Write-Error $_
Continue
}
# Output PSCustom Object
$AV = $Null
$AV = New-Object PSObject -Property @{
ComputerName = $AntiVirusProduct.__Server;
Name = $AntiVirusProduct.displayName;
versionNumber = $AntiVirusProduct.versionNumber;
onAccessScanningEnabled =
$AntiVirusProduct.onAccessScanningEnabled;
productUptoDate = $AntiVirusProduct.productUptoDate;
} | Select-Object
ComputerName,Name,versionNumber,onAccessScanningEnabled,productUptoDate
$AV
} ElseIF ($OS[0] -eq "6") {
Write-Verbose "Windows Vista, 7, 2008, 2008R2" >>
D:\Forensic_Report_$date\AV_Info.txt
Try {
$AntiVirusProduct = Get-WmiObject -Namespace root\SecurityCenter2
-Class AntiVirusProduct -ComputerName $Computer -ErrorAction Stop
} Catch {
Mémoire de recherche appliquée 2014
Page 121
Write-Error "$Computer : WMI Error"
Write-Error $_
}
# Switch to determine the status of antivirus definitions and real-
time protection.
# The values in this switch-statement are retrieved from the
following website: http://community.kaseya.com/resources/m/knowexch/1020.aspx
switch ($AntiVirusProduct.productState) {
"262144" {$defstatus = "Up to date" ;$rtstatus = "Disabled"}
"262160" {$defstatus = "Out of date" ;$rtstatus = "Disabled"}
"266240" {$defstatus = "Up to date" ;$rtstatus = "Enabled"}
"266256" {$defstatus = "Out of date" ;$rtstatus = "Enabled"}
"393216" {$defstatus = "Up to date" ;$rtstatus = "Disabled"}
"393232" {$defstatus = "Out of date" ;$rtstatus = "Disabled"}
"393488" {$defstatus = "Out of date" ;$rtstatus = "Disabled"}
"397312" {$defstatus = "Up to date" ;$rtstatus = "Enabled"}
"397328" {$defstatus = "Out of date" ;$rtstatus = "Enabled"}
"397584" {$defstatus = "Out of date" ;$rtstatus = "Enabled"}
default {$defstatus = "Unknown" ;$rtstatus = "Unknown"}
}
# Output PSCustom Object
$AV = $Null
$AV = New-Object -TypeName PSobject -Property @{
ComputerName = $AntiVirusProduct.__Server;
Name = $AntiVirusProduct.displayName;
ProductExecutable = $AntiVirusProduct.pathToSignedProductExe;
DefinitionStatus = $defstatus;
RealTimeProtectionStatus = $rtstatus
} | Select-Object
ComputerName,Name,ProductExecutable,DefinitionStatus,RealTimeProtectionStatus
$AV
} Else {
Write-Error "\\$Computer : Unknown OS Version"
Exit
} # end If $OS
} Else {
Write-Warning "\\$computer DO NOT reply to ping"
} # end IF (Test-Connection -ComputerName $Computer -count 2 -quiet)
} # end ForEach ($Computer in $computerName)
} # end PROCESS
END { Write-Verbose "Function Get-LHSAntiVirusProduct finished." >>
D:\Forensic_Report_$date\AV_Info.txt }
} # end function Get-LHSAntiVirusProduct
#####################################################
$title9 = "..............................Anti-virus
Info...................................."
echo $var >> D:\Forensic_Report_$date\AV_Info.txt
echo $title8 >> D:\Forensic_Report_$date\AV_Info.txt
echo $var >> D:\Forensic_Report_$date\AV_Info.txt
Get-LHSAntiVirusProduct >> D:\Forensic_Report_$date\AV_Info.txt
Mémoire de recherche appliquée 2014
Page 122
$report = "D:\Forensic_Report_$date"
(New-Object -ComObject wscript.shell).popup("Script Completed ! Your report is in
$report")
D – Référence et bibliographie Publications
Paul Rascagnerès, « Analyse de botnet », itrust consulting, 27 mars 2013.
Jean-Marc Robert, « Computer Forensics », dans Génie logiciel et des TI, Département de génie
logiciel (dir.).
Hal Pomeranz, « Detecting Malware with Memory Forensics », dans SANS institute.
Christopher LT. Brown, « Detecting & Collecting whole disk encryption media », dans Technology
Pathways, 2005.
Emilien Girault, «Volatilitux, analyse de la mémoire physique des systèmes Linux », Sysdream, 04
décembre 2010.
Gordon Hughes, Tom Coughlin, « Tutorial on Disk Drive Data Sanitization », Center for Magnetic
Recording Research, 2003.
Jean-Baptiste Bédrune, Jean Sigwald, « Forensics iOS », SSTIC 2012.
Arnaud Malard, « H@ckRAM, j’ai la mémoire qui flanche », dans Devoteam, 15 décembre 2012.
Gerald L. King, « Forensics plan guide », dans SANS Computer Forensics, 12 juin 2006.
Tilo Müller, Michael Spreitzenbarth, Felix C. Freiling, « FROST, Forensic Recovery of Scrambled
Telephones » dans Département of Computer Sciences, University of Erlangen-Nuremberg, octobre
2012.
Peter Hannay, Andrew Woodward, « Cold Boot Memory Acquisition », dans School of Computer and
Information Science, janvier 2011.
Vincent Le Toux, « Les dumps mémoires », dans HAKIN9, avril 2008.
Travail de diplôme
Cyril Chevalley, « Analyse des données récupérables à partir de disques dur hors-service », David
Billard (dir.), HGE Genève, 24 février 2012.
Gian-Luca Corbo, « Forensic Analysis and Data Recovery from Mobile Phones », David Billard (dir.),
HGE Genève, 24 février 2008.
Ljupce Nikolov, « Stéganographie, Détection de messages cachés », Stéphan Robert (dir.), HEG
Canton du Vaud, 14 décembre 2013.
Mémoire de recherche appliquée 2014
Page 123
Articles
Cédric Bertrand, « Forensic, Recherche d’information à froid », dans
http://lepouvoirclapratique.blogspot.fr/ (blog.), 08 avril 2012.
Jean-Marc Robert, « Computer Forensics », dans Génie logiciel et des TI, Département de génie
logiciel (dir.).
Nicolas Ruff, « Autopsie d’une intrusion tout en mémoire sous Windows », dans EADS-IW SE/CS, Acte
du symposium SSTIC 07, 2007.
Livres
Andrew Hoog, « Android Forensics: Investigation, Analysis, and Mobile Security for Google Android »,
15 juin 2011.
Aaron Philipp, David Cowen, Chris Davis, « Hacking Exposed, Computer Forensics », 2010.
Michael Sikorski, Andrew Honig, « Practical Malware Analysis », dans no starch press San Francisco,
2012.
Cabinet d'avocats FERAL-SCHUHL / SAINTE-MARIE, « Cyberdroit », 2011.
Paul Rascagnerès, « Malwares », 2013.
Franck Ebel, « Hacking et Forensic », 2012.
ACISSI, « Sécurité Informatique, Ethical Hacking », 2011.
1 RECOMMANDATION N° R (95) 13 du 11 septembre 1995
2 http://www.guidancesoftware.com/products/Pages/encase-forensic/overview.aspx
3 http://www.accessdata.com/products/digital-forensics/ftk
4 http://www.digital-forensic.org/en/
5 http://www.tracip.fr
6 https://github.com/r1tch1e/hash.py
7 http://www.moonsols.com/2011/07/18/moonsols-dumpit-goes-mainstream/
8 http://mcgrewsecurity.com/projects/msramdmp/ 9 https://www.volatilesystems.com/default/volatility
10 https://code.google.com/p/volatilitux/downloads/list
11 http://code.google.com/p/volafox/downloads/list 12
http://www.md5decrypter.co.uk/ntlm-decrypt.aspx 13
http://dcfldd.sourceforge.net/ 14
http://sourceforge.net/projects/esxiimaging/files/ 15
http://sourceforge.net/projects/liveview/files/ 16
https://my.vmware.com/group/vmware/details?downloadGroup=VSP510-VDDK-510&productId=268 17
https://www.pinguin.lu/index.php 18
http://blog.didierstevens.com/programs/userassist/ 19
http://log2timeline.net/ 20
http://www.cgsecurity.org/wiki/PhotoRec 21
http://foremost.sourceforge.net/ 22
https://www.phrozensoft.com/index.php?&page=processdl&id=2 23
http://securityxploded.com/browser-password-dump.php 24
http://www.wireshark.org/ 25
http://www.xplico.org/ 26
https://code.google.com/p/ospy/ 27
www.radicati.com
Mémoire de recherche appliquée 2014
Page 124
28
https://www.transend.com/products_transend_migrator.asp 29
http://www.nucleustechnologies.com/exchange-ost-recovery.html 30
https://www.paraben.com/email-examiner.html 31
http://www.outguess.org/detection.php 32
http://www.dban.org/ 33
http://www.runcorestore.com/ 34
https://www.anti-forensics.com/tag/timestompexe/ 35
http://www.truecrypt.org/ 36
http://windows.microsoft.com/fr-fr/windows7/products/features/bitlocker 37
http://16s.us/TCHunt/index.php 38
http://info.magnetforensics.com/encrypted-disk-detector/ 39
http://www.openwall.com/john/ 40
http://www.cgsecurity.org/wiki/CmosPwd 41
http://themida.fr.malavida.com/ 42
http://www.dependencywalker.com/ 43
http://www.aldeid.com/wiki/PEiD 44
http://www.cgsoftlabs.ro/studpe.html 45
http://www.retn.fr/index.php/post/RDG-Packer-Detector-v0.7.0-2013-Vx-Edition 46
https://www.hex-rays.com/products/ida/ 47
http://www.devextras.com/decompiler/ 48
http://technet.microsoft.com/fr-fr/sysinternals/bb896653.aspx 49
http://technet.microsoft.com/fr-fr/sysinternals/bb896645.aspx http://www.unixgarden.com/index.php/category/misc 49
http://www.pendriveapps.com/
Mémoire de recherche appliquée 2014
Page 125
E – Charte plagiat