
Outil Windows pour extraire les fichiers PE de malware de la mémoire vers le disque à des fins d'analyse.
Process Dump est un outil en ligne de commande de rétro-ingénierie pour Windows permettant de vider les composants mémoire des logiciels malveillants sur le disque en vue d'une analyse. Souvent, les fichiers malveillants sont packés et obscurcis avant d'être exécutés afin d'éviter les scanners antivirus, mais lorsqu'ils sont exécutés, ils se décompressent ou injectent une version propre du code malveillant en mémoire. Une tâche courante pour les chercheurs en malwares lors de l'analyse est de vider ce code décompressé de la mémoire vers le disque pour le scanner avec des produits antivirus ou pour l'analyser avec des outils d'analyse statique tels qu'IDA.
Process Dump fonctionne sur les systèmes d'exploitation Windows 32 et 64 bits et peut vider les composants mémoire de processus spécifiques ou de tous les processus en cours d'exécution. Process Dump prend en charge la création et l'utilisation d'une base de données de hachages propres, afin que le vidage de tous les fichiers propres tels que kernel32.dll puisse être ignoré. Ses principales fonctionnalités incluent :
Je maintiens une version compilée officielle sur mon site Web ici : https://split-code.com/processdump.html
Vous pouvez télécharger la dernière version compilée de Process Dump ici :
Ceci est conçu pour Visual Studio 2019 et fonctionne avec l'édition Community gratuite. Ouvrez simplement le fichier projet avec VS2019 et compilez, cela devrait être aussi simple que cela !
Process Dump peut être utilisé pour vider tout code inconnu de la mémoire (indicateur '-system'), vider des processus spécifiques, ou fonctionner en mode surveillance qui vide tous les processus juste avant leur terminaison.
Avant la première utilisation de cet outil, lorsque vous êtes sur le poste de travail propre, la base de données de hachages d'exclusion propres peut être générée soit par :
Exemples d'utilisation :
Les arguments en ligne de commande peuvent être regroupés comme suit :
Options générales de vidage
Options de la base de données de hachages propres
Options de sortie
| Option | Description |
|---|---|
| -v | Mode verbeux où plus de détails seront affichés pour le débogage. |
| -nh | Aucun en-tête n'est affiché dans la sortie. |
Options avancées
Voici une version simplifiée de l'information :
Lorsque vous utilisez Process Dump dans un bac à sable automatisé ou pour une recherche manuelle anti-malware, les étapes suivantes peuvent être utiles. Assurez-vous d'exécuter toutes les commandes en tant qu'Administrateur dans un environnement propre.
Construire la base de données de hachages propres : Exécutez pd64.exe -db gen ou, pour un processus plus rapide mais moins complet, utilisez pd64.exe -db genquick. Selon votre situation, vous pouvez prendre un instantané de votre VM après avoir créé cette base de données de hachages propres afin de ne pas avoir à répéter cette opération à chaque fois.
Démarrer le moniteur de terminaison de Process Dump : Gardez pd64.exe -closemon en cours d'exécution en arrière-plan. Il videra tous les processus intermédiaires utilisés par le logiciel malveillant.
Exécuter le fichier malveillant : Surveillez l'installation du logiciel malveillant. pd64.exe videra automatiquement tout processus qui tente de se fermer.
Vider le logiciel malveillant en cours d'exécution de la mémoire : Lorsque vous êtes prêt, utilisez pd64.exe -system pour vider tous les processus.
Les composants vidés se trouveront dans le répertoire de travail de pd64.exe. Pour modifier le chemin de sortie, utilisez l'indicateur -o.
Exemples de noms de fichiers des fichiers vidés
| Option | Description |
|---|
| -system | Vide tous les modules ne correspondant pas à la base de données de hachages propres de tous les processus accessibles dans le répertoire de travail. |
| -pid <pid> | Vide tous les modules ne correspondant pas à la base de données de hachages propres du PID spécifié dans le répertoire de travail actuel. Utilisez un préfixe '0x' pour spécifier un PID hexadécimal. |
| -closemon | Fonctionne en mode surveillance. Lorsque des processus se terminent, process dump les vide d'abord. |
| -p <nom du processus regex> | Vide tous les modules ne correspondant pas à la base de données de hachages propres du nom de processus trouvé correspondant au filtre dans le PID spécifié, dans le répertoire de travail actuel. |
| -a <adresse de base du module> | Vide un module à l'adresse de base spécifiée dans le processus. |
| -o <chemin> | Définit le dossier racine de sortie par défaut pour les composants vidés. |
| Option | Description |
|---|
| -db gen | Traite automatiquement quelques dossiers courants ainsi que tous les processus en cours d'exécution et ajoute les hachages des modules trouvés à la base de données de hachages propres. Ajoute récursivement tous les fichiers dans : %WINDIR%, %HOMEPATH%, C:\Program Files\, C:\Program Files (x86)\, ainsi que tous les modules de tous les processus en cours. Ces hachages propres seront ajoutés au fichier clean.hashes dans le répertoire de l'application. Lors des futures commandes de vidage de processus, ces modules connus ne seront pas vidés. Il est recommandé d'exécuter cette commande une fois sur un système propre avant d'utiliser l'outil afin de ne pas vider trop de modules de la mémoire. |
| -db genquick | Identique à ci-dessus, mais ajoute uniquement les hachages de tous les modules de tous les processus à la base de données de hachages propres. C'est un moyen beaucoup plus rapide de construire la base de données de hachages propres, mais elle sera moins complète. |
| -db add <répertoire> | Ajoute récursivement tous les fichiers du répertoire spécifié à la base de données de hachages propres. |
| -db rem <répertoire> | Supprime récursivement tous les fichiers du répertoire spécifié de la base de données de hachages propres. |
| -nr | Désactive la récursivité sur les commandes d'ajout ou de suppression de répertoire de la base de données de hachages. |
| -db clean | Efface la base de données de hachages propres. |
| -db ignore | Ignore la base de données de hachages propres lors du vidage d'un processus cette fois-ci. Tous les modules seront vidés même si une correspondance est trouvée. |
| -cdb <chemin du fichier> | Chemin complet du fichier vers la base de données de hachages propres à utiliser pour cette exécution si vous souhaitez remplacer la valeur par défaut de clean.hashes. |
| -edb <chemin du fichier> | Chemin complet du fichier vers la base de données de hachages des points d'entrée à utiliser pour cette exécution. |
| -esdb <chemin du fichier> | Chemin complet du fichier vers la base de données de hachages courts des points d'entrée à utiliser pour cette exécution. |
| Option | Description |
|---|
| -g | Force la génération d'en-têtes PE à partir de zéro, en ignorant les en-têtes existants. |
| -eprec | Force la reconstruction du point d'entrée, même si un point d'entrée valide semble exister. |
| -ni | Désactive la reconstruction des importations. |
| -nc | Désactive le vidage des régions de code détachées. |
| -nt | Désactive le multithreading. |
| -nep | Désactive le hachage du point d'entrée. |
| -t <nombre de threads> | Définit le nombre de threads à utiliser (par défaut 16). |
| Commande | Description |
|---|
pd64.exe -db genquick | Construisez rapidement une base de données de modules propres basée sur les processus en cours d'exécution. Process Dump dans les tâches ultérieures ne videra que les modules non reconnus. |
pd64.exe -system | Videz tous les modules et les morceaux cachés de tous les processus tout en ignorant les modules propres. |
pd64.exe -closemon | Exécutez en mode surveillance de terminaison. Cela videra tous les processus lorsqu'ils tenteront de se terminer. |
pd64.exe -pid 0x18A | Videz les modules et les morceaux cachés d'un ID de processus spécifique. |
pd64.exe -p .\*chrome.\* | Videz les modules et les morceaux cachés par nom de processus. |
pd64.exe -db gen | Construisez une base de données de hachages propres des modules connus. Cela permet d'éviter de vider les modules connus et bons dans les tâches ultérieures. |
pd64.exe -pid 0x1a3 -a 0xffb4000 | Videz le code d'une adresse spécifique dans le PID. Cela générera deux fichiers pour analyse, avec des en-têtes PE 32 bits et 64 bits reconstruits : notepad_exe_x64_hidden_FFB40000.exe et notepad_exe_x86_hidden_FFB40000.exe. |