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
sharem — 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. | Kitploit
Outils/GitHubGitHub/bw3ll/sharem
Analyse Dynamique (Sandboxing)Rétro-ingénierieShellcodeDébogueursFuzzingAnalyse de MalwareAnalyse de BinairesSécurité de l'IA
GitHubbw3ll/sharem

sharem

Voir le dépôt
491686il y a 5 moisVé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 →

À propos

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.

Partager

SHAREM

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 :

Regarder la vidéo

Mises à jour récentes

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.

Instructions d'installation

Windows

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.

  1. 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.

  2. 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.

  3. 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é.

Remarque : La première fois que vous tentez d'émuler un shellcode sous Windows, il tentera de récolter et de gonfler les DLL Windows. Ce processus commence automatiquement lors de la première tentative d'émulation d'un shellcode. Il les copiera, déplaçant les DLL copiées (et plus tard gonflées) vers un répertoire SHAREM. Il y a des étapes supplémentaires, mais tout ce processus initial peut prendre plusieurs minutes, voire 10 à 15 minutes, avec un très vieux CPU. Une fois terminé, vous ne devriez plus avoir à le refaire. Cela doit être fait séparément pour les shellcode 32 et 64 bits. Vous pouvez naviguer dans sharem/sharem/sharem/sharem/DLLs/x86 - et vous devriez voir les DLL apparaître lentement. Elles sont prélevées du système d'exploitation, modifiées pour émuler ce que le système d'exploitation en ferait, et enregistrées dans ce répertoire. Il y en aura un peu plus de 60. Si vous voyez environ ce nombre de DLL et qu'aucune autre DLL n'est enregistrée, cela signifie que c'est probablement bloqué. Appuyez simplement sur Entrée à nouveau. Si cela échoue, redémarrez simplement et essayez à nouveau l'émulation. Une fois les DLL enregistrées, vous ne devriez plus avoir à le refaire ; ce n'est que la première fois qui peut prendre du temps, en fonction de la vitesse du CPU. Vous devriez voir les résultats d'émulation une fois terminés, comme l'énumération des différentes WinAPI ou appels système Windows.

Si le fichier se termine par .txt, il supposera que le shellcode est une représentation ASCII de l'hexadécimal (plutôt que de l'hexadécimal pur), et il l'interprétera comme tel. Cela fonctionne avec ce qui se trouve en ligne. Si vous utilisez une représentation ASCII de l'hexadécimal, le nom du fichier doit se terminer par .txt.

Linux

  1. chmod +x linux_installer.sh Activez l'exécution de l'installateur
  2. sudo ./linux_installer.sh Exécutez l'installateur
  3. Ajoutez les fichiers DLL

Vous devrez ajouter les fichiers DLL Windows. Nous ne les avons pas actuellement disponibles en téléchargement séparé pour les utilisateurs Linux. Pour l'instant, les utilisateurs devraient les récolter en les installant via Windows. (Remarque : Ces DLL DOIVENT être gonflées par SHAREM. Les DLL ne peuvent pas être utilisées si elles ne sont pas gonflées. La plupart, peut-être pas toutes, échoueront si elles ne sont pas gonflées de la bonne quantité.) Plus tard, nous pourrions les fournir en téléchargement séparé dans les semaines à venir. Mais en attendant, l'utilisateur peut suivre les étapes Windows pour les générer et les déplacer vers Linux, en les plaçant dans sharem\sharem\sharem\DLLs\x64 et sharem\sharem\sharem\DLLs\x86. Vous aurez également besoin des fichiers foundDLLAddresses32.json et FoundDLLAddresses64.json, qui doivent aller dans sharem\sharem\sharem.

OpenAI

SHAREM en 2024 a ajouté la prise en charge d'OpenAI, afin que nous puissions exploiter l'IA pour automatiser certaines tâches d'analyse. Cela peut être activé via A depuis le menu principal - « exploiter l'IA ». Pour ce faire, vous devez avoir une clé OpenAI et la placer dans le fichier config.cfg, qui se trouve dans sharem/sharem/sharem/sharem/config.cfg. De plus, vous devez émuler un shellcode avant de pouvoir utiliser l'IA. Actuellement, c'est la seule façon d'utiliser l'IA - cela ne fonctionne pas en mode headless - mais si quelqu'un en a besoin, veuillez ouvrir un problème, et j'ajouterai la prise en charge correspondante, comme une autre option pouvant être choisie via la configuration. Si vous avez déjà installé SHAREM et que vous obtenez la version mise à jour, vous pouvez simplement installer OpenAI manuellement, par ex. pip install openai. Je l'ai ajouté aux prérequis également pour le fichier setup.py qui est activé lors de l'exécution des scripts d'installation initiaux.

Script Ghidra

L'excellent script Ghidra de Max Kersten, présenté au Black Hat et au DEFCON en août 2023, se trouve ici : https://github.com/advanced-threat-research/GhidraScripts/blob/main/Sharem.java Certaines instructions de Max sont ici : https://github.com/advanced-threat-research/GhidraScripts/ Ce plugin Ghidra est gracieuseté de Trellix ! Vous devez toujours utiliser SHAREM. Il ingère la sortie JSON produite par SHAREM et la convertit en un format utile pour Ghidra. Plus d'informations sur Max lui-même sur https://maxkersten.nl/.

Documentation

La documentation se trouve sur le 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.

