
Inspecteur du runtime .NET
Shed est une application qui permet d'inspecter le runtime .NET d'un programme afin d'en extraire des informations utiles. Il peut être utilisé pour inspecter des applications malveillantes afin d'avoir un premier aperçu général des informations stockées une fois que le malware est exécuté.
Shed est capable de :
Shed est un outil en ligne de commande. Pour afficher toutes les options disponibles, exécutez :
shed.exe --help
Pour inspecter un processus déjà en cours d'exécution, vous devez passer le pid à Shed. Exemple :
Shed.exe --pid 2356
Pour inspecter un binaire, Shed doit l'exécuter et s'y attacher pour inspecter le runtime. Exemple :
Shed.exe --exe malware.exe
Vous pouvez également spécifier le temps d'attente (en millisecondes) avant de suspendre le processus. Cela permettra au programme d'avoir le temps d'initialiser ses propriétés. Exemple :
Shed.exe --timeout 2000 --exe malware.exe
Avec Shed, il est possible d'injecter un assembly .NET dans un processus distant grâce à la bibliothèque ManagedInjector. Pour ce faire, il est nécessaire de spécifier le pid du processus et l'exe à injecter. Une fois que l'assembly est injecté, il est possible de l'activer en invoquant une méthode spécifique. Les règles d'identification de la méthode sont héritées du projet ManagedInjector et sont les suivantes :
Par exemple, pour injecter l'assembly InjectedAssembly dans le processus avec le pid 1234, vous devez exécuter Shed avec la commande suivante :
shed.exe --pid 1234 --exe InjectedAssembly.dll --inject
Avec l'option --method, vous pouvez spécifier une méthode à invoquer depuis InjectedAssembly.exe.
Vous trouverez ci-dessous un exemple d'exécution :

Par défaut, Shed vide à la fois le tas et les modules. Si vous ne souhaitez que l'un des deux, spécifiez l'option --dump-heap pour vider uniquement les objets du tas ou --dump-modules pour vider uniquement les modules.
Le vidage du tas peut produire beaucoup d'informations qui ne sont pas strictement utiles pour l'analyse. Vous pouvez le filtrer en utilisant deux fichiers :
blacklist.txt ce fichier contient les préfixes des noms de types qui ne doivent pas être enregistrés
whitelist.txt ce fichier contient les préfixes des noms de types qui doivent être enregistrés même s'ils sont sur la liste noire
Par exemple, si vous souhaitez filtrer tout l'espace de noms System.IO mais que vous êtes intéressé par l'enregistrement de System.IO.MemoryStream, vous pouvez ajouter la première valeur dans blacklist.txt et la seconde dans whitelist.txt.
Dans le dossier Examples, vous trouverez trois projets différents que vous pouvez utiliser pour tester Shed. Exemple :
Shed.exe --exe ..\Examples\ConfigurationSample\ConfigurationSample.exe
Lorsque l'analyse est terminée, Shed affichera où vous pouvez trouver le résultat, comme illustré ci-dessous :
[+] Résultat sauvegardé dans C:\Shed\Result\7800
Si vous avez installé Visual Studio, exécutez simplement le fichier batch build.bat, il créera un fichier zip dans le dossier build.
Copyright (C) 2017 Antonio Parata - @s4tan
Licence : GNU General Public License, version 2 ou ultérieure ; voir LICENSE inclus dans cette archive pour plus de détails.