Commando VM — атакующий дистрибутив Windows

Технический материал
Анализ защищенности
Commando VM — атакующий дистрибутив Windows

Введение

В среде пентестеров своеобразным стандартом тестовой платформы на базе Linux является стабильная и поддерживаемая Kali. Однако, если вы предпочитаете использовать ОС семейства Windows, то вероятно заметили, что подходящей платформы для пентестеров нет. Поддержание пользовательского окружения Windows при сохранении актуальности всего набора инструментов для пентеста многим может показаться сущим мучением. Вероятно, многие потратили не мало часов, настраивая под себя рабочую среду Windows, при этом все используют в работе одни и те же инструменты, утилиты и техники. Осознавая это, компания Mandiant, входящая в FireEye, создала отдельный дистрибутив Windows. Дистрибутив, разработанный на базе другого популярного специализированного дистрибутива компании, предназначенного для анализа вредоносного ПО и реверсинга – FLARE VM, получил название «Complete Mandiant Offensive VM» (Commando VM). В него включены автоматизированные скрипты, призванные помочь каждому пентестеру создать свою собственную рабочую среду и облегчить процесс развертывания и настройки виртуальной машины для пентеста.

Что же такое Commando VM? Это виртуальная машина, от рождения готовая стать «дежурной» машиной для внутренних пентестов в типичной корпоративной инфраструктуре на базе Active Directory. Использование операционной системы Windows дает «врожденную» поддержку Windows и Active Directory, легкий и интерактивный просмотр общих ресурсов, возможность использования виртуальной машины в качестве командного центра тестовой бот-сети и позволяет работать с такими инструментами, как PowerView и BloodHound не заботясь о том, куда поместить выходные файлы на клиентских компьютерах.

Commando VM использует скрипты для установки всего необходимого ПО и добавляет большой набор инструментов и утилит для поддержки пентеста. Список содержит более 140 инструментов, включая: Nmap, Wireshark, Covenant, Python, Go, Remote Server Administration Tools, Sysinternals, Mimikatz, BurpSuite, x64dbg, Hashcat.

С такой комплектацией Commando VM претендует на роль настоящей «Dream Windows Machine» каждого пентестера и редтимера. Если на работе вы чаще носите футболку с надписью «Blue Team», то будьте спокойны: Commando VM также хорошо упакована и для вас. Универсальный набор инструментов, входящий в ее состав обеспечит вас всем необходимым для аудита сетей и повысит ваши возможности по выявлению вредоносов. Библиотека наступательных инструментов позволит синей команде не отстать в гонке средств нападения и защиты. Рассмотрим на примере процесс работы с ней.

Установка Commando VM

Создаем виртуальную машину минимум с 2 ГБ памяти и 60 ГБ диском (рекомендуется не менее 4 ГБ памяти, 80 ГБ диск и 2 сетевых карты). Устанавливаем Windows 7 Service Pack 1 или Windows 10 (последняя дает больше возможностей по установке дополнительного функционала). Желательно установить также гостевые инструменты виртуальной машины (например, VMware Tools) – это предоставит дополнительные возможности – копирования/вставки и изменения размера экрана.

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

Сохраняем снимок «чистой» виртуальной машины. Скачиваем файл install.ps1 по адресу github.com/fireeye/commando-vm и копируем его на созданную виртуальную машину. Запускаем PowerShell от имени администратора.

Разрешаем исполнение скриптов командой Set-ExecutionPolicy Unrestricted. Переходим в каталог со скриптом и запускаем его командой .\install.ps1 (Рис. 14).

По приглашению скрипта вводим пароль администратора.

Оставшийся процесс установки полностью автоматизирован. Во время установки машина несколько раз перезагрузится. Процесс установки будет каждый раз автоматически возобновляться. Установка продолжается примерно 3-4 часа.

14.jpg

Рис. 14. Запуск скрипта установки Commando VM


15.jpg

Рис. 15. Рабочий стол Commando VM

Тест-драйв Commando VM

Commando VM ориентирована в первую очередь на тестирование внутренних сетей. Рассмотрим на примере внутренней сети способ работы с дистрибутивом. Просканируем сеть с помощью Nmap (Рис. 16).

16.jpg

Рис. 16. Сканирование сети с помощью Nmap

Порт 8080 часто используется для административных веб-интерфейсов. Проверим какое приложение через него работает. Запускаем Firefox, вводим адрес сервера и порт. Видим приглашение ввода имени и пароля сервера Jenkins (Рис. 17).

17.jpg
Рис. 17. Страница входа сервера Jenkins

Цель определена. Выбираем оружие. Для таких случаев в арсенале CommandoVM есть Burp Suite Intruder. В качестве боеприпаса возьмем произвольный файл паролей от OWASP SecLists Project в папке Wordlists на рабочем столе. После настройки Burp Suite Intruder и анализа откликов видим, что пароль «admin» дает доступ к консоли Jenkins (Рис. 18).

18.jpg

