В этой статье я покажу нес­коль­ко атак на Active Directory, пореко­мен­дую ути­литы для экс­плу­ата­ции и рас­ска­жу об инди­като­рах, на которые нуж­но обра­щать вни­мание при рас­сле­дова­нии инци­ден­тов. А упражнять­ся будем на лабора­тор­ных работах Sherlocks с пло­щад­ки Hack The Box.
 

Почему стоит уделить особое внимание именно атакам на Active Directory?

Ин­фраструк­тура мно­гих ком­паний пос­тро­ена на осно­ве служ­бы катало­гов Active Directory. Даже с уче­том того, что сеть может содер­жать неболь­шое количес­тво хос­тов, сер­веров, сер­висов и служб, за дос­таточ­но корот­кий про­межу­ток вре­мени в сис­теме про­исхо­дят тысячи событий, из‑за чего ста­новит­ся зат­рудни­тель­но ана­лизи­ровать компь­ютер­ные инци­ден­ты.

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

Все это спо­собс­тву­ет тому, что ребятам из блю‑тима важ­но обла­дать зна­ниями в сфе­ре безопас­ности инфраструк­туры и уметь быс­тро реаги­ровать на подоб­ные инци­ден­ты, а так­же находить ошиб­ки в кон­фигура­ции AD.

 

Kerberoasting

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

Про­токол Kerberos в Active Directory исполь­зует­ся для аутен­тифика­ции поль­зовате­лей и пре­дос­тавле­ния дос­тупа к служ­бам. Ког­да поль­зователь пыта­ется получить дос­туп к ресур­су, который управля­ется име­нем субъ­екта‑служ­бы (SPN), при исполь­зовании Kerberos кон­трол­лер домена соз­дает сер­висный билет (ST) и шиф­рует его с исполь­зовани­ем хеша пароля SPN. Пос­ле это­го веб‑сер­вер рас­шифро­выва­ет и под­твержда­ет под­линность ST.

Од­нако, если зап­рос на получе­ние сер­висно­го билета исхо­дит от самого кон­трол­лера домена, про­вер­ка того, име­ет ли поль­зователь необ­ходимые пра­ва для дос­тупа к пре­дос­тавля­емым SPN ресур­сам, не выпол­няет­ся.

Те­перь о самом инте­рес­ном: зло­умыш­ленни­ки, зная кон­крет­ную служ­бу (или SPN), которую они намере­ны ата­ковать, могут отпра­вить зап­рос на ST с кон­трол­лера домена и получить обратно ST, зашиф­рован­ный хешем пароля соот­ветс­тву­юще­го SPN.

Час­то для про­веде­ния ата­ки Kerberoasting исполь­зуют ути­литу GetUserSPNs из ком­плек­та дос­таточ­но мощ­ного инс­тру­мен­та ауди­та Impacket. Таким обра­зом, зло­умыш­ленник получа­ет хеш SPN, который он может проб­рутить в авто­ном­ном режиме и зав­ладеть паролем учет­ки в откры­том виде. Если корот­ко, то в этом и зак­люча­ется вся суть опи­сан­ной ата­ки. В рам­ках MITRE ATT&CK Kerberoasting она отно­сит­ся к под­техни­ке T1558.003.

 

Campfire-1

Итак, чита­ем опи­сание лабора­тор­ной работы Campfire-1, ска­чива­ем архив, рас­паковы­ваем его и видим, что нам пре­дос­тавле­ны prefetch-фай­лы машины жер­твы, жур­налы событий рабочей стан­ции и кон­трол­лера домена.

Нач­нем поиск игол­ки в сто­ге сена с прос­мотра событий с кодом 4769 в жур­нале безопас­ности на кон­трол­лере домена. Этот код обоз­нача­ет зап­рос билета служ­бы Kerberos.

Да­же в сред­ней по раз­меру инфраструк­туре Active Directory такие зап­росы могут про­исхо­дить боль­ше тысячи раз за пару минут, поэто­му отфиль­тру­ем средс­тво прос­мотра событий по ID 4769, что зна­читель­но упростит наш поиск.

Те­перь нам пред­сто­ит отсе­ять обыч­ные опе­рации AD от подоз­ритель­ных. Для это­го рас­смот­рим фор­му события попод­робнее.

Здесь мы видим, что учет­ная запись DC01\$ зап­росила сер­висный билет для сер­виса, наз­ванно­го DC01\$. В Windows име­на, закан­чива­ющиеся сим­волом дол­лара (\$), обыч­но явля­ются учет­ными запися­ми служб и машин­ными учет­ными запися­ми. Ана­логич­но служ­ба DC01$ свя­зана с этой учет­ной записью служ­бы.

Все это отно­сит­ся к стан­дар­тным опе­раци­ям AD. Ниже мы можем уви­деть параметр под наз­вани­ем «Тип шиф­рования билета» со зна­чени­ем 0x12, что экви­вален­тно AES256-CTS-HMAC-SHA1-96. В легитим­ных слу­чаях исполь­зования опе­раций с билета­ми Kerberos тип шиф­рования будет 0x12 или 0x11.

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

info

Все основные инс­тру­мен­ты с откры­тым исходным кодом, такие как Impacket и Rubeus, зап­рашива­ют билеты с типом шиф­рования RC4.

