
Shed は、プログラムの .NET ランタイムを検査して有用な情報を抽出できるアプリケーションです。マルウェアが実行された際に保存される情報の概要を最初に把握するために、悪意のあるアプリケーションの検査に使用できます。
Shed は以下のことが可能です:
Shed はコマンドラインツールです。利用可能なすべてのオプションを表示するには、次のコマンドを実行します:
shed.exe --help
既に実行中のプロセスを検査するには、Shed に pid を渡す必要があります。例:
Shed.exe --pid 2356
バイナリを検査するには、Shed がそれを実行し、ランタイムを検査するためにアタッチする必要があります。例:
Shed.exe --exe malware.exe
プロセスを一時停止するまでの待機時間(ミリ秒単位)を指定することもできます。これにより、プログラムがプロパティを初期化する時間を確保できます。例:
Shed.exe --timeout 2000 --exe malware.exe
Shed を使用すると、ManagedInjector ライブラリのおかげで、.NET アセンブリをリモートプロセスにインジェクションできます。これを行うには、プロセスの pid とインジェクションする exe を指定する必要があります。アセンブリがインジェクションされると、特定のメソッドを呼び出すことでアクティブ化できます。メソッドを特定するルールは ManagedInjector プロジェクトから継承されており、次のとおりです:
例えば、アセンブリ InjectedAssembly を pid 1234 のプロセスにインジェクションするには、次のコマンドで Shed を実行します:
shed.exe --pid 1234 --exe InjectedAssembly.dll --inject
--method オプションを使用すると、InjectedAssembly.exe から呼び出すメソッドを指定できます。
以下に実行例を示します:

デフォルトでは、Shed はヒープとモジュールの両方をダンプします。いずれかのみが必要な場合は、--dump-heap オプションを指定してヒープ内のオブジェクトのみをダンプするか、--dump-modules オプションを指定してモジュールのみをダンプします。
ヒープのダンプは、分析に厳密には有用ではない大量の情報を生成する可能性があります。次の2つのファイルを使用してフィルタリングできます:
blacklist.txt このファイルには、ログに記録してはならない型名のプレフィックスが含まれます
whitelist.txt このファイルには、ブラックリストに含まれていてもログに記録する必要がある型名のプレフィックスが含まれます
例えば、System.IO 名前空間全体をフィルタリングしたいが、System.IO.MemoryStream はログに記録したい場合、最初の値を blacklist.txt に、2番目の値を whitelist.txt に追加できます。
Examples フォルダには、Shed をテストするために使用できる3つの異なるプロジェクトがあります。例:
Shed.exe --exe ..\Examples\ConfigurationSample\ConfigurationSample.exe
分析が完了すると、Shed は結果がどこにあるかを出力します。以下に示します:
[+] 結果は C:\Shed\Result\7800 に保存されました
Visual Studio をインストールしている場合は、build.bat バッチファイルを実行するだけで、build フォルダ内に zip ファイルが作成されます。
Copyright (C) 2017 Antonio Parata - @s4tan
ライセンス:GNU General Public License、バージョン2以降。詳細については、このアーカイブに含まれている LICENSE を参照してください。