C++ C++;PE注入-远程位置的EXE文件(例如HTTP)
我是一名新手安全研究员,试图学习使用滴管/分段器进行PE注射,非常像加密锁操作 我们正在为处理QRadar SIEM的blue团队进行消防演习,我们希望在其上启动一些定制恶意软件 现在,我的问题是:)。我理解op PE注入的一般概念,但我发现的几乎所有教程都会注入当前的EXE(因此通常通过调用GetModuleHandle(NULL))来实现) 我想知道您将如何从远程资源(例如HTTP下载)注入EXE。 基本上,我的目标是: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
致以最良好的祝愿 其实很简单。您所需要做的就是将远程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
,因为它更隐蔽
另外,我相信你可以想出一些其他的方法,这只是我的想法。好的,所以你不会把它用于恶意目的。如果其他人读了答案怎么办?这就是为什么我说给我指出正确的方向就足够了,不需要代码。人们必须知道,做安全研究很困难,因为你研究的东西可能被用于恶意目的。我可以发一封一次性的邮件,然后把答案寄出去,也许这样更好:)嘿,非常感谢你的评论。今天,我自己做了大量的挖掘工作,能够弄明白其中的大部分,但不完全确定下载文件和映射的方法,这就把它弄清楚了!非常感谢你!不客气!下载文件后映射文件的方法允许您从内存中获取文件的基址。如果您试图限制应用程序对磁盘的访问:)