• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

SPN

Tak10

New member
03.09.2025
4
0
Всем доброго времени суток. Пытаюсь разобраться с kerberos и на текущий момент возникло несколько вопросов. Буду очень признателен, если кто подскажет!
Вводные:
Принципал сервиса(SPN) имеет следующую форму: <service class>/<host>:<port>/<service name>, где service-class – это как я понимаю довольно обобщённое название сервиса(Например, все веб-серверы могут быть объединены в класс «http», а SQL — в класс «SqlServer» итд.), host – это доменное имя хоста, на котором работает сервис, port - порт на котором запущена служба, servicename — строка, которая представляет собой уникальное имя (DN), GUID объекта или полностью определенное доменное имя (FQDN) службы или @reаlm.
Обязательными к указанию являются только service-clаss/host
Вопросы:
1)Откуда клиент узнает SPN службы к которой он хочет получить доступ? Клиент узнает на каком хосте и порту работает искомая служба используя dns, а затем использует эту информацию для ldap запросов для получения spn этой службы?
2)Я правильно понимаю что при выдаче ST контроллер домена использует SPN только для того чтобы сопоставить его с конкретной учетной записью от имени которой работает служба, а не с конкретной службой? Тоесть контроллер домена выдает ST не на доступ к конкретной службе а на доступ к конкретной учетной записи от имени которой работает служба, на чем и основаны такие подвиды атак как AnySPN?
3)Как вообще формируется serviceclass в spn? Ведь serviceclass это не конкретное имя службы а просто обобщенное название которое не указывает на какую то конкретную службу напрямую? Я правильно понимаю что строго говоря srviceclass может быть любым произвольным словом, главное что бы сам spn был зарегистрирован на учетную запись от имени которой работает служба? Есть ли какой то стандарт определяющий какие конкретно serviceclass необходимо использовать для каких служб? Из гугла смог найти только то что serviceclass HOST, HTTP и LDAP указывают на то что spn в котором они используются относится к учетной записи машины а не к пользовательской.
 
 
Спасибо за подборку статей. Почитаю на досуге. Как я понимаю конкретно к теме вопроса относится только первая статья в списке. К сожалению не нашел в ней ответа на вопрос о том что за механизм отвечает за то как клиент получает spn интересующей его службы, чтобы в последствии включить его в KRB_TGS_REQ. Из документации microsoft по winapi нашел две функции отвечающие за формирование spn клиентом и обе принимают класс сервиса в качестве одного из параметров. Из чего я сделал вывод что клиент сам формирует spn а не запрашивает его у контроллера домена. При этом то какой класс сервиса включить в генерируемый spn клиент определяет на основе заранее предопределенных microsoft классов которые можно найти по следующей ссылке( ) Подскажите, это верно? Чего я не могу понять так это того как происходит разграничение доступа к разным службам работающим из под одной учетной записи. Например у нас есть две службы на одном хосте и обе они работают из под одной и тойже учетной записи машины. Первая служба например имеет spn http/server1 а вторая spn cifs/server1. При таком раскладе выходит что получив TGS тикет на spn http/server1 с помощью этого тикета я также смогу получить доступ и к cifs/server1 так как оба spn зарегистрированы на одну и туже учетную запись? И другой вопрос это то как быть со службами которые не попадают не под один из классов сервисов приведенных в оф документации по ссылке выше? Выходит если служба не попадает не под один из классов приведенных в документации то администратор самостоятельно придумывает для нее класс сервиса чтобы указать его в spn?
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы