RustiveDump:基于rust开发的lsass内存dump工具

2024-11-27 23:43:02 6 1979

LSASS 内存转储器仅使用 NTAPIs,创建了一个最小的迷你转储器,使用 Rust 内建,无 std,独立于 C 运行时(CRT)。它可以编译成 shellcode (PIC),支持 XOR 加密和远程文件传输。

Github:https://github.com/safedv/RustiveDump

RustiveDump.jpg

RustiveDump

RustiveDump 是一款基于 Rust 的工具,旨在仅使用 NT 系统 调用来转储 lsass.exe 进程的内存。

它能从头开始创建最小的 minidump 文件,其中包含 SystemInfo、 ModuleList 和 Memory64List等基本组件,并支持 XOR 加密 和 远程传输。

此外,RustiveDump 现在实现了 Rustic64 的设计,允许将其编译为位置独立代码(PIC),使其用途更加广泛。

该项目是一次个人学习经历,重点是利用本地 Windows API 进行内存转储,并完全从头开始构建一个简约的 minidump 文件。

主要功能

  1. 所有操作均使用 NT 系统调用: RustiveDump 绕过标准 API,所有操作均使用 NT 系统调用。

  2. 不依赖于标准和 CRT: RustiveDump使用了Rust的no_std特性,从而消除了对Rust标准库的依赖,同时它也独立于CRT库。这使得发布版本的代码只有 18KB。

  3. 位置独立代码 (PIC): RustiveDump 现在实现了 Rustic64 的设计,允许将其编译为 shellcode (PIC),使其用途更加广泛。

  4. 间接 NT 系统调用: 该工具使用间接系统调用,通过 Hell’s Gate、 Halo's Gate 和 Tartarus' Gate 等技术检索系统服务号(SSN)。

  5. 精益内存转储: RustiveDump 会生成一个集中的内存转储,只包含基本数据(即 SystemInfo、ModuleList 和 Memory64List),确保没有臃肿的文件--只需为 Mimikatz 或 Pypykatz 等内存分析工具提供足够的数据。

  6. XOR 加密:
    RustiveDump 可在保存或传输转储文件前使用 XOR 加密,从而为转储内存添加额外的安全层。

  7. 远程文件传输:
    转储文件可以使用 winsock APIs 调用直接发送到远程服务器上。

  8. 调试模式:
    调试模式提供每个步骤的详细日志,可在构建过程中启用。

工作原理

  1. 启用 SeDebugPrivilege:
    RustiveDump 使用 NtOpenProcessToken 和 NtAdjustPrivilegesToken 来启用 SeDebugPrivilege,允许访问受保护的进程,如 lsass.exe。

  2. LSASS 进程访问:
    该工具通过查询 NtQuerySystemInformation 来获取活动进程快照,从而找到 lsass.exe 进程,然后使用 NtOpenProcess 打开进程句柄,并赋予 PROCESS_QUERY_INFORMATION and PROCESS_VM_READ访问权限。

  3. 内存区域处理:
    RustiveDump 使用 NtQueryVirtualMemory 扫描进程的内存区域,并使用 NtReadVirtualMemory 转储已提交和可访问的内存。

  4. 模块信息:
    RustiveDump 会使用 NtQueryInformationProcess 从远程 PEB(进程环境块)中提取 ModuleList,从而检索 lsass.exe 加载的模块列表。

  5. 创建内存转储:
    内存转储可使用 NtCreateFile 和 NtWriteFile 保存在本地,或发送到远程服务器。如果需要,还可以在保存或传输前使用 XOR 对转储进行加密。

构建

RustiveDump 通过 cargo make 提供了多个可配置的构建选项,以自定义工具的行为。你可以启用 XOR encryption、remote file transmission 和 verbose logging 等功能。

Available Features:

  • xor: 使用 XOR 加密算法加密转储文件。
  • debug: 启用进程每一步的详细日志。
  • remote: 通过 Winsock 将转储文件发送到远程服务器。
  • lsasrv: 过滤内存转储,只包含 lsass.exe 中的 lsasrv.dll 模块。

构建选项

要以不同的功能组合构建 RustiveDump,请使用以下命令:

  • 基本构建 (本地保存内存转储,不含附加功能):

    cargo make
  • 使用特定功能构建

    cargo make --env FEATURES=xor,remote,lsasrv,debug
  • 以 shellcode (PIC) 的形式编译

    cargo make --env FEATURES=xor,remote pic

内存转储文件结构

RustiveDump 会生成一个极简的 minidump 文件,其中只包含 Mimikatz 和 Pypykatz 等工具所需的基本组件。文件由三个核心流组成:

  1. SystemInfo Stream: 操作系统版本和架构详情。
  2. ModuleList Stream: 列出加载到 lsass.exe 中的模块。
  3. Memory64List Stream: lsass.exe 中的内存区域。

免责声明

本项目仅用于教育和研究目的。RustiveDump 是一款以学习为目的的极简内存转储工具。

关于作者

whoami128篇文章212篇回复

勤快的搬运工。

评论5次

要评论?请先  登录  或  注册