
Un ispettore del runtime .NET
Shed è un'applicazione che consente di ispezionare il runtime .NET di un programma per estrarre informazioni utili. Può essere utilizzato per ispezionare applicazioni maligne al fine di avere una prima panoramica generale di quali informazioni vengono memorizzate una volta che il malware viene eseguito.
Shed è in grado di:
Shed è uno strumento da riga di comando. Per visualizzare tutte le opzioni disponibili, esegui:
shed.exe --help
Per ispezionare un processo già in esecuzione, devi passare il pid a Shed. Esempio:
Shed.exe --pid 2356
Per ispezionare un binario, Shed deve eseguirlo e collegarsi ad esso per ispezionare il runtime. Esempio:
Shed.exe --exe malware.exe
Puoi anche specificare la quantità di tempo (in millisecondi) da attendere prima di sospendere il processo. Questo permetterà al programma di avere il tempo di inizializzare le sue proprietà. Esempio:
Shed.exe --timeout 2000 --exe malware.exe
Con Shed è possibile iniettare un Assembly .NET in un processo remoto grazie alla libreria ManagedInjector. Per farlo, è necessario specificare il pid del processo e l'exe da iniettare. Una volta iniettato l'Assembly, è possibile attivarlo invocando un metodo specifico. Le regole per identificare il metodo sono ereditate dal progetto ManagedInjector e sono le seguenti:
Ad esempio, per iniettare l'Assembly InjectedAssembly nel processo con pid 1234, devi eseguire Shed con il seguente comando:
shed.exe --pid 1234 --exe InjectedAssembly.dll --inject
Con l'opzione --method puoi specificare un metodo, da InjectedAssembly.exe da invocare.
Di seguito un esempio di esecuzione:

Per impostazione predefinita, Shed esegue il dump sia dell'heap che dei moduli. Se vuoi solo uno di essi, specifica l'opzione --dump-heap per eseguire il dump solo degli oggetti nell'heap o --dump-modules per eseguire il dump solo dei moduli.
Il dump dell'heap può produrre molte informazioni che non sono strettamente utili per l'analisi. Puoi filtrarlo utilizzando due file:
blacklist.txt questo file contiene i prefissi dei nomi dei tipi che non devono essere registrati
whitelist.txt questo file contiene i prefissi dei nomi dei tipi che devono essere registrati anche se nella blacklist
Ad esempio, se vuoi filtrare tutto il namespace System.IO ma sei interessato a registrare System.IO.MemoryStream, puoi aggiungere il primo valore a blacklist.txt e il secondo a whitelist.txt.
Nella cartella Examples troverai tre diversi progetti che puoi utilizzare per testare Shed. Esempio:
Shed.exe --exe ..\Examples\ConfigurationSample\ConfigurationSample.exe
Quando l'analisi è completata, Shed stamperà dove puoi trovare il risultato, come mostrato di seguito:
[+] Risultato salvato in C:\Shed\Result\7800
Se hai installato Visual Studio, esegui semplicemente il file batch build.bat, creerà un file zip all'interno della cartella build.
Copyright (C) 2017 Antonio Parata - @s4tan
Licenza: GNU General Public License, versione 2 o successiva; consulta LICENSE incluso in questo archivio per i dettagli.