Разбор конкурса «Конкурентная разведка» на PHDays 9

18.06.2019

Восьмой год традиционный конкурс «Конкурентная разведка» предлагает участникам попробовать свои силы в поиске информации и между делом изучить новые техники OSINT. В этом году все задания были сосредоточены вокруг вымышленной ИБ-компании, позиционирующей себя как компанию — эксперта одной уязвимости. Участники конкурса должны были найти информацию о людях, связанных с этой организацией, не прибегая ко взлому, а полагаясь исключительно на помощь различных источников с просторов сети и на собственную смекалку.

Конкурс включал 19 заданий, за каждое из которых начислялось определенное количество баллов по степени сложности:

В этой статье мы разберем, как можно было решить каждое задание.

Company real name — 10

В начале соревнования участники получили описание некоторой компании: nfsg64ttmvrxk4tjor4q. Для решения первого задания необходимо было воспользоваться поиском Google. На запрос выдавалась информация о домене компании:

Можно предположить, что строка закодирована, но если перебрать несколько вариантов алгоритмов шифрования (например, с помощью онлайн-декодера), то можно прийти к выводу, что это Base32 от строки Idorsecurity. Она и была ответом к этому заданию. Для того чтобы флаг был принят, ответ на каждое задание нужно было перевести в нижний регистр и затем захешировать с помощью MD5. Был и альтернативный способ решения: можно было перебрать различные варианты имени компании, используемые ее представителями (id канала в Telegram или Facebook).

Donation wallet number — 20

Если перейти по ссылке, выданной Google, то попадаешь на блог компании на WordPress.

На первый взгляд, здесь нет ничего полезного. А что если обратиться к веб-архиву? Wayback Machine выдает два сохраненных состояния сайта, на одном из которых содержится полезная информация: номер кошелька, который является флагом к заданию.

IDOR specialist username — 30

На сайте также сказано, что сотрудник компании в связи с ее закрытием продает свое оборудование на eBay. Запомним этот момент.

Так как блог сделан с помощью WordPress, был смысл определить стандартные входные точки этого блога. Одна из таких — метод /wp-json/wp/v2/users/, отображающий список пользователей, публиковавших что-либо на сайте. Его можно обнаружить, если, например, просканировать сайт с помощью утилиты WPScan.

Кстати, на сайте HackerOne, посвященном поиску уязвимостей в инфраструктурах различных компаний, есть репорт, в котором разбирается подобная «утечка».

