
Инструмент Proof-of-Concept для извлечения учётных данных из защищённых сессий на современных системах Windows.

DumpGuard — это инструмент для кражи учётных данных и исследования протоколов для современных Windows-систем. Он злоупотребляет протоколом Remote Credential Guard для восстановления материала учётных данных даже при включённом Credential Guard, а также включает путь пакета аутентификации Microsoft v1 для извлечения NTLM на основе сессий.
Текущий функционал включает:
Вы можете скачать предварительно собранные копии из раздела релизов этого репозитория.
Отказ от ответственности: Данный инструмент предоставляется исключительно для образовательных и легитимных целей тестирования. Автор этого репозитория не одобряет и не поддерживает никакие виды неправомерного использования и не несёт ответственности за ущерб или юридические последствия, возникшие в результате использования данного инструмента.
В следующей таблице приведены реализованные на данный момент техники.
DumpGuard использует модель command и target.
command выбирает технику извлечения.target выбирает, работать с текущей сессией или перечислять сессии.Поддерживаемые команды:
/command:ntlmv1/command:ntlmv2/command:kerbtgs/command:msv10Поддерживаемые цели:
/target:self/target:allОбщие параметры Remote Credential Guard:
/domain:<DOMAIN>/username:<SAMACCOUNTNAME>/password:<PASSWORD>/spn:<SPN>Параметры Kerberos TGS:
/tgsdomain:<DOMAIN>/tgsspn:<SPN>Если /spn опущен для учётной записи компьютера, DumpGuard по умолчанию использует HOST/<computername>.
Для извлечения материала учётных данных текущего пользователя из непривилегированного контекста DumpGuard аутентифицируется на учётной записи с включённым SPN с помощью Remote Credential Guard, а затем отправляет последующие запросы через установленный контекст безопасности.
Это работает независимо от состояния Credential Guard, но требует учётных данных для учётной записи с включённым SPN.
Требуемые привилегии: Нет.
NTLMv1:
DumpGuard.exe /command:ntlmv1 /target:self /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
NTLMv2:
DumpGuard.exe /command:ntlmv2 /target:self /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
Kerberos TGS:
DumpGuard.exe /command:kerbtgs /target:self /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>] [/tgsdomain:<DOMAIN>] /tgsspn:<service/host>
Если /tgsdomain опущен, по умолчанию используется значение /domain из Remote Credential Guard.
Для извлечения материала учётных данных всех доступных в данный момент пользователей из привилегированного контекста DumpGuard олицетворяет токены из запущенных процессов, аутентифицируется на учётной записи с включённым SPN с помощью Remote Credential Guard, а затем отправляет последующие запросы через установленный контекст безопасности.
Это работает независимо от состояния Credential Guard, но требует учётных данных для учётной записи с включённым SPN.
Требуемые привилегии: SYSTEM или Administrator (требуется SeImpersonatePrivilege).
NTLMv1:
DumpGuard.exe /command:ntlmv1 /target:all /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
NTLMv2:
DumpGuard.exe /command:ntlmv2 /target:all /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
Kerberos TGS:
DumpGuard.exe /command:kerbtgs /target:all /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>] [/tgsdomain:<DOMAIN>] /tgsspn:<service/host>
Если /tgsdomain опущен, по умолчанию используется значение /domain из Remote Credential Guard.
Для извлечения NTLM-ответов для текущих аутентифицированных пользователей из привилегированного контекста SYSTEM DumpGuard напрямую взаимодействует с NTLM SSP и запрашивает ответы на вызовы для каждой обнаруженной сессии входа.
Это работает только при следующих условиях:
Требуемые привилегии: SYSTEM (требуется SeTcbPrivilege).
DumpGuard.exe /command:msv10
Эту атаку также можно выполнить с помощью LSA Whisperer с помощью следующей команды:
lsa-whisperer.exe msv1_0 Lm20GetChallengeResponse --luid {session id} --challenge {challenge to clients} [flags...]
Я реверс-инжинирил и воссоздал интерфейсы, предоставляемые Credential Guard (LsaIso.exe), и включил их в этот репозиторий для всех, кто заинтересован в дальнейшем исследовании.
По состоянию на октябрь 2025 года реализованы следующие интерфейсы:
Спасибо SpecterOps за поддержку этого исследования и моим коллегам, которые помогали в его разработке.
| Техника | Команда | Требуется SYSTEM | Требуется Учётная запись SPN | Может извлечь Credential Guard |
|---|
| Извлечение NTLMv1 через Remote Credential Guard | ntlmv1 | self: ❌all: ✅ | ✅ | ✅ |
| Извлечение NTLMv2 через Remote Credential Guard | ntlmv2 | self: ❌all: ✅ | ✅ | ✅ |
| Извлечение Kerberos TGS через Remote Credential Guard | kerbtgs | self: ❌all: ✅ | ✅ | ✅ |
| Извлечение NTLMv1 через пакет аутентификации Microsoft v1 | msv10 | ✅ | ❌ | ❌ |