Категория > Новости > Гид по NTLM Relay, часть 2. Проводим Relay-атаки - «Новости»
Гид по NTLM Relay, часть 2. Проводим Relay-атаки - «Новости»14-04-2023, 00:00. Автор: Shackley |
Гид по NTLM Relay. Захватываем NTLM-аутентификацию для Relay-атаки». NTLM Relay-атаки можно проводить не только в Active Directory, но еще, например, в ALD и FreeIPA-доменах. Для глубокого понимания темы с точки зрения теории рекомендую прочитать статью. Прежде чем перейти непосредственно к разбору методов, договоримся о терминах. Допустим, клиент хочет пройти аутентификацию с машины Work1 на SMB, атакующий перехватывает эту сессию и хочет пройти аутентификацию на LDAP. Такой кейс мы будем называть Relay с SMB на LDAP. Еще один пример, чтобы закрепить наше понимание. Клиент хочет пройти аутентификацию с машины Work1 на HTTP, атакующий перехватывает эту сессию и хочет пройти аутентификацию на SMB. Такой кейс мы будем называть Relay с HTTP на SMB. КлиентыДля реализации атаки нам нужен клиент и сервер, ntlmrelayx как раз по такой модели и построен. Про RelayServers мы говорили в прошлой статье, в этой будем говорить про RelayClients. SMB (445/TCP)На SMB аутентификацию можно пересылать с любого другого протокола. Главное условие успешности Relay-атаки — это отсутствие требования подписи SMB-сообщений на машине, куда мы выполняем Relay. Чтобы проверить это, можно воспользоваться следующей командой:
crackmapexec smb -u '' -p '' --shares<target IP or nets or file>
На рисунке требование подписи включено, на этой машине выполнить атаку на SMB Relay не получится. SMB Signing: True А в этом примере на машине требование отключено, на нее Relay делать можно. SMB Signing: False Для автоматизации можно использовать следующую команду:
crackmapexec smb --gen-relay-listtargets.txt <nets>
Создание списка целей для Relay на SMBРассмотрим варианты выполнения Relay на SMB. Самый простой вариант — выполнить Relay на машину с SMB, когда пересылаемая нами учетная запись имеет права локального администратора на целевом хосте. При выполнении такой пересылки сдампятся хеши SAM, и мы получим NT-хеш локального администратора и закрепимся на машине.
impacket-ntlmrelyx -tsmb://<IP>
Успешный Relay на SMBНо если прав нет, мы получим ошибку, и на этом атака закончится. Неудачный Relay на SMB В ситуации, когда у нас используется SMBv2, всегда необходимо добавлять флаг
smb://IP1
ldap://IP2
smb://IP3
rpc://IP4
Чтобы подать на вход этот файл со списком целей, используем флаг
impacket-ntlmrelayx -tftargt.txt
И тут стоит сказать, что обычно аутентификация прилетает не одна, а сразу несколько, поэтому можно попробовать Relay в несколько мест. Но также в ntlmrelayx есть механизм multirelay, суть которого состоит в том, что он может одну условную аутентификацию превратить в десять. Это действительно работает, но не стабильно. При первой же ошибке или отказе доступа процесс остановится. Чтобы отключить этот механизм в случае с несколькими целями, нужно добавить в команду параметр
impacket-ntlmrelayx -tftargt.txt -smb2support --no-multirelay
А также важно не забыть добавить необходимые флаги для каждого из протоколов, которые присутствуют в списке целей. Применительно ко всем остальным клиентам эта информация тоже актуальна. Для взаимодействия с сетевыми папками целевой машины от имени пересылаемой учетной записи можем использовать интерактивный режим:
impacket-ntlmrelyx -tsmb://<IP>-i
Relay на SMB в интерактивном режимеПосле этого у нас поднимается оболочка на локальном интерфейсе, к которой можно присоединиться следующей командой:
nc 127.0.0.1 11000
После подключения нам доступен обычный smbclient из Impacket с точно таким же синтаксисом. Оболочка smbclient в результате Relay на SMB Способ получения интерактивного режима может быть полезен, когда мы не знаем, есть у нас привилегированные права на целевой машине или нет. Если прав нет и мы пользуемся стандартным режимом — ничего не произойдет. Если права есть, мы хотя бы получим доступ ко всей файловой системе и, может быть, сумеем найти что‑то интересное. Но в целом есть еще более универсальный способ. Может сложиться ситуация, когда мы не имеем прав локального администратора, но можем закрепиться на целевой машине от имени пересылаемой учетной записи с помощью флага
impacket-ntlmrelyx -tsmb://<IP>-socks
В этом режиме можно реализовать примерно следующую схему. Схема Relay на SMB в режиме socks После успешной Relay-атаки мы получаем SMB-сессию и можем использовать ее многократно с помощью proxychains4. Для этого редактируем конфигурационный файл
socks4 127.0.0.1 1080
Для использования уже созданного соединения после настройки конфига proxychains подойдет следующий синтаксис:
proxychains4 impacket-smbclient 'domain/username@<target IP>' -no-pass
Стоит обратить внимание, что проходить аутентификацию таким образом можно только на машине, куда был совершен Relay. Запускаем ntlmrelayx с флагом Relay на SMB в режиме socks Редактируем конфиг proxychains. Мы можем запускать smbclient без пароля через proxychains. smbclient в контексте socks Такой способ может позволить закрепиться на целевой машине даже не привилегированному пользователю, что используется в определенных ситуациях. Но если сессия окажется привилегированной, можно запустить secretsdump и получить NT-хеши. secretsdump в контексте sock Таким образом мы можем запускать весь софт из Impacket, а также основанные на нем скрипты. С помощью этого способа можно делать действительно удивительные вещи, но об этом чуть позже, а пока плавно переходим к следующему протоколу. LDAP (389/TCP, 636/TCP)Перейти обратно к новости |