По полученной ссылке (http://nfsg64ttmvrxk4tjor4q.club/wp-json/wp/v2/users/) находился список пользователей с их описанием. Они соответствуют цепочке заданий на нахождение информации о том или ином человеке. Здесь участники могли найти очередной флаг — юзернейм специалиста IDOR.

IDOR specialist location — 25

В этом задании как раз и нужна была информация о том, что компания продает свое имущество на eBay. Следующий шаг — поиск по имени пользователя из wp-json-аккаунта компании или одного из сотрудников. Это можно было сделать несколькими способами: пользуясь поиском участников eBay (но для этого требовалось включить mixed content в браузере, так как сайт работал по HTTPS, а капча, выдаваемая скриптом на странице, висела на HTTP) или сайтом namechk.com (он выводит cписок социальных сетей, на которых зарегистрирован введенный юзернейм).

Успешный поиск приводит к странице сотрудника на eBay и флагу к заданию:

IDOR specialist work e-mail — 30

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

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

На фото видно, что сотрудник, продающий оборудование Idorsecurity, как-то связан с другой компанией — Self-XSS Security. Поиск этой компании на LinkedIn выдает ссылку на профиль одного из сотрудников (а именно специалиста IDOR) и его корпоративную почту.

Участники, которые дошли до этого момента, заметили, что для только что созданного аккаунта не работает детальный просмотр страницы пользователя Abdul Bassur. Для обхода этого ограничения есть несколько путей. Например, можно заполнить только что созданный профиль всей необходимой информацией. Один из участников конкурса предложил зарегистрировать аккаунт, где в графе «место работы» указано Self-XSS Security. В этом случае алгоритмы LinkedIn распознали новый созданный аккаунт и страницу пользователя из изображения выше как принадлежащие к одной сети контактов и открыли доступ к детальной информации об Abdul Bassur. Там и был флаг к заданию — рабочий email специалиста IDOR.

IDOR specialist personal e-mail — 70

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

Тут-то и выясняется: корпоративная почта компании работает с помощью mail.yandex.ru. Кроме того, можно найти некоторые IP-адреса — как IPv4, так и IPv6. Сканирование TCP и UDP по некоторым из них с помощью Nmap давала любопытные результаты.

К сожалению, подключение по SNMP к IPv4 не дало бы ничего, что можно было бы сдать как флаг или использовать потом.

При подключении по SNMP к IPv6 у некоторых участников соревнования возникли проблемы, так как они не учли, что для подобного вида подключений требуется выделенный IPv6-адрес. Его можно было получить, если арендовать сервер с функцией выше и использовать в качестве VPN. Подобной услугой можно было воспользоваться на DigitalOcean или Vultr.

IPv6 даст больше информации, чем IPv4. К примеру, в одном из OID (1.3.6.1.2.1.1.4.0 также называется sysContact и содержит информацию — чаще всего email — чтобы можно было связаться с владельцем сервера). В качестве значения будет лежать личная почта — флаг к заданию.

Здесь заканчивается цепочка заданий, связанная со специалистом IDOR.

Secret employee mobile phone — 20

Second employee IM username — 25

Получить первый флаг в заданиях, связанных с secret employee, можно было разными способами. Первый способ: если решить все предыдущие задания, то на руках будет рабочая и личная почта одного из сотрудников Idorsecurity. Также будет информация, что корпоративная почта компании поднята на mail.yandex.ru.

Итак, можно перейти на «Яндекс» и попробовать восстановить доступ для почты p@nfsg64ttmvrxk4tjor4q.club. Так как пароль неизвестен, поможет секретный вопрос My private mail, ответ на который был найден в SNMP.

Так, теперь появился доступ к Яндекс.Коннекту компании. По своей функциональности он является внутренней адресной книгой: в нем есть список сотрудников с их контактными данными и информацией, в каких подразделениях они работают. Как раз то, что нужно! Так, одним махом можно было сдать сразу два флага — номер мобильного телефона сотрудника и еще одни юзернейм.

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

По данному id находится канал компании, а в его описании есть аккаунт владельца компании с номером телефона. Это и будет ответом на задание «Secret employee mobile phone».

Secret employee username — 40

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

Верным шагом была проверка «Твиттера»: она привела к аккаунту сотрудника компании Idorsecurity и его имени, а значит и к сданному заданию.

Secret employee birthday — 40

Внимательно изучив аккаунт, можно наткнуться на ответ сотрудника на один из твитов о поиске программиста. Сотрудник Idorsecurity оставил в своем твите ссылку на резюме, пропущенную через GG.GG.

Переход по ссылке не давал ничего полезного, но, если заметить опечатку в конечном URL, можно было прийти к ошибке 403 и нестандартному имени файла.

Проанализировав имеющуюся информацию о secret employee, можно было прийти к поиску данного сотрудника по соцсетям, так как известно его имя и место работы. Этот ход приводит к аккаунту на vk.com, а в нем можно найти ответ на задание — дату рождения secret employee.

Secret employee university — 50

Чтобы пройти это задание, нужно было подумать, какая информация еще не была использована, а именно: наличие у сотрудника аккаунта на vk.com, нетипичное имя файла с резюме, а также то, что задание называется «Secret employee university».

Для начала можно было поискать файл с резюме по названию в разделе «Документы» на сайте vk.com. Как показывает практика, это полезный трюк для поиска приватной информации: так, например, можно обнаружить даже паспортные данные. Этот ход дал доступ к резюме, где хранился флаг к заданию.

Цепочка заданий, связанная с secret employee, завершена.

Nightly programmer private username — 30

Для поиска информации о nightly programmer нужно было вернуться к wp-json.

В описании сотрудника содержалась подсказка о том, где его можно было поискать: например, на github.com. Поиск сотрудника Matumbo Harris по ресурсу давал ссылку на репозиторий — и очки за флаг к заданию.

What the flag? — 60

В репозитории был код некоего бота. При внимательном изучении кода можно было заметить hardcoded токен. Следующая после него строчка кода или простой запрос в Google давал участникам намек о Slack API.

Потратив некоторое время на изучение Slack API, можно было проверить токен на валидность и опробовать некоторые методы. Например, узнать список файлов, которыми обменивались в чате Slack (судя по всему, корпоративный чат компании Idorsecurity).

Еще немного изучив Slack API, можно было получить ссылки на доступные файлы:

Изучение документа по ссылке дает представление о том, что требовалось в задании «What the flag?».

Помимо этого, Slack API позволял получить список пользователей чата, к которому привязан данный токен. Это был ключик к решению задания «Second employee IM username»: по имени и фамилии легко найти имя нужного пользователя.

Цепочка с nightly programmer завершена.

IP used in PoC — 40

Здесь нужно было снова обратиться к началу, а именно к блогу компании, и посмотреть, что еще осталось неиспользованным. Там была ссылка на Amazon S3 и задание «IP used in PoC», флаг к которому нужно искать именно на S3.

Прямой переход по ссылке не давал ничего полезного, а вот подытог всей имеющейся информации о данном задании приводил к изучению документации Amazon S3.

В документации среди способов подключения к бакету S3 описана возможность взаимодействия с помощью собственного набора CLI-программ от Amazon под названием AWS CLI. Подключение подобным образом открывало доступ к файлу и флагу от задания «IP used in PoC».

Подобный результат в различных способах доступа по ссылке обусловлен настройкой ACL для данного бакета, а именно наличием canned ACL типа authenticated-read, дающим полный доступ его владельцу и права на чтение только группе AuthenticatedUsers, к которой принадлежат все пользователи, имеющие аккаунт на AWS (поэтому работает подключение по AWS CLI, так как для работы с данным набором программ требуется аккаунт). Подробнее можно почитать на странице: docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html.

Alexander's real lastname — 25

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

Изучив данные, содержащиеся на странице, можно было наткнуться на номер телефона.

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

Peter's primary e-mail We know he's looking for a job — 40

Чтобы выполнить это задание, нужно было вновь обратиться к поиску в Google всей возможной информации о компании. Поиск по Idorsecurity первой ссылкой выдавал страницу на moikrug.ru еще одного сотрудника. Зайдя на moikrug.ru будучи авторизованным, можно было получить почту работника Idorsecurity.

Peter's secondary e-mail — 20

Почта находится на Mail.ru, можно было попробовать восстановить к ней пароль.

Достаточно предсказуемо, что два астериска скрывают in. Это предположение и приводило к успешно решенному заданию.

Peter's password — 60

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

Поиск по одному из сайтов, где можно получить доступ к утечкам (Weleakinfo, LeakedSource или бесплатно скачать нужную базу с Databases.today, название которой можно узнать на Weleakinfo), привел участников к успешно сданному заданию.

Software which was downloaded from IP 77.71.34.171 — 30

Последнее задание из разобранных. В нем требовалось найти название Torrent-файла, одноименного с некоторым ПО, который скачивался с IP-адреса, данного в таске. Для этих целей существует сайт iknowwhatyoudownload.com: он выводит эту информацию, потому что в основе поиска используются алгоритмы, имитирующие полноценных участников DHT-сети, с помощью которой участники файлообмена находят друг друга при скачивании файла.

Итоги

К концу соревнования из 599 участников 227 человек решили хотя бы одно задание.

Топ-10:

550 Noyer_1k — 16 решенных заданий! 1. 480 Mr3Jane — 15 решенных заданий! 2. 480 kaimi_ru — 15 решенных заданий! 3. 480 Lendgale 4. 480 V88005553535 5. 425 cyberopus 6. 420 nitroteamkz 7. 420 joe1black 8. 355 breaking_mash 9. 355 U-45990145

Участники, занявшие первые три места, получили призы:
I место: наушники Apple AirPods, инвайт на PHDays и специальный приз от журнала «Хакер» (спонсора конкурса) — годовая подписка на журнал.
II место: Wi-Fi-адаптер ALFA Network AWUS036NH, подписка на журнал «Хакер» на полгода, инвайт на PHDays.
III место: портативный аккумулятор Xiaomi ZMI QB810, подписка на журнал «Хакер» на 3 месяца, инвайт на PHDays.

После окончания соревнований около трех недель задания оставались доступными, и два участника с именами V88005553535 и romask решили их все и получили максимальные 665 очков.

Благодарим всех за участие, увидимся в следующем году! Разборы соревнований лет: 2012, 2013, 2014, 2015, 2017, 2018.