如何检测代码注入(Part 2)

《通过内存取证检测代码注入行为(Part 1)》

接上文继续探讨

代码注入这种攻击的最简单形式就是强迫进程加载新的 DLL(动态链接库)。传统的检测工具(如Volatility的dlllist或ldrmodules)可以轻松发现这种情况。然而,随着安全工具检测能力的提高,攻击者也在不断进化,开发出了更先进的技术,试图绕过这些检测。

但问题是,无论攻击多么隐蔽,总会留下蛛丝马迹。取证调查的关键就是找到这些线索。

如何检测代码注入

大多数代码注入技术都遵循常见的三步模式。即使是高级变种如反射式DLL注入,也有类似的特征。诀窍在于查看进程的内存结构,尤其是VAD(虚拟地址描述符)树,它记录了所有内存部分。

以下是检测注入代码的步骤:

1.检查内存权限------内存进程中最大的危险信号之一就是具有PAGE_EXECUTE_READWRITE权限的部分。通常情况下,内存区段不应该既可写又可执行--这是一种危险的组合,会允许注入代码被写入和执行。

2.验证内存部分是否映射到文件 ------在Windows系统中,合法代码(DLL、EXE)是从磁盘加载的。如果内存部分是可执行的,但没有映射到文件,那就非常可疑了。

3.确认是否存在可执行代码 ------内存部分看起来可疑并不意味着它一定是恶意软件。一些合法应用程序(如.NET或JIT编译器)的内存页面具有不寻常的权限。要确认注入的代码是否是真正的恶意代码,取证工具会检查实际的可执行内容,如可移植的可执行(PE)文件或shellcode。

使用Volatility检测代码注入

幸运的是,你不必手动检查每个内存部分。Volatility的malfind插件和MemProcFS的FindEvil等工具可以自动完成这一过程。这些工具会扫描内存进程中的可疑部分,并为调查员们提供易于阅读的检测结果。

malfind 插件会扫描内存并查找以下部分:

  • 具有可执行权限
  • 未映射到磁盘上的文件
  • 包含实际可执行代码

如果发现匹配,它就会标记该部分以便进一步审查。使用 --dump 选项,malfind 甚至可以提取这些部分,以便使用 IDA Pro、YARA 或防病毒扫描仪等工具对其进行进一步分析。

命令示例:

复制代码
python3 vol.py -f /mnt/c/Users/Akash\'s/Downloads/solarmarker/solarmarker.img windows.malfind > /mnt/c/Users/Akash\'s/Downloads/malfind.txt

一点提示:

当你运行malfind并发现EBP和ESP时,通常表明内存中习惯上不可执行的部分(如堆栈)现在包含了可执行代码。


高级检测技术

虽然malfind是很好的第一步,但攻击者已经开发出通过修改内存标记符来绕过它的方法。以下是一些可以提供帮助的其他技术:

  • YARA规则 ------用于扫描内存转储以查找已知恶意软件模式的自定义规则

  • 字符串分析 ------查找转储内存部分中的可疑关键字

  • 行为监控 ------监视异常进程行为(例如:svchost.exe启动反向shell)

代码注入的演变

Volatility的malfind能够有效检测反射注入。然而攻击者也通过自我清理来反击。

例如,CoreFlood僵尸网络 清除了加载的DLL的第一页(4096字节)以逃避检测。同样,APT29(俄罗斯)APT32(越南) 等组织使用的Cobalt Strike有效载荷会在执行后清除头文件。还有中国黑客组织Winnti RAT也采用了类似的规避策略。

检测更隐蔽的代码注入

要对付这些复杂的注入方法,分析人员必须深入研究。内存转储有助于识别混淆代码:

Volatility malfind的-- dump选项:提取可疑的内存部分,以便进一步分析。

字符串分析和YARA规则 :识别转储内存部分的模式。

逆向工程 :最彻底但需要大量资源的方法。

行为分析------(如监控父子进程关系文件和孤儿文件)依然有效。

MemProcFS "FindEvil" 插件

较新的内存取证工具(如MemProcFS )可通过其FindEvil插件提供增强的检测功能。启用该功能后,会生成findevil.txt标记可疑的内存区域:

违规流程

  • PROC_NOLINK:未链接进程(可能是恶意进程)。
  • PROC_PARENT:意外的父子进程关系。
  • PROC_USER:系统进程以不正确的用户账户运行。

内存页面标记

  • PE_INJECT:可执行内存部分缺乏适当的镜像映射。
  • NOIMAGE_RWX / NOIMAGE_RX:图像内存外的可疑权限。
  • PRIVATE_RWX / PRIVATE_RX:专用内存区段中的可执行代码。

小结

随着攻击者不断改进方法,防御者也必须不断适应。内存取证技术与行为分析相结合,为检测现代注入技术提供了强大的解决方法。

相关推荐
Python_金钱豹2 分钟前
Text2SQL零代码实战!RAGFlow 实现自然语言转 SQL 的终极指南
前端·数据库·sql·安全·ui·langchain·机器人
TazmiDev6 分钟前
2025 XYCTF ezsql 详细教程wp
web安全·网络安全·ctf·sql注入·布尔盲注
内网渗透10 分钟前
Python 虚拟环境管理:venv 与 conda 的选择与配置
开发语言·python·conda·虚拟环境·venv
薄荷很无奈18 分钟前
CuML + Cudf (RAPIDS) 加速python数据分析脚本
python·机器学习·数据分析·gpu算力
yivifu24 分钟前
pyqt中以鼠标所在位置为锚点缩放图片
python·pyqt·以鼠标为锚点缩放图片
正在走向自律35 分钟前
AI数字人:繁荣背后的伦理困境与法律迷局(8/10)
人工智能·python·opencv·语音识别·ai数字人·ai伦理与法律
广东航连科技43 分钟前
银行网点款箱交接权限认证开锁与密钥时效双重监控
物联网·安全·银行·精细化管理·锁控·智能锁·款箱
灏瀚星空1 小时前
Python在AI虚拟教学视频开发中的核心技术与前景展望
人工智能·python·音视频
迷路的小绅士1 小时前
网络安全概述:定义、重要性与发展历程
网络·安全·web安全
一个天蝎座 白勺 程序猿1 小时前
Python爬虫(4)CSS核心机制:全面解析选择器分类、用法与实战应用
css·爬虫·python