Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
WhacAMole — Analyse de la mémoire vive détectant les IOCs de malwares dans les processus, modules, handles, tokens, threads, assemblies .NET, espace d'adressage mémoire et variables d'environnement. Dump, détecte et désassemble les hooks, shellcode, régions mémoire, modules et processus. | Kitploit
Outils/GitHubGitHub/ignacioj/whacamole
Gestion des Indicateurs de Compromission (IOC)Analyse Dynamique (Sandboxing)Criminalistique MémoireRétro-ingénierieShellcodeDébogueursAnalyse ForensiqueAnalyse de MalwareCriminalistique NumériqueAnalyse de BinairesRenseignement sur les MenacesRéponse aux Incidents
454il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
GitHubignacioj/whacamole

WhacAMole

Analyse de la mémoire vive détectant les IOCs de malwares dans les processus, modules, handles, tokens, threads, assemblies .NET, espace d'adressage mémoire et variables d'environnement. Dump, détecte et désassemble les hooks, shellcode, régions mémoire, modules et processus.

Voir le dépôt
Partager

WhacAMole

WAM_logo

WhacAMole est un programme qui analyse les processus en mémoire de manière intégrale, détectant et signalant les anomalies liées aux malwares, et présentant et sauvegardant dans des fichiers toutes les informations pertinentes pour la vérification, la corrélation ou l'analyse, ainsi que le vidage des régions mémoire, des processus et des modules suspects. Pour y parvenir, il analyse non seulement les anomalies des régions mémoire des processus et des modules qu'ils chargent, mais il analyse également en profondeur tout l'espace mémoire utilisé par le processus. Actuellement, WhacAMole est capable d'identifier 67 alertes liées à un comportement malveillant ou qui ne peuvent être dues qu'à un malware. Il affiche plus de 70 propriétés des processus, de la mémoire et des modules, comparant nombre de leurs attributs lus en mémoire avec ceux qui apparaissent dans le fichier correspondant sur le disque, désassemble partiellement les régions mémoire suspectes et désassemble partiellement les fonctions exportées qui ont été modifiées en mémoire afin que les analystes puissent mener leurs propres investigations.

Modification de fonction par un malware

Contrairement à d'autres programmes similaires, il met à disposition des analystes toutes les informations pertinentes sur les processus, en étiquetant avec différentes alertes les caractéristiques liées aux malwares, afin qu'ils puissent effectuer leur propre analyse ou rechercher d'autres signes de l'existence de processus malveillants. Les alertes sont classées, selon leur dangerosité et le nombre de processus dans lesquels le même comportement apparaît, selon une échelle de six valeurs, reflétée dans le document HTML avec une échelle de couleurs, où 6 (couleur noire) est un indicateur de la probabilité la plus élevée que la caractéristique détectée soit due à un malware, et 1 (couleur grise) indique que, bien que le comportement soit anormal, de nombreux processus système présentent le même comportement observé :

Codes de couleur

Pour faciliter le travail des analystes, les informations sont présentées à l'écran, dans un fichier HTML avec un panneau de navigation des processus analysés et dans des fichiers texte CSV. Dans le panneau latéral du document HTML, l'arborescence des processus est affichée, avec la couleur correspondant à l'alerte la plus élevée détectée dans ceux-ci, avec le lien hypertexte vers son emplacement dans le document, et avec la couleur bleue pour son PID s'il s'agit d'un processus 32 bits ou verte s'il s'agit d'un processus .NET. Les processus qui ont le Control Flow Guard (CFG) activé sont affichés en italique.

Arborescence1

Les informations sur les sessions RDP distantes sont affichées au début des informations du processus :

RDP

La capacité réseau est affichée de deux manières : si une connexion TCP a été détectée, elle est affichée avec le symbole du globe terrestre, et si un socket connecté a été détecté, elle est affichée avec un symbole de globe vide. Un symbole ajouté (cercle blanc) pour les processus avec des bibliothèques de navigation HTTP en mémoire : wininet.dll et winhttp.dll.

