Shed 是一款用于检查程序 .NET 运行时以提取有用信息的应用程序。它可用于检查恶意应用程序,以便在恶意软件运行时初步了解其中存储了哪些信息。
Shed 能够:
Shed 是一款命令行工具。要显示所有可用选项,请运行:
shed.exe --help
要检查一个正在运行的进程,你需要将进程的 pid 传递给 Shed。示例:
Shed.exe --pid 2356
要检查一个二进制文件,Shed 需要执行它并附加到该进程以检查运行时。示例:
Shed.exe --exe malware.exe
你也可以指定在挂起进程之前等待的时间(以毫秒为单位)。这将允许程序有足够的时间初始化它的属性。示例:
Shed.exe --timeout 2000 --exe malware.exe
借助 ManagedInjector 库,Shed 可以将 .NET Assembly 注入到远程进程中。为此,需要指定目标进程的 pid 和要注入的 exe。注入成功后,可以通过调用特定方法来激活它。方法识别规则继承自 ManagedInjector 项目,具体如下:
例如,要将 Assembly InjectedAssembly 注入到进程 pid 1234 中,可以使用以下命令运行 Shed:
shed.exe --pid 1234 --exe InjectedAssembly.dll --inject
通过 --method 选项,你可以指定 InjectedAssembly.exe 中要调用的方法。
以下是执行示例:

默认情况下,Shed 会同时转储堆和模块。如果只想转储其中一个,请指定 --dump-heap 选项(仅转储堆中的对象)或 --dump-modules 选项(仅转储模块)。
转储堆可能会产生大量对分析并非严格有用的信息。你可以使用两个文件进行过滤:
blacklist.txt 此文件包含不得记录的类型名称前缀
whitelist.txt 此文件包含即使被列入黑名单也必须记录的类型名称前缀
例如,如果你希望过滤掉所有 System.IO 命名空间,但又想记录 System.IO.MemoryStream,可以将第一个值添加到 blacklist.txt,将第二个值添加到 whitelist.txt。
在 Examples 文件夹中,你会找到三个不同的项目,可用于测试 Shed。示例:
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 文件以获取详细信息。