Атаки на домен: завладеваем корпоративной сетью

Большая часть всех корпораций, компаний и мелких фирм используют для построения корпоративной сети технологию Aсtive Directory и ОС семейства Windows. Сегодняшняя статья будет посвящена простой теме — захвата прав администратора в домене обезличенной корпоративной сети. Мы, конечно, поговорим об уязвимостях в службах и ОС, но в основном разговор будет об общих проблемах в архитектуре сети и проблемах аутентификации.

Введение

  • Зачастую вместо RDP используется другое решение (VNC, Citrix ICA) по простой причине – предполагается, что “встроенный RDP минимальный и ничего не умеет”.
  • Во многих решениях, связанных с модными сейчас облачными технологиями (перевод офисов на “тонкие клиенты”, да и просто организация терминальных серверов), бытует мнение что “RDP плохой потому что встроенный”.
  • Есть стандартный миф про то, что “RDP нельзя без VPN наружу выставлять, ломанут” (миф имеет под собой обоснование, но уже давно не актуален).
  • Ну, раз уж про мифы заговорили – бытует мнение, что “Перейдя с RDP на Citrix трафик в пару раз падает”. Ведь цитрикс – это дорого, следовательно как минимум на 157% круче.
  • Кратким упоминанием про версии RDP
  • Настройкой режима защиты RDP-сессии
  • Настройкой шифрования для RDP
  • Привязкой к конкретному адаптеру и порту
    • Меняем стандартный порт на нужный
    • Делаем раздельные настройки RDP для нескольких сетевых адаптеров
  • Включением NLA
    • Как включается NLA со стороны RDP-сервера
    • NLA и Windows XP
    • Как включить CredSSP в XP
  • Выбором правильного сертификата для RDP
  • Блокированием подключений по RDP учётным записям с пустым паролем
  • Настройка ACL для подключения по RDP
  • Оптимизацией скорости RDP
    • Отключаем редирект неиспользуемых устройств
    • Настраиваем общую логику оптимизации визуальных данных RDP
  • Оптимизацией сжатия RDP
    • Настраиваем общее сжатие RDP
    • Настраиваем сжатие аудиопотока RDP
  • Оптимизацией соотношения потоков данных RDP
  • Включением Require secure RPC communication для RDP

Подготовьте облако к работе

Перед тем, как разворачивать серверы, нужно зарегистрироваться в и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша виртуальная машина, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость инсталляции Microsoft Windows Server with Remote Desktop Services входят:

  • плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud);
  • плата за использование динамических или статических публичных IP-адресов (см. тарифы Yandex Virtual Private Cloud);
  • стоимость исходящего трафика из в интернет (см. тарифы Yandex Compute Cloud).

Установка службы удаленных рабочих столов

Запускаем Диспетчер серверов. Его можно запустить с ярлыка на панели задач, либо – выполнив команду : для этого необходимо нажать комбинацию клавиш Win + R, в появившемся окне в поле «Открыть» (Open) написать имя команды и нажать «ОК»:

В меню, в верхнем правом углу, выбираем «Управление» (Manage) → «Добавить роли и компоненты» (Add Roles and Features):

Запустится «Мастер добавления ролей и компонентов» (Add Roles and Features Wizard). Нажимаем «Далее» (Next) на начальной странице:

Оставляем переключатель на «Установка ролей и компонентов» (Role-based or features-based installation) и снова жмем «Далее» (Next):

Выбираем тот сервер из пула серверов, на который будет установлена служба терминалов. В моем примере это данный локальный сервер. Нажимаем «Далее» (Next):

Отмечаем роль «Службы удаленных рабочих столов» (Remote Desktop Services) в списке ролей и жмем «Далее» (Next):

Компоненты оставляем в том виде, как они есть. Ничего не отмечая, жмем «Далее» (Next):

Читаем описание службы удаленных рабочих столов и нажимаем «Далее» (Next):

Теперь необходимо выбрать устанавливаемые службы ролей. Как минимум нам пригодится «Лицензирование удаленных рабочих столов» (Remote Desktop Licensing). Соглашаемся на установку дополнительных компонентов, нажав на «Добавить компоненты» (Add Features) в появившемся мастере:

