
Extrait et déchiffre les charges utiles internes des échantillons de l'obfuscateur Donut en détectant les signatures de shellcode du loader, en analysant la structure DONUT_INSTANCE et en extrayant les données DONUT_MODULE.
Un extracteur de configuration et de modules pour l'obfuscateur binaire donut
donut-decryptor vérifie un ou plusieurs fichiers à la recherche de signatures connues du shellcode du loader de l'obfuscateur donut. S'il en trouve, il analyse le shellcode pour localiser, déchiffrer et extraire la structure DONUT_INSTANCE intégrée dans le binaire, puis rapporte les données de configuration pertinentes. Si un DONUT_MODULE est présent dans le binaire, il est déchiffré et écrit sur le disque.
Vous pouvez installer donut-decryptor en vous rendant dans le répertoire racine du projet et en utilisant pip :
cd /path/to/donut-decryptor
python -m pip install .
Après l'installation, un script en ligne de commande est disponible. Pour obtenir les instructions d'utilisation, utilisez :
donut-decryptor --help
Ce projet utilise Hatch pour la gestion de projet, Ruff pour le linting et le formatage, et mypy pour la vérification de types.
Installez Hatch :
pip install hatch
hatch run test
hatch run test-cov # avec couverture
hatch run lint:style # vérifier le style
hatch run lint:fmt # formater le code et corriger les problèmes
hatch run lint:typing # exécuter la vérification de types mypy
hatch run lint:all # exécuter toutes les vérifications
Les fichiers présents dans le répertoire samples sont des fichiers 7z protégés par mot de passe avec le mot de passe infected, tous contenant des donuts qui peuvent être décodés à l'aide de ce script.