Категория > Новости > HTB Scrambled. Применяем ASREPRoast и Kerberoasting для атаки на SMB и MS SQL - «Новости»

HTB Scrambled. Применяем ASREPRoast и Kerberoasting для атаки на SMB и MS SQL - «Новости»


1-04-2023, 14:35. Автор: Fraser
Hack The Box.

warning


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



 

Разведка


 

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


До­бав­ляем IP-адрес машины в /etc/hosts, что­бы к ней было удоб­нее обра­щать­ся:


10.10.11.168 scrambled.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).



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

Наш­лось мно­го откры­тых пор­тов, что типич­но для Windows:



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

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

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

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

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

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

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

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

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

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

  • 1433 — СУБД Microsoft SQL Server 2019;

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

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

  • 4411 — какое‑то поль­зователь­ское при­ложе­ние;

  • 5985 — служ­ба WinRM;

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


Все перечис­ленные служ­бы Microsoft пока что ничего нам дать не могут, поэто­му пер­вым делом смот­рим сайт.


Стра­ница IT Services

Сра­зу отме­чаем полез­ную информа­цию: аутен­тифика­ция NTLM отклю­чена.


 

Точка входа


 

OSINT


На одной из стра­ниц находим скрин­шот кон­соли, а в нем вид­но поль­зовате­ля ksimpson. Это очень важ­ная информа­ция!


Стра­ница Reports

На дру­гой стра­нице отме­чаем инс­трук­цию к ПО, работа­юще­му на пор­те 4411. Здесь обра­тим вни­мание на имя сер­вера и домен — dc1.scrm.local. Соот­ветс­тву­ющие записи добав­ляем в файл /etc/hosts.


10.10.11.168 scrambled.htb dc1.scrm.local scrm.local
Стра­ница IT Services

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


Ин­форма­ция о сбро­се пароля 

Kerberos


Мы можем отпра­вить зап­рос ASREP, сущес­тву­ет ли тот или иной акка­унт. Есть воз­можность зап­росить ключ (AS key) Kerberos это­го поль­зовате­ля, ключ будет зашиф­рован с помощью его пароля. Но дело в том, что сер­вер раз­лича­ет отве­ты «дан­ный флаг не уста­нов­лен» и «учет­ная запись не сущес­тву­ет». А зна­чит, если прой­дем­ся по име­нам поль­зовате­лей и для какого‑то нам отве­тят, что флаг не уста­нов­лен, мы узна­ем, что эта учет­ка сущес­тву­ет. Сде­лать такой перебор мож­но с помощью инс­тру­мен­та GetNPUsers из пакета impacket. Имя поль­зовате­ля у нас уже есть.


GetNPUsers.py scrm.local/ksimpson -no-pass
Про­вер­ка сущес­тво­вания поль­зовате­ля

Нам отве­тили, что флаг не уста­нов­лен, а зна­чит, учет­ная запись сущес­тву­ет. Теперь с помощью kerbrute про­верим пароль поль­зовате­ля.


kerbrute_linux_amd64 passwordspray -dscrm.local --dcdc1.scrm.local users.txt ksimpson
Про­вер­ка пароля поль­зовате­ля

Учет­ные дан­ные ока­зались вер­ны, поэто­му мы можем зап­росить тикет поль­зовате­ля и при­менить его как аутен­тифика­тор, вмес­то пароля. В этом нам поможет скрипт getTGT из того же impacket.


impacket-getTGT scrm.local/ksimpson:ksimpson
По­луче­ние тикета поль­зовате­ля ksimpson

Эк­спор­тиру­ем получен­ный тикет и под­клю­чаем­ся к служ­бе SMB. Что­бы уда­лось аутен­тифици­ровать­ся, вре­мя на тво­ем хос­те и на сер­вере дол­жно отли­чать­ся не боль­ше чем на пять минут. Поэто­му сто­ит обно­вить локаль­ное вре­мя по про­токо­лу NTP.


