BlueTeam Trainings — разбор задания WireDive категории Digital Forensics от CyberDefenders

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Это первая статья из цикла “BlueTeam Trainings”. CyberDefenders является учебно-тренировочной платформой, которая предоставляет возможность на практике проверять уже имеющиеся навыки и приобретать новые в области информационной безопасности.

Для прохождения этого задания достаточно иметь установленным на своей машине Wireshark и иметь базовое представление о том, как выглядит интерфейс этой программ. Скачать архив с трафиком можно тут. Приступим к работе!

Файл dhcp.pcapng

Вопрос 1. What IP address is requested by the client?

Протокол DHCP предназначен для автоматического назначения IP-адресов устройствам, которые подключаются к сети. Поэтому первым действием запустим указанный файл в Wireshark и отфильтруем пакеты по протоколу DHCP.

Сразу возникает желание проверить IP-адреса 192.168.2.244 и 192.168.2.1, однако мы не ищем легких путей, а хотим разобраться в сути вопроса. Все пять пакетов представляют собой различные DHCP-сообщения в поле Info.

Discover — используется для поиска DHCP-серверов на канальном уровне. При этом в качестве источника указывается MAC-адрес клиента, а в качестве получателя широковещательный MAC-адрес. Загловок IP-пакета включает в себя сетевые адреса источника и получателя, в нашем случае это 0.0.0.0 и 255.255.255.255. Обращение происходит по классическим UDP портам 68 и 67.

Offer — ответ сервера на запрос Discover от источника. Сервер может отправлять сообщение как широковещательно, так и адресно. Изучив данный пакет мы видим, что в поле Your (client) IP address был назначен адрес 192.168.2.244, который изначально был запрошен клиентом с помощью сообщения Discover. Ответ на вопрос №1 — 192.168.2.244.

Вопрос 2. What is the transaction ID for the DHCP release?

Встречаем знакомый нам тип сообщения DHCP Release. Для начала изучим структуру DHCP пакета.

Transaction ID генерируется при процессе получения сетевого адреса и предназначено для того, чтобы сервер не перепутал процессы, обращающихся к нему клиентов. Видим где находится Transaction ID и изучаем пакет с сообщением Release. Ответ на вопрос №2 — 0x9f8fa557.

Вопрос 3. What is the MAC address of the client?

На предыдущем скриншоте видим заголовок Client MAC address, его и следует указать в качестве ответа.

Вопрос 4. Which root server responds to the query? Hostname.

Единственной зацепкой к данному заданию является то, что Hostname начинается с e, так как root серверов достаточно много. Поэтому получаем ответ e.root-servers.net

Файл dns.pcapng

Вопрос 5. What is the response for the lookup for flag.fruitinc.xyz?

DNS предназанчен для получения дополнительной информации о доменах, как правило это сопоставление IP-адреса и имени хоста. DNS это протокол, который работает по схеме запрос-ответ. Клиент запрашивает информацию в одном UDP-запросе, за эти запросом следует UDP-ответ по 53 порту.

Вопрос 6. What is the path of the file that is opened?

Простейшее задание по определению открытого файла по протоколу SMB. При открытии файл передается в сетевых пакетах в качестве последовательности байт. Запись трафика позволяет восстановить переданный файл, в Wireshark это можно сделать следующим образом: открыть вкладку File->Export Objects->SMB.

Находим путь к файлу TradeSecrets.txt.

Вопрос 7. What is the hex status code when the user SAMBA\jtomato logs in?

Различным событиям при работе с протоколом SMB присвоены свои статус коды. Все коды можно посмотреть здесь. Найдем пакеты, которые связаны с SAMBA\jtomato по поиску.

В пакете №76 видно, что пользователь получает ошибку, которая называется STATUS_LOGON_FAILURE. Находим hex значение этой ошибки, это и будет ответом на седьмой вопрос.

Аналогично можно было найти hex status code, используя прикрепленный выше ресурс, по названию ошибки.

