Test d'outils de collecte d'artefacts DFIR-Orc et Kape
Introduction
Cette étude de cas se concentre principalement sur le test de fonctionnalités forensiques de DFIR (Digital Forensics and Incident Response) et Kape. L'objectif est de former des équipes d'experts forensiques à des missions d'incidents cyber.
Ce tutoriel met l'accent sur deux outils forensiques : DFIR-Orc et Kape utilisés pour la collecte d'artefacts avant et après une attaque sur un système. Grâce à la plateforme M&NTIS, des scénarios d'attaque peuvent être joués automatiquement dans des labs. Ensuite, les outils d'analyse forensique peuvent être déployés sur les machines en cours de fonctionnement.
Cette étude de cas se base sur le scénario Windows Lumidus et sur l'analyse post scénario DFIR-Orc. Cependant, Kape est également déployé en utilisant le script python forensic.py
directement.
Lors de l'exécution du scénario Lumidus, un ransomware est déployé sur chaque machine du lab afin de chiffrer les fichiers. En tant qu'analyste forensique, nous voulons tester nos outils pour s'entrainer. Grâce à la plateforme M&NTIS, il est possible d'inspecter l'état de chaque machine avant et après l'exécution du ransomware. Cela est possible en utilisant le mécanisme de pause de l'exécution.
Dans cette étude de cas, nous allons découvrir comment configurer les pauses à l'exécution et comment déployer vos outils forensiques sur les machines virtuelles du lab. Premièrement, la configuration de la ligne de commande M&NTIS CLI est présentée. Ensuite, la configuration des différents fichiers requis à l'analyse est détaillée. En fin d'analyse, la récupération des fichiers d'artefacts générés par les outils de forensiques est expliquée. Enfin, l'inspection de ces fichiers est présentée afin de comprendre en partie le comportement du ransomware.
Pour commencer
Configuration de M&NTIS CLI
Suivez les commandes suivantes pour configurer le CLI:
# création d'un nouveau venv
python3 -m venv ~/mantis_venv
# activation du venv
source ~/mantis_venv/bin/activate
# Installation de M&NTIS CLI
(mantis_venv) python3 -p pip install mantis_api_client
# connexion au domaine
(mantis_venv) mantis account login --domain mantis-platform.io
Vous êtes maintenant connecté à la plateforme M&NTIS ! Vous pouvez maintenant afficher la liste des attaques d'un scénario. Grâce à cela, vous serez en mesure de créer le fichier yaml
de configuration des pauses dans le scénario.
# Afficher la liste des scénarios disponibles
(mantis_venv) mantis scenario list
# Obtenir les informations pour un scénario
(mantis_venv) mantis scenario info lumidus
Pour cette dernière commande, la sortie est :
[+] Attacks available:
- api_control
- nginx_server
- exe_reverse_api
- ad_discover
- port_scan
- netbios_scan
- intern_zerologon
- intern_secretdumps_smb
- lateral_remote_control
- list_ad_computers
- ransomware
Dans ce tutoriel, nous voulons effectuer une pause avant et après l'exécution du ransomware. Dans ce cas, la pause doit être placée sur "ransomware".
Définir l'étape de collecte des artefacts
Dans M&NTIS, il est possible d'effectuer des pauses personnalisées pendant l'exécution d'un scénario d'attaque ou même d'exécuter le scénario étape par étape, au niveau de l'attaque. Il y a deux façons d'y parvenir : en utilisant l'interface web ou directement à partir de la [CLI] de M&NTIS (/advanced/cli/README.md).
Configuration des pauses avec le frontend M&NTIS
Une fois connecté à la plateforme M&NTIS, cliquez sur "Scenarios" :

Cliquez sur "View More" du scénario Lumidus :

Créez un lab:

Cliquez sur "timeline":

