Forensic

2. Les outils

Il existe des dizaines d’outils très performants pour faire de l’analyse forensique. Nous n’allons pas lister ici de manière exhaustive l’ensemble de ces outils, nous préférons laisser le lecteur les découvrir selon son bon vouloir. Cependant, nous pouvons tout de même citer quelques outils de référence qui vous seront, quoi qu’il advienne, indispensables. Voici un tableau regroupant ces outils par catégorie :

RéseauMémoireBinaireSystème
Wireshark : Outil de capture et d’analyse de trames réseau.http://wireshark.orgVolatility : Framework très puissant et multiplateforme d’analyse de donnée volatile (RAM).Hexdump : Outil de dump hexadécimal.The coroner’s toolkit : Suite d’outils d’analyse de systèmes UNIX.
Tcpdump : Outil de capture en ligne de commande. Sa maîtrise est indispensable en environnement serveur sans interface graphique.Readelf : Outil de dump d’information pour les fichiers ELF.Logstash : Outil d’analyse de logs
Scapy: Outil de manipulation de paquet TCP.Gdb/ida pro: Débogueur permettant de tracer le comportement d’un programme ou d’analyser un crash dump.

Nous allons maintenant détailler rapidement les fonctionnalités principales de ces outils et leur utilisation dans l’analyse forensique d’un système.

2.1. Les outils d’analyse réseau

a. Wireshark

L’outil Wireshark est LA référence des métiers liés aux réseaux. Administrateur, auditeur, consultant… Cela vaut aussi pour l’analyste forensique. Cet outil est capable de vous aider à disséquer littéralement chaque paquet qui traverse votre carte réseau.

Vous voyez ici une capture d’établissement de connexion. En effet, on constate la présence du flag SYN sur le paquet. L’analyste forensique remarquant par exemple un très grand nombre de ce type de paquet saura qu’il a eu affaire à une attaque de type DOS par SYNflood. Pour rappel, cette attaque a pour but de saturer le serveur de connexions « en attente » en ne terminant par le three way handshake d’établissement des connexions TCP.

b. tcpdump

En cas d’absence d’environnement graphique, tcpdump est l’outil indispensable pour capturer les trames réseau avant de les analyser avec Wireshark. Voici pourquoi il est nécessaire de maîtriser cet outil.

tcpdump -XXX -i <interface> -s <size> -w <file.pcap>

Ici, vous noterez que nous avons choisi d’effectuer une capture avec le plus haut niveau de verbosité (-XXX) et de sauvegarder le résultat dans un fichier au format pcap, format lisible par Wireshark. Ceci vous évitera d’avoir à faire une analyse « temps réel » sur la sortie standard, peu adaptée à l’analyse forensique.

c. Scapy

Scapy est une bibliothèque Python dédiée au réseau. Nous avons choisi cet outil comme référence car Python est un langage particulièrement adapté à l’analyse forensique, rapide à programmer et suffisamment « proche » du système.

Pour démontrer la puissance de cet outil, voici comment réaliser un scanner de port par SYN scan (envoi d’un paquet SYN sur chaque port cible) en seulement quelques lignes.

#!/usr/bin/env python  
 
import sys  
from scapy import *  
 
target = sys.argv[1]  
fl = 22  
 
while (fl <= 25):  
p = sr1(IP(dst = target) /TCP (dport = fl, flags="S"), retry=0, timeout=1)  
if p:  
print "\n TCP port "+str(fl)+" is open on "+str(target)+"\n"  
else:  
print "\n TCP port " + str(fl) + " is open on " + str(target) + "\n"  
fl = fl + 1 

Si vous désirez aller plus loin avec cet outil, sachez que vous pouvez forger à peu près n’importe quel type de paquet réseau.

2.2. Les outils d’analyse mémoire

a. Volatility

Volatility est un framework complet d’analyse de mémoire, lui aussi écrit en Python. Il peut agir sur la mémoire vive comme sur une image de celle-ci, par exemple un fichier .vmem (image mémoire de machine virtuelle VMware).

Voici par exemple le tyw, il permet d’obtenir l’ensemble des processus en cours d’exécution, leur nombre de handles ouverts ou encore le nombre de thread. De manière plus générale, ce que permettent les outils d’un gestionnaire de tâches avancé, volatility le permet sur des images mémoire. Dans le cas d’une analyse forensique, encore une fois, rappelons que l’essentiel du travail se fait sur des données « mortes ».

2.3. Les outils d’analyse binaire

a. Hexdump

Hexdump est un outil permettant l’affichage hexadécimal de tout type de fichier. Pour l’analyse binaire, il peut se révéler très utile ; par exemple pour vérifier les données d’un programme, dans le cas d’un doute sur la corruption d’un système, il peut être indispensable de « reverse » certains fichiers binaires afin de vérifier qu’ils ne sont pas malveillants ou corrompus. Hexdump trouvera particulièrement son utilisation sur les environnements serveur sans GUI. Il permettra de dumper un binaire afin de l’analyser avec un autre outil graphique (IDApro par exemple).

b. Readelf

L’outil Readelf n’est, comme hexdump, qu’un outil « consultatif ». En effet, il permet d’afficher l’ensemble des informations d’un binaire ELF, l’adresse de l’ensemble des bibliothèques auxquelles il est lié, les adresses des différents symboles, etc. L’analyste forensique aura recourt à cet outil s’il suspecte qu’un programme importe une bibliothèque « impropre » ou qu’il utilise certaines fonctions qu’il n’est pas censé utiliser. Cela pourrait être le cas lors d’infection virale par exemple.

c. Gdb

Nous avons ici choisi de présenter gdb car nous nous concentrons sur les systèmes de types UNIX. Cependant, d’excellents débogueurs existent sous Windows comme IDApro ou OllyDBG.

Gdb est un débogueur, c’est-à-dire qu’il permet de contrôler l’exécution d’un programme. Lors d’une analyse virale par exemple, il peut être indispensable pour l’analyste de tenter de retracer le comportement du programme malveillant étape par étape, et également d’en contrôler l’exécution.

Lorsque nous parlons de contrôler l’exécution, il s’agit ici d’un niveau de détail qui nécessitera de très solides connaissances en architecture matérielle car il est possible par exemple avec un débogueur d’arrêter un programme à une instruction particulière, de changer la valeur de certains registres du processeur, et de relancer le programme. Sans aller si loin, l’analyste débutant pourra par exemple déjà obtenir le code assembleur de tout programme.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s