Annexe 06‐07‐08 : Analyse de malware - artafak/ESD_Ressources GitHub Wiki

Vous trouverez ci-dessous des astuces pour mieux appréhender cette annexe et exploiter l'étude de cas.

Liens utiles

Quelques sites qui pourront vous aider :

Pour approfondir le sujet d'analyse malware et forensic :

Documents de référence

TOP REF ! [Pour ceux qui veulent grow up sur le module]

fichier capture.pcapng

Analyse du fichier .pcapng avec A-Packets

fichier dump.raw

MemProcFS-Analyzer

Actuellement en cours de refonte, ce projet est très utile pour automatiser la recherche d'artefacts depuis le dump. Nécessitant de nombreuses dépendances, vous devrez possiblement l'adapter. Une version toute prête est disponible sur ce github, dossier Annexe 6-7-8

Rendez-vous sur le Github officiel pour voir toutes les fonctionnalités de ce projet et vous verrez qu'il va vous faire gagner du temps, beaucoup de temps ...

Installation

Télécharger et installer Dokan (obligatoire)

site officiel ou => lien de téléchargement direct

Dokan permet d'émuler un système de fichiers permettant d'exploiter le contenu du dump mémoire dans une arborescence ressemblant à NTFS. Vous aurez un lecteur qui vous permettra de naviguer entre les fichiers extraits et les rapports.

Télécharger et installer DotNet 6.0 (obligatoire)

site officiel ou => lien de téléchargement direct

Composant Microsoft nécessaire pour utiliser les outils développés en C# (comme les Zimmerman's Tools par exemple) le redémarrage de l'ordinateur est obligatoire après l'installation

Navigateur Web par défaut (recommandé) Pour éviter tout problème d'affichage, veuillez à avoir un navigateur Web (Firefox, Chrome, Edge...) récent configuré par défaut

Utilisation

Je vous conseille d'utiliser la version toute prête de MemProcFS-Analyzer_offline version ESD => disponible ici qui intègre :

  • un token pour s'appuyer sur l'API de ipinfo.io qui localisera les IP détectées dans les logs Windows pendant l'analyse.
  • une intégration des dépendances nécessaires au fonctionnement et à l'automatisation des scripts (évite d'adapter les configurations en fonction de l'évolution/update des outils).
  • Désactivation des fonctionnalités inutiles pour l'annexe (ClamAV, Yara, ELK...).
  • plusieurs modifications dans le code pour optimiser l'analyse, installation des modules prérequis (NuGet, ImportExcel...)

Vous pouvez aussi vérifier sur le Github de evild3ad si une mise à jour existe, et si de nouvelles fonctionnalités sont apparues. Mais pour votre annexe, il est pleinement fonctionnel.

Désactivez votre antivirus (Windows Defender...) avant de décompresser l'archive contenant MemProcFS-Analyzer

Ouvrir Windows Powershell avec les droits d'administrateur
Exécuter le script .\MemProcFS-Analyzer.ps1

Si vous avez un message d'erreur indiquant que vous ne pouvez pas exécuter ce script car il n'est pas signé, utilisez la commande Set-ExecutionPolicy Unrestricted pour modifier la stratégie d'exécution de PowerShell.

Dans la fenêtre qui s'ouvre :

Memory Dump : votre fichier .dump
Cochez les cases : Enable Forensic Timeline (CSV) et Enable Forensic Timeline (XSLX)

Lancement de l'analyse

Analyse running ...

une fois l'analyse terminée, le script s'arrête, mais votre investigation commence !

Vous pouvez utiliser tous les outils et accéder aux dumps complets :

  • en accédant au lecteur F:
  • en exploitant les rapports qui se trouvent dans le dossier YYYY-MM-DDTHHMMSS-dump créé dans le répertoire du script (exemple 2024-08-26T145602-dump)

Par exemple, vous pouvez utiliser l'outil Timeline Explorer pour ouvrir le fichier F:\forensic\csv\timeline_all.csv qui sera un bon point de départ à votre analyse


Volatility 3

Préparation d'un lab pour Volatility 3

Objectif : créer et configurer une machine virtuelle dotée des outils nécessaires pour analyser des fichiers PCAP/PCAP-NG et des DUMP
Ce lab sera sous Linux et pourra fonctionner en mode déconnecté (hors-ligne)

Préparer l'environnement virtuel

Ici, nous utiliserons la version 12.6 de Debian qui est la version la plus récente à l'heure où j'écris cette page

