Forensics
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
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
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
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 ./
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
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
Réaliser un checksum à la volée:
echo -n "C:\Users\John Doe\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\iexplore.exe" | md5sum
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
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
Velociraptor
Velociraptor - Endpoint visibility and collection tool.