Skip to main content

Forensics

tip

Pareil, cette page nécéssite une révision. Elle sera retravaillée courant printemps/été 2023

Introduction

Globalement, on peut traduire le terme Forensics par "Investigations Numériques". Dans l'idée, une telle discipline correspond à de "l'informatique légale", voire "criminalistique". Le but d'une telle discipline est bien unqiuement de collecter des preuves.

De ce fait, une grande importance est accordée à l'administration de la preuve (ou chain of custody). L'objectif est donc de garantir l'intégrité et la traçabilité des éléments de preuve.

Pour ne pas altérer les preuves, on prendra donc soin de réaliser une première copie du support original (copie que l'on appellera Master) puis on travaillera sur des copies de master. Le support original doit être mis sous scellée une fois que le master est réalisé.

Outillage

Distros

Utilisation de deux distributions Linux principales pour faire de la DFIR (Digital Forensics and Incident Response) :

  • Kali Linux : la classique
  • CSI Linux : testée en cours de Forensics en mai 2023, basée sur Ubuntu. Il s'agit là d'un support jetable que l'on est censé reset une fois le support analysé.

Penser à vérifier les checksums des fichiers (ISO, OVA ou DD). Pour CSI, pas de fichier ISO : flasher le .dd ou utiliser l'OVA.

Acquisition & collecte

  • Sur un Windows, utilisation de FTK Access Imager
  • Pour les copies bit à bit, utilisation de DD et de ses dérivés : dd, dc3dd et enfin dcfldd
  • On peut également utiliser ewfacquire (pas encore testé en lab 🙃)
  • Côté physique : Opentext tableau TD4
  • Prévoir aussi de gros supports de stockage ! Si on souhaite analyser 64 Go de RAM d'un serveur, le fichier dump prendra 64 Go de stockage.

Analyse

  • Utilisation du Sleuth Kit et notamment Autopsy
  • MemProcFS pas encore testé mais potentiellement intéréssant
  • Volatility v2/3 ❤️‍🔥

File Carving

Lorsqu'un système de fichiers (FS) est endommagé, en forensics on parle de de File Carving pour tenter une récupération.

Pour restaurer un fichier, utilisation de Foremost. La syntaxe est plutôt simple :

foremost -i file -o output -t jpg -T

Volatility V3

warning

Tous les modules de la V2 ne sont pas encore disponibles sur la V3 (cc les forensics du 404CTF 2023 🤪🤪)

Installation

Les modules ayant changé, les commandes ont été mises à jour.

On commence par installer la v3 depuis le repo Github:

git clone https://github.com/volatilityfoundation/volatility3.git && cd volatility3

On installe les prérequis :

pip3 install -r requirements-minimal.txt

Puis on lance le build et l'installation :

python3 setup.py build 
python3 setup.py install

Pour obtenir les premières informations de base et s'assurer que volatility supporte le dump mémoire fourni :

python3 vol.py -f /home/user/samples/stuxnet.vmem windows.info
tip

J'utilise un alias personnalisé dans mon .bashrc pour éviter de me déplacer dans le dossier volatility :

alias volatility='python3 ~/Downloads/volatility3/vol.py'

Uses cases de base

En cas de doute, l'aide de volatility est plutôt bien faite. Ces commandes ont été utilisées dans le cadre du CTF FCSC2023 💙

Lister les processus :

python3 volatility3/vol.py -f /home/user/samples/stuxnet.vmem windows.pslist

Lister les processus sous la forme d'un tree:

python3 volatility3/vol.py -f /home/user/samples/stuxnet.vmem windows.pstree

Liste les processus avec les informations de sessions extraites depuis les variables d'environnement :

python3 volatility3/vol.py -f /home/user/samples/stuxnet.vmem windows.sessions

Liste les processus passés en ligne de commande avec leurs arguments

python3 volatility3/vol.py -f /home/user/samples/stuxnet.vmem windows.cmdline

Récupérer les hashs de mots de passe de notre machine cible:

python3 volatility3/vol.py -f /home/user/samples/stuxnet.vmem windows.hashdump

Scanner les fichiers de type MFT sur le dump :

python3 volatility3/vol.py -f /home/user/samples/stuxnet.vmem windows.mftscan

A la manière d'une commande netstat sur un linux, affiche les connexions TCP/UDP de la machine

python3 volatility3/vol.py -f /home/user/samples/stuxnet.vmem windows.netstat

Certains points n'ont pas été abordés ici, si certains aspects sont manquants consulter les commandes retenues et notées ci-dessous dans la V2:

OLD - Volatility V2

Installation

On récupère le binaire Linux en standalone à cette adresse.

Uses cases de base

danger

Cette documentation n'est plus valable pour Volatility3, les noms des modules ayant changé.

Obtenir des infos sur un dump mémoire:

vol.py -f dump.dmp imageinfo

Module intéressant pas encore dispo en V3 : clipboard, qui permet de récupérer le presse-papier d'un hôte windows.

vol.py -f dump.dmp --profile=Win7SP1x86_23418 clipboard

Lister les processus

vol.py pslist --profile=Win7SP1x86_23418 -f dump.dmp 

Obtenir l'historique du CMD

vol.py consoles --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp 

Dump d'un processus

vol.py --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp -p 2168 -D --dump-dir ./
tip

Lire le dump avec la commande strings + grep tcprelay pour pivot dmz

Arbre des processus d'un dump:

vol.py pstree --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp 

Lister les connexions réseaux d'un dump:

vol.py netscan --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp

Lister les services du dump:

vol.py svcscan --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp | more 

Lister les commandes du dump:

vol.py consoles --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp
tip

L'une des clés de registre les plus connues pour les malwares est la suivante: 'Software\Microsoft\Windows\CurrentVersion\Run' Cette dernière se lance sur la clé de registre du NTuser.Dat. Cf plus bas pour localiser les clés de registre des utilisateurs.

Lister les commandes liées au PID:

vol.py cmdline --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp
tip

Réaliser un checksum à la volée:

echo -n "C:\Users\John Doe\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\iexplore.exe" | md5sum
tip

Localiser les clés de registre dans la RAM

Extraction des clés de registre:

vol.py hivelist --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp

Extraction des hashs de mdp où -s SAM et -y SYSTEM

vol.py hashdump --profile=Win7SP1x86_23418 -f Téléchargements/ch2.dmp -y 0x86226008 -s 0x89c33450 
tip

Structure des hashs:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Nom:ID:HashLM:HashNT

Ne pas oublier que ces hashs sont vides (LM: aad3b4 et NT:31d6cf)

Threat Intellingence

  • Cuckoo Sandbox un Open Source Malware Analysis Tool: Cuckoo Sandbox (Pas encore testé en lab)

  • Virus Total pour avoir un premier visuel sur l'analyse d'un binaire.

Divers

Loki

Loki - Simple IOC and Incident Response Scanner

Loki

Velociraptor

Velociraptor - Endpoint visibility and collection tool.