Télécharger VirtualBox : --> VirtualBox.org --> VirtualBox-7.0.20-163906-Win.exe --> VirtualBox_Extension_Pack
Télécharger Debian : --> Debian.org --> debian-12.6.0-amd64-netinst.iso

  • Installer Debian et préparer l'environnement

  • Installer les additions invités

sudo apt update
sudo apt install build-essential dkms linux-headers-$(uname -r)

Ensuite faîtes Périphériques > Insérer l'image CD des additions invité

Lancez ensuite le script d'installation des Additions invité

sudo mkdir -p /mnt/cdrom
sudo mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
sudo sh ./VBoxLinuxAdditions.run --nox11

Il sera nécessaire de redémarrer une fois l'installation terminée sudo shutdown -r now

Ensuite, pour plus de confort :

sudo usermod -aG vboxsf -a <username> : Permet d'ajouter votre username actuel au groupe vboxsf pour permettre les fonctions de glisser-déposer ou encore d'accéder aux dossiers partagés entre votre VM et l'hôte

echo "username ALL=(ALL:ALL) ALL" >> /etc/sudoers : Vous permet de donner les droits root à username une bonne fois pour toute, en s'affranchissant de la commande sudo.

D'autres commandes utiles :

apt update --allow-insecure-repositories --allow-unauthenticated : Permet de bypasser la sécurité lors des connexions aux dépots de mise à jour /!\ A ne pas faire dans un environnement en production !

apt update --fix-missing : résoudre les problèmes de dépendances manquantes ou incomplètes


Installation des dépendances systèmes et Python

apt install gcc wget libpq-dev python3-wheel python3.10-venv yara python3-pycryptodome python3-distorm3 -y

python3 -m pip install --upgrade pip : installer pip et le mettre à jour python3 -m pip install cmake wheel setuptools pycrypto distorm3 jsonschema --upgrade : installer les modules avec pip

** Créer un environnement virtuel Python **

python3 -m venv venv
source venv/bin/activate

Installer Volatility 3

Télécharger Volatility 3 depuis le github officiel
git clone https://github.com/volatilityfoundation/volatility3.git

pushd volatility3
cd ..
pip3 install -r requirements.txt
python3 setup.py build
python3 setup.py install
popd

** Volatility 3 offline**

Si vous devez utiliser Volatility 3 sans connexion à Internet, il sera nécessaire de télécharger les bases de PDB. Pour simplifier, les PDB sont des tables de symboles nécessaires à Volatility pour trouver le schéma correspondant à l'image afin de l'identifier et l'exploiter. Par défaut, Volatility 3 téléchargera automatiquement le PDB correspondant à l'image lors de la première analyse. Mais si vous souhaitez l'utiliser en mode hors ligne, il faudra télécharger les archives contenant les fichiers au format JSON. Sources :

wget -P $HOME/volatility3/volatility3/symbols/windows https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip

NB : Il n'est pas nécessaire de dézipper l'archive, Volatility 3 recherchera directement dedans.

Utilisation de Volatility 3

python3 vol.py -f <filename> <plugin>
Exemple : python3 vol.py -f dump.raw isfinfo

NB : le plugin isfinfo doit être le premier a être utilisé afin que Volatility 3 puisse identifier l'image à analyser.

Ensuite, pour une image Windows, voici quelques plugins utiles :

  • windows.info
  • windows.pslist
  • windows.pstree
  • windows.registry.hivescan
  • windows.shimcachemem
  • windows.strings
  • windows.suspicious_threads
  • windows.svcscan
  • windows.vadyarascan
  • ... La liste complète est disponible ici Tous les plugins disponibles sont listés avec la commande python3 vol.py -h

Exemple de commande root@local:~/volatility3# python3 vol.py -vvvv /TPMALWARE/infected/dump.raw windows.info > /TPMALWARE/artefacts/windows.info/txt

les résultats de la commande seront envoyés dans le fichier /TPMALWARE/artefacts/windows.info.txt pour les sauvegarder et les exploiter plus tard.

root@local:~/volatility3# python3 vol.py -vvvv -f dump.raw -o /tmp windows.memmap --dump --pid 1234

permet d'extraire le processus 1234 en mémoire

root@local:~/volatility3# strings pid.1234.dmp > pid.1234.dmp.txt

permet d'extraire les lignes de caractères (strings) depuis l'image mémoire du processus extrait précédemment

Liens utiles dans l'utilisation de Volatility 3

⚠️ **GitHub.com Fallback** ⚠️