Разминка перед Pentestit Lab 12

Сегодня 14.12.2018 в 12:00 по московскому времени запущена новая лаборатория тестирования на проникновение «Test lab 12», представляющая собой копию реальной корпоративной сети с присущими ей уязвимостями и ошибками конфигурации.

На сайте лаборатории уже зарегистрировано более 25 000 участников, среди которых ведущие специалисты в области информационной безопасности крупнейших российских и международных компаний.

Разминка перед Pentestit Lab 12

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

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

Победителем считается участник, первым собравший все токены, то есть фактически получивший полный контроль над виртуальной корпоративной сетью.

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

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

Проще всего «пробьется» первый (внешний) периметр, далее продвижение усложнится.

В самом сложном секторе мы размещаем уязвимости, эксплуатация которых затруднительна при большом количестве участников.

Такой подход позволяет решить сразу две задачи:

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

Разминка перед Pentestit Lab 12

В фильме снимались В лаборатории использовались:

  • Различные сетевые сервисы (Mail, DNS, AD и VPN и т.д.), SIEM и СУБД;
  • WebApp и API (PHP, Python, Django, Java);
  • Самописные Desktop-приложения;
  • Дополнительные вспомогательные сервисы для придания реалистичности.

Для прохождения лаборатории потребуются:

  • навыки работы с различными сетевыми протоколами;
  • умение анализировать данные из SIEM-системы, настраивать фильтры корреляции и прочее;
  • опыт реверс-инжиниринга;
  • опыт поиска уязвимостей в сетевых сервисах и веб-приложениях.

Тестирование на проникновение приватной лаборатории

Мы решили выложить выполнение нескольких заданий прошедшей приватной лаборатории, которую разрабатывали этим летом, чтобы помочь начинающим специалистам быстрее получить базовые компетенции.

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

Описанные в статье техники тестирования на проникновение носят обучающий характер. Не нарушайте законодательство.

Вся структура вымышленной организации «UNIONSEC», состоявшей из 15 серверов, располагалась за шлюзом 192.168.102.10, доступного после установки VPN-соединения. Перед участниками ставилась задача — выполнить компрометацию корпоративной сети лаборатории.

Результатом эксплуатации каждой заложенной уязвимости являлся токен, который необходимо было передать через форму на странице lab.pentestit.ru.

Разминка перед Pentestit Lab 12

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

Разминка перед Pentestit Lab 12

Работа в лаборатории требовала опыта работы с различным инструментарием и навыки проведения тестирования на проникновения

Кроме этого, некоторые задания невозможно было выполнить без знаний в области разработки и реверс-инженерии.

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


Разведка

С помощью утилиты nmap получаем список открытых портов:

nmap 192.168.102.10 -sV

Разминка перед Pentestit Lab 12


Сайт компании

По адресу 192.168.102.10 в разделе «Contact us» видим список E-mail адресов:
Разминка перед Pentestit Lab 12

По HTML-коду приложения можно предположить, что оно использует CMS «Wordpress» и содержит плагин «wp-symposium-15.1».

Через www.exploit-db.com определяем, что плагин уязвим к SQL-инъекции. Через URI

192.168.102.10/wp-content/plugins/wp-symposium-15.1/get_album_item.php?size="

пытаемся произвести эксплуатацию уязвимости, используя BASH-скрипт:

!/bin/bash
for ((i=0; i<= 10; i++))IP
do
wget --no-proxy -q -O- "http://192.168.102.10/wp-content/plugins/wp-symposium-15.1/get_album_item.php?size=SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA limit 1 offset $i; --"
echo ""
done

Получаем список баз данных:

information_schema
wp_db

а после эксплуатации уязвимости — и токен:

wget -q -O- 192.168.102.10/wp-content/plugins/wp-symposium-15.1/get_album_item.php?size=* from token; --"

Разминка перед Pentestit Lab 12


Почта

Производим перебор паролей средствами hydra:

hydra smtp://192.168.101.10 -s 25 -L /tmp/emails -P /tmp/pass

Разминка перед Pentestit Lab 12