Vous pouvez choisir soit "step by step" si vous voulez que le lab s'arrête à chaque attaque, soit "Custom" pour choisir l'endroit où vous voulez interrompre le scénario. C'est tout ! En cours d'exécution, vous recevrez des notifications du scénario lorsqu'une pause sera effectuée.
Pauses personnalisées avec la CLI M&NTIS
Vous pouvez créer le fichier lab_config.yaml
contenant le code suivant :
scenario_execution_mode: "custom"
step_waiting_list: ["ransomware"]
Comme expliqué, l'exécution du scénario fera une pause avant et après l'exécution du ransomware.
Déploiement d'un playbook custom
Cette étape est actuellement possible uniquement via le M&NTIS CLI.
Le fichier forensic.py
montre comment lancer le scénario Lumidus et est prêt à être exécuté.
Pendant la pause, l'outil d'investigation Kape est déployé afin de récupérer les artefacts. Son playbook est joué sur les machines Windows de la simulation. Vous pouvez obtenir plus de détails et personnaliser la configuration de Kape en éditant les fichiers dans provisioning/deploy-kape
.
Le fichier playbook.yaml
décrit les opérations effectuées par ansible. La dernière étape du playbook est utilisée pour exporter les fichiers de la machine virtuelle du lab vers l'hôte. Vous pouvez choisir n'importe quel protocole pour récupérer vos fichiers. Dans le playbook, c'est le protocole HTTP qui est utilisé.
Vous pouvez créer n'importe quel playbook dans le dossier provisioning. Il doit alors contenir au moins un fichier playbook.yaml
pour ansible.
Les variables sous les crochets {{ variable }}
peuvent être fournies par le script python au fichier playbook.yaml
au moment de l'exécution ou en tant que variable d'environnement depuis ansible directement. L'exemple suivant est le playbook utilisé pour déployer DFIR-Orc sur des machines virtuelles.
---
gather_facts: True
strategy: free
tasks:
- name: Copy DFIR-Orc_x64.exe to temporary folder
ansible.windows.win_copy:
src: files/DFIR-Orc_x64.exe
dest: C:\Users\Public\DFIR-Orc_x64.exe
when: cyber_range_system_type == 'windows'
###########################################
# Launching the fastir_artifacts executable
###########################################
- name: Launching the fastir_artifacts [Windows]
ansible.windows.win_powershell:
script: |
C:\Users\Public\DFIR-Orc_x64.exe NTFSInfo /out=C:\Users\Public\{{ ansible_facts['hostname'] }}_C_drive_{{ state }}.zip "C:\"
when: cyber_range_system_type == 'windows'
###########################
# Uploading the script file
###########################
- name: Uploading the script file
template:
dest: C:\Users\Public\upload.ps1
src: files/script.ps1
when: cyber_range_system_type == 'windows'
#########################
# Uploading the file HTTP
#########################
- name: Run PowerShell script with fallback IPs
ansible.windows.win_shell: C:\Users\Public\upload.ps1
when: cyber_range_system_type == 'windows'
Partage de fichiers depuis le lab
Le playbook utilise un script powershell nommé upload.ps1
pour exporter les archives vers une machine compatible HTTP Webdav de la simulation. Les variables sont fournies à partir du script python en tant que variables supplémentaires.
$ipList = @{{ ip_list }}
$filePath = "C:\Users\Public\{{ ansible_facts['hostname'] }}_C_drive_{{ state }}.zip"
$success = $false
foreach ($ip in $ipList) {
try {
Invoke-WebRequest -Uri http://$ip/webdav/forensic/{{ansible_facts['hostname']}}/dfir/{{ state }}/C_drive.zip -UseBasicParsing -Method Put -InFile $filePath -ContentType "application/octet-stream"
$success = $true
break
} catch {
Write-Host "Failed to upload to $ip $($_.Exception.Message)"
}
}
if (-not $success) {
throw "Failed to upload to all IPs in the list."
}
Partager et recevoir des fichiers avec le lab
Une fois que vous avez récupéré l'identifiant du lab (format uuid), vous pouvez voir tous les accès qui peuvent être effectués à partir de l'hôte. Le docker provisioning_relay
est un relais pour partager des fichiers avec le lab. C'est à partir de son accès à distance que les fichiers peuvent être envoyés ou téléchargés vers et depuis le lab. Cet accès peut être récupéré à partir de la ligne de commande M&NTIS :
# Get your running lab ids
(mantis_venv) mantis labs
[+] Available labs:
[+] ID: e4c1b519-4881-43fd-861c-33000626f65e
[+] Lab start time: 2025-02-18 12:47:46 UTC
[+] Status: ScenarioExecutionStatus.scenario_finished
[+] Type: ContentType.ATTACK
# Copy to your browser "HTTP URL" of provisioning_relay
(mantis_venv) mantis lab e4c1b519-4881-43fd-861c-33000626f65e remote-access
[+] Lab remote access information:
[+] Lab ID: e4c1b519-4881-43fd-861c-33000626f65e
[+] Node name: provisioning_relay
[+] HTTP URL (noVNC): https://app.mantis-platform.io//proxy/e4c1b519-4881-43fd-861c-33000626f65e/relay/provisioning_relay/
[...]
Le serveur web est compatible avec WEBDAV. Vous pouvez télécharger des fichiers vers le lab directement depuis votre navigateur ou en utilisant curl
(si vous avez besoin de créer des dossiers supplémentaires). Ce serveur web est disponible une fois que la première étape de provisionnement requise a été lancée.

