NativeDump 允许仅使用 NTAPI 转储 lsass 进程,生成一个 Minidump 文件,其中仅包含需要由 Mimikatz 或 Pypykatz 等工具解析的流(SystemInfo、ModuleList 和 Memory64List Streams)。
项目地址:https://github.com/ricardojoserf/NativeDump
- NTOpenProcessToken 和 NtAdjustPrivilegeToken 获取“SeDebugPrivilege”权限
- RtlGetVersion 获取操作系统版本详细信息(主版本、次版本和内部版本号)。这对于 SystemInfo Stream 是必需的
- NtQueryInformationProcess 和 NtReadVirtualMemory 获取 lsasrv.dll 地址。这是 ModuleList Stream 所需的唯一模块
- NtOpenProcess 获取 lsass 进程的句柄
- NtQueryVirtualMemory 和 NtReadVirtualMemory 循环遍历内存区域并转储所有可能的区域。同时填充 Memory64List Stream
该项目目前有三个分支(除了具有基本技术的主分支之外):
-
ntdlloverwrite - 使用磁盘上已有的 DLL 文件中的干净版本覆盖 ntdll.dll 的“.text”部分
-
delegates - 覆盖 ntdll.dll + 动态函数解析 + 使用 AES 进行字符串加密 + XOR 编码
-
remote - 覆盖 ntdll.dll + 动态函数解析 + 使用 AES 进行字符串加密 + 将文件发送到远程机器 + XOR 编码
-
all-modules-获取所有模块的信息(不仅仅是 lsasrv.dll)
用法:
NativeDump.exe [DUMP_FILE]
技术细节:创建最小的 Minidump 文件
读完Minidump未记录的结构后,其结构可以总结为:
- 标头:签名(“MDMP”)、流目录的位置和流数量等信息
- 流目录:每个流一个条目,包含每个流的类型、总大小和在文件中的位置
- 流:每个流包含与流程相关的不同信息,并有自己的格式
- 区域:进程中每个内存区域可读取的实际字节数
原文始发于微信公众号(TtTeam):转储 lsass - NativeDump
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论