Mises à jour

  • 29 sept. 2022 : Nous avons apporté une mise à jour très mineure au setup.py concernant numpy, ce qui pourrait affecter certaines personnes avec la dernière version de Python.
  • 25 nov. 2022 : Avec du retard, nous avons apporté des modifications pour prendre en charge le style d'appels système ShellWasp. Bien que nous ayons précédemment implémenté la prise en charge des appels système, le style ShellWasp ne fonctionnait pas, seulement les SSN codés en dur (valeurs d'appel système). OSMajorVersion, OSMinorVersion et OSBuild ont été initialisés pour 32 et 64 bits. Quelle que soit la version du système d'exploitation que l'utilisateur a dans la configuration ou via l'interface utilisateur, elle sera désormais reflétée en interne - par exemple, la sélection de Windows 10 20H2 entraînerait le renseignement des valeurs correctes, permettant à la technique ShellWasp de fonctionner, comme le montre cet exemple de sortie. Seuls Windows 7, 10 et 11 sont pris en charge pour l'émulation de la technique ShellWasp pour le moment.
  • 29 nov. 2022 : Ajout de la prise en charge d'émulation pour les nouvelles versions de système d'exploitation, 22H2 pour Windows 10 et 11. Cela n'est pertinent que pour l'émulation des appels système Windows. De nombreuses corrections de bogues mineures et améliorations de la qualité de vie. Meilleure distinction des fonctionnalités lorsque SHAREM est utilisé pour le shellcode (son objectif principal) et lorsqu'il est utilisé pour analyser des fichiers PE.
  • 1 déc. 2022 : Modification de l'emplacement par défaut pour la sortie des binaires/ASCII - déplacé vers les logs. Ajout de la possibilité de sortir des binaires/ASCII désobfusqués avec cette commande. L'ASCII désobfusqué a été ajouté aux logs - l'ASCII du binaire semblait également manquer dans les logs - cela a été corrigé.
  • 29 déc. 2022 : J'ai ajouté une fonctionnalité de débogage intemporel optionnel pour la pile. Auparavant, le débogage intemporel ne capturait que les instructions exécutées et les valeurs des registres avant et après. Maintenant, nous pouvons voir +/- 0xA0 depuis ESP. Malheureusement, c'est un peu lent. Cela doit être activé séparément. De plus, j'ai découvert quelques bogues qui donnaient des résultats incorrects lors de la sortie des boucles, ce qui dans certains cas pouvait provoquer une terminaison prématurée de l'émulation. J'ai corrigé cela. J'ai également fait en sorte que SHAREM indique quand il sort des boucles, en précisant où il va, une fois qu'il est sorti d'une boucle.
  • 4 janv. 2023 : J'ai considérablement remanié la couverture complète du code, en améliorant ses performances. J'ai également exposé plusieurs fonctionnalités optionnelles qui peuvent être ajustées par des utilisateurs experts au cas par cas via l'interface utilisateur ou le fichier de configuration. Plus d'informations sur la page wiki de la couverture complète du code.
  • 5 janv. 2023 : Ajout d'un raccourci clavier vers le sous-menu de couverture complète du code depuis le menu Émulateur. Pour ceux qui ont déjà téléchargé la mise à jour d'hier, le raccourci est la lettre « o ».
  • 16 janv. 2023 : Ajout de trois nouveaux champs aux fichiers JSON de désassemblage qui sont générés. Cette mise à jour n'est PAS nécessaire pour ceux qui n'utilisent pas ces JSON, ce qui est une façon non standard d'utiliser SHAREM.
  • 3 août 2023 : Environ 5 000 à 6 000 API ont été ajoutées à partir d'environ 30 DLL supplémentaires. D'autres améliorations à l'appui de cela.
  • 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.
  • 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 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.

Captures d'écran

SHAREM est un framework très puissant avec de nombreuses capacités, certaines bien documentées, d'autres non. Cette section présentera un petit nombre de ces capacités.

SHAREM peut prendre un shellcode encodé et le désobfusquer par émulation. Non seulement il capture toutes les informations WinAPI ou d'appel système, mais si vous choisissez de le visualiser dans le désassembleur, il affiche la forme décodée du shellcode :

image

SHAREM peut non seulement énumérer plus de 12 000 fonctions WinAPI, mais aussi le faire avec pratiquement tous les appels système Windows en mode utilisateur. De plus, pour certains, il affiche des informations de structure. Pour ceux qui traitent avec le registre, il extrait les informations du registre et les ajoute à notre Gestionnaire de registre :

image

SHAREM a également la capacité de télécharger des fichiers via UrldownloadToFileA, s'ils existent. Ceux-ci sont téléchargés dans la mémoire de l'émulateur - pas enregistrés sur le disque. En cas de succès, il capture le hash. Il existe également un pseudo-système de fichiers limité, vous pouvez donc voir des corrélations, comme un fichier téléchargé sous un nom et renommé en un autre. Si le téléchargement nécessaire n'est pas disponible, il sera simplement simulé comme un téléchargement réussi. Le téléchargement en direct est une option qui peut être activée ou désactivée dans la configuration.

image

Co-auteurs et contributeurs

Dr. Bramwell Brizendine, Austin Babcock, Jake Hince, Shelby VandenHoek, Sascha Walker, Evan Read, Dylan Park, Kade Brost, James Tate Forcella, William Lochte, Hunter Murphy et Tarek Abdelmotaleb.

Remerciements

Cette recherche et certains co-auteurs ont été soutenus par la subvention NSA H98230-20-1-0326.

Télécharger l’outil