通过内存PE加载器下载恶意文件绕过EDR检测
一种允许攻击者直接在内存中执行恶意代码的高阶技术正在流行,这对现代终端检测与响应(EDR)解决方案构成了重大挑战。这种方法通过利用内存中的可移植的可执行文件(PE)加载器,使威胁行为者能够在已受信任的进程中运行可执行程序,从而有效绕过主要监控磁盘文件写入的安全检测机制。
(标题图为通过PE下载的putty)
据化名为 G3tSyst3m 的用户透露,该技术暴露了某些安全防护体系的关键盲区,使得攻击者在获得初始访问权限后能隐蔽地部署次级有效载荷。这种"无文件"攻击手段尤为危险,因为它能在不被察觉的情况下运作。终端检测与响应(EDR)方案可能会验证并通过初始应用程序,认为其运行安全。但是一旦这个被信任的程序启动,攻击者可以操纵它下载并执行其他的PE文件,比如在它的内存空间当中执行远程访问木马/信息窃取程序。因恶意可执行程序并没有接触文件系统,所以传统的反病毒软件以及EDR工具 —— 依赖于文件扫描和基于硬盘的启发分析,可能无法探测到此类威胁。
(加载PE到内存中)
内存PE加载器利用
G3tSyst3m补充道, 攻击始于利用合法进程从远端下载合法PE文件,例如Github之类。代码通过使用standard Windows API 如InternetOpenUrlA & InternetReadFile
之类从远端获取执行文件并保存在内存空间中。这一起始步骤经常会被当成小小的正常网络通信活动,而载荷在不引起警报下,会被传输到目标系统。待传输完成,PE文件以字节串的形式驻留在内存当中,而加载器会将字节串小心翼翼的组装好并执行。
这个组装过程通过自定义代码来模拟Windows操作系统自身加载器的功能。概括来说,该加载器执行了几个关键步骤:
- 解析PE头字段:读取下载文件的DOS和NT头字段得知其结构,包括各节区及依赖
- 分配内存空间:使用
VirtualAlloc
在宿主进程中开辟信内存区块,用于映射可执行映像 - 映射节区数据: 加载器根据虚拟地址将PE头字段以及节区(
.text
的代码、.data
的变量),从缓冲区复制到新分配的空间当中 - 解析导入函数:加载DLL,通过
LoadLibraryA & GetProcAddress
解析PE文件运行所需的外部函数地址。 - 应用重定位:调整代码中的所有硬编码地址,确保它们指向正确的内存位置。
G3tSyst3m 表示,在成功映射PE文件及解析它的依赖项之后,最后一步包括调整内存权限并执行文件。加载器会使用
Virtual Protect
为每个节区设置合适的权限。例如给code节区分配可执行,data节区分配读写权限 上述手段镜像了合法的程序加载流程,关键有效的避免了进程崩溃。当内存配置妥当后,加载器调用PE文件入口,即刻启动恶意代码。
这种方法在红队演练中已被证明有效,且观察到能够绕过微软终端防护平台(XDR)和 Sophos XDR 等知名终端检测与响应解决方案。虽然并非万无一失——尤其是在面对能随时间标记异常进程行为的高级人工智能和机器学习检测系统时——但定制化 PE 加载器仍然是规避检测的强大工具。 该技术凸显了安全解决方案必须超越对基于文件的威胁情报的依赖,具备执行深度内存检测和行为分析的能力。
评论3次
现在AV很多都加强了对加载器的查杀了
我也觉得,无文件这方法应该不算新吧,查了下好多新闻网站都有发出来,可能出新东西了。所以我也发了
现在AV很多都加强了对加载器的查杀了
安全防护体xi的关键盲区,也更容易让攻击者找到突破点