За­пом­ним иден­тифика­торы, которые помогут быс­тро отсле­дить необ­ходимое событие с подоз­рени­ем на Kerberoasting, поэто­му обра­щаем вни­мание на сле­дующие важ­ные момен­ты.

  1. Учет­ные записи, которые не явля­ются учет­ной записью служ­бы или машины (и не закан­чива­ются сим­волом $). Сле­дова­тель­но, под подоз­рени­ем любая стан­дар­тная учет­ная запись домена поль­зовате­ля (эта учет­ная запись была ском­про­мети­рова­на, и с ее помощью зло­умыш­ленник совер­шил ата­ку).

  2. Наз­вания служб, которые не закан­чива­ются сим­волом $.

  3. Тип шиф­рования билета 0x17, что соот­ветс­тву­ет шиф­рованию RC4, которое поз­волит зло­умыш­ленни­кам лег­ко взло­мать хеш.

С помощью перечис­ленных кри­тери­ев лег­ко находим нуж­ное событие.

Вид­но, что учет­ная запись домена alonzo.spire зап­росила билет для служ­бы MSSQLService с типом шиф­рования 0x17 с компь­юте­ра, име­юще­го IP-адрес 172.17.79.129. Запом­ним эти инди­като­ры ком­про­мета­ции, пос­коль­ку даль­нейший ана­лиз будет осно­вывать­ся на пос­тро­ении тай­млай­на от это­го события с исполь­зовани­ем IP-адре­са и име­ни учет­ной записи.

Поп­робу­ем разоб­рать­ся с тем, какие дей­ствия про­исхо­дили от име­ни учет­ки alonzo.spire. Для это­го откро­ем жур­нал событий PowerShell. Дата и вре­мя ранее най­ден­ного нами события Kerberoasting — 2024-05-21 03:18:09 (и да, не забыва­ем перево­дить вре­мя в UTC). В жур­нале событий PowerShell на хос­те ищем подоз­ритель­ную активность при­мер­но в это же вре­мя.

По­доз­ревая, что вре­донос­ные дей­ствия были совер­шены с исполь­зовани­ем powershell.exe, отфиль­тру­ем события по ID 4104 (в этих событи­ях мож­но будет уви­деть тело выпол­няемо­го скрип­та).

И дей­стви­тель­но, находим подоз­ритель­ное событие с бай­пасом выпол­нения сце­нария PowerShell бук­валь­но за пару минут до совер­шения ата­ки.

Та­кое дей­ствие поз­воля­ет выпол­нять сце­нарии в сеан­се PowerShell. Из даль­нейше­го ана­лиза событий вид­но, что все они были частью одно­го сце­нария.

Об­наруже­ны доказа­тель­ства злов­реднос­ти сце­нария PowerView.ps1, который исполь­зовал­ся для совер­шения дей­ствий на эта­пе пос­тэкс­плу­ата­ции.

Приш­ло вре­мя про­ана­лизи­ровать фай­лы пред­варитель­ной заг­рузки. Для это­го вос­поль­зуем­ся ути­литой PECmd Эри­ка Цим­мерма­на. Пре­обра­зуем prefetch-фай­лы в .csv:

PECmd.exe -d "путь/к/папке/с/файлами/предварительной/загрузки" --csv . --csvf наш_ксв_файл.csv

Для более удоб­ного ана­лиза с помощью Timeline Explorer откры­ваем .csv и филь­тру­ем дату инци­ден­та по пос­ледне­му запус­ку.

Со­пос­тавив вре­мен­ные мет­ки событий, находим, что в инте­ресу­ющий нас про­межу­ток вре­мени запус­кался RUBEUS.EXE — инс­тру­мент, исполь­зуемый при пен­тесте и ата­ках на AD.

 

Меры предотвращения

Что­бы пре­дот­вра­тить такие ата­ки, важ­но исполь­зовать длин­ные и слож­ные пароли для учет­ных записей служб. Это зна­читель­но замед­лит взлом хешей.

Для при­виле­гиро­ван­ных служб рас­смот­ри воз­можность при­менять управля­емые груп­пы сер­висных учет­ных записей (GMSA), что­бы гаран­тировать исполь­зование длин­ных, слож­ных паролей, которые час­то меня­ются.

Ре­али­зация управле­ния при­виле­гиро­ван­ным дос­тупом (PAM) так­же поможет огра­ничить воз­дей­ствие при­виле­гиро­ван­ных учет­ных дан­ных и умень­шить повер­хность ата­ки для Kerberoasting, одновре­мен­но обес­печивая монито­ринг всех изме­нений раз­решений для групп безопас­ности.

 

AS-REP Roasting

А теперь еще нем­ного теории, что­бы понять, что это за зверь такой — AS-REP Roasting. Зап­рос сер­вера аутен­тифика­ции (AS-REQ) обыч­но называ­ют пред­варитель­ной аутен­тифика­цией Kerberos. Пер­вое, что про­исхо­дит во вре­мя аутен­тифика­ция внут­ри Kerberos, — это зап­рос аутен­тифика­ции к кон­трол­леру домена, что­бы мож­но было про­верить юзе­ра, пыта­юще­гося прой­ти аутен­тифика­цию.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии