Категория > Новости > HTB Search. Обходим AMSI в PowerShell Web Access при пентесте машины на Windows - «Новости»

HTB Search. Обходим AMSI в PowerShell Web Access при пентесте машины на Windows - «Новости»


7-05-2022, 00:00. Автор: Макар
Hack The Box. Ее уро­вень слож­ности — hard.

warning


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



 

Разведка


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

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


10.10.11.129 search.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).



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

У нас есть целая куча откры­тых пор­тов:



  • 53 — служ­ба DNS;

  • 80 (HTTP) — веб‑сер­вер Microsoft IIS/10.0;

  • 88 — служ­ба Kerberos;

  • 135 — служ­ба уда­лен­ного вызова про­цедур (Microsoft RPC). Исполь­зует­ся для опе­раций вза­имо­дей­ствия кон­трол­лер — кон­трол­лер и кон­трол­лер — кли­ент;

  • 139 — служ­ба сеан­сов NetBIOS, NetLogon;

  • 389 — служ­ба LDAP;

  • 443 (HTTPS) — веб‑сер­вер Microsoft IIS/10.0;

  • 445, 8172 — служ­ба SMB;

  • 464 — служ­ба сме­ны пароля Kerberos;

  • 593 (HTTP-RPC-EPMAP) — исполь­зует­ся в служ­бах DCOM и MS Exchange;

  • 636 — LDAP с шиф­ровани­ем SSL или TLS;

  • 3268 (LDAP) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру;

  • порт 3269 (LDAPS) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру через защищен­ное соеди­нение;

  • порт 9389 — веб‑служ­бы AD DS.


На хос­те работа­ет мно­го служб. Пер­вым делом про­веря­ем SMB и DNS, но они ничего не дают. Оста­ется толь­ко веб. Так как на пор­те 443 исполь­зует­ся про­токол HTTPS, сра­зу обра­тим вни­мание на его сер­тификат. Поле commonName содер­жит домен­ные име­на, для которых дей­стви­телен дан­ный сер­тификат. Nmap показы­вает эти нас­трой­ки в резуль­татах ска­ниро­вания, что поз­воля­ет нам быс­тро опре­делить исполь­зуемое имя. Добав­ляем его в файл /etc/hosts:


10.10.11.129 search.htb research
Глав­ная стра­ница сай­та

Изу­чая сайт, обра­щаем вни­мание на спи­сок сот­рудни­ков.


Пер­сонал сер­виса

Так как на хос­те работа­ет Kerberos, мы можем про­верить, сущес­тву­ет ли какая‑то учет­ная запись. В этом нам поможет ата­ка ASRep Roasting. Смысл в том, что мы посыла­ем на сер­вер аутен­тифика­ции ано­ним­ный зап­рос для пре­дос­тавле­ния опре­делен­ному поль­зовате­лю дос­тупа к какой‑либо услу­ге. На что сер­вер отве­чает одним из трех дей­ствий:



  • пре­дос­тавля­ет хеш;

  • от­веча­ет, что у это­го поль­зовате­ля не выс­тавлен флаг UAF Dont Require PreAuth;

  • го­ворит, что такого поль­зовате­ля нет в базе Kerberos.


Но спер­ва сос­тавим спи­сок поль­зовате­лей. С помощью сле­дующе­го кода мы можем сос­тавить все воз­можные ком­бинации име­ни поль­зовате­ля:


#!/usr/bin/python3
names = ["Keely Lyons", "Dax Santiago", "Sierra Frye", "Kyla Stewart", "Kaiara Spencer", "Dave Simpson", "Ben Thomp
son", "Chris Stewart"]
list = ["Administrator", "Guest"]
for name in names:
n1, n2 = name.split(' ')
list.append(n1)
list.append(n1+n2)
list.append(n1+"."+n2)
list.append(n1+n2[0])
list.append(n1+"."+n2[0])
list.append(n2[0]+n1)
list.append(n2[0]+"."+n1)
list.append(n2)
list.append(n2+n1)
list.append(n2+"."+n1)
list.append(n2+n1[0])
list.append(n2+"."+n1[0])
list.append(n1[0]+n2)
list.append(n1[0]+"."+n2)
for n in list:
print(n)

Сох­раним спи­сок в файл и выпол­ним про­вер­ку с помощью kerbrute. Для это­го исполь­зуем опцию userenum и ука­жем адрес (--dc), домен (-d) и спи­сок с веро­ятны­ми име­нами учет­ных записей.


kerbrute_linux_amd64 userenum --dcsearch.htb -dsearch.htb users.txt
HTB Search. Обходим AMSI в PowerShell Web Access при пентесте машины на Windows - «Новости»
Спи­сок поль­зовате­лей

Все ска­ниро­вание заняло при­мер­но секун­ду, а мы получа­ем три сущес­тву­ющих акка­унта. С помощью скрип­та GetNPUsers.py из пакета impacket при­меня­ем к получен­ным име­нам ASRep Roasting в надеж­де получить зашиф­рован­ный пароль поль­зовате­ля. Но безус­пешно.


GetNPUsers.py search.htb/-usersfileusers.txt
Про­вер­ка ASRep Roasting

Пот­ратив очень мно­го вре­мени на поиск даль­нейше­го пути, я нашел на сай­те фотог­рафию http://search.htb/images/slide_2.jpg каких‑то записей.


Глав­ная стра­ница сай­та

При уве­личе­нии кар­тинки ста­ло понят­но, что это спи­сок дел, сре­ди которых есть такая строч­ка: «Send password to Hope Sharp».


За­мет­ки поль­зовате­ля

Про­веря­ем это имя и узна­ем, что такой акка­унт в сис­теме есть.


Про­вер­ка сущес­тво­вания име­ни поль­зовате­ля

Те­перь мы можем про­верить и ука­зан­ный пароль с помощью CrackMapExec.


crackmapexec smb search.htb -uusers.txt -p 'IsolationIsKey?'
Password Spraying с помощью CME

И получа­ем пер­вую учет­ку!



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