Shinigami 是一种实验性工具,旨在检测和解压通过进程空洞或通用加壳程序注入的恶意软件植入物。
该工具通过挂钩与 Process Hollowing 相关的 NT 函数并使用页面保护位标记新的可执行内存页面来运行。这项技术允许 Shinigami 检测间接流变化,这些变化通常是由 shellcode 或解压代码引起的,这些变化通常表明存在恶意软件。 Shinigami 在挂起状态下创建目标可执行文件,并注入名为“Ichigo”的 DLL 库。该库自动挂钩每个必要的函数来检测和提取植入物。一旦工件被完全提取,该工具将终止该进程。
死神的有效性可能会根据其针对的特定恶意软件而有所不同。然而,它对于任何恶意软件分析工具包来说都是一个有价值的补充,并且在检测和分析使用进程空洞或通用加壳程序例程的恶意软件时可能会很有用。
重要提示:这是一个动态解包工具,不应在您的个人计算机或静态分析实验室中运行
Shinigami 提取使用进程空洞注入的植入物的核心方法涉及挂钩两个 NT 函数:NtResumeThread 和 NtWriteVirtualMemory。它的工作原理如下:
NtResumeThread
钩子
NtWriteVirtualMemory
钩子
--stop-at-write
时才使用此选项。 Shinigami 的通用解包器模块使用 PAGE_GUARD 位标记新分配的内存区域,如果任何现有内存区域的保护被可执行文件替换,它也会应用该位。通过使用保护页,它可以跟踪哪个内存区域将用于分配一些 shellcode 或 PE 映像。
对于检测到的每个 shellcode,Shinigami 都会将原始 shellcode 本身保存在磁盘上。它还扫描该内存区域以查找任何 PE 文件并保存它们。 Shinigami 将每个不同的 shellcode 执行视为一个新阶段,因此到最后,您的工作目录中将包含名为filename_shellcode_STAGENUM.bin or .exe
文件。
该工具有几个选项:
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name
Positional arguments:
program_name Name of the program to execute
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-o, --output Directory to dump artefacts
--stop-at-write Unhollow: Stop the execution when the PE file is being to be written
--verbose Display a verbose output
-p, --only-executables Only extract PE artefacts
-e, --exported Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)
一些重要的选项是:
-o, --output :指定转储提取的工件的目录。默认情况下,提取的工件将保存到当前工作目录中名为“输出”的目录中。您可以通过将路径作为参数传递来指定不同的目录。
--stop-at-write :此参数在空进程解包期间使用。当Shinigami检测到PE文件正在写入被挖空的进程时,它会停止执行并保存提取的PE文件。如果您想避免执行整个空心进程而只需要提取解压的代码,则此选项可能很有用。
--verbose :显示详细输出。这对于调试或理解 Shinigami 的内部工作原理很有用。
针对 Dridex 进行测试 |
提取完成后,该进程将被终止,您将拥有(我希望如此)提取的PE:
植入物被倾倒 |
检测到的植入物将按照检测方法部分中描述的格式进行转储
解压此处描述的随机加载程序 |
在上面的示例中,Shinigami 自动检测通用加载程序的行为,并提取其中所有已执行的 shellcode 和图像,而不需要任何特定开关来启用或禁用解包例程。这是可能的,因为 Shinigami 使用 Gancho 库提供的共享钩子与 unhollow 模块共享一些功能。
解压 Emotet DLL |
Shinigami 还具有 DLL 支持以及使用分离的 DOS 标头重建注入的二进制文件的能力。值得注意的是,Emotet 等恶意软件样本使用此技术来逃避内存 PE 扫描程序。 Shinigami 检测到此类丢失的部分(DOS 标头)并采用启发式方法来重建它们。
在发布页面抓住你的口味。
如果您能帮助这个项目,那就太棒了,所以如果您愿意,这里是依赖项和步骤
请针对您想要进行的任何更改提出问题或拉取请求。
这个很酷的吉祥物图像的灵感来自《死神》,由 Dall-E 生成。