RustiveDump:基于rust开发的lsass内存dump工具
LSASS 内存转储器仅使用 NTAPIs,创建了一个最小的迷你转储器,使用 Rust 内建,无 std,独立于 C 运行时(CRT)。它可以编译成 shellcode (PIC),支持 XOR 加密和远程文件传输。
Github:https://github.com/safedv/RustiveDump
RustiveDump
RustiveDump 是一款基于 Rust 的工具,旨在仅使用 NT 系统 调用来转储 lsass.exe 进程的内存。
它能从头开始创建最小的 minidump 文件,其中包含 SystemInfo、 ModuleList 和 Memory64List等基本组件,并支持 XOR 加密 和 远程传输。
此外,RustiveDump 现在实现了 Rustic64 的设计,允许将其编译为位置独立代码(PIC),使其用途更加广泛。
该项目是一次个人学习经历,重点是利用本地 Windows API 进行内存转储,并完全从头开始构建一个简约的 minidump 文件。
主要功能
-
所有操作均使用 NT 系统调用: RustiveDump 绕过标准 API,所有操作均使用 NT 系统调用。
-
不依赖于标准和 CRT: RustiveDump使用了Rust的no_std特性,从而消除了对Rust标准库的依赖,同时它也独立于CRT库。这使得发布版本的代码只有 18KB。
-
位置独立代码 (PIC): RustiveDump 现在实现了 Rustic64 的设计,允许将其编译为 shellcode (PIC),使其用途更加广泛。
-
间接 NT 系统调用: 该工具使用间接系统调用,通过 Hell’s Gate、 Halo's Gate 和 Tartarus' Gate 等技术检索系统服务号(SSN)。
-
精益内存转储: RustiveDump 会生成一个集中的内存转储,只包含基本数据(即 SystemInfo、ModuleList 和 Memory64List),确保没有臃肿的文件--只需为 Mimikatz 或 Pypykatz 等内存分析工具提供足够的数据。
-
XOR 加密:
RustiveDump 可在保存或传输转储文件前使用 XOR 加密,从而为转储内存添加额外的安全层。 -
远程文件传输:
转储文件可以使用 winsock APIs 调用直接发送到远程服务器上。 -
调试模式:
调试模式提供每个步骤的详细日志,可在构建过程中启用。
工作原理
-
启用 SeDebugPrivilege:
RustiveDump 使用NtOpenProcessToken
和NtAdjustPrivilegesToken
来启用 SeDebugPrivilege,允许访问受保护的进程,如 lsass.exe。 -
LSASS 进程访问:
该工具通过查询NtQuerySystemInformation
来获取活动进程快照,从而找到 lsass.exe 进程,然后使用NtOpenProcess
打开进程句柄,并赋予PROCESS_QUERY_INFORMATION
andPROCESS_VM_READ
访问权限。 -
内存区域处理:
RustiveDump 使用NtQueryVirtualMemory
扫描进程的内存区域,并使用NtReadVirtualMemory
转储已提交和可访问的内存。 -
模块信息:
RustiveDump 会使用NtQueryInformationProcess
从远程 PEB(进程环境块)中提取 ModuleList,从而检索 lsass.exe 加载的模块列表。 -
创建内存转储:
内存转储可使用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 等工具所需的基本组件。文件由三个核心流组成:
- SystemInfo Stream: 操作系统版本和架构详情。
- ModuleList Stream: 列出加载到 lsass.exe 中的模块。
- Memory64List Stream: lsass.exe 中的内存区域。
免责声明
本项目仅用于教育和研究目的。RustiveDump 是一款以学习为目的的极简内存转储工具。
评论4次
过edr的能力怎样?
我觉得很强,所以我收藏了
很强,我来学xi一下
我觉得很强,所以我收藏了
工具不错已收藏