В этой статье с помощью DCE/RPC узна­ём IPv6-адрес хос­та, лома­ем ZIP-архив, получа­ем бэкапы базы уче­ток AD, бру­тим име­на поль­зовате­лей c помощью Kerberos, чита­ем дан­ные из реес­тра уда­лен­ного хос­та бла­года­ря Silver Ticket и дела­ем дру­гие инте­рес­ные вещи, что­бы прой­ти лабора­торию APT с пло­щад­ки Hack The Box. Уро­вень слож­ности — Insane!

warning

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

 

Разведка

 

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

IP-адрес машины — 10.10.10.213, я добав­лю его в /etc/hosts и даль­ше буду обра­щать­ся к ней по адре­су apt.htb.

Даль­ше, как всег­да, ска­ниру­ем пор­ты с помощью Nmap. Если читал дру­гие про­хож­дения, то уже, навер­ное, ско­пиро­вал мой скрипт. Он сна­чала ска­ниру­ет весь диапа­зон, а затем пов­торно про­ходит­ся по най­ден­ным пор­там, исполь­зуя скрип­ты (опция -A).

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Результат работы скрипта
Ре­зуль­тат работы скрип­та

На­ходим два откры­тых пор­та:

  • порт 80 — веб‑сер­вер Microsoft IIS;
  • порт 135 — служ­ба Microsoft RPC.

Пер­вичный ана­лиз сай­та ничего не дал (кро­ме еще одно­го домен­ного име­ни), поэто­му, пока мы не засели за его глу­бокое тес­тирова­ние, мож­но быс­трень­ко про­верить служ­бу RPC.

Стартовая страница сайта
Стар­товая стра­ница сай­та

Мы можем выпол­нить пол­ный дамп записей при помощи rpcdump (в качес­тве парамет­ра нуж­но передать толь­ко номер пор­та), но это ничего инте­рес­ного нам не дает.

rpcdump.py apt.htb -p 135

Но rpcdump не выпол­няет зап­росы DCE/RPC.

 

Сканирование DCE/RPC

DCE/RPC — это сис­тема уда­лен­ного вызова про­цедур, раз­работан­ная для рас­пре­делен­ной вычис­литель­ной сре­ды. Эта сис­тема поз­воля­ет прог­раммис­там занимать­ся раз­работ­кой рас­пре­делен­ного соф­та так, буд­то все работа­ет на том же компь­юте­ре, без необ­ходимос­ти вол­новать­ся за код, отве­чающий за работу с сетью. Мы можем прос­каниро­вать DCE/RPC и поис­кать служ­бы, которые дос­тупны через TCP. Для ска­ниро­вания подой­дет модуль tcp_dcerpc_auditor из Metasploit Framework.

msfconsole
use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
set RHOSTS apt.htb
run
Результат DCE/RPC-сканирования
Ре­зуль­тат DCE/RPC-ска­ниро­вания

В резуль­тате мы получа­ем два GUID, зна­чение которых мы можем пос­мотреть на сай­те Microsoft. Там мы узна­ем, что GUID 99fcfec4-5260-101b-bbcb-00aa0021347a отве­чает за интерфейс IObjectExporter, о котором мы можем почитать в докумен­тации. IObjectExporter — это служ­ба, которая запус­кает­ся на каж­дой машине, где есть под­дер­жка COM+. Он уда­лен­но исполь­зует­ся для дос­тупа к локаль­ному рас­позна­вате­лю объ­ектов.

Таблица соответствия GUID и целевого объекта
Таб­лица соот­ветс­твия GUID и целево­го объ­екта

Од­но из пред­назна­чений IObjectExporter — раз­решение OXID. Ког­да кли­ент получа­ет OXID как часть ссыл­ки на объ­ект, ему не­обхо­димо опре­делить информа­цию при­вяз­ки RPC, нуж­ную для свя­зи с уда­лен­ным неиз­вес­тным объ­ектом экспор­тера объ­екта. Наибо­лее инте­ресен метод ServerAlive2(), с помощью которо­го мож­но получить сетевые адре­са. Это мож­но авто­мати­зиро­вать! Выпол­ним ска­ниро­вание с помощью IOXIDResolver.

sudo apt install python2
python2 -m pip install setuptools
python2 -m pip install impacket
python2 IOXIDResolver.py -t apt.htb
Результат работы скрипта IOXIDResolver
Ре­зуль­тат работы скрип­та IOXIDResolver

В резуль­тате получим IPv6-адрес хос­та.

 

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

Мы получи­ли нуж­ный адрес — нуж­но его прос­каниро­вать ана­логич­но пер­вому, так как некото­рые служ­бы могут отве­чать по IPv6 и не отве­чать по IPv4. Исполь­зуем тот же скрипт, что и при пер­вом ска­ниро­вании.

Результаты сканирования портов по IPv6-адресу
Ре­зуль­таты ска­ниро­вания пор­тов по IPv6-адре­су

Ви­дим мно­го служб. Я добавил новую запись в /etc/hosts.

dead:beef::b885:d62a:d679:573f apt.htb.local

Пор­ты 80 и 135 пре­дос­тавля­ют такую же информа­цию, что и по IPv4, к LDAP не под­клю­чить­ся, зато к SMB — мож­но.

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

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

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

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

3 комментария

  1. Аватар

    raptoriks

    12.04.2021 в 17:49

    И как только использован сгенерированный (а не iloveyousomuch) пароль на zip архив — то вся цепочка отваливаеться 🙂

    • Аватар

      RalfHacker

      13.04.2021 в 11:09

      Согласен с Вами. В реальной жизни же это не возможно!

      P.S. «solarwinds123» 😉

      • Аватар

        MikhailChereda

        13.04.2021 в 13:03

        Можете пояснить эту строку:
        Ма­ло что получи­лось сде­лать с билетом, зато в реес­тре точ­но получит­ся что‑нибудь най­ти. Мы можем под­клю­чить­ся к реес­тру уда­лен­ной машины, были бы учет­ные дан­ные, но у нас есть билет.

        У нас был как билет, так и хэш, мы же могли таким же образом через evil-winrm подключиться под этим пользователем? Зачем нам надо было вытаскивать через реестр чистые креды?

        И второй вопрос: почему при сканировании дефендером аутентификация происходит от учетки хоста, а не от учетки в контексте которой запускался скан?

        Спасибо!

Оставить мнение