Вопрос 8. What is the tree that is being browsed?

Для ответа на этот вопрос необходимо найти Tree Connect Request Tree – запрос на доступ клиента к определенному ресурсу на сервере. Запрос имеет формат \\HOST\sharename. С помощью поиска символов \\ в пакетах найдем такие следующие:

В глаза бросаются два варианта ответа, которые отвечают формату запроса. При этом IPC$ является нулевой сессией и используется при анонимной авторизации, например, для перечисления имен учеток домена и сетевых ресурсов. После этого обращение произошло к \\192.168.2.10\public - это и будет ответом на вопрос.

Вопрос 9. What is the flag in the file?

Необходимо найти флаг в файле, который начинается на O. Вернемся к шестому вопросу и сохраним файл TradeSecrets.txt. Пользуясь классическим поисковиком в текстовом редакторе находим flag<OneSuperDuperSecret>.

Файл shell.pcapng

Вопрос 10. What port is the shell listening on?

С самого начала установлена TCP сессия tcp.stream eq 0 которая обращается по порту 4444. Это и будет ответом на вопрос.

Вопрос 11. What is the port for the second shell?

Вопрос тесно связан с предыдущим. Для ответа на него необходимо в фильтре указать tcp.stream eq 0 Follow->TCP Stream и проследить за первым потоком.

Замечаем команду sudo –S nc –nvlp 9999 …, что и демонстрирует прослушиваемый порт вторым шелом.

Вопрос 12. What version of netcat is installed?

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

Вопрос 13. What file is added to the second shell?

Обратимся к уже известному потоку и ответим на вопрос.

Вопрос 14. What password is used to elevate the shell?

Скриншот содержит команду, которая выполняется от привилегированного пользователя. Для ее успешного выполнения командой echo передается пароль, он и будет ответом на этот вопрос.

Вопрос 15. What is the OS version of the target system?

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

Сразу определяем, что ОС – Ubuntu. Немного погуглив можно определить, что у всех версий есть свое кодовое название, в нашем случае это bionic.

Вопрос 16. How many users are on the target system?

Вспомним, какой файл передавался с использованием этого шела. Файл /etc/passwd содержит в себе важную информацию об учетных записях пользователей, например, такие как id учетки, домашний каталог, используемая оболочка и другую информацию. Следовательно в трафике необходимо найти содержимое этого файла.

На скриншоте указан порт, по которому происходила передача данного файла. Воспользовавшись фильтром по порту найдем TCP-поток (№ 6) и проследуем за ним.

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

Файл network.pcapng

Вопрос 17. What is the IPv6 NTP server IP?

NTP это сетевой протокол, который выполняет функцию синхронизации внутренних часов устройства с сетевым сервером. Отфильтруем пакеты по протоколу NTP и найдем IPv6 адрес сервера.

Вопрос 18. What is the first IP address that is requested by the DHCP client?

Встречаемся с уже знакомым нам DHCP. Фильтруем пакеты по протоколу и обнаруживаем DHCP Request. Нетрудно найти ответ на вопрос в опциях запроса.

Вопрос 19. What is the first authoritative name server for the domain that is being queried?

При поиске DNS сервера воспользуемся фильтром dnsserver.

Вопрос 20. What is the number of the first VLAN to have a topology change occur?

Необходимо определить маркер, по которому можно судить об изменении топологии. Используем фильтр vlan и посмотрим, что выдает Wireshark.

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

На этом ресурсе представлена структура STP пакетов. Из интересного нам можем выделить поле Flags, младший бит которого называется Topology Change, а старший Topology Change Acknowledge, остальные зарезервированы. Получив эти бесценные знания воспользуемся следующим фильтром: stp.falgs.ac == 1.

Ответом на вопрос является номер вопроса.

Вопрос 21. What is the port for CDP for CCNP-LAB-S2?

CDP – удобный проприетарный протокол для тех, кто пользуется (или когда-то пользовался) продукцией компании Cisco. С его помощью можно обнаруживать сетевое оборудование Cisco. Wireshark знает об этом протоколе, поэтому пользуемся фильтром и находим ответ.

Вопрос 22. What is the MAC address for the root bridge for VLAN 60?

Вернемся к протоколу STP и организуем вывод пакетов с учетом номера VLAN. Для этого используем следующий фильтр – stp.pvst.origvlan == 60

Пакеты содержат поле Bridge Identifier, записываем ответ.

Вопрос 23. What is the IOS version running on CCNP-LAB-S2?

CCNP-LAB-S2 нам уже знакомо, а также известен протокол CDP, который предоставляет информацию о сетевом оборудовании(а ведь нам нужно узнать версию IOS). Используем поиск string CCNP-LAB-S2 в Packet details и анализируем содержимое пакета. Поле Software Version протокола CDP содержит версию IOS : 12.1(22)EA14.

Вопрос 24. What is the virtual IP address used for hsrp group 121?

Встречаемся с еще одним протоколом от Cisco. Предназначен он для резервирования связей между маршрутизаторами, что увеличивает отказоустойчивость сети. Реализуется это за счет создания между роутерами виртуального IP и MAC адреса. Иногда используют целые группы резервирования, для реализации данного протокола. В дампе трафика нет hsrp, но есть его вторая версия, фильтруем по группам hsrp2.group == 121. В поле Group State TLV находим виртуальный IP-адрес, присвоенный 121 группе.

Вопрос 27. How many router solicitations were sent?

Концепция протокола Router Discovery позволяет посредством протокола ICMP находить в сети роутеры. В ICMP сообщения Router Solicitation имеют тип 10, но пакетов, которые возвращает фильтр icmp.type == 10 нет, поэтому будем смотреть в ICMPv6. Определяем тип сообщений(133), фильтруем и считаем количество.

Вопрос 28. What is the management address of CCNP-LAB-S2?

Необходимо найти адрес управления… Логика подсказывает, что необходимо вернуться к протоколу CDP. Используем фильтр cdp.deviceid и найдем пакеты, которые связаны с устройством CCNP-LAB-S2. Откроем поля протокола CDP и посмотрим на самый последнее поле Management Addresses. Находим ответ.

Вопрос 29. What is the interface being reported on in the first snmp query?

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

Вопрос 30. When was the NVRAM config last updated?

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

Вопрос 31. What is the ip of the radius server?

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

Находим такие пакеты и следуем за потоком. Получаем уже знакомые конфиги устройства. За это уже можно зацепиться, так как в конфиге может быть прописан адрес RADIUS сервера.

Так оно и получилось!

Файл https.pcapng

Вопрос 32. What has been added to web interaction with web01.fruitinc.xyz?

Простой фильтр не дает результатов. Исходя из названия файл и наличия файла secret_sauce.txt делаем вывод, что трафик необходимо расшифровать. Необходимо провести настройку Wireshark. Для этого заходим в Edit→Preferences→Protocols→TLS и указываем путь к файлу secret_sauce.txt в поле (Pre)-Master-Secret log filename. Предварительный мастер-ключ генерируется клиентом и используется сервером для получения мастер-ключа, которым шифруется трафик сессии.

После этого сразу получим два пакета. Смотрим http поток и находим флаг.

Вопрос 33. What is the name of the photo that is viewed in slack?

Просмотр экспорта объектов не дает желаемых результатов.

Попробуем найти в заголовке http найти ключевое слово slack с помощью фильтра http.host contains slack. Находим 4 GET запроса с ответом.

Вопрос 34. What is the username and password to login to 192.168.2.1?

Первым делом я хотел сопоставить доменное имя с IP-адресом, но вместо этого использовал простейший фильр ip.addr == 192.168.2.1 и начал просматривать трафик, который приходит на этот адрес. Замечаем большое количество обмена трафиком по протоколу DNS и HTTP2. Задача нахождения логина и пароля учетки наталкивают на мысль, что необходимо смотреть добавить фильтр HTTP2. В итоге получаем 78 пакетов.

