Новая особенность «Restricted Admin» RDP 8.1 позволяет осуществлять хэш-аутентификацию

Новая особенность «Restricted Admin» RDP 8.1 позволяет осуществлять хэш-аутентификацию

Данная статья описывает новшество RDP 8.1 – «Restricted Admin», его потенциальные выгоды и угрозы (аутентификация через передачу хэша) с точки зрения безопасности. Мы вкратце вспомним, что представляют собой атаки через передачу хэша, а также продемонстрируем подобную атаку на Windows 2012 R2 Server. Также расскажем о средстве, реализующем атаку передачи хэша на Windows 2012 R2 Server, - небольшой модификации FreeRDP клиента.

Автор: MRL

Сервера под управлением Windows 2012 R2 используют обновленную версию Remote Desktop Protocol (RDP), одна из особенностей которого будет интересна, как пен-тестерам, так и системным администраторам. Данная статья описывает новшество RDP 8.1 – «Restricted Admin», его потенциальные выгоды и угрозы (аутентификация через передачу хэша) с точки зрения безопасности. Мы вкратце вспомним, что представляют собой атаки через передачу хэша, а также продемонстрируем подобную атаку на Windows 2012 R2 Server. Также расскажем о средстве, реализующем атаку передачи хэша на Windows 2012 R2 Server, - небольшой модификации FreeRDP клиента.

Что такое атаки через хэш-аутентификацию?

Все довольно просто, хэш-аутентификация (Pass_the-Hash) подразумевают аутентификацию через имя пользователя и хэш его пароля. Пусть пользователем в нашем случае будет пен-тестер или нарушитель, так как для легитимных пользователей проще использовать свои пароли. Многие протоколы windows требуют хэш пароля, а не его сам. Также стоит отметить, что пен-тестеру, как правило, проще получить хэш, чем сам пароль пользователя.

До версии 8.1 в RDP требовался сам пароль пользователя. В версии 8.1 в большинстве случаев также требуется сам пароль, но существует ситуация (режим Restricted Admin), когда пользователь может аутентифицироваться с помощью хэша.

Майкрософт выпустила руководство по снижению эффективности атак через хэш-аутентификацию.

Что такое Restricted Admin режим?

Результат выполнения «mstsc /?» на Windows 2012 R2 дает следующее определение Restricted Admin режиму:

Если вкратце, то эффективность средств, вроде mimikatz (которые определяют пароли пользователей, находящихся в системе), должна быть снижена при использовании опции Restricted Admin. Я пока не исследовал эффект ее использования в постэксплуатационном периоде, и, возможно, это будет неплохой темой для будущих статей.

На первый взгляд, опция является интересной для администраторов 2012 R2. Угроза безопасности проявляется в том, что исходящее соединение RDP сессии (например, папки с открытым доступом) не работает. То есть данный режим будет максимально полезен при подключении к отдельным, а не к Jump-серверам.

RDP 8.1

Протокол RDP v8.1 датируется 22 июля 2013 года. Узнать используемую версию можно с помощью диалогового окна «О программе» («About»):

Чтобы избавить читателя от необходимости работы с 464-страничным руководством, подведу промежуточные итоги интересных для нас новшеств протокола:

  1. Внизу 37-страницы PDF файла можно увидеть новый флаг RESTRICTED_ADMIN_MODE_REQUIRED, который может быть отправлен RDP клиентом. Нам будет необходимо отправить его в нашу прграмму.
  2. Также на 37 странице можно прочесть «Если сервер поддерживает данный режим, клиент может отправить пустые учетные данные (имя пользователя/пароль) в структуре «TSPasswordCreds », определенной в [MS-CSSP] разделе 2.2.1.2.1.». Таким образом, наша PoC должна отправлять null в качестве домена, имени пользователя и пароля серверу в TSPasswordCreds структуру.

Именно так.

Доказательство концепции: Сценарий.

Пусть мы проводим пен-тестирование сети. Мы хотим получить доступ к определенному Windows 2012 R2 серверу по RDP. Также предположим, что это отдельная система с межсетевым экраном, позволяющим только доступ по RDP – это сделает нашу задачу несколько сложнее.

В данной сети у нас уже есть скомпрометированный сервер, на котором запущен fgdump (или нечто похожее), и мы раскрыли следующие имя пользователя и пароль:

test:1001:NO PASSWORD*********************:36374BD2767773A2DD4F6B010EC5EE0D:::

И наконец, последнее допущение: пароль является сильным, и у нас нет возможности вычислить его. Традиционно мы не можем определить, является ли тот же пользователь test действующим пользователем целевого сервера. Однако, в Windows 2012 R2 мы можем аутентифицироваться с помощью имени пользователя и хэша пароля.

Доказательство концепции: Подключение с использованием хэша, вместо пароля.

Для доказательства концепции мной была использована последняя версия FreeRDP. Это отличный продукт, распространяемый под лицензией Apache Licence v2.0. RDP клиент поддерживает большинство новшеств, которые нам необходимы, в частности, SSL и CredSSP (NLA). Нам лишь остается внести некоторые изменения, упомянутые выше, чтобы добавить поддержку Restricted Admin режима.

Как правило, RDP подключение устанавливается следующим образом:

$ xfreerdp -u test -p Portcullis1 192.168.226.129

В модифицированной версии FreeRDP значение ключа –p было изменено на хэш пароля:

$ xfreerdp -u test -p 36374BD2767773A2DD4F6B010EC5EE0D 192.168.226.129

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

Вот и все. Реализация довольно простая, но, тем не менее, будет полезной для пен-тестеров, когда Windows 2012 R2 станет общеиспользуемым.

Ограничения

Restricted Admin режим применим только для администраторов. Если пользователь находится в группе «Пользователи удаленного рабочего стола», данный метод не сработает. Вы получите следующее сообщение:

Устали от того, что Интернет знает о вас все?

Присоединяйтесь к нам и станьте невидимыми!