Как Lansweeper может привести к компрометации доменной инфраструктуры
[0x00] Предисловие
Всем привет, я — o1d_bu7_go1d, занимаюсь пентестами в одной из российских IT-компаний и по совместительству — капитан одноименной CTF-команды в RU-сегменте.
Недавно проводили с коллегами очередные работы по тестированию на проникновение и выявили несколько интересных вещей. Про одну из таких вещей я сегодня расскажу. А точнее, я опишу кейс с сервисом Lansweeper, который стал отправной точкой на пути к захвату домена. Напомню, что я разбираю именно кейс, а не базу.
[0x01] Отказ от ответственности
Я, как автор данного материала, не призываю никого применять описанные в статье техники и тактики тестирования на проникновение с целью причинения любого вида ущерба реальным информационным системам, по причине того, что такие действия являются незаконными.
Я не несу ответственность за действия, совершенные другими лицами с применением описанного материала. Все совпадения представленных данных с реальными компонентами - случайные совпадения, не имеющие к реальности никакого отношения.
[0x02] Захват доменной инфраструктуры
Представим ситуацию, что мы, находясь в инфраструктуре организации, обнаружили сервис под названием Lansweeper. Наша цель - захватить доменную инфраструктуру организации. Но как нам может помочь в этом обнаруженный сервис?
Для начала стоит разобраться, что это за сервис. По своей сути, Lansweeper является платформой для инвентаризации IT-активов организации, а именно - позволяет централизованно управлять IT-инфраструктурой. Забегая вперед, именно это и позволит нам захватить домен.
И так, мы нашли 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:
Самое главное, что мы, как злоумышленник, можем создавать вредоносные пакеты для последующего деплоя на хосты. Делается это через вкладку 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:
После того, как мы нашли интересующую нас цель, необходимо перейти во вкладку Deployments и посмотреть лог деплоя:
Как видим, операция прошла успешно и, по идее, мы стали локальным администратором. Если изначальная картина была такая:
nxc smb <target_ip> -u '<controlled_user>' -p '<controlled_user_password>' -d '<example.local>'
То сейчас имеем заветный Pwn3d!:
Попробуем выгрузить хэши из SAM и LSA:
И самое неприятное то, что хэши в формате $DCC2$10240#. Значит, нам надо действовать как-то по-другому, потому что хэши такого типа не могут быть использованы в рамках техники Pass-the-Hash. Воспользуемся remmina для подключения к целевому серверу по протоколу RDP:
И вот мы успешно попали на хост:
Идея заключается в следующем - деактивировать Kaspersky и загрузить mimikatz. СЗИ отключить проблем не составило:
Открываем у себя Python HTTP Server, чтобы доставить mimikatz:
python3 -m http.server 4466
Скачиваем mimikatz на целевой хост:
Запускаем загруженный mimikatz:
privilege::debug sekurlsa::logonpasswords
Среди всего вывода находим хэш потенциально интересной учетной записи, обладающей высокими привилегиями в домене. На этот раз так сложилось, что мне повезло вытащить хэш учетной записи, входящей в состав группы Domain Admins:
Остается только сдампить NTDS с контроллера домена и победить в этой простой, но интересной битве:
На этом, пожалуй, всё. Мы рассмотрели, как я уже говорил, достаточно простой, но показательный вектор захвата домена.
Хочу выразить огромную благодарность моим коллегам, которые участвовали в проекте. Без вашего вклада и профессионализма такой качественный материал был бы невозможен!