C++ C++;PE注入-远程位置的EXE文件(例如HTTP)

C++ C++;PE注入-远程位置的EXE文件(例如HTTP),c++,code-injection,C++,Code Injection,我是一名新手安全研究员,试图学习使用滴管/分段器进行PE注射,非常像加密锁操作 我们正在为处理QRadar SIEM的blue团队进行消防演习,我们希望在其上启动一些定制恶意软件 现在,我的问题是:)。我理解op PE注入的一般概念,但我发现的几乎所有教程都会注入当前的EXE(因此通常通过调用GetModuleHandle(NULL))来实现) 我想知道您将如何从远程资源(例如HTTP下载)注入EXE。 基本上,我的目标是: STAGER文件在内存中下载EXE STAGER文件在进程X中使用PE

我是一名新手安全研究员,试图学习使用滴管/分段器进行PE注射,非常像加密锁操作

我们正在为处理QRadar SIEM的blue团队进行消防演习,我们希望在其上启动一些定制恶意软件

现在,我的问题是:)。我理解op PE注入的一般概念,但我发现的几乎所有教程都会注入当前的EXE(因此通常通过调用GetModuleHandle(NULL))来实现)

我想知道您将如何从远程资源(例如HTTP下载)注入EXE。 基本上,我的目标是:

  • STAGER文件在内存中下载EXE
  • STAGER文件在进程X中使用PE方法注入EXE
  • 我不希望这里有一个完整的答案,但如果你能给我指出正确的方向,那就太好了:)

    请注意,此代码不会被用于恶意目的


    致以最良好的祝愿

    其实很简单。您所需要做的就是将远程EXE/DLL下载到缓冲区(即从内存),从这一点上,您有几个选项

    您最初需要检查MZ签名,并且它是有效的PE文件。您可以使用
    PIMAGE\u NT\u头文件
    ,检查可选的.Signature(如果PE文件有效)和
    PIMAGE\u DOS\u头文件
    (MZ签名)中的e\u magic

    现在的问题是,您是否希望插入一个dll,从内存中加载它,在它的导出表中搜索给定的函数,获取代码并在远程进程中执行i,或者从内存中执行EXE

    假设您只想获取图像的ImageBase,正如您所说,您在网上阅读了一些教程,其中通过
    GetModuleHandle
    讨论了它,那么您首先需要映射下载的缓冲区

    你可以通过

    CreateFileW
    (用于阅读),
    CreateFileMapping
    (从createfile传递句柄),
    MapViewOfFile
    (传递从CreateFileMapping返回的句柄)

    之后,您将从
    MapViewOfFile
    获取基本图像地址。现在,您可以对该文件执行许多操作,可以从内存中注入它,也可以从内存中执行它

    您需要通过直接映像目录RVA->base查看PE修复(导出和导入地址表函数)和基址重新定位

    请注意,如果在映射文件后在远程进程中执行映像,请使用
    zwwqueueapcthread
    injection方法,而不是像
    RtlCreateUserThread/CreateRemoteThread
    这样更单调的方法

    如果您是从内存执行代码。通过重新定位修复偏移后,确保通过
    VirtualProtectEx
    执行代码,可选
    ZwAllocateVirtualMemory
    (通过
    PAGE\u WRITECOPY
    而不是
    PAGE\u execute\u READWRITE
    )而不是
    ZwWriteVirtualMemory
    -
    WriteProcessMemory
    ,因为它更隐蔽


    另外,我相信你可以想出一些其他的方法,这只是我的想法。

    好的,所以你不会把它用于恶意目的。如果其他人读了答案怎么办?这就是为什么我说给我指出正确的方向就足够了,不需要代码。人们必须知道,做安全研究很困难,因为你研究的东西可能被用于恶意目的。我可以发一封一次性的邮件,然后把答案寄出去,也许这样更好:)嘿,非常感谢你的评论。今天,我自己做了大量的挖掘工作,能够弄明白其中的大部分,但不完全确定下载文件和映射的方法,这就把它弄清楚了!非常感谢你!不客气!下载文件后映射文件的方法允许您从内存中获取文件的基址。如果您试图限制应用程序对磁盘的访问:)