Vous pouvez utiliser le formulaire pour télécharger vos fichiers. Ils seront téléchargés dans le sous-dossier /uploads. Vous pouvez choisir de télécharger un fichier avec curl au chemin de votre choix :
curl -T ransomware.exe https://app.mantis-platform.io/proxy/e4c1b519-4881-43fd-861c-33000626f65e/relay/provisioning_relay/webdav/1/provisioning_playbooks/data/my_uploads/ransomware.exe

my_uploads
Récupérer les artefacts
Dans le scénario Lumidus, l'attaque du ransomware est effectuée deux fois. La première fois, les machines ADMIN1
et CLIENT1
sont attaquées en même temps, alors que la seconde fois, l'attaque ne concerne que dcserver
.
L'arborescence des fichiers de dcserver
après l'exécution du scénario ressemble à ce qui suit :
-- dcserver
|-- dfir
| |-- after
| | -- C_drive.zip
| |-- before
| -- C_drive.zip
-- kape
|-- after
| -- dcserver.zip
|-- before
-- dcserver.zip
Analyse des artifacts collectés
Maintenant que les artefacts ont été extraits du lab, il est temps de vérifier si les traces de l'attaque ont été correctement capturées. Heureusement, M&NTIS permet de récupérer des informations exploitables concernant le scénario d'attaque, et en particulier les métadonnées de chaque étape de l'attaque jouée, ces informations peuvent aider à comprendre si les artefacts collectés correspondent au scénario d'attaque.
Grâce à DFIR-orc, il est possible de lister tous les fichiers d'un disque et de les exporter dans un fichier .csv
. Par exemple, nous pouvons inspecter l'état "avant" du ransomware de la machine dcserver
. Certains ransomwares utilisent une extension de fichier personnalisée après avoir chiffré un fichier. En utilisant un script personnalisé, il est possible d'extraire toutes les extensions de fichiers utilisées sur le disque. D'après la plateforme M&NTIS, nous savons que le ransomware est correctement exécuté :

De nombreux artefacts peuvent être collectés au cours d'une telle analyse dynamique. Afin de vérifier l'impact du ransomware sur les fichiers, nous voulons observer les extensions de fichiers de l'étape "après" (c'est-à-dire après l'exécution du ransomware). Comme le montre la liste des fichiers collectés par DFIR-Orc, nous pouvons constater l'apparition d'une nouvelle extension de fichier : .h43
. Elle est largement utilisée dans les fichiers du dcserver
. L'outil forensique DFIR-Orc
a réussi à lister les fichiers avec la nouvelle extension correcte après le déclenchement du ransomware.

Un autre artefact pourrait consister à rassembler le dossier Prefetch
(si disponible) pour vérifier les fichiers exécutés avant et après le déclenchement du ransomware.

Pour récupérer les fichiers Prefetch, vous pouvez exécuter la commande suivante dans le playbook deploy-dfir
avant et après la pause. Plusieurs fichiers peuvent être récupérés en une seule pause et exportés vers le serveur HTTP.
DFIR-Orc_x64.exe GetThis /sample="*.pf" /out=prefetch.zip C:\Windows\Prefetch\ /nolimits
Conclusion
Dans ce cas de test, nous avons vu comment tester des outils et des procédures pour le DFIR et le CERT, de la création du lab à l'analyse de l'artefact. Grâce à la plateforme M&NTIS, il est désormais possible d'entrainer une équipe, d'automatiser les tests d'outils, etc.