
Эксплойт повышения привилегий Windows, злоупотребляющий привилегией SeImpersonate через RPC DiagTrack и использующий Secondary Logon для получения INTERACTIVE-токена и доступа к SYSTEM.
Ещё один способ злоупотребления привилегией SeImpersonate.
Этот PoC основан на этом блоге от @crisprss.
В этом блоге @crisprss показал интересный метод злоупотребления привилегией SeImpersonate с использованием AzureAttestService, который поставляется с недавними версиями SQL Server. PoC для этого можно найти здесь: https://github.com/crisprss/magicAzureAttestService.
В этом же блоге он также показывает ещё один возможный способ злоупотребления привилегией SeImpersonate через службу DiagTrack, но автору не удалось превратить его в полноценный эксплойт. Это взято из того блога (переведено с китайского, так что может быть не на 100% точным):
But just when I thought it could be triggered normally, I didn't realize that this service is transparent to service users, which also means that it is not feasible to simulate pipeline privilege escalation through service users, because service users such as sqlserver There is no way to call the RPC interface, which also means that you can only escalate rights from the administrator user to SYSTEM in this way, so here is just a process sharing
И да, если попытаться вызвать метод, предоставляемый этим RPC-сервером, из-под учётной записи службы, вы получите ошибку access denied.

Но почему обычные непривилегированные пользователи могут вызывать этот метод?
Моё предположение состояло в том, что учётные записи служб работают в сессии 0, и поэтому в их токене нет NT AUTHORITY\INTERACTIVE SID, тогда как у обычных пользователей, вошедших через RDP или интерактивно, он есть.
Так как же получить NT AUTHORITY\INTERACTIVE SID из сессии 0? На самом деле очень просто — служба Secondary Logon сделает это за нас. Мы можем использовать вызов API LogonUser, чтобы получить токен с NT AUTHORITY\INTERACTIVE SID, и нам не нужны действительные учётные данные, так как мы будем использовать тип входа NewCredentials(9). Когда используется тип входа NewCredentials, служба Secondary Logon создаёт новый сеанс входа и копирует токен вызывающего, но также добавляет NT AUTHORITY\INTERACTIVE SID. Это идеальная ситуация для нас, так как нам не нужны действительные учётные данные (учётные данные, используемые с типом входа NewCredentials, не проверяются, пока пользователь не попытается получить доступ к сетевому ресурсу).
Итак, теперь, когда у нас есть токен с NT AUTHORITY\INTERACTIVE SID, сработает ли эксплойт? Да, сработает :D

Этот PoC протестирован на Windows 10 и Windows 2019.
@crisprss - https://www.crisprx.top/archives/561