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

2024-11-27 23:43:02 4 261

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

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

RustiveDump

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

它能从头开始创建最小的 minidump 文件,其中包含 SystemInfoModuleListMemory64List等基本组件,并支持 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 GateHalo's GateTartarus' Gate 等技术检索系统服务号(SSN)。

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

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

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

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

工作原理

  1. 启用 SeDebugPrivilege:
    RustiveDump 使用 NtOpenProcessTokenNtAdjustPrivilegesToken 来启用 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. 创建内存转储:
    内存转储可使用 NtCreateFileNtWriteFile 保存在本地,或发送到远程服务器。如果需要,还可以在保存或传输前使用 XOR 对转储进行加密。

构建

RustiveDump 通过 cargo make 提供了多个可配置的构建选项,以自定义工具的行为。你可以启用 XOR encryptionremote file transmissionverbose 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 文件,其中只包含 MimikatzPypykatz 等工具所需的基本组件。文件由三个核心流组成:

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

免责声明

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

关于作者

whoami100篇文章152篇回复

勤快的搬运工。

评论4次

要评论?请先  登录  或  注册