Бесплатно Экспресс-аудит сайта:

16.07.2021

Конфигурирование уязвимой машины на базе Sophos UTM 9 и HTML5 VPN Portal

Автор: Ken Smith

Уязвимую конфигурацию, рассматриваемую в этой статье, я использовал в нескольких конкурсах навроде Capture the Flag и имитационных пентестах в течение последних нескольких лет. В этой конфигурации используется функция HTML5 VPN из пакета Sophos UTM, очень напоминающей удаленный корпоративный доступ, осуществляемый через XenDesktop от Citrix (хотя и с отсутствием множества функций и настроек). Актуальная уязвимость связана с добавлением новой функции, доступной во время авторизации в Windows. В случае с Windows 7 многие компании часто использовали плагины от сторонних разработчиков, как, например, сброс пароля во время авторизации. Эта опция официально была убрана в Windows 10, учитывая огромный риск, который представляет данная возможность. Однако при помощи кнопки Ease of Access мы можем сымитировать похожие ситуации.

Настройка Windows

Перед тем, как приступить к настройке уязвимой машины, нужно решить, как вы будете использовать данную брешь. Обычно я использую как часть тестовой корпоративной среды во время имитационного пентеста. Как упоминалось выше, я предпочитаю (поддельную) функцию сброса пароля, которая доступна в виде кнопки во время авторизации.

Будем рассматривать машину с Windows 10 (хотя в случае с Windows 7 вся процедура будет схожей, в чем вы убедитесь во время дальнейшей демонстрации атаки):

1. Убедитесь, что Удаленный рабочий стол включен и разрешен в локальном фаерволе.

2. Создайте скрипт на Visual Basic с целью создания простого и «ограниченного» окна в Internet Explorer. Нам нужно изменить ключи в реестре, чтобы появилась кнопка Ease of Access на экране авторизации для вызова этого скрипта. Обычно я настраиваю веб-сервер (иногда прямо на рабочем столе) для размещения страницы, на которой написано нечто вроде «Password reset is broken. Check back later» (Сброс пароля завершился с ошибкой. Попробуйте позднее). Адрес X.X.X.X, указанный ниже, представляет собой IP адрес нашего сервера.

Set objExplorer = CreateObject("InternetExplorer.Application")  objExplorer.Navigate "http://X.X.X.X/"  objExplorer.Visible = true  objExplorer.Toolbar = false  objExplorer.MenuBar = false  objExplorer.StatusBar = false  objExplorer.AddressBar = false  objExplorer.Width = 640  objExplorer.Heigh = 480  objExplorer.Left = 0  objExplorer.Top = 0

3. Для смены функциональности кнопки Ease of Access зайдите в реестр и перейдите в следующую папку:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options

4. Кликните правой мыши на папке «Image File Execution Options» и создайте новый ключ с именем «utilman.exe».

5. Внутри нового подраздела utilman.exe добавьте новую строку Debugger.

6. Установите в значение Value полный путь к ранее созданному скрипту на Visual Basic.

Я рекомендую настроить сообщение во время авторизации через Local Security Settings, что позволяет нестандартно использовать кнопку Ease of Access.

1. Откройте secpol.msc

2. Зайдите в раздел Security Settings -> Local Policies -> Security Options

3. Найдите Interactive Logon: Message title for users attempting to log on и Interactive logon: message text for users attempting to log on

4. Используйте эти опции для установки заголовка (например, «Password Reset») и содержимого (например, «To reset your password, please click the button in the lower left hand side of the screen») для сообщения во время авторизации.

Чтобы проверить работоспособность внесенных изменений, завершите сеанс и во время авторизации кликните на кнопку Ease of Access. Должно появиться окно Internet Explorer, указывающее на выбранный вами веб-сервер.

Настройка HTML5 VPN

В настройках Sophos UTM 9 (в идеале, Exercise Firewall, как было сказано в одной из предыдущих статей), зайдите во вкладку «Remote Access», находящуюся в левой колонке. Затем зайдите в раздел «HTML5 VPN Portal».

Кликните на серую кнопку (которая перекрасится в зеленый цвет) для активации функции. Затем выберите «New HTML5 VPN Portal Connector…» (см. рисунок ниже).

Рисунок 1: Настройки функции HTML5 VPN Portal

