Yesterday

Как Lansweeper может привести к компрометации доменной инфраструктуры


[0x00] Предисловие


Всем привет, я — o1d_bu7_go1d, занимаюсь пентестами в одной из российских IT-компаний и по совместительству — капитан одноименной CTF-команды в RU-сегменте.

Недавно проводили с коллегами очередные работы по тестированию на проникновение и выявили несколько интересных вещей. Про одну из таких вещей я сегодня расскажу. А точнее, я опишу кейс с сервисом Lansweeper, который стал отправной точкой на пути к захвату домена. Напомню, что я разбираю именно кейс, а не базу.


[0x01] Отказ от ответственности


Я, как автор данного материала, не призываю никого применять описанные в статье техники и тактики тестирования на проникновение с целью причинения любого вида ущерба реальным информационным системам, по причине того, что такие действия являются незаконными.

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


[0x02] Захват доменной инфраструктуры


Представим ситуацию, что мы, находясь в инфраструктуре организации, обнаружили сервис под названием Lansweeper. Наша цель - захватить доменную инфраструктуру организации. Но как нам может помочь в этом обнаруженный сервис?

Для начала стоит разобраться, что это за сервис. По своей сути, Lansweeper является платформой для инвентаризации IT-активов организации, а именно - позволяет централизованно управлять IT-инфраструктурой. Забегая вперед, именно это и позволит нам захватить домен.

Стартовая страница Lansweeper

И так, мы нашли Lansweeper в инфраструктуре организации. Если обратить внимание на скриншот выше, то можно заметить кнопку BUILT-IN ADMIN. С этой простой, казалось бы, кнопкой связана CVE-2020-14011. Ссылка на exploit-db.

Дело в том, что в версиях с 6.0.x по 7.2.x при стандартной установке возникает серьезная проблема в контроле доступа. При первом запуске веб-консоли система предлагает мастер-настройки. Если администратор не снял вручную галочку с параметра Built-in admin, то для учетной записи администратора по умолчанию устанавливается заранее заданный пароль.

При этом, в ходе проекта меня пустило в панель Lansweeper через простое нажатие на кнопку BUILT-IN ADMIN без ввода учетных данных. К слову, версия в Lansweeper была 7.2.108.6:

Доступ к Lansweeper через Built-In Admin

Самое главное, что мы, как злоумышленник, можем создавать вредоносные пакеты для последующего деплоя на хосты. Делается это через вкладку Deployment:

Переход на вкладку Deployment

Создадим вредоносный пакет, в котором будет содержаться команда для добавления доменного пользователя в локальные администраторы. Простой доменный пользователь был в нашем распоряжении. Нажимаем на New Package:

Создание нового пакета для последующего деплоя

Указываем имя пакета, можно добавить описание. Обязательно указываем в разделе Run Mode - System Account:

Базовые настройки пакета

После того, как мы создали пакет, нужно добавить действия, которые будут выполнять при деплое этого пакета. Для этого необходимо нажать на Add Step:

Добавление действий для пакета в рамках деплоя

В открывшемся меню необходимо изменить Action на Command, указать Step Name, а также вписать саму команду в Command, которая будет исполняться:

net localgroup administrators <DOMAIN_EXAMPLE>\<controlled_username> /add
Мы не мусорим в инфраструктурах и вам не советуем, поэтому удалить пользователя из локальных администраторов можно командой net localgroup administrators <DOMAIN_EXAMPLE>\<controlled_username> /delete

После этого нужно выбрать параметры в разделах Action on Success и Action on Failure:

Добавление команды

Следующее действие - деплой. Я предварительно выбрал цель, куда буду деплоить созданный пакет. К примеру, это может быть один из центральных серверов организации. Нажимаем на Deploy Now:

Переход к деплою пакета

В открывшемся меню в разделе Deploy On выбираем Selection и из меню Select Assets выбираем интересующую нас цель:

Параметры деплоя

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

Поиск цели в разеделе Assets, куда был произведен деплой

После того, как мы нашли интересующую нас цель, необходимо перейти во вкладку Deployments и посмотреть лог деплоя:

Проверка выполнения задачи (деплоя)

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

nxc smb <target_ip> -u '<controlled_user>' -p '<controlled_user_password>' -d '<example.local>'
Первоначальный доступ к хосту до добавления локального администратора

То сейчас имеем заветный Pwn3d!:

Проверка доступа после добавления локального администратора

Попробуем выгрузить хэши из SAM и LSA:

Выгрузка хэшей из SAM и LSA

И самое неприятное то, что хэши в формате $DCC2$10240#. Значит, нам надо действовать как-то по-другому, потому что хэши такого типа не могут быть использованы в рамках техники Pass-the-Hash. Воспользуемся remmina для подключения к целевому серверу по протоколу RDP:

Подключение к целевому хосту по RDP

И вот мы успешно попали на хост:

Получение доступа к целевому серверу по RDP

Идея заключается в следующем - деактивировать Kaspersky и загрузить mimikatz. СЗИ отключить проблем не составило:

Отключение Kaspersky
Отключение Kaspersky

Открываем у себя Python HTTP Server, чтобы доставить mimikatz:

python3 -m http.server 4466
Активация HTTP-сервера на Kali Linux

Скачиваем mimikatz на целевой хост:

Загрузка mimikatz

Запускаем загруженный mimikatz:

Запуск mimikatz

Дампим logonpasswords:

privilege::debug
sekurlsa::logonpasswords
Дамп logonpasswords

Среди всего вывода находим хэш потенциально интересной учетной записи, обладающей высокими привилегиями в домене. На этот раз так сложилось, что мне повезло вытащить хэш учетной записи, входящей в состав группы Domain Admins:

Получение хэша учетной записи, входящей в группу Domain Admins

Остается только сдампить NTDS с контроллера домена и победить в этой простой, но интересной битве:

Дамп NTDS с контроллера домена

На этом, пожалуй, всё. Мы рассмотрели, как я уже говорил, достаточно простой, но показательный вектор захвата домена.

Хочу выразить огромную благодарность моим коллегам, которые участвовали в проекте. Без вашего вклада и профессионализма такой качественный материал был бы невозможен!