qz安全情报分析 07月22日 13:48
基于全内存扫描与数据流重组的无文件内存窃取技术分析
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入分析了一种基于全内存扫描与数据流重组的无文件内存窃取技术。该技术绕过了传统的、易被检测的系统API调用,转而直接在目标进程(如lsass.exe)的虚拟内存空间中进行扫描和数据提取。通过精细操作NTAPI,攻击者能够在不写入磁盘的情况下,手动构建符合格式要求的内存转储文件,从而有效规避EDR等安全解决方案的监控。文章详细阐述了该技术的实现流程、核心原理,并提出了相应的防御策略,强调了行为模式分析和LSA保护模式的重要性,以应对日益复杂的网络攻防态势。

🎯 **规避高层API,聚焦底层数据操作**:该技术的核心在于绕过如MinidumpWriteDump等易被检测的高层API,转而利用NTAPI在ntdll.dll层面直接执行内存查询和数据重组。它不依赖于访问PEB进程环境块,而是通过系统性地遍历虚拟内存区域,识别模块的内存特征,并比对PE文件签名来定位目标模块,以此实现对凭据信息的提取。

🛡️ **权限获取与进程句柄是前提**:要执行此类内存窃取,首先需要获取必要的系统权限。攻击者会通过启用SeDebugPrivilege来获得对目标进程(如lsass.exe)的访问权限,并通过NtOpenProcess获取包含内存读取和信息查询权限的进程句柄。这表明,具备管理员权限是执行此类底层操作的必要条件。

🔍 **全内存扫描与模块定位是关键**:与传统方法不同,该技术通过反复调用NtQueryVirtualMemory来遍历目标进程的整个虚拟内存空间。它寻找已提交的内存区域,校验其是否为PE文件头,并进一步搜索特定的模块名称(如lsasrv.dll)。一旦定位到目标模块,还会计算其在内存中的精确大小,为后续数据提取做准备。

📝 **手动构建Minidump数据流,实现无文件化**:在获取所有必要信息后,该技术会在内存中手动构建Minidump文件的数据结构,包括SystemInfoStream、ModuleListStream和Memory64ListStream等。它会完整地转储目标进程的可读内存数据,并将所有信息按照Minidump格式规范在内存中拼接成一个完整的字节数组。整个过程完全在内存中进行,避免了写入磁盘,实现了“无文件”攻击。

💡 **防御策略侧重行为分析与系统加固**:针对此类隐蔽技术,防御策略应从监控特定API调用转向对更底层的、组合性的行为模式进行分析。包括监控权限提升后的高风险进程访问(如对lsass.exe的访问)、检测异常的序列化内存扫描行为,以及启用LSA保护模式(PPL)。这些措施能从源头上限制或检测此类攻击活动。

 

基于全内存扫描与数据流重组的无文件内存窃取技术分析

概述

在网络安全攻防中,凭据窃取是实现权限提升与横向移动的关键步骤。Windows系统中的lsass.exe
进程因其内存中缓存有用户的密码哈希、Kerberos票据等认证信息,是该领域的核心攻击目标。随着终端检测与响应(EDR)等安全解决方案的发展,依赖标准API(如MinidumpWriteDump
)的传统工具正面临越来越高的检测率。

为规避现有监控机制,出现了一种更底层的内存窃取技术。该技术不使用常规的、易于监控的系统函数,而是采用全内存扫描的方式,直接在目标进程的虚拟内存空间中定位所需数据,并以无文件(Fileless)的方式完成凭据窃取。本文旨在对此技术的实现流程、核心原理及规避策略进行深入的技术分析。

核心原理:规避高层API,直接操作底层数据

现代EDR产品的防御逻辑,主要基于对特定高风险API调用和行为模式的监控。在内存窃取场景下,以下行为被视为高风险指标:

    1. 调用 MinidumpWriteDump
     函数
    :这是最直接的进程内存转储行为,已被安全产品严密监控。

    2. 访问PEB
    进程环境块
    :攻击者常通过读取目标进程的PEB来获取其已加载的模块列表。因此,一个进程对lsass.exe
    的PEB进行读取,同样是高优先级的监控事件。

本文所探讨的技术,其核心原理是规避上述高层API及结构化数据。它不调用任何高级别的转储函数,也放弃了通过PEB定位模块的便捷方式。作为替代,该技术直接在ntdll.dll
层面调用一系列NTAPI,通过手动执行内存查询与数据重组,最终构建出一个最小化的、但符合凭据解析工具要求的Minidump文件。

技术实现:不依赖PEB的完整流程

整个过程可划分为三个主要阶段:权限获取、全内存扫描与模块定位、数据流的手动构建。

第一阶段:获取进程访问权限