В таком случае необходимо проследить закономерность между передаваемыми пакетами. Выявляем, что после каждого POST запроса с заголовками передаются пакеты с полем DATA. Однако эта информация не является особенно полезной, так как таких пакетов может быть большое количество и в некоторых случаях их ручной перебор может быть затруднительным, поэтому воспользуемся поиском по слову password(не выбираю слово username, так как поле с логином может называться по разному, например, id, login, name или username).

Такой поиск указывает на пакет №937, проследуем его потоку. В куче непонятных байт прослеживаются слова usernamefld passwordfld и login. Получаем ответ!

Вопрос 35. What is the certStatus for the certificate with a serial number of 07752cebe5222fcf5c7d2038984c5198?

В трафике TLSv1.2 существуют пакеты, в которых передаются сертификаты. Например, вы можете использовать команду openssl s_client с флагом -status для отправки запроса статуса сертификата на сервер. Аналогичный статус и необходимо найти. Воспользуемся поиском по серийному номеру. Погуглив о статусах сертификатов натыкаемся на эту страницу. Интерес представляет фильтр ocsp.certStatus. Из полученных 24 пакетов необходимо выделить с нужным серийным номером, для этого используем поиск по серийному номеру. Получаем статус!

Вопрос 36. What is the email of someone who needs to change their password?

Самое неоднозначное решение. Оно близко к случайному попаданию, основанному на формате ответа. Изначально задание показалось похожим на 34 вопрос, принцип поиска по пакетам был аналогичным. Дальше пришла идея фильтровать по x-www-form-urlencoded, однако это не принесло плоды.

При дальнейшем скроле трафика можно заметить, что в дампе существует трафик http2/json. Скорее всего авторизационные данные передаются именно в формате JSON, а нам необходимо найти email. Отфильтруем пакеты по JSON. Из 29 пакетов 3 имею классический JSON формат, их и следует изучить. В пакете 11847 находим email, это и будет ответом на вопрос.

Вопрос 37. A service is assigned to an interface. What is the interface, and what is the service? Format: interface_name:service_name

Итак, это последний вопрос из задания WireDive. Так как многие вопросы в данном задании связаны, неплохой идеей будет посмотреть на трафик, который ассоциирован с IP-адресом 192.168.2.1. Вернемся к уже знакомому фильтру http2 && ip.dst == 192.168.2.1. Замечаем POST и GET запросы на /services_ntpd.php. Сразу вспоминаем что такое NTP(название сервиса найдено). Однако в вопросу №17 мы уже встречались с этим протоколом, когда искали IP-адрес сервера. Изучим содержимое этих пакетов. В потоке http2 находим название интерфейса.

Завершился первый разбор из серии BlueTeam Trainings, надеюсь данная статья была полезна широкому кругу лиц!

Источник: https://habr.com/ru/post/675362/


Интересные статьи

Интересные статьи

Подборка мероприятий на неделю Инфраструктура цифрового предприятия 08 декабря (среда) Новоданиловская наб 6 от 5 200 р. Цифровизация невозможна без адекватной инфраструктуры – именно интелле...
Все чаще мы видим в смартфонах так называемые 3D-сенсоры, или сенсоры глубины. Большинство из них также называют ToF-сенсорами аналогично одноименной технологии. По слухам, такой сенс...
Изображение: Unsplash Уже несколько дней интернет-общественность активно обсуждает фильм Юрия Дудя про Кремниевую долину. Опрошенные блогером эксперты рассказали об устройстве мировой IТ-с...
Приветствую всех хабрачитателей. Прошло три недели с момента, как я предложил желающим порешать мой CTF и, думаю, что пора опубликовать разборы задач. По своему опыту знаю, что очень обидно быть ...
Основатель digital-агентства Роман Квартальнов делится простым решением, которое помогло сделать производственные процессы прозрачными, дало возможность в любой момент времени оценить себестоимо...