Пример использования Certify и Certipy с AD CS

Certify и Certipy использование

Служ­бы сер­тифика­тов Active Directory (AD CS) — это нас­тра­иваемые служ­бы для выдачи сер­тифика­тов и управле­ния ими в сис­темах безопас­ности ПО, исполь­зующих тех­нологии откры­тых клю­чей. Сегодня, на примере уязвимой виртуальной машины Authority с пло­щад­ки Hack The Box, два инструмента для получения информа­ции о цен­тре сер­тифика­ции и про­верки уяз­вимых шаб­лонов с помощью ути­литы Certify и Certipy.

Еще по теме: Использование Certify и Rubeus для атаки на ADCS

Пример использования Certify и Certipy

Цен­тры сер­тифика­ции AD CS выда­ют сер­тифика­ты с парамет­рами, которые опре­деля­ются шаб­лонами. Эти шаб­лоны пред­став­ляют собой наборы политик регис­тра­ции и пре­доп­ределен­ных парамет­ров сер­тифика­та и содер­жат раз­ные све­дения, нап­ример:

  • срок дей­ствия сер­тифика­та;
  • пред­назна­чение сер­тифика­та;
  • спо­соб ука­зания субъ­екта;
  • ко­му раз­решено зап­росить сер­тифика­ты.

Каж­дый ЦС пред­при­ятия пос­тавля­ется с шаб­лонами по умол­чанию, и общепри­нята прак­тика брать их за осно­ву. То есть если ты хочешь дать кли­енту сер­тификат для работы с 802.1x, то нуж­но взять копию шаб­лона Computer, а если S/MIME-сер­тифика­ты, то копию шаб­лона User. Наз­вания шаб­лонов могут сбить с тол­ку, одна­ко фун­дамен­таль­ной раз­ницы меж­ду ними нет. Каж­дый шаб­лон может выдать сер­тификат любого типа, если он запол­нен пра­виль­ными парамет­рами. Но шаб­лоны сер­тифика­тов — это так­же защища­емые объ­екты в Active Directory, то есть они име­ют дес­крип­тор безопас­ности, ука­зыва­ющий, какие учас­тни­ки Active Directory име­ют опре­делен­ные пра­ва для шаб­лона.

По­лучить информа­цию о цен­тре сер­тифика­ции и про­верить уяз­вимые шаб­лоны мож­но с помощью ути­литы Certify.

Ин­форма­ция из ADCS
Ин­форма­ция из ADCS

Ви­дим уяз­вимый шаб­лон сер­тифика­та CorpVPN. Этот сер­тификат уяз­вим к тех­нике повыше­ния при­виле­гий ESC1:

  • Enrollment Permissions показы­вает, что компь­юте­ры домена могут зап­росить сер­тификат без утвер­жде­ния менед­жером;
  • pKIExtendedKeyUsage показы­вает, что сер­тификат может исполь­зовать­ся для аутен­тифика­ции в домене (Client Authentication);
  • msPKI-Certificate-Name-Flag содер­жит флаг CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT, говоря­щий о том, что шаб­лон сер­тифика­та поз­воля­ет зап­рашива­ющим лицам ука­зывать имя объ­екта в CSR.

Пос­ледний пункт при­водит к тому, что поль­зователь с низ­кими при­виле­гиями может зап­рашивать сер­тификат с про­изволь­ным SAN, то есть для любого поль­зовате­ля в домене, вклю­чая адми­нис­тра­тора. Затем мож­но исполь­зовать этот сер­тификат для аутен­тифика­ции от име­ни ука­зан­ного поль­зовате­ля.

Но так как получить сер­тификат может толь­ко компь­ютер, соз­даем под­кон­троль­ную учет­ную запись компь­юте­ра.

Соз­дание учет­ной записи компь­юте­ра
Соз­дание учет­ной записи компь­юте­ра

Для работы вер­сии Certipy на Python нуж­но добавить в /etc/hosts записи для компь­юте­ра и цен­тра сер­тифика­ции.

А от име­ни соз­данно­го компь­юте­ра зап­росим сер­тификат для поль­зовате­ля Administrator.

По­луче­ние сер­тифика­та адми­нис­тра­тора
По­луче­ние сер­тифика­та адми­нис­тра­тора

На этом все. В следующей статье продолжим и поговорим про получение билета TGT с помощью техники Pass the certificate.

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

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

Добавить комментарий