此阶段是后续所有操作的强制性前置条件。对lsass.exe
的内存访问必须获得操作系统的明确授权。

    1. 启用调试权限:程序首先调用NtOpenProcessToken
    打开自身进程的访问令牌,随后调用NtAdjustPrivilegesToken
    来启用令牌中已存在的SeDebugPrivilege

    2. 管理员权限的必要性SeDebugPrivilege
    默认仅授予系统管理员(Administrators)用户组。这意味着,执行此程序的用户必须具备管理员权限,否则权限启用操作将失败,导致后续步骤无法执行。

    3. 获取进程句柄:在成功启用权限后,调用NtOpenProcess
    获取一个拥有PROCESS_VM_READ
    (内存读取)和PROCESS_QUERY_INFORMATION
    (信息查询)权限的lsass.exe
    进程句柄。该句柄是执行后续所有跨进程内存操作的基础。

第二阶段:基于全内存扫描的模块定位

此阶段是该技术规避PEB检测的关键。它采用了一种系统性的内存遍历方法来定位目标模块lsasrv.dll

    1. 遍历虚拟内存区域:程序在一个循环中,从一个较低的内存地址(如0x0)开始,反复调用NtQueryVirtualMemory
    。该API能够返回指定地址所在内存区域的详细信息,包括基地址、大小、状态和保护属性。

    2. 识别模块的内存特征:在遍历过程中,程序持续寻找符合已加载模块(DLL/EXE)内存特征的区域。一个被加载模块的基地址,通常指向一个PE文件头。

    3. 确认PE文件签名:当发现一个已提交(MEM_COMMIT
    )的内存区域时,程序会通过NtReadVirtualMemory
    读取该区域的起始数据,并校验其是否包含PE文件的特定文件签名——即起始的“MZ”标识(0x5A4D
    )和PE头部的“PE\0\0”签名(0x00004550
    )。

    4. 比对模块身份:一旦确认这是一个模块的基地址,程序便会在此内存块中搜索lsasrv.dll
    这个Unicode字符串。若匹配成功,则意味着已定位目标模块的基地址。

    5. 计算模块大小:从已定位的基地址开始,继续向后累加连续内存区域的大小,直至遇到一个不属于该模块的区域,从而计算出lsasrv.dll
    在内存中的精确大小。

第三阶段:手动构建Minidump数据流

在获取了所有必要信息后,最后一步是将这些数据片段组装成一个结构合法的Minidump文件。

    1. 填充数据流结构体:程序在内存中初始化SystemInfoStream
    ModuleListStream
    Memory64ListStream
    三个核心数据流的结构体,并将上一步获取的系统版本、lsasrv.dll
    地址和大小等信息填入。

    2. 转储原始内存数据:再次完整地遍历lsass.exe
    的所有可读内存区域,通过NtReadVirtualMemory
    将其实际内容逐块复制出来。

    3. 组合并生成输出:最后,将Minidump文件头、流目录、三个核心数据流以及所有原始内存数据块,严格按照Minidump文件格式规范,在内存中拼接成一个完整的字节数组。

无文件攻击的实现:规避磁盘检测

此技术的另一关键优势在于其无文件(Fileless)的特性。整个Minidump的构建过程完全在内存中完成,最终产物是一个字节数组。

    • 无需写入磁盘:攻击工具可以避免将包含敏感凭据的转储文件写入本地磁盘。

    • 直接内存操作:程序可以直接在内存中对该字节数组进行加密或编码(例如XOR),然后通过网络套接字发送到远程C2服务器。

这种方式可以有效规避依赖静态文件扫描的安全产品,显著增加了检测和取证的难度。

防御策略与技术启示

尽管此技术具有高度的隐蔽性,但其行为模式仍可被检测。防御的重心需要从监控特定的API调用,转向对更底层的、组合性的行为模式进行分析。

    1. 监控权限提升与高风险进程访问:建立对lsass.exe
    进程访问链的监控规则。任何非系统核心进程,若在启用SeDebugPrivilege
    后,紧接着尝试获取lsass.exe
    的读取句柄
    ,应被视为高风险事件并进行告警。

    2. 检测异常内存扫描行为:一个用户进程对另一个关键系统进程(尤其是lsass.exe
    )发起大规模、序列化的NtQueryVirtualMemory
    循环调用,这本身构成了异常的行为模式,可作为检测此类扫描技术的重要依据。

    3. 启用LSA保护模式:在Windows 8.1及更高版本中,应启用LSA保护(PPL - Protected Process Light)。该系统级安全机制能够从根本上阻止非PPL进程(即使具备管理员权限)对lsass.exe
    内存的直接读取,是防御此类攻击最有效的内置措施。

结论

基于全内存扫描的无文件内存窃取技术,反映了当前网络攻击向更底层、更隐蔽方向发展的趋势。它证明了攻击者会利用对操作系统内部机制的深入理解来绕过表层防御。对于防御方而言,深入分析并理解这些高级攻击技术,是将防御体系从被动响应升级为主动威胁狩猎和行为预测的必要前提。只有对底层系统行为建立有效的监控和分析模型,才能构筑更为可靠的安全防线。

 


📍发表于:中国 北京

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

内存窃取 无文件攻击 lsass.exe EDR规避 NTAPI
相关文章