
Inspetor de runtime .NET
Shed é uma aplicação que permite inspecionar o runtime .NET de um programa para extrair informações úteis. Pode ser usada para inspecionar aplicações maliciosas a fim de obter uma primeira visão geral de quais informações são armazenadas quando o malware é executado.
Shed é capaz de:
Shed é uma ferramenta de linha de comando. Para exibir todas as opções disponíveis execute:
shed.exe --help
Para inspecionar um processo já em execução, é necessário passar o pid para o Shed. Exemplo:
Shed.exe --pid 2356
Para inspecionar um binário, o Shed precisa executá-lo e anexar-se a ele para inspecionar o runtime. Exemplo:
Shed.exe --exe malware.exe
Você também pode especificar o tempo (em milissegundos) de espera antes de suspender o processo. Isso permitirá que o programa tenha tempo para inicializar suas propriedades. Exemplo:
Shed.exe --timeout 2000 --exe malware.exe
Com o Shed é possível injetar uma Assembly .NET em um processo remoto graças à biblioteca ManagedInjector. Para isso, é necessário especificar o pid do processo e o exe a ser injetado. Uma vez que a Assembly é injetada, é possível ativá-la invocando um método específico. As regras para identificar o método são herdadas do projeto ManagedInjector e são as seguintes:
Por exemplo, para injetar a Assembly InjectedAssembly no processo com pid 1234, execute o Shed com o seguinte comando:
shed.exe --pid 1234 --exe InjectedAssembly.dll --inject
Com a opção --method você pode especificar um método do InjectedAssembly.exe para invocar.
Veja abaixo um exemplo de execução:

Por padrão, o Shed despeja tanto o heap quanto os módulos. Se você quiser apenas um deles, especifique a opção --dump-heap para despejar apenas os objetos no heap ou --dump-modules para despejar apenas os módulos.
Despejar o heap pode produzir muitas informações que não são estritamente úteis para a análise. Você pode filtrá-lo usando dois arquivos:
blacklist.txt este arquivo contém o prefixo dos nomes de tipo que não devem ser registrados (log)
whitelist.txt este arquivo contém o prefixo dos nomes de tipo que devem ser registrados mesmo se estiverem na blacklist
Por exemplo, se você quiser filtrar todo o namespace System.IO mas estiver interessado em registrar System.IO.MemoryStream, pode adicionar o primeiro valor ao blacklist.txt e o segundo ao whitelist.txt.
Na pasta Examples você encontrará três projetos diferentes que pode usar para testar o Shed. Exemplo:
Shed.exe --exe ..\Examples\ConfigurationSample\ConfigurationSample.exe
Quando a análise for concluída, o Shed imprimirá onde você pode encontrar o resultado, conforme mostrado abaixo:
[+] Resultado salvo em C:\Shed\Result\7800
Se você tiver o Visual Studio instalado, basta executar o arquivo em lote build.bat, que criará um arquivo zip dentro da pasta build.
Copyright (C) 2017 Antonio Parata - @s4tan
Licença: GNU General Public License, versão 2 ou posterior; veja LICENSE incluído neste arquivo para detalhes.