sudo ntpdate scrm.local
export KRB5CCNAME=ksimpson.ccache
impacket-smbclient -kscrm.local/ksimpson@dc1.scrm.local -no-pass
Под­клю­чение к ресур­су SMB

Ко­ман­дой shares получа­ем спи­сок ресур­сов.


 

Точка опоры


Прой­дясь по катало­гам, успешно заходим в Public.


use Pablic
SMB-ресурс Public

Там находим все­го один документ. Ска­чива­ем его коман­дой get <file>. В самом докумен­те рас­ска­зано о недав­нем взло­ме служ­бы MS SQL.


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

Kerberoasting


Раз мы име­ем дело с MS SQL, зна­чит, можем выпол­нить ата­ку Kerberoasting. Ее цель — соб­рать билеты TGS для служб, которые запус­кают­ся от име­ни поль­зовате­лей, а не от сис­темных уче­ток. Тикеты TGS зашиф­рованы клю­чами, получен­ными из паролей поль­зовате­лей, а зна­чит, их дан­ные мож­но взло­мать прос­тым перебо­ром. Уяз­вимые учет­ные записи опре­делим по полю SPN, которое не будет пус­тым. Выпол­ним зап­рос TGS с помощью скрип­та GetUserSPNs из все того же impacket.


GetUserSPNs.py scrm.local/ksimpson -dc-ipdc1.scrm.local -dc-hostdc1.scrm.local -request -k -no-pass
По­луче­ние тикета учет­ной записи служ­бы MS SQL

Те­перь сох­раним тикет в файл и отда­дим JTR для перебо­ра. Пароль учет­ной записи получим очень быс­тро.


john sqlsvc.hash --wordlist=rockyou.txt
Па­роль учет­ной записи 

Silver Ticket


Мы получи­ли пароль служ­бы, и, что­бы с ней работать, сле­дующим шагом дол­жно быть получе­ние «сереб­ряного билета». Silver ticket — это реаль­ный билет TGS для опре­делен­ной служ­бы, в котором исполь­зует­ся NTLM поль­зовате­ля. Он даст нам дос­туп к этой служ­бе. Что­бы сге­нери­ровать такой билет, нам нуж­но знать NTLM-хеш пароля и SID домена. SID домена получим из отла­доч­ной информа­ции при выпол­нении impacket-secretsdump.


impacket-secretsdump -kscrm.local/ksimpson@dc1.scrm.local -no-pass -debug
SID домена

А хеш генери­руем на сай­те md5decrypt.net из получен­ного пароля.


NTLM-хеш пароля

А теперь генери­руем билет.


ticketer.py -domainscrm.local -spnMSSQLSVC/dc1.scrm.local -user-id500 Administrator -nthashb999a16500b87d17ec7f2e2a68778f05 -domain-sidS-1-5-21-2743207045-1827831105-2542523200
Соз­дание сереб­ряного билета

Эк­спор­тиру­ем соз­данный билет в рабочее окру­жение и под­клю­чаем­ся к служ­бе MS SQL, исполь­зуя аутен­тифика­цию Kerberos.


export KRB5CCNAME=Administrator.ccache
mssqlclient.py dc1.scrm.local -k -no-pass
SELECT name FROM master.dbo.sysdatabases
Су­щес­тву­ющие базы дан­ных 

Продвижение


 

Пользователь SqlSvc


Пе­рей­дем к базе дан­ных ScrambleHR и получим из нее таб­лицы.


use ScrambleHR
SELECT name FROM SYSOBJECTS WHERE xtype = 'U'
Таб­лицы в базе ScrambleHR

Нас инте­ресу­ет таб­лица поль­зовате­лей UserImport. Получа­ем все ее записи.


select * from UserImport
Дан­ные в таб­лице UserImport

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


enable_xp_cmdshell
reconfigure
Вклю­чение xp_cmdshell

Те­перь мы можем выпол­нять коман­ды через xp_cmdshell.


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