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
Shinigami — Un outil de dépaquetage dynamique | Kitploit
Outils/GitHubGitHub/buzzer-re/shinigami
Analyse Dynamique (Sandboxing)Rétro-ingénierieShellcodeAnalyse de MalwareAnalyse de Binaires
GitHubbuzzer-re/shinigami

Shinigami

Un outil de dépaquetage dynamique

Voir le dépôt
152126il y a 2 ansVé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 →
Partager

Shinigami

Build Release

description de l'image

Shinigami est un outil expérimental conçu pour détecter et dépaqueter les implants malveillants injectés via le process hollowing ou des routines génériques de packer.

Comment ça fonctionne

L'outil fonctionne en hookant les fonctions NT liées au process hollowing et en marquant les pages mémoire nouvellement exécutables avec le bit de garde de page. Cette technique permet à Shinigami de détecter les changements indirects de flux, généralement causés par du shellcode ou du code dépaqueté, qui sont souvent révélateurs d'un malware. Shinigami crée l'exécutable cible dans un état suspendu et injecte une bibliothèque DLL appelée « Ichigo ». Cette bibliothèque hooke automatiquement toutes les fonctions nécessaires pour détecter et extraire l'implant. Une fois l'artefact entièrement extrait, l'outil tue le processus.

L'efficacité de Shinigami peut varier selon le malware ciblé. Cependant, c'est un ajout précieux à toute boîte à outils d'analyse de malware et il peut s'avérer utile pour détecter et analyser les malwares qui utilisent le process hollowing ou des routines génériques de packer.

Important : il s'agit d'un outil de dépaquetage dynamique et il ne doit pas être exécuté sur votre machine personnelle ni dans un laboratoire d'analyse statique

Méthodes de dépaquetage actuelles

Télécharger l’outil

Process Hollowing

La méthode principale de Shinigami pour extraire les implants injectés par process hollowing consiste à hooker deux fonctions NT : NtResumeThread et NtWriteVirtualMemory. Voici comment cela fonctionne :

  • Hook NtResumeThread

    • Shinigami parcourt toute la mémoire précédemment allouée via NtAllocateVirtualMemory pour vérifier si elle contient la signature d'en-tête DOS. Si elle est trouvée, il extrait le fichier PE distant, le patche pour que les sections soient alignées, et l'enregistre sur le disque au format filename_dumped.bin.
  • Hook NtWriteVirtualMemory

    • Shinigami détecte si l'exécutable tente d'écrire un fichier PE dans le processus distant en hookant NtWriteVirtualMemory. Si un fichier PE est trouvé, il est extrait à l'aide du pointeur Buffer et enregistré sur le disque sous le nom filename_before_written.bin. Cette option n'est utilisée que si le drapeau --stop-at-write est passé.

Dépaquetage générique

Le module de dépaquetage générique de Shinigami marque les zones mémoire nouvellement allouées avec le bit PAGE_GUARD ; il applique également ce bit si une zone mémoire existante voit ses protections remplacées par quelque chose d'exécutable. En utilisant des pages de garde, il peut suivre quelle zone mémoire va être utilisée pour allouer du shellcode ou des images PE.

Pour chaque shellcode détecté, Shinigami enregistre le shellcode brut lui-même sur le disque. Il scanne également cette région mémoire pour trouver d'éventuels fichiers PE et les enregistre également. Shinigami traite chaque exécution de shellcode différente comme une nouvelle étape, donc à la fin, vous aurez dans votre répertoire de travail des fichiers nommés filename_shellcode_STAGENUM.bin ou .exe.

Utilisation

L'outil dispose de plusieurs options :

root@kitploit:~
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name

Positional arguments:
  program_name                  Name of the program to execute

Optional arguments:
  -h, --help                    shows help message and exits
  -v, --version                 prints version information and exits
  -o, --output                  Directory to dump artefacts
  --stop-at-write               Unhollow: Stop the execution when the PE file is being to be written
  --verbose                     Display a verbose output
  -p, --only-executables        Only extract PE artefacts
  -e, --exported                Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)

Quelques options importantes sont :

-o, --output : spécifie le répertoire dans lequel déposer les artefacts extraits. Par défaut, les artefacts extraits sont enregistrés dans un répertoire nommé output dans le répertoire de travail courant. Vous pouvez spécifier un autre répertoire en passant son chemin en argument.

--stop-at-write : cet argument est utilisé lors du dépaquetage d'un processus hollowed. Lorsque Shinigami détecte que le fichier PE est en cours d'écriture dans le processus hollowed, il arrête l'exécution et enregistre le fichier PE extrait. Cette option peut être utile si vous souhaitez éviter d'exécuter tout le processus hollowed et que vous n'avez besoin que d'extraire le code dépaqueté.

--verbose : affiche une sortie verbeuse. Cela peut être utile pour déboguer ou comprendre le fonctionnement interne de Shinigami.

Exemple d'utilisation :

Unhollow

Test avec Dridex

Après l'extraction, le processus est tué et vous aurez (je l'espère) le PE extrait :

Implant extrait

L'implant détecté sera extrait selon le format décrit dans la section méthodes de détection

Dépaquetage

Dépaquetage d'un loader aléatoire décrit ici

Dans l'exemple ci-dessus, Shinigami a automatiquement détecté le comportement d'un loader générique et a extrait tous les shellcodes et images exécutés, sans nécessiter d'interrupteurs spécifiques pour activer ou désactiver la routine de dépaquetage. Cela a été possible car Shinigami partage certaines fonctions avec le module unhollow, en utilisant des hooks partagés fournis par la bibliothèque Gancho.

Emotet

Dépaquetage de la DLL Emotet

Shinigami prend également en charge les DLL et la capacité de reconstruire des binaires injectés à l'aide d'en-têtes DOS détachés. En particulier, des échantillons de malwares comme Emotet utilisent cette technique pour échapper aux scanners PE en mémoire. Shinigami détecte ces parties manquantes (en-tête DOS) et utilise des heuristiques pour les reconstruire.

Installation

Téléchargez votre version préférée sur la page Release.

Compilation et bidouillage

Ce serait génial si vous aidiez ce projet, donc si vous le souhaitez, voici les dépendances et les étapes :

  • Installez Visual Studio >= 2019 avec la charge de travail C++.
  • Installez Zydis, un désassembleur x86/x86-64 rapide et léger, je recommande d'utiliser la méthode vcpkg.
    • Zydis est utilisé pour rendre le hooking d'API plus précis et pour garantir qu'aucun opcode n'est perdu lors de la copie.
  • Ouvrez le fichier de solution Shinigami.sln dans Visual Studio et compilez/modifiez le projet.

Veuillez ouvrir une issue ou une pull request pour toute modification que vous souhaitez apporter.

Conclusion

Cette superbe image de mascotte a été inspirée par Bleach et générée par Dall-E.