Рис. 18. Подбор пароля с помощью Burp Suite Intruder

Хорошо известно, что сервер Jenkins в среде Windows по умолчанию устанавливается со Script Console, и запускается под учетной записью NT AUTHORITY\SYSTEM. Разумеется, мы воспользуемся этим преимуществом для повышения привилегий, но сперва проверим, так ли это. Переходим в каталог script на целевом сервере и запускаем простой скрипт для определения под какой учетной записью работает Script Console (Рис. 19).

19.jpg


Рис. 19. Script Console сервера Jenkins

Командная консоль с системными привилегиями открывает большой выбор дальнейших действий; но мы не станем никуда спешить и для начала осмотримся на месте: проверим нет ли на сервере файлов с полезной информацией. В каталоге пользователя «Niso Sepersky» нашелся закрытый ключ SSH и файл «pass.txt» c самоутверждающим паролем «Imth3best!» (Рис 20).

19.jpg

Рис. 20. Файл с паролем пользователя, найденный на сервере Jenkins

Самое время вспомнить о главной цели – корпоративной инфраструктуре на базе Active Directory. Проверим полученную учетную запись на контроллере домена. Инструмент CredNinja из набора CommandoVM прекрасно подойдет для этого (Рис. 21).

21.jpg

Рис. 21. Проверка учетной записи с помощью CredNinja на контроллере домена

А какие права на других узлах? С помощью Nmap мы получили файл 445hosts.txt со списком узлов, на которых открыт порт 445 TCP. Проверим права учетной записи на них (Рис. 22).

22.jpg

Рис. 22. Проверка учетной записи с помощью CredNinja на узлах по списку из файла

Похоже камрад Niso Sepersky имеет административные права только на сервере Jenkins 192.168.38.104. С такого плацдарма можно начать разведку домена. Простая команда runas / netonly /user:windomain.local\ niso.sepersky cmd.exe и ввод пароля позволит получить командную строку с правами Niso Sepersky в домене windomain, в чем можно убедиться, выведя список файлов общего ресурса sysvol на контроллере домена (Рис. 23).

23.jpg

Рис. 23. Запуск командной строки от имени найденной учетной записи


Запустим PowerShell и поищем общие ресурсы с помощью PowerView (Рис. 24)

24.jpg

Рис. 24. Поиск общих ресурсов с помощью PowerView

Нужно узнать о том в какие группы входит доступная нам учетная запись и ее права. Применим модуль GetDomainUser, чтобы поближе познакомиться с нашим другом Niso Sepersky. Обратите внимание на то, что CommandoVM по умолчанию использует ветку «dev» платформы PowerView (Рис. 25).

25.jpg

Рис. 25. Получение информации об учетной записи с помощью Get-DomainUser

Осталось еще проверить не поможет ли нам продвинуться дальше найденный закрытый ключ SSH. При сканировании портов нашелся хост 192.168.38.105 с открытым портом 22 TCP. Попробуем установить с ним SSH-соединение с помощью MobaXterm (Рис. 26).


26.jpg

Рис. 26. SSH-соединение с помощью MobaXterm

Есть доступ к SSH-серверу с правами root. Увы, он не поможет нам повысить привилегии в домене. Придется вернуться назад и поискать полезную информацию на общем ресурсе Software$, который мы нашли раньше с помощью Invoke-ShareFinder. Для этого отлично подойдет обычный проводник Windows (Рис. 27).

27.jpg

Рис. 27. Подключение в общему ресурсу с использованием полученной учетной записи

После просмотра множества файлов наше терпение было наконец вознаграждено: мы нашли конфигурационный файл с записанными открытым текстом учетными данными сервисной учетной записи (Рис. 28).

28.jpg

Рис. 28. Конфигурационный файл с учетными данными

Проверка найденной учетной записи на контроллере домена с помощью CredNinja показала, что она имеет права локального администратора (Рис. 29).

29.jpg

Рис. 29. Проверка сервисной учетной записи с помощью CredNinja на контроллере домена

Проверим в какие группы входит учетная запись. Для этого снова используем модуль GetDomainUser (Рис. 30).

30.jpg

Рис. 30. Получение информации о сервисной учетной записи с помощью Get-DomainUser

Поздравляю! Мы в группе администраторов домена! Конечно, сеть, которую мы проверяли была вымышленной (тестовой); но все использованные инструменты – настоящие, и они, как и многие другие установлены на Commando VM по умолчанию. Полный список инструментов и установочные скрипты можно найти в репозитории Commando VM в Github по ссылке.

В августе 2019 года, вышла обновлённая версия дистрибутива Commando VM 2.0.

Услуги

Innostage-Group-mobile
Обратный звонок

Представьтесь, мы вам перезвоним.

Наш сайт использует файлы cookie, которые помогают нам делать этот сайт удобнее для пользователей. Продолжая работу с сайтом, вы подтверждаете свое согласие на обработку файлов cookies вашего браузера. Обработка данных пользователей осуществляется в соответствии с Политикой обработки персональных данных.