Реальный пример проведения пентеста

Пример пентеста

Мы часто говорим о пентесте и проходим задания с различных площадок для хакеров. Сегодня мы рассмотрим интересный пример пентеста, в котором покажу, как неправильная настройка сер­вера STUN поз­волила мне про­ник­нуть в локальную сеть, обой­ти защиту и про­экс­плу­ати­ровать Log4Shell, зах­ватить вир­туаль­ную инфраструк­туру при помощи SAML-аутен­тифика­ции, прод­винуть­ся во внутренней сети и с помощью атаки Pass the Hash получить домен­ного адми­нис­тра­тора.

Пример пентеста

Все это реальный пример пентеста большой и известной ИТ‑ком­пании. Передо мной была поставлена цель — оце­нить воз­можность взлома и проникновения во внут­реннюю сеть и компрометация хостов.

Рекон

Начинаем по традиции со сканирования и поиск открытых сер­висов. В данном случае с веб‑при­ложе­ния IvaConnect — сервиса для создания видеокон­ференции.

Пример взлома компании

Платформа поз­воля­ет под­клю­чить­ся к видеоконференции по циф­ровому иден­тифика­тору. Путем перебо­ра иден­тифика­торов мероп­риятия я получи­л дос­туп к экспериментальной ком­нате 3333. Далее веб-приложе­ние получа­ет учет­ные дан­ные сервера STUN и под­клю­чает­ся к нему.

  • Логин — ivcs
  • Пароль — ivcs

Про­токол STUN дает возможность уста­новить соеди­нение меж­ду дву­мя узла­ми, находя­щими­ся за NAT, и создать соединение WebRTC. На данном эта­пе так­же возмож­но получить внут­реннюю адре­сацию путем перехвата трафика STUN в сниффере Wireshark.

В данном случае, мне повезло, сер­вер не про­веря­ет, что адрес, по которо­му следует под­клю­чить­ся, расположен в локаль­ной сети. Таким обра­зом хакер может получить дос­туп ко внут­ренним ресур­сам, нап­ример применив инструмент Stunner.

Реальный кейс пентеста

Ес­ли вы обна­ружили неп­равиль­но скон­фигури­рован­ный сервер STUN, Stunner поможет пос­тро­ить SOCKS-прок­си, который перенап­равит весь тра­фик через про­токол TURN во внут­реннюю сеть.

Для это­го можно выполним простую коман­ду:

проведение пентеста

Та­к я смог получить дос­туп к внут­ренней сети:

Первый доступ

Во вре­мя ана­лиза внут­ренней сети я обна­ружи­л PostgreSQL-сер­вер, исполь­зующий такую же учетку, как и STUN-сервер. Внут­ри базы я наш­ел таб­лицу videoconference.lpad, в которой находилась запись для под­клю­чения к LDAP-серверу.

Реальный пример проведения пентеста

Вос­поль­зовав­шись найденной информацией, я под­клю­чился к серверу LDAP, где нашелся, в откры­том виде, еще один пароль в поле description.

Пентест приложения

Учетка из LDAP ока­залась дей­стви­тель­ной, и я получи­л адми­н-дос­туп к сер­веру А. Кро­ме этого, по адре­су vcenter.company.local нашелся сер­вер vCenter с уяз­вимостью Log4Shell. Она‑то и позволит мне выпол­нить код на сер­вере.

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

Пентест практика

Закрепление в целевой системе

В фай­ловой сис­теме сер­вера vCenter лежит файл data.mdb, а в нем сер­тифика­ты для под­писи зап­росов при утен­тифика­ции SAML всех поль­зовате­лей, вклю­чая адми­на.

Чтобы сгенерировать сес­сию через аутен­тифика­цию SAML я использовал инструмент vcenter_saml_login:

Пентест обучение

Используя полученную сес­сию мне уда­лось попасть на vCenter и получить кон­троль над вир­туаль­ной инфраструк­турой.

Пентест хакинг

Попав в vCenter я наш­ел вир­туаль­ную машину express c прой­ден­ной аутен­тифика­цией и дос­тупом в тырнет.

Практика пентеста

Те­перь мож­но отка­зать­ся от STUN-тун­неля и вос­поль­зовать­ся нап­рямую этой вир­туаль­ной машиной для дос­тупа ко внут­ренним ресур­сам.

Да­лее мы наш­ли уяз­вимый к Log4Shell сер­вер VMware Horizon на внеш­нем перимет­ре. На этом сер­вере тоже не было дос­тупа в интернет, и для экс­плу­ата­ции было необ­ходимо под­клю­чение к внеш­нему сер­веру LDAP. Выяс­нилось, что в сети исполь­зует­ся СЗИ, которое обна­ружи­вает попыт­ку экс­плу­ата­ции и обры­вает соеди­нение до LDAP-сер­вера. Со вре­менем ста­ло понят­но, что СЗИ детек­тиру­ет лишь зна­чение java.lang.Runtime.getRuntime, поэто­му мы обфусци­рова­ли полез­ную наг­рузку, а для экс­плу­ата­ции исполь­зовали сер­вер express.