Еще нам понадобится «Узел сеансов удаленных рабочих столов» (Remote Desktop Session Host) – опять соглашаемся на установку дополнительных компонентов, нажав на «Добавить компоненты» (Add Features) в открывшемся окне. Отметив необходимые службы ролей, нажимаем «Далее» (Next):

Все параметры установки роли определены. На последней странице установим флаг «Автоматический перезапуск конечного сервера, если требуется» (Restart the destination server automatically if required) , подтвердим выбор нажав «Да» (Yes) в появившемся окне и нажмем «Установить» (Install) для запуска установки службы:

Если все прошло хорошо, после перезагрузки, увидим сообщение об успешной установке всех выбранных служб и компонентов. Нажимаем «Закрыть» (Close) для завершения работы мастера:

Вариант второй – стандартное развертывание

Более продуманный вариант развертывания RDS подразумевает использование отдельных серверов для посредника подключений, сервера веб-доступа и серверов сеансов. Сама процедура стандартного развертывания мало чем отличается от описанной выше, за небольшими исключениями.

В качестве метода следует указать «Стандартное развертывание», в разделе «Управление» нужно перейти в подраздел добавления серверов и задать там перечень используемых машин, а под конец указать роли каждого из серверов. Осталось лишь подключить службу лицензирования.

Сделать это можно в окне диспетчера в разделе «Лицензирование удалённых рабочих столов», попасть в который можно со страницы «Общие» службы RDS.

Далее нужно выбрать сервер из списка и щелкнуть по кнопке «Добавить», как показано на рисунке:

На этом краткое описание настройки rdp на Windows server 2012 r2 можно считать завершенным.

Не работает терминальный сервер в Windows 10

Если у вас изначально не заработал терминальный сервер на windows 10 и количество rdp подключений ограничено одним. Либо если у вас после обновление сломался терминальный доступ, то давайте разбираться, что с этим делать.

Для начала запустите утилиту и посмотрите ее вывод.

Не работает терминальный сервер в Windows 10

Значение listener state намекает на то, что у нас проблемы и rdp wrapper не работает. Проблема тут в том, что практически под каждую версию Windows 10 нужен свой файл конфигурации . Их нужно либо писать самому, если понимаешь, как именно, либо искать где-то в интернете. Проще всего посмотреть в обсуждении проблем в репозитории на github — Либо еще один вариант — репозиторий с утилитой для автоматического обновления — Там есть архив , который регулярно обновляется. Можно попробовать воспользоваться им.

Для того, чтобы на моей версии windows 10 заработал терминальный сервер, я через поисковики нашел файл конфигурации .txt под свою версию системы. Я взял содержимое этого файла и добавил его в существующий файл C:\Program Files\RDP Wrapper\ в самый конец.

Не работает терминальный сервер в Windows 10

После этого запустил еще раз .

Статус изменился на . Теперь нужно перезагрузить компьютер. После этого запустите утилиту и убедитесь, что можно подключиться второй учетной записью к компьютеру.

Не работает терминальный сервер в Windows 10

У меня заработал терминальный доступ к windows 10 через 2 разные учетные записи.

HASH и токены

Захват рабочей станции или сервера — это уже полдела. Но что же дальше? Как уже писалось выше, «Компьютер — это сеть». Данное правило применимо и для домена. Если был захвачен хоть один компьютер домена, можно с большой вероятностью говорить о захвате всего домена. В чем дело? А дело в доверенной системе, на которой основана сеть и система безопасности, как на уровне ОС, так и на уровне домена. Итак, что же делать на захваченном хосте в первую очередь? Сначала самое главное — понять свои права. В ряде случаев это будет NT AUTHORITYSYSTEM, в других — доменная учетная запись с небольшими правами. Но так или иначе на первом этапе нам нужны именно права системы, так что если мы их не имеем, то следует их получить. Получить их можно, например, прямо из метерпретера, в котором есть простая команда getsystem. Данный модуль попробует поднять права в ОС, используя уязвимости MS09-012, нашумевший MS10-015 (KiTrap0D) и не только. Однако в большинстве случаев желательно, чтобы пользователь был в группе локальных админов — например, чтобы имперсонализироваться (об этом позже).