Используя полученные данные, производим авторизацию в WUI почтового сервера и получаем токен:

Разминка перед Pentestit Lab 12


OpenVPN

Подключение

С веб-севера http://192.168.102.10:88 производим загрузку файла «openvpn.conf». Выполнив сканирование сервера (например, утилитой DirBuster), находим .bash_history:

-bash: generating new OpenVPN password for user admin: command not found
-bash: generating: command not found
-bash: date +%F: command not found
-bash: echo "admin:`date +%F | md5sum | sed -s 's/ -//'`" > /etc/openvpn/user.pass: command not found
cat /etc/openvpn/user.pass
service openvpn restart
exit

в котором можно найти имя пользователя, а также алгоритм генерации пароля. Для воспроизведения ранее созданного пароля используем точную дату создания файла:

Разминка перед Pentestit Lab 12

и выполняем преобразование согласно истории команд. Полученный пароль используем для VPN-аутентификации.

Сканирование сервера

Подключившись к VPN, выполним сканирование портов сервера:

Разминка перед Pentestit Lab 12

Получаем токен по адресу http://10.255.0.1:8080:

Разминка перед Pentestit Lab 12


TERMINAL

VPN-сервер передает нам нескольких маршрутизацию до внутренних сетей, после сканирования которых обнаруживаем несколько хостов с открытым 22 портом. Пробуем авторизоваться под учетной записью dev. Подключившись на один из серверов, обнаруживаем наличие директории /home/support и пытаемся произвести подбор пароля для одноименной учетной записи:

patator ssh_login host=192.168.11.5 user=support password=FILE0 0=usr/share/wordlists/rockyou.txt -x ignore:fgrep='Authentication failed'

Разминка перед Pentestit Lab 12

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

Разминка перед Pentestit Lab 12

Реверс-инжиниринг

На сервере TERMINAL нам удается найти исполняемый файл admin.bin, действие которого завершается на запросе пароля. При помощи реверса получаем пароль fv34cm3cm , который представляет собой токен. При его вводе нам выдается SSH PRIVATE KEY.

С приватного ключа производим аутентификацию на сервере 192.168.11.2, в котором в каталоге /opt/обнаруживаем файл dump.pcap. Анализируем дамп сетевого трафика из файла и извлекаем токен, а также пароль для BASIC-авторизации на веб-сервере 192.168.11.3:

tcpdump -r /tmp/dump.pcap -A | grep token

Разминка перед Pentestit Lab 12


API

На 192.168.11.3 располагается API, доступный с ПК администратора. Используя трансляцию портов (например, через SSH), начинаем его исследование.

Выполнив эксплуатацию обнаруженной в API уязвимости получаем токен, являющийся частью пароля пользователя admin:

Разминка перед Pentestit Lab 12

По адресу http://172.16.0.4 доступно веб-приложение, которое находится в процессе разработки. Из файла readme.html получаем список разрабатываемых страниц:

Разминка перед Pentestit Lab 12

При открытии http://172.16.0.4/availability.php получаем ошибку. Пробуем повторить действие, используя параметр REFERRER http://172.16.0.4/index.html, после чего становится доступна форма с кнопкой ping:

Разминка перед Pentestit Lab 12

Убедившись, что поле ввода не имеет фильтрации, получаем токен:

Разминка перед Pentestit Lab 12
Подключаемся по SSH к серверу 172.16.0.1. После авторизации нас встречает скрипт, который запрашивает PIN-код (5 цифр):

Разминка перед Pentestit Lab 12

Используя самописный скрипт подбора пароля, получаем полноценный доступ к консоли и находим в папке пользователя файл с токен:

Разминка перед Pentestit Lab 12


 

Назад в будущее

Чтобы быстрее освоиться в новой, 12-й лаборатории, мы подготовили небольшой список материалов и инструментов:

  • Инструментарий: Nmap, SQLmap, Burp Suite, WPScan, Nikto/DirBuster/w3af, Dig, Patator/Hydra, IDA Pro

До встречи в «Test lab 12» и пусть победит сильнейший!

Отдельное спасибо организатору и автору статьи Романову Роману.