Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检测反射DLL注入_Python_C_Windows_Delphi_Winapi - Fatal编程技术网

Python 检测反射DLL注入

Python 检测反射DLL注入,python,c,windows,delphi,winapi,Python,C,Windows,Delphi,Winapi,在过去几年中,恶意软件(以及一些笔测试工具,如Metasploit的MeterMeter有效负载)开始用于将DLL加载到进程的内存中。这样做的好处是,该文件从未写入磁盘,而且很难检测到。我看到的许多例子都是基于 然而,在。他的演讲被称为“演讲”。不幸的是,他没有发布源代码(他当然没有义务这么做) 更新:显然我错过了,但安德鲁几年前做了开源的这项工作: 此外,当使用反射dll注入加载时,名为“”的工具可以检测MeterMeter引擎。同样,闭源代码 我知道Andrew King的工具和Antime

在过去几年中,恶意软件(以及一些笔测试工具,如Metasploit的MeterMeter有效负载)开始用于将DLL加载到进程的内存中。这样做的好处是,该文件从未写入磁盘,而且很难检测到。我看到的许多例子都是基于

然而,在。他的演讲被称为“演讲”。不幸的是,他没有发布源代码(他当然没有义务这么做)

更新:显然我错过了,但安德鲁几年前做了开源的这项工作:

此外,当使用反射dll注入加载时,名为“”的工具可以检测MeterMeter引擎。同样,闭源代码

我知道Andrew King的工具和Antimeter都是用Python编写的,并且使用pydbg/pydasm来枚举运行中可执行文件的内存

有没有人愿意分享一些通用的源代码(Python、C、Delphi或其他语言)来演示如何检测反射DLL注入?有一些内存取证工具可以分析内存转储并找到它,但我希望在运行的系统上执行应用程序(就像antimeter一样),并找到具有反射注入DLL的进程

如果您有兴趣了解反射DLL注入是如何工作的,那么有一些演示了如何做到这一点

更新
我进行了测试,可以反射性地注入DLL,而无需管理员权限(作为普通用户),但作为用户,我当然只能注入以相同完整性级别运行的进程(在我的会话中)……但这仍然包括Office套件、Internet Explorer等应用程序。

挂接VirtualProtect API怎么样。因为加载自身的DLL肯定会在其内存代码范围内设置execute。这是因为(正如您所提到的)他们使用用户访问权限,因此他们必须使用process userspace API

NTSYSAPI NTSTATUS NTAPI ZwProtectVirtualMemory(
    IN HANDLE ProcessHandle,
    IN PVOID *  BaseAddress,
    IN SIZE_T *     NumberOfBytesToProtect,
    IN ULONG    NewAccessProtection,
    OUT PULONG  OldAccessProtection 
);
如果您在程序的一开始就钩住它,您可以过滤出可疑的保护调用(启用代码执行的调用)。然后我会扫描请求页面前面的PE标题或类似内容,以了解它是一个可加载的模块注意:我认为这不适用于常规DLL,因为LoadLibrary在内核空间中处理这一问题。正确的?TODO:验证

通常,PE头位于第一个可执行代码前面的0x1000(4096)字节或一页。因此,一种非常基本的方法是扫描“MZ”标记:

如果你需要更多关于API挂钩的信息,只需在网上询问或阅读大量文章即可。另一个挂钩候选对象是:FlushInstructionCache(…)。但我认为只有暴雪将其用于典狱长反作弊模块,因为x86体系结构上没有理由称之为此

。。。只是一个想法


will

值得注意:您链接的论文指出,“如果要执行这些步骤,您应该在主机进程中执行某种形式的代码,这可能是通过利用远程代码执行漏洞获得的。”因此,您正在处理一台已经受损的机器,使用的是更多的“行人”技术,不一定。我可以在我拥有管理员权限的系统上使用Delphi(或C++)进行此操作:。但是你是对的,这种攻击需要一些复杂度…或者稍微复杂一点,假设你可以使用Metasploit框架,并且你的目标至少有1个未修补的Java vuln或IE 0-day:)如果你有管理员权限,你可以做任何事。@DavidHeffernan:如果我正确阅读了链接文章,反射DLL注入不需要管理员权限。这个练习的主要目的似乎是让恶意代码对AV软件隐藏起来。(更具体地说,它允许您以编写任何其他Windows DLL的相同方式编写隐藏的恶意代码。)在Antimeter页面的评论中,作者解释说,他只是在内存中搜索与MeterMeter相关的字符串。这对我来说都是非常新的,因此是一个很好的学习机会。您是否设法验证了您的
待办事项
char* pe = ((char*)BaseAddress) - 0x1000;
if ((NewAccessProtection == PAGE_EXECUTE || ... ) & pe[0] == 'M' && pe[0] == 'Z')
{
    // do checks here
}