ArborescenceTCPSocket

Détail réseau :

DétailTCP

Socket connecté :

DétailSocket

Il existe un symbole spécial (une clé) lorsqu'une activité de type Mimikatz est détectée.

DétailSocket

En bas du panneau de navigation du document HTML, toutes les alertes sont affichées, avec leur couleur, avec les PID des processus dans lesquels elles ont été détectées sous forme de lien hypertexte vers la position du document où le processus est présenté.

Détections

S'il n'y a aucun processus détecté avec une alerte, leur nom est affiché sur fond blanc.

Le panneau principal affiche tous les processus avec leurs informations dans des sections pliables qui sont masquées par défaut. Toutes les alertes sont toujours visibles.

Affichage

Les régions mémoire sauvegardées sont xorées avec la clé 0x0E pour empêcher l'antivirus de les supprimer.

Analyser, comparer et présenter les informations de :

1. Processus :

  • Nom du processus.
  • Taille du fichier.
  • PID du processus.
  • PPID du processus.
  • Connexions réseau TCP et UDP.
  • Informe si le processus apparaît dans quatre listes PEB : InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList et LdrpHashTable.
  • Informe si le processus est visible en mémoire (VAD).
  • Informations Rich Header.
  • Fonctions exportées lues en mémoire et lues depuis le fichier.
  • Fonctions importées.
  • Modules d'import différé.
  • Protection de la mémoire attribuée au module du processus.
  • Type de mémoire.
  • Point d'entrée du processus lu en mémoire.
  • Point d'entrée du processus lu depuis votre fichier.
  • Adresse mémoire du processus.
  • Sections PE lues en mémoire et dans le fichier. Les deux ne sont affichées que s'il y a une différence.
  • Taille de la section de données PE.
  • Caractéristiques de l'exécutable (DLLCharacteristics).
  • Numéro de version majeure de l'image (MajorImageVersion).
  • Somme de contrôle originale et calculée.
  • À partir de la ressource VERSIONINFO, lue en mémoire et depuis le fichier, affiche les valeurs de : Comments, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, PrivateBuild, ProductName, ProductVersion, SpecialBuild.
  • ID de session du processus obtenu auprès de l'autorité de sécurité locale (LSA).
  • ID de session visible depuis le processus.
  • Identifiant unique local (LUID) de session de connexion.
  • Identifiant unique local (LUID) de la session de connexion du processus dont il provient.
  • Intégrité du jeton.
  • Type de jeton.
  • Type d'ouverture de session.
  • Package d'authentification utilisé.
  • Utilisateur et domaine.
  • Identifiant de sécurité (SID) de l'utilisateur.
  • Appartenance au groupe des administrateurs locaux.
  • Ligne de commande du processus.
  • Chemin du fichier du processus. Affiche le FullName du VAD et du PEB s'ils diffèrent.
  • Répertoire de travail actuel (CWD) du processus.
  • Format PE : x86/x64.
  • Type de machine cible (Target Machine).
  • Date-heure de création du processus.
  • Temps écoulé depuis le démarrage du système jusqu'à la création du processus.
  • Signature du PE.
  • Adresse du fichier de base de données du programme (.pdb) lue en mémoire et dans le fichier.
  • Date-heure obtenue à partir de IMAGE_FILE_HEADER lue en mémoire et dans le fichier.

• Avertissements :

root@kitploit:~
[Admin Privs]
[Alternate credentials]
[Alternate network credentials]
[Delphi 4 – Delphi 2006]
[Entry Point]
[LogonType]
[Managed code but no Assemblies detected - .NET ETW disabled]
[Mismatching Path]
[Name of the module hidden in memory]
[NTLM Authentication]
[PE anomalies]
[PEB ImageBaseAddress forgery]
[Possible .NET in memory loaded as Assembly.Load(byte[])]
[Process checkSum is 0]
[Process checkSum mismatch]
[Process Ghosting]
[Process Hollowing]
[Process Memory region hash mismatch]
[Process Memory region Protection value modified]
[Process Memory region WX]
[Process Name != Internal Name]
[PROCESS NOT SIGNED]
[Process Private memory region]
[Process Unknown executable memory region]
[Section Table]
[Shared memory subversion]
[SizeOfInitializedData is 0]
[SUSPENDED PROCESS]
[Suspicious Commandline]
[Suspicious Environment Variable]
[TimeDateStamp Inequality]
[Transaction detected: TxF/TxR]
[Unmanaged process/managed code execution detected]
[Unusual CWD]