Системные права нам нужны для того, чтобы выдрать все самое ценное из недр ОС, а именно NTLM хэши, и список токенов безопасности. Зачем нам хэши? Чтобы брутить их? Нет. Чтобы использовать их. Дело в том, что для аутентификации в домене очень часто не нужен пароль — ведь винда не спрашивает пассворд каждый раз, когда ты идешь на какую-нибудь шару в домене. Реализовано это с помощью NTLM Chalenge response аутентификации. Дело в том, что для такой аутентификации знания пароля не нужно, достаточно только значения хэша. Фактически об этой проблеме было известно с середины 90-х, но с годами мало что поменялось. Поэтому, достав хэши, ты можешь спокойно ходить по домену с правами пользователя. Более подробно о хэшах можно почитать в статье Антона Карпова aka toxa. Я же расскажу про реальную историю захвата домена.

Был, значит, получен доступ к компьютеру веб-девелопера через SQL-инъекцию на его веб-стенде. Сервак был MSSQL, учетка — SA. Соответственно, через xp_cmdshell был закачан и запущен meterpreter, получен полноценный доступ с правами SYSTEM. Но ничего особо ценного для захвата домена на этом компе не нашлось, поэтому были изъяты хэши учетки программиста. Как известно, хэши хранятся в ОС во многих местах, но самое вкусное — это кэш LSA, который «помнит» хэши последних юзеров. В любом случае есть еще и SAM-база. А с этими хэшами уже лазить по домену, где, кстати, был найден принт-сервер. Учетка программиста состояла в группе, у которой были права на печать на одном из принтеров сервера. Используем хэши-учетки для модуля метасплойта, который эксплуатирует MS10-061.

ms10_061_spoolss>set SMBUser user ms10_061_spoolss>set SMBDomain DOMAIN ms10_061_spoolss>set SMBPass 01010101010101010101010101010101:01010101010101010101010101010101

Эксплойт MS10-061, запущенный от имени программиста, дал системный доступ к принт-серверу, где уже были найдены процессы с токенами администратора домена. Получается цепочка атак, которая приводит к захвату домена.

Итак, мы попали на принт-сервер с правами системы, но мы еще не админы домена, однако я упомянул выше про токены. Токен — это объект ОС, который создается при логоне и дается каждому процессу, запущенному юзером. Этот токен — лакомый кусочек. В нашем случае админ домена запустил какие-то процессы на принт-сервере, а у нас права системы на этом же сервере — соответственно мы имеем привилегии SeImpersonate и можем спокойно использовать существующий токен «делегирования» (несмотря на патч MS09-012, который тут как бы не о чем).

Выглядит это довольно просто:

meterpreter> use incognito meterpreter> list_tokens -u meterpreter> impersonate_token DOMAIN\admin

После того, как мы выполнили имперсонализацию, система будет использовать права украденной учетки. То есть, мы стали админом домена. Соответственно, выполняем:

meterpreter>shell C:windowssystem32>net user xakep p4sSw_0Rd /ADD /DOMAIN C:windowssystem32>net group «Domain Admins» xakep /ADD /DOMAIN

Команды исполнятся, и у контроллера домена появится новый администратор (кстати, не рекомендую так делать, так как в нормальных компаниях такой пользователь сразу будет обнаружен). Мораль истории такова: любая, даже самая маленькая дырочка, на самом незначительном сервере или рабочке может привести к захвату домена, так как «компьютер — это сеть»...

Устранение неполадок при подключении к удаленному рабочему столу

Если брандмауэр Windows не дает соединиться, откройте его настройки в параметрах.

Нажмите на изменение параметров над списком.

Укажите для удаленного рабочего стола обе галочки.

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

Если показывается ошибка об отсутствии ответа со стороны ПК, к которому вы подключаетесь – убедитесь, что он вообще включен и что он не ушел в спящий режим.

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

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Adblock
detector