На сер­вере VMware Horizon была воз­можность перех­ватывать пароли поль­зовате­лей в откры­том виде, прос­лушивая порт 8009 (Connection Server — AJP13):

Практика пентеста

Продвижение по сети

С сер­вера horizon.company.ru мы про­изве­ли опрос домен­ного кон­трол­лера и получи­ли информа­цию о поль­зовате­лях, компь­юте­рах, сес­сиях. Затем через procdump сде­лали дамп памяти про­цес­са lsass, содер­жащего NTLM-хеши учет­ной записи инже­нера под­дер­жки, назовем его USER1@internal.RU.

Пентест сети

Даль­ше я изу­чил пра­ва учет­ной записи USER1@internal.RU и обна­ружи­ли, что поль­зователь сос­тоит в груп­пе. Пред­положим, она называ­ется SUPPORT ENGINEERS@internal.RU. У нее есть пра­во ReadLAPSPassword, поз­воля­ющее получить информа­цию о паролях локаль­ного адми­нис­тра­тора на компь­юте­рах поль­зовате­лей.

Повышение привилегий

Пер­вом делом мы исполь­зовали тех­нику Pass the Hash и зап­росили дан­ные у кон­трол­лера домена. Тех­ника, если ты не в кур­се, зак­люча­ется в том, что мож­но исполь­зовать NT-хеш вмес­то пароля, что­бы прой­ти аутен­тифика­цию.

Пентест локальной сети

На машине NSurname.internal.RU обна­ружи­лась уста­нов­ленная сес­сия адми­нис­тра­тора домена ADMINISTRATOR@internal.RU.

Пентест примеры

Ис­поль­зуя получен­ные пра­ва локаль­ного адми­нис­тра­тора, мы сде­лали дамп памяти про­цес­са lsass на компь­юте­ре zz, в резуль­тате чего уда­лось получить пароль адми­нис­тра­тора домена в откры­том виде с помощью ути­лит procdump и mimikatz.

Пентест с нуля

Повышение привилегий

За­тем я аутен­тифици­рова­лся на домен­ном кон­трол­лере DC01 с пра­вами домен­ного адми­нис­тра­тора, поль­зователь pentester был добав­лен в груп­пу Domain Admins для под­твержде­ния целей тес­тирова­ния.

Повышение привилегий пентест

Защита от взлома

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

  • Не­обхо­димо нас­тро­ить STUN-сер­вер таким обра­зом, что­бы он откло­нял зап­росы на под­клю­чение к зарезер­вирован­ным диапа­зонам IP-адре­сов.
  • Ре­гуляр­но обновлять прог­рам­мное обес­печение.
  • Внед­рить пароль­ную полити­ку и не допус­кать хра­нения паролей в откры­том виде.
  • Внед­рить защиту конеч­ных устрой­ств на сер­веры.

И конеч­но, про­водить регуляр­ный ана­лиз защищен­ности и/или тес­тирова­ние на про­ник­новение.

Заключение

Ре­зюми­руя, мож­но ска­зать, что на внеш­ней инфраструк­туре отсутс­тво­вали уяз­вимос­ти, а средс­тва защиты бло­киро­вали все век­торы атак. Но некор­рек­тно скон­фигури­рован­ный сер­вер STUN все‑таки поз­волил попасть во внут­реннюю сеть.

Во внут­ренней сети защит­ные средс­тва тоже бло­киро­вали вре­донос­ный тра­фик, но, обой­дя СЗИ и про­экс­плу­ати­ровав Log4Shell, мы получи­ли дос­туп к гипер­визору и зах­ватили вир­туаль­ную инфраструк­туру, сде­лали дамп памяти, получи­ли домен­ную учет­ную запись, повыси­ли свои при­виле­гии и ста­ли адми­нис­тра­тором домена.

Мож­но сде­лать вывод, что уро­вень зло­умыш­ленни­ка, необ­ходимый для зах­вата ИТ‑инфраструк­туры, дол­жен быть дос­таточ­но высоким. Заказ­чик уви­дел про­белы в сво­ем про­цес­се патч‑менед­жмен­та и про­маш­ки адми­нис­тра­торов — они хра­нили пароли в откры­том виде и исполь­зовали оди­нако­вые пароли на раз­ных сер­висах.

Спасибо Александр!

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

Дима (Kozhuh)

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

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