Processus

2. Modules :

  • Nom du module.
  • Taille du fichier.
  • Chemin du fichier. Affiche le FullName du VAD et du PEB s'ils diffèrent.
  • Informe si le processus apparaît dans quatre listes PEB : InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList et LdrpHashTable.
  • Informe si le processus est visible en mémoire (VAD).
root@kitploit:~
Ce à quoi on s'attendrait dans un module normal est LMIVH :
L = InLoadOrderModuleList(PEB).
M = InMemoryOrderModuleList (PEB).
I = InInitializationOrderModuleList (PEB).
V = Détecté dans la mémoire virtuelle du processus.
H = Détecté dans la liste de hachage du PEB.

S'il a été délié des trois listes liées du PEB, on verrait :
    ---VH

Si le module est chargé manuellement par le malware, il n'apparaîtrait dans aucune des listes PEB mais pourrait être détecté en analysant la mémoire,
donc il apparaîtrait comme :
    −−−V−

Avec la technique DLL Hollowing with Moat (voir https://github.com/forrest-orr/artifacts-kit pour une POC) le résultat serait :
    -----
  • Informations Rich Header.
  • Fonctions exportées lues en mémoire et lues depuis le fichier.
  • Protection de la mémoire attribuée au module.
  • Type de mémoire.
  • Point d'entrée du processus lu en mémoire.
  • Point d'entrée du processus lu depuis votre fichier.
  • Adresse mémoire du processus.
  • Sections PE lues en mémoire et dans le fichier. Les deux ne sont affichées que s'il y a une différence.
  • Taille de la section de données PE.
  • Caractéristiques de l'exécutable (DLLCharacteristics).
  • Numéro de version majeure de l'image (MajorImageVersion).
  • Somme de contrôle originale et calculée.
  • Format PE : x86/x64.
  • Type de machine cible (Target Machine).
  • Date-heure de chargement du module en mémoire.
  • À partir de la ressource VERSIONINFO, lue en mémoire et depuis le fichier, affiche les valeurs de : Comments, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, PrivateBuild, ProductName, ProductVersion, SpecialBuild.
  • Signature du PE.
  • Adresse du fichier de base de données du programme (.pdb) lue en mémoire et dans le fichier.
  • Date-heure obtenue à partir de IMAGE_FILE_HEADER lue en mémoire et dans le fichier.
  • Date-heure obtenue à partir de IMAGE_DEBUG_DIRECTORY lue en mémoire et dans le fichier.
  • Date-heure obtenue à partir de IMAGE_EXPORT_DIRECTORY lue en mémoire et dans le fichier.
  • Date-heure obtenue à partir de IMAGE_RESOURCE_DIRECTORY lue en mémoire et dans le fichier.
  • Hachage SHA1 du fichier.
  • Information indiquant s'il s'agit d'un exécutable .NET et version CLR.

• Avertissements :

root@kitploit:~
[Abnormal PE Header]
[Delphi 4 – Delphi 2006]
[DLL Hiding]
[DLL Hollowing]
[Mismatching Path]
[Module checkSum is 0]
[Module checkSum mismatch]
[Module Name != OriginalFileName]
[MODULE NOT SIGNED]
[Module PE anomalies]
[Module SizeOfInitializedData is 0]
[Module TimeDateStamp Inequality]
[Name of the module hidden in memory]
[Phantom DLL Hollowing TxF]
[Private memory region]
[Section Table]
[Signed PE NOT MEM_IMAGE]
[Unsigned PE NOT MEM_IMAGE]
[Unusual module]

Modules

3. Handles : Tous les handles de processus des types File, Key, Mutant, Process, Thread, Token et Section sont affichés. Selon le type de handle, les informations suivantes sont affichées :

File : Adresse complète du fichier.

Handle File

NamedPipe : Processus client, processus serveur, accès accordé, adresse de l'objet dans le noyau.

Named pipe

Key : Adresse complète de la clé accédée.

Handle Key

Mutant : Nom du mutant.

Mutant

Process : ID du processus, nom du processus, accès accordé, adresse de l'objet noyau.

Handle Process

Thread : Nom du processus, ID du processus, ID du thread, accès accordé, adresse de l'objet noyau.

Handle Thread

Token : Identifiant de sécurité (SID) de l'utilisateur, utilisateur et domaine, Identifiant Unique Local (LUID) de la session de connexion, type de jeton.

Handle Token

Section : nom de l'objet, ID du handle, adresse mémoire, taille, propriétés d'allocation mémoire, point d'entrée du module si applicable, accès autorisé, adresse de l'objet dans le noyau.

Handle Section

• Avertissements :

root@kitploit:~
[Handle-Section Phantom DLL Hollowing TxF]
[Handle-Section Suspicious: Injection]
[Pipe Handle to another process]
[Process Handle to another process]
[ShadowMove Lateral Movement]

4. Jetons : Dans les threads où un jeton est détecté, les informations suivantes sont affichées :

  • ID du thread.
  • État du thread.
  • Utilisateur et domaine.
  • Identifiant Unique Local (LUID) de la session de connexion.
  • Identifiant Unique Local (LUID) de la session de connexion d'origine.
  • Type de jeton.
  • Intégrité du jeton.

• Avertissements :

root@kitploit:~
[Thread with TOKEN]

Jetons

5. Threads :

  • ID du thread.
  • Adresse de début du thread.
  • Adresse complète du module.
  • État.
  • Pile d'appels.

• Avertissements :

root@kitploit:~
[Thread-Memory NOT MEM_IMAGE]
[Thread-Possible Ekko technique]
[Thread-Possible Foliage technique]
[Thread-Unknown module in Stack]

Threads

6. Assemblages .NET

  • Domaines d'application.
  • Adresse complète du fichier.

• Avertissements :

root@kitploit:~
[.NET Assembly w/o ILPath]

NET

7. Espace d'adressage mémoire. Affiche pour toutes les régions mémoire du processus les valeurs de :

  • Adresse mémoire.
  • Protection.
  • État.
  • Type.
  • Nom du fichier lu depuis le VAD.
  • Taille de la région.
  • Adresse de base à laquelle appartient son allocation.
  • Protection d'allocation mémoire initiale.

• Avertissements :

root@kitploit:~
[Executable memory region not MEM_IMAGE]
[Hidden PE]
[Lagos Island Method]
[Mapped Image]
[Memory region hash]
[Memory region Protection value modified]
[Memory region WX]
[Memory/File values mismatch]
[Moat detected]
[MZ/PE Not Present]
[Shellcode]
[Unknown executable memory region]

Mémoire

Mémoire

Télécharger l’outil
  • Date-heure obtenue à partir de IMAGE_DEBUG_DIRECTORY lue en mémoire et dans le fichier.
  • Date-heure obtenue à partir de IMAGE_EXPORT_DIRECTORY lue en mémoire et dans le fichier.
  • Date-heure obtenue à partir de IMAGE_RESOURCE_DIRECTORY lue en mémoire et dans le fichier.
  • Hachage SHA1 du fichier.
  • Information indiquant s'il s'agit d'un exécutable .NET et version CLR.
  • Information indiquant si NTFS ou l'enregistrement transactionnel (TxF/TxR) a été détecté dans le processus.
  • Recherche de variables d'environnement suspectes.
  • Vérifie l'état des threads.
  • Obtient les tâches en cours dans le système associées à chaque processus.