
Скрытный сборщик локальных паролей в памяти (SILPH): дамп LSA, SAM и DCC2 с помощью косвенного системного вызова

SILPH — это инструмент с открытым исходным кодом для красных команд, предназначенный для извлечения секретов LSA, хэшей SAM и учётных данных DCC2 полностью в памяти, без записи каких-либо файлов на диск.
В отличие от своего предшественника go-secdump, SILPH создан для интеграции в фреймворк Orsted C2 и предназначен для запуска непосредственно на хосте Windows, что позволяет избежать необходимости создания службы через RPC.
Сначала клонируйте и скомпилируйте (вам понадобится go):
git clone [email protected]:almounah/silph.git
cd silph
GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-s -w"
Затем запустите silph.exe.
PS C:\Users\haroun> Z:\silph.exe
███████╗██╗██╗ ██████╗ ██╗ ██╗
██╔════╝██║██║ ██╔══██╗██║ ██║
███████╗██║██║ ██████╔╝███████║
╚════██║██║██║ ██╔═══╝ ██╔══██║
███████║██║███████╗██║ ██║ ██║
╚══════╝╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝
Stealthy In-Memory Password Harvester
"Well… I think I wanted to be like Eris."
Usage: Z:\silph.exe [options]
-dcc2
dump dcc2
-lsa
dump lsa
-sam
dump sam
Новый модуль silph скоро будет добавлен в Orsted C2. За подробностями обращайтесь к документации Orsted.
Мне нужен был инструмент, интегрированный в мой C2, для извлечения SAM и LSA.
Проблема в том, что я не находил инструментов (или, по крайней мере, я их пропустил), которые делали бы это, соблюдая два условия:
Кроме того, изучая тему, я наткнулся на очень интересную статью https://g3tsyst3m.com/threat%20hunting/Detecting-SAM-registry-hive-dumps-using-Elastic!/.
По сути, автор показывает, как при активации некоторых опций событие сообщит синим командам о дампе SAM. Затем он передал это событие в Elastic. Вы можете увидеть сработавшее событие здесь

Предоставленный в статье код на Python, генерирующий событие, использует RegOpenKeyEx и RegSaveKeyEx.
Существует множество техник для дампа чувствительных разделов реестра Windows. Распространённые подходы включают утилиты и BOF, которые сохраняют кусты SAM, SYSTEM и SECURITY на диск с помощью таких инструментов, как команда reg или пользовательские скрипты.
Другой подход заключается в создании теневой копии тома и извлечении кустов реестра из снимка.
go-secdump представил другую технику. При первом выпуске в 2023 году он полагался на службу, которая изменяла DACL реестра, чтобы предоставить себе достаточный доступ. Это позволяло службе перечислять подразделы и запрашивать их имена и значения, что позволяло восстанавливать секреты в открытом виде.
API реестра Windows, используемые для перечисления ключей и значений, работают с дескрипторами реестра, а не с файловыми объектами, что позволяет выполнять эти операции без записи данных на диск.
В 2025 году Synacktiv отправил pull request в Impacket с внедрением regsecrets.py, который реализует похожий подход. В отличие от go-secdump, этот метод избегает изменения DACL, открывая дескрипторы реестра с флагом REG_OPTION_BACKUP_RESTORE, предоставляющим необходимые разрешения для перечисления и запросов.
SILPH следует этому подходу, используя REG_OPTION_BACKUP_RESTORE через нативные вызовы NT, разрешённые из ntdll, и используя проект Superdeye для косвенных системных вызовов. Поскольку SILPH предназначен для локального запуска на целевой системе, создание службы не требуется, что снижает потенциальное обнаружение на основе сети, связанное с удалёнными инструментами, такими как Impacket.
Во время тестирования запуск SILPH в тех же условиях, что и раньше, не генерировал дополнительных записей в журнале событий Windows по сравнению с базовым выполнением.
SILPH назван в честь Сильфиетты из Mushoku Tensei.
В начале своей жизни Сильфиетта сталкивается с изоляцией и травлей из-за своих зелёных волос, из-за чего другие ассоциируют её с пугающей расой Суперд. Вместо того чтобы преодолеть это силой или статусом, она растёт через обучение, настойчивость и руководство, постепенно развивая дисциплину и контроль.
Это отражает философию дизайна SILPH: самодостаточный инструмент, который работает тихо, выполняется полностью в памяти и бесшовно интегрируется, не оставляя постоянного следа.