
Inspector de runtime de .NET
Shed es una aplicación que permite inspeccionar el tiempo de ejecución (.NET runtime) de un programa para extraer información útil. Puede usarse para inspeccionar aplicaciones maliciosas y obtener una primera visión general de qué información se almacena una vez que el malware se ejecuta.
Shed es capaz de:
Shed es una herramienta de línea de comandos. Para mostrar todas las opciones disponibles ejecute:
shed.exe --help
Para inspeccionar un proceso ya en ejecución, debe pasar el pid a Shed. Ejemplo:
Shed.exe --pid 2356
Para inspeccionar un binario, Shed necesita ejecutarlo y adjuntarse a él para inspeccionar el runtime. Ejemplo:
Shed.exe --exe malware.exe
También puede especificar la cantidad de tiempo (en milisegundos) a esperar antes de suspender el proceso. Esto permitirá que el programa tenga tiempo para inicializar sus propiedades. Ejemplo:
Shed.exe --timeout 2000 --exe malware.exe
Con Shed es posible inyectar un ensamblado .NET en un proceso remoto gracias a la biblioteca ManagedInjector. Para ello, es necesario especificar el pid del proceso y el exe a inyectar. Una vez que el ensamblado es inyectado, es posible activarlo invocando un método específico. Las reglas para identificar el método son heredadas del proyecto ManagedInjector y son las siguientes:
Por ejemplo, para inyectar el ensamblado InjectedAssembly en el proceso con pid 1234, debe ejecutar Shed con el siguiente comando:
shed.exe --pid 1234 --exe InjectedAssembly.dll --inject
Con la opción --method puede especificar un método, desde InjectedAssembly.exe, a invocar.
A continuación se muestra un ejemplo de ejecución:

Por defecto, Shed vuelca tanto el montón como los módulos. Si solo desea uno de ellos, especifique la opción --dump-heap para volcar solo los objetos del montón o --dump-modules para volcar solo los módulos.
Volcar el montón puede producir mucha información que no es estrictamente útil para el análisis. Puede filtrarla usando dos archivos:
blacklist.txt este archivo contiene los prefijos de nombres de tipo que no deben registrarse
whitelist.txt este archivo contiene los prefijos de nombres de tipo que deben registrarse aunque estén en la lista negra
Por ejemplo, si desea filtrar todo el espacio de nombres System.IO pero le interesa registrar System.IO.MemoryStream, puede agregar el primer valor a blacklist.txt y el segundo a whitelist.txt.
En la carpeta Examples encontrará tres proyectos diferentes que puede usar para probar Shed. Ejemplo:
Shed.exe --exe ..\Examples\ConfigurationSample\ConfigurationSample.exe
Cuando el análisis se complete, Shed mostrará dónde puede encontrar el resultado, como se muestra a continuación:
[+] Result saved to C:\Shed\Result\7800
Si tiene instalado Visual Studio, simplemente ejecute el archivo por lotes build.bat; creará un archivo zip dentro de la carpeta build.
Copyright (C) 2017 Antonio Parata - @s4tan
Licencia: GNU General Public License, versión 2 o posterior; consulte LICENSE incluido en este archivo para obtener más detalles.