
SHAREM est un framework d'analyse de shellcode, capable d'émuler plus de 45 000 WinAPIs et pratiquement tous les syscalls Windows. Il contient également son propre désassembleur personnalisé, avec de nombreuses fonctionnalités innovantes, telles que la capacité d'afficher le désassemblage désobfusqué d'un shellcode encodé, ou d'intégrer des données d'émulation pour améliorer le désassemblage.
Bienvenue dans SHAREM !
SHAREM a été présenté à la DEFCON 31 dans « Game-Changing Advances in Windows Shellcode Analysis » et au Black Hat USA Arsenal. Un plugin Ghidra compagnon a été rendu disponible (séparément) par Trellix, grâce à Max Kersten. Ainsi, vous pouvez étendre la puissance de SHAREM à Ghidra, si vous le souhaitez.
SHAREM est conçu pour être l'outil ultime pour le shellcode Windows, avec la prise en charge de l'émulation de plus de 45 000 WinAPI, pratiquement tous les appels système Windows en mode utilisateur, et SHAREM offre de nombreuses nouvelles fonctionnalités. SHAREM contient un émulateur, un désassembleur, un débogage intemporel, un désobfuscation par force brute et bien d'autres fonctionnalités. L'émulateur de SHAREM peut également afficher des structures complètes (ou même des structures dans des structures) et permettre au shellcode encodé de se désobfusquer. SHAREM enregistre les résultats de toutes les WinAPI et tous les appels système Windows analysés, et les répartit également en plusieurs catégories et sous-catégories. La couverture complète du code de SHAREM lui permet également de découvrir des fonctionnalités inaccessibles.
Le désassembleur de SHAREM est capable d'intégrer les fonctions découvertes dans le désassemblage, en les étiquetant dans le désassembleur. SHAREM affichera également la forme déchiffrée du shellcode encodé dans le désassembleur, il n'est donc pas nécessaire de déboguer le shellcode.
Nous avons créé un Wiki SHAREM qui fournit des informations d'instruction sur l'utilisation de SHAREM, bien qu'il y ait des parties et fonctionnalités importantes non documentées pour le moment. SHAREM a été développé sur une période de deux ans avec plusieurs personnes travaillant dessus. Le désassembleur de SHAREM est nettement plus précis que les désassembleurs leaders. De plus, SHAREM peut intégrer les données d'émulation dans le désassembleur, permettant d'obtenir un désassemblage quasiment parfait.
Veuillez noter que SHAREM vient tout juste d'être publié, la documentation ici est un peu maigre. Nous mettrons à jour le GitHub avec plus d'informations dans les semaines à venir.
Si vous débutez avec SHAREM, n'hésitez pas à regarder une brève vidéo de démonstration présentant certaines de ses capacités. Cliquez sur l'image pour voir la démo :

Mars 2026 : SHAREM chargeait jusqu'à 61 DLL au démarrage, mais avec la dernière mise à jour, il peut désormais prendre en charge 369 DLL et 45 538 WinAPI uniques. De plus, les DLL sont chargées à la demande selon les besoins. Les fonctionnalités internes de Windows (telles que les listes de modules, flinks, blinks, etc.) seront automatiquement mises à jour si des DLL supplémentaires doivent être chargées, par exemple via LoadLibraryA. De nombreuses autres mises à jour ont été apportées pour améliorer les fonctionnalités. Des modifications ont été apportées pour rationaliser certains problèmes d'installation qui m'ont été signalés.
22 mars 2026 : La logique de sortie des boucles a été affinée avec plus de nuance. Une grande partie a été réécrite et retestée. Nous ne recommandons pas de modifier généralement les valeurs par défaut dans config.cfg, si vous décidez d'utiliser cette fonctionnalité.
2024/2025 : SHAREM peut éventuellement utiliser l'IA pour analyser les résultats, avec une clé OpenAI (fournie par l'utilisateur). Notez que SHAREM a été créé avant les récentes avancées en IA, et son utilisation de l'IA n'a lieu qu'après la fin de l'analyse initiale de SHAREM. Cette fonctionnalité optionnelle peut lui permettre d'examiner ce qui a été trouvé et de l'appliquer au framework MITRE ATT&CK et bien plus encore.
SHAREM est installé en tant que paquet Python local, afin d'y avoir accès dans d'autres projets. Cela permet d'importer des parties de SHAREM. Ainsi, il doit être installé en tant que paquet. Note : j'ai entendu des rapports de difficultés d'installation. Les modifications récentes devraient, espérons-le, corriger ce problème.
Git est requis pour l'installation de sharem. Il peut être installé depuis https://git-scm.com/download/win. Après installation, redémarrez l'ordinateur et continuez avec l'installation de SHAREM. Git sert à automatiser l'installation de SSDeep sous Windows. Vous pouvez également le faire manuellement et modifier le .bat pour exclure SSDeep, si vous le faites vous-même. L'installation manuelle évite d'avoir besoin de Git. Note : pour Windows, nous passons à un fork de SSDeep sur le compte Bw3ll qui corrige certains problèmes d'installation avec la version précédente. Cette version et la précédente étaient des wrappers pour SSDeep.
Exécutez le fichier .bat. Il appellera le fichier setup.py. Selon la façon dont vous appelez Python, vous devrez peut-être appeler le fichier .bat alternatif ou même le modifier légèrement, si vous utilisez quelque chose de non standard.
Faites
py -m pip list ou python3 -m pip list pour vérifier que SHAREM est installé localement en tant que paquet. Il doit être installé en tant que paquet pour fonctionner. Que se passe-t-il si vous ne le voyez PAS ? Alors il n'est PAS installé en tant que paquet, et SHAREM ne fonctionnera PAS. Assurez-vous d'utiliser le(s) fichier(s) .bat, et de le faire dans l'invite de commandes Windows depuis le répertoire installers. Si cela ne fonctionne pas, recherchez d'éventuels messages d'erreur. S'il y en a, essayez de les corriger. Vous pouvez essayer plusieurs fois. Si cela ne fonctionne toujours pas, ouvrez un problème et essayez d'inclure toutes ces informations, afin que nous puissions essayer de comprendre ce qui ne va pas. Généralement, cela ne sera pas nécessaire, mais occasionnellement cela peut l'être. Si vous l'avez désinstallé une fois et décidé de le réinstaller, il est possible que vous deviez exécuter à nouveau le script d'installation. Une fois que sharem apparaît lorsque vous faites py -m pip list, vous savez qu'il est correctement installé en tant que paquet local.
Après l'installation de SHAREM, lorsque vous exécutez un shellcode pour la première fois, vous devez être dans le dossier sharem_cli. Par exemple, lorsque vous êtes dans ce répertoire, vous pouvez exécuter py main.py -r32 shellcode.bin. Pas de shellcode ? Ce n'est pas grave, vous pouvez trouver quelques échantillons dans le dépôt d'échantillons de shellcode que j'héberge dans un dépôt séparé.