Проходим Standoff 365 с помощью пентест блокнота

Начну с того, что ребята сделали по-настоящему классную вещь. Как только увидел анонс заказал себе сразу так как давно хотел что-то такое в бумажном исполнении, а распечатать свой Obsidian — получится четыре тома про Red и Blue team.
Отмечу качество исполнения — его приятно держать в руках, а если Вам просто для фото в кофейне с MacBook — смотрите все — я script kiddie хакер, тоже подойдет.

Перейдем сразу к делу. С самого начала я хотел сделать обзор блокнота применительно к CTF или лабе на одной из площадок, а пока ждал обновленный Standoff полигон для профи (он уже вышел, но на момент написания был еще в процессе — заходите, очень круто сделали!), решил взять компромисный вариант, чтобы было интересно всем и каждый мог повторить — Онлайн-полигон для начинающих на Standoff 365.

Суть идеи — проверить насколько блокнот и материалы в нем будут полезны для решения подобных задач. Сразу скажу, что это не учебник по Kali linux и не пособие для Скрипт-кидди, которое выведет вас в топ рейтинга, а скорее удобный формат того, что иногда сложно держать в голове. Один из плюсов блокнота, если ты знаешь, что делаешь — ты быстро вспомнишь, если не знаешь — видишь, о чем почитать.

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

Итак, мы возьмем первые 3 задачи из серии infra. Иногда, особенно в самом начале на полигонах по типу Standoff 365 новички не знают, как подступиться к заданиям. Мы попробуем воспользоваться техниками из блокнота.

[infra-1] Внешняя разведка

В задании у нас есть скоуп — внешний периметр 10.124.1.224/27. Открываем блокнот и нас встречает раздел Разведка (ребята очень грамотно и удобно разделили информацию — за это отдельное спасибо). Ищем среди команд и находим вот такую

nmap -T4 -Pn -sV -p1-65535 10.124.1.224/27

В блокноте указаны не просто команды, но и описание к ним, из которого мы видим, что сейчас будет выполнено TCP-сканирование портов 1-65535 с определением версии сервиса без предварительной проверки ICMP. Если у вас совсем нет опыта, советую детально почитать про все параметры, в том числе что такое ICMP. Думаем, а нужно ли нам сканировать все порты? Модифицируем например до следующей

nmap -sC -sV -T4 10.124.1.224/27

Ждем результатов скана. У более опытных пентестеров могут возникнуть вопросы по поводу «шумности» и длительности конкретно первой команды, почему например не RustScan или не поставить меньше опций. В нашем случае не полноценный red team проект, а лишь желание проверить насколько такие инструменты как пентест-блокнот могут вообще помочь в таких заданиях, особенно если ты не знаешь с чего начать, плюс оставить маневр для самостоятельного изучения других инструментов, да и для выполнения следующих заданий пригодится понимание всей картины сети. Итак, что мы насканили (выведу только часть)

nmap -sC -sV -T4 10.124.1.224/27 

Nmap scan report for 10.124.1.231
80/tcp   open  http      nginx 1.25.4
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.232
80/tcp   open  http      Apache httpd 2.4.49 ((Unix))
8080/tcp open  http      Golang net/http server
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.233
80/tcp   open  http      Apache httpd 2.4.54 ((Ubuntu))
|_http-generator: WordPress 6.8.1
|_/wp-admin/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.234
80/tcp   open     http      Apache httpd 2.4.51 ((Debian))
|_/wp-admin/
4444/tcp filtered krb524
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.235
21/tcp   open  ftp       vsftpd 3.0.3
80/tcp   open  http      Apache httpd 2.4.57 ((Debian))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.236
80/tcp   open  http      Apache httpd 2.4.29 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.237
80/tcp   open  http      nginx 1.14.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.238
80/tcp   open  http      Apache httpd 2.4.56 ((Debian))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.239
80/tcp   open  http       Apache httpd 2.4.41 ((Ubuntu))
5432/tcp open  postgresql PostgreSQL DB 12.14 - 12.18
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.240
53/tcp   open  domain    ISC BIND 9.16.48 (Ubuntu Linux)
| dns-nsid: 
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.241
80/tcp   open  http      Apache httpd 2.4.41 ((Ubuntu))
|_/secret/ /core/ /uploads/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.242
80/tcp   open  http      Apache httpd 2.4.29 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 10.124.1.253
Host is up (0.035s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT     STATE SERVICE   VERSION
443/tcp  open  https?

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 32 IP addresses (14 hosts up) scanned in 202.10 seconds


Наше первое задание заключается в следующем — получить список с внешних веб-ресурсов компании и восстановить пропущенные символы в адресе почты. Соответственно скорее всего нам нужно искать веб-сервер на 80 или 443 порту. Само собой я не буду публиковать здесь ответы, лишь дам подсказки. Ищите сайт, связанный с логистикой и внимательно изучите лендинг — там будет ответ. На Standoff Hackbase для начинающих есть очень классные подсказки (3 шт на задание), которые весьма выручают.

[infra-2] Получение доступа к внутренней почте

В задании 2 нам нужно получить доступ к электронной почте сотрудника компании и отправить с нее письмо на адрес из задания, чтобы получить флаг. К заданию прилагается файл с паролями, а почты мы уже нашли ранее. Настало время брута

Как нам понять что брутить? Возвращаемся к результатам скана nmap и видим, что на хосте 10.124.1.240 есть что-то про 53 порт и dns. Берем наш блокнот и в разделе DNS сканирование находим команду

dig @DNS_server_ip domain_name MX

Как видим из описания, она выполняет поиск почтового сервера для домена

 dig @10.124.1.240 edu.stf MX 

; <<>> DiG 9.20.9-1-Debian <<>> @10.124.1.240 edu.stf MX

;; ANSWER SECTION:
edu.stf.                604800  IN      MX      10 mail.edu.stf.

;; ADDITIONAL SECTION:
mail.edu.stf.           604800  IN      A       10.124.1.203

Заходим на 10.124.1.203 и видим нашу заветную цель

Открываем BurpSuite (блокнот не может и не должен охватить все — учимся искать и читать самостоятельно), перехватываем POST запрос, далее отправляем пакет в Intruder, отмечаем параметры для брута (выделены на скрине), и в разделе Payload (справа) указываем наши логины и пароли (каждый для своего параметра).


Нажимаем Start Attack и ждем. Если у вас не версия PRO, задание выполните, но будет местами не так удобно. Как понять, что пароль подошел? Смотрим на поле Length, сохраняем пароль, заходим под учеткой на почту, отправляем письмо и сдаем флаг.

[infra-3] Получение доступа к VPN компании

И наконец задание номер 3 в котором нам предлагают получить доступ во внутренний VPN компании. Спойлер — храните учетки полученные на предыдущих этапах.


Итак, что делать?

С одной стороны у нас есть vpn.edu.stf, а с другой стороны, где взять конфиг? Открываем блокнот и смотрим на Сбор информации о домене

gobuster dir -u FULL_WURI -w wordlist

Она выполняет поиск директорий по словарю

gobuster dir -u http://www.edu.stf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

Очень быстро находим разные директории, в одной из них будет то, что нам нужно

Таким образом мы видим, что первые 3 задания достаточно легко берутся с помощью нашего пентест блокнота, плюс заставляют нас почитать на тему BurpSuite и не только.

Удачи на полях Standoff365