Бэкграунд (Мотивация, обзор и зачем?)
Зачем нам использовать инструменты, описанные в статье далее? А кто не хочет получить SYSTEM-Shell (т.е командной строки от системы, прим. пер.)? Благодаря Cube0x0, пентестеры получили инструмент, называемый KrbRelay, дающий возможность эксплуатации “No-Fix” LPE через аутентификацию Kerberos. Взгляните на требования, приложенные ниже, они необходимы для понимания и дальнейшей отработки этого гайда:
- Контроллер домена без принудительной LDAP-подписи.
- Контроллер домена с собственным сертификатом аутентификации сервера (для PKINIT-аутентификации).
- Возможность записи в msDs-KeyCredentialLink на ПК жертвы.
В дополнении к KrbReplay, в этом гайде используется Rubeus, для получения тикета (ticket) используя shadow credentials (это «теневые учетные данные», однако, я сохраню это понятие «as is», прим. пер.), он будет использоваться для выполнения запроса S4U2self, это необходимо, чтоб позже выдавать себя за DA (Domain Admin). После того, как мы смогли импортировать тикет, мы воспользуемся SCMUACBypass от Tyranid, это необходимо для создания SYSTEM-shell. Этот процесс практически идентичен тому, что используется в режиме ShadowCred для KrbRelayUp от dec0ne. Рекомендую ознакомится с этим поближе для получения большей информации.
Почему бы просто не использовать KrbRelayUp?
Хороший вопрос! KrbRelayUp это замечательный инструмент, где собрано «все в одном». Конечно, я заметил несколько аспектов, которые не работают как ожидалось после упаковки моим рефлективным загрузчиком (reflective loader) для обхода AV/EDR. Если говорить конкретно, то я не смог запустить SCMUACBypass в KrbRelayUp после упаковки, чтоб запустить SYSTEM-Shell.
Часть 0: Подготовка Инструментов для Обхода AV/EDR
Как было сказано ранее, этот гайд сфокусируется на том, как выполнить LPE с помощью shadow credential в реальной среде с включенными AV/EDR. Поэтому, большинство наших инструментов необходимо будет доставить через рефлективный загрузчик, это должно предотвратить обнаружение во время выполнения. К счастью, мой публичный Nimcrypt2 PE packer сработал на ура, когда я проворачивал этот трюк с популярными EDR, именно его я буду использовать для этого гайда.
Ниже предоставлен список инструментов, необходимых нам для реализации LPE. Они будут упакованы, чтоб предотвратить их обнаружение:
- KrbRelay
- Rubeus
- Whisker
Эти инструменты были упакованы Nimcrypt2 PE packer со следующими аргументами:
Код:
./nimcrypt -f KrbRelay.exe -t csharp -u -e -o NimCKrbR.exe
Последняя тулза, которая будет использоваться нами — SCMUACBypass. Она не требует упаковки, поскольку она не блокируется различными AV и EDR. Мои упаковщики, похоже, также не дают исполняться тулзе должным образом, поэтому придется преобразовывать её вручную, если это будет необходимо в будущем.
Теперь, когда у нас есть все инструменты, мы можем перенести их на таргет и начать нашу эксплуатацию LPE!
Часть 1: Добавление Shadow Credential Используя KrbRelay
Первым шагом будет добавление на наш таргет shadow credential, используя KrbRelay. Это весьма просто, так как это описано в README самого KrbRelay. Мы используем первый пример из KrbRelay README, используя в качестве SPN наш контроллер домена с отключенной LDAP подписью. После выполнения данной команды, мы должны получить сертификат для наших shadow credential, который будет использован для получения тикета (ticket) Kerberos для учетной записи таргета через PKINIT:
Код:
.\NimCKrbR.exe -spn ldap/virtualdc.testlab.local -clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8 -shadowcred
Часть 2: Запрос Тикета Учетной Записи через PKINIT
После как мы получили сертификат для shadow credential, мы можем использовать его вместе с Rubeus, для создания запроса тикета Kerberos для учетной записи через PKINIT. Пример команды, приведенный ниже, будет использовать AES-256 в качестве шифрования в случаях, когда RC4 не поддерживается и указывает на флаг /nowrap, это необходимо для того, чтоб нам было проще скопировать полученный тикет.
Код:
.\NimCRube.exe asktgt /user:RICHARD-PC$ /certificate:CERTIFICATE /password:PASSWORD /enctype:AES256 /nowrap
Часть 3: Выполнение S4U2self для Service Ticket и выдача себя за DA
Следующей частью нашего процесса эксплуатации будет использование тикета, полученного в предыдущем этапе, для выполнения S4U2self. Это необходимо для получения Service Ticket локальной машины, выдавая себя за DA (Domain Admin). Чисто технически, любой пользователь домена, имеющий права локального администратора на локальной машине, также может быть использован для «мимикрии» (англ. «impersonation»), однако, на мой взгляд, DA слегка упрощает этот процесс. Мы проделаем это через Rubeus, при этом не позабыв выставить флаг /ptt, чтобы полученный Service Ticket был автоматически импортирован в текущую сессию.
Код:
.\NimCRube.exe s4u /self /user:RICHARD-PC$ /impersonateuser:randy /altservice:host/RICHARD-PC /ptt /ticket:TICKET
Часть 4: Создание Командной Строки от Имени SYSTEM через SCMUACBypass
Последним шагом в процессе эксплуатации — использование SCMUACBypass для создания SYSTEM-Shell. Эта тулза будет использовать импортированный тикет для аутентификации в локальной системе и создания новой специальной службы, поэтому перед выполнением SCMUACBypass рекомендую убедиться, что все выглядит нормально, используя команду
klist:
Код:
klist
.\SCMUACBP.exe
BOOM SYSTEM SH3LL !!!
Часть 5: Чистка
Это опциональный шаг; Но все же рекомендуется это сделать, тем более, если вы планируете повторить процесс эксплуатации на этом же таргете позже. Следующая команда может быть запущена с нашего полученного SYSTEM-shell, для того, чтоб убрать службу, созданную SCMUACBypass:
Код:
sc delete UacBypassedService
Наши shadow credential могут быть удалены с локальной машины с помощью Whisker. Мы можем запустить эту команду для получения DeviceID:
Код:
.\NimCWhisker.exe list /target:RICHARD-PC$
Удалить shadow credential можно вот так:
Код:
.\NimCWhisker.exe remove /deviceID:DEVICE_ID /target:RICHARD-PC$
Часть 6: Конец!
На этом наш гайд завершен! Пожалуйста, обращайтесь, в случае если у вас есть вопросы или вы хотите дать свой фидбэк! Кроме того, я записал видео, демонстрирующее весь процесс эксплуатации на полностью обновленном ПК с Windows 10 и включенным Windows Defender. Обязательно посмотрите его, если вам интересно!:
Огромное спасибо этим людям, упомянутым ниже!
- Cube0x0 за KrbRelay
- Harmj0y за Rubeus
- Tyranid (James Forshaw) за SCMUACBypass
- Dec0ne за KrbRelayUp
- Elad Shamir за Whisker
- an0n_r0 за «KrbRelay with RBCD Privelege Escalation HOWTO»
Оригинал: https://icyguider.github.io/2022/05/19/NoFix-LPE-Using-KrbRelay-With-Shadow-Credentials.html
Перевод: atavism