У нас есть несколько вариантов подключения, начиная от удаленного рабочего стола (по умолчанию) и заканчивая веб-приложениями с использованием HTTP/S или даже SSH (см. Рисунок 2). Не выбирайте Automatic login (автоматическая авторизация). Параметр «Allowed users (Userportal)» позволяет раздать права доступа всем пользователям из Sophos UTM 9, которых вы укажете. Вы также можете ознакомиться с еще одним руководством и добавить пользователей из Active Directory, если вам требуется эта часть для полноценного имитационного пентеста. Укажите легко запоминаемое имя соединения (подходящее место для конечного флага) и сохраните внесенные изменения.

Рисунок 2: Добавление нового подключения

Ваша только что созданная сессия будет доступна для выбранных учетных записей в Sophos User Portal. Настройки для User Portal можно найти во вкладке Management в левой колонке административной страницы. В разделе «Global» задайте сетевые сегменты, из которых вы хотите, чтобы был доступен User Portal и HTML5 VPN (см. Рисунок 3). Чек-бокс «Allow All Users» может оставаться выбранным, если вы работаете со специально выделенным фаерволлом, используемым во время конкурса (предполагается, что любые «легитимные» пользователи отсутствуют).

Рисунок 3: Настройки раздела User Portal

Во вкладке «Advanced» я обычно отмечаю всё за исключением Remote Access в «Disable Portal Items» с целью максимального ограничения и сокращения путей решения задачи для участников (см. Рисунок 4).

Рисунок 4: Вкладка Advanced раздела User Portal

После сохранения всех настроек в Sophos UTM 9 можно двигаться дальше.

Эксплуатация

Первый шаг при реализации атаки – подбор или получение учетной записи для Sophos User Portal. Обычно я либо размещаю учетные записи во внешних источниках в рамках имитационного пентеста (например, с вики странице) или делаю эти аккаунты совместно используемыми с другими сайтами (или с учетными записями Active Directory), которые можно легко подобрать. Страница авторизации для User Portal очень похожа на страницу авторизации Web Admin (Рисунок 5 и 6).

Рисунок 5: Страница авторизации для Sophos User Portal

Рисунок 6: Главная страница после авторизации

После блокировки настроек User Portal в UTM всё, что должен видеть пользователь, - вкладка Remote Access, где показывается ранее созданная сессия (см. Рисунок 7).

Рисунок 7: Созданные подключения в HTML5 VPN Portal

При выборе этого подключения активируется сессия для удаленного рабочего стола, после чего появляется приветственное сообщение, которое мы установили ранее (см. Рисунок 8).

Примечание: как упоминалось ранее, хотя инструкции, описанные выше, были для Windows 10, на скриншотах ниже демонстрируется Windows 7, что свидетельствует об идентичности процедуры при создании уязвимой машины для обеих операционных систем.

Рисунок 8: Приветственное сообщение в Windows 7

После нажатия на кнопку Ease of Access в левом нижнем углу (см. Рисунок 9) появится окно Internet Explorer.

Рисунок 9: Кнопка Ease of Access (выделена красным)

Теперь у нас есть несколько вариантов получения шелла. Мы можем использовать комбинацию клавиш Ctrl-O для открытия диалогового окна «Open», найти файл cmd.exe в папке C:WindowsSystem32, кликнуть правой кнопкой мыши и в контекстном меню выбрать Open (см. Рисунки 10 и 11).

Рисунок 10: Диалоговое окно, появляющееся после нажатия комбинации клавиш Ctrl-O в Internet Explorer

Рисунок 11: Запуск cmd.exe

Альтернативный вариант – использовать комбинацию клавиш Ctrl-P (или кликнуть правой кнопкой мыши и выбрать Print), чтобы появилось диалоговое окно печати. Отметьте флажок «Print to File», выберите «Print», после чего появится диалоговое окно для выбора файлов. Схожий процесс можно повторить для поиска и открытия файла cmd.exe (см. Рисунок 12).

Рисунок 12: Выбор чекбокса Print to File для открытия диалогового окна с целью выбора файла

Обе техники дают права пользователя NT_AUTHORITYSYSTEM с полным локальным доступом к машине без необходимости в авторизации.

Рисунок 13: Системный шелл

Заключение

Рассмотренная техника является чрезвычайно адаптируемой и прекрасным способом продемонстрировать, как при помощи обозревателя файлов можно получить шелл (что особенно полезно, например, для Citrix XenApps). Кроме того, этот пример очень полезен в обучающих целях для студентов или начинающих тестеров с целью развития мышления в контексте нестандартного использования внутренних функций и обхода защиты, созданной разработчиками.