Как стать автором
Обновить
Positive Technologies
Лидер результативной кибербезопасности

ICO и безопасность: разбор конкурса «Конкурентная разведка» на Positive Hack Days

Время на прочтение 12 мин
Количество просмотров 7.5K
image

За несколько недель до форума Positive Hack Days прошел традиционный конкурс «Конкурентная разведка». В этом году мы опирались на проведенный аудит безопасности и киберугроз ICO, во время которого приходилось для уменьшения рисков анализировать всю внешнюю инфраструктуру, включая команду организаторов, разработчиков и консультантов. Мы создали наш конкурс по мотивам реальных проектов.

Все задания были сосредоточены вокруг вымышленной небольшой краудсейл-компании Notsopositive, представляющей собой типичный ICO с небольшим количеством сотрудников. Во время конкурса участники узнали много скрытой информации об основателях и сотрудниках компании, об их родственниках и друзьях. В первую очередь от участников требовалось иметь в арсенале большое количество онлайн-сервисов и социальных сетей, знать их специфику и уметь использовать. Кроме того, необходимо было оперировать имеющимися сведениями так, чтобы находить необходимые данные о людях и с их помощью добывать новые.

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

Для решения первого вступительного задания, откуда начинались остальные, необходимо было воспользоваться Google:

image

image

Все задания строились вокруг восьми сотрудников проекта Notsopositive из исполнительной команды (Executive Team) и команды разработчиков (Development Team).

image

image

При внимательном изучении сайта участники то и дело натыкались на различные «точки входа», которые вели к решению. Подробнее остановимся на каждом задании.

Adam Wallace, CMO


Вопросы в ветке Adam Wallace:

  • Adam Wallace username?
  • What does Adam’s son have allergies to?
  • What is Adam’s house number?
  • Where does Adam’s son study?
  • CMO’s favorite bar name?

Итак, наткнувшись на сайте на whitepaper, нужно было загрузить PDF на любой онлайн-сервис для чтения META-данных (например, PDFCandy) или открыть в Word, где можно было найти ник CMO, также известного как Adam Wallace, — sumcoinz.

Любители делать все руками могли открыть PDF в своем любимом HEX-редакторе и достать ник Адама самостоятельно.

image

Далее для продолжения цепочки необходимо было найти FTP-сервер c помощью Knock Subdomain Scanner, также для этой цели можно было использовать утилиты dnsmap, sublist3r, sublazerwlst.

image

Был и другой путь: узнать реальный IP-адрес сайта notsopositive.online, скрытый за CloudFlare, и просканировать всю подсеть в поисках 21-го порта. Подход к решению этого задания индивидуальный и зависит от опыта и навыков каждого участника.

Полученных IP-адреса FTP-сервера и логина было достаточно для атаки на перебор пароля. Для этого нужно было применить легендарную утилиту THC-Hydra. Звучит несложно, однако участникам необходимо было использовать весь словарь найденных никнеймов организаторов ICO. Кстати, в логах FTP мы также увидели попытки атаковать пользователей root, admin, administrator.

Узнав логин Адама (sumcoinz), нужно было перебирать пароль по самому известному среди CTF-щиков словарю.

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

image

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

image

Помимо софта здесь были любопытные фотографии, которые содержали в себе сразу несколько флагов.

image

Корявым почерком Адама указаны имя его сына, место учебы, адрес школы и домашний адрес! Еще один флаг — аллерген сына Адама. На том же сервере можно было найти и интересный файл под названием screenshot.jpg:

image

На скриншоте из WhatsApp переписка, предположительно Адама и его друга. В сообщении друг Адама узнает о местонахождении бара, в котором, на момент их общения, Адам проводит время. Использовав любой сервис с картами города Spokane, участник мог «пройти» описанный маршрут и наткнуться на тот самый любимый бар CMO Notsopositive под названием «7th Rail».

image

На момент завершения конкурса всего 20 участников успешно выполнили все задания из сюжетной ветки Адама Уолласа и дошли до описанного этапа.

Ryan Evans, CTO


Вопросы к ветке Ryan Evans:

  • Github username?
  • Corporate email address?
  • Ryan’s wife email address?
  • Ryan’s wife username?
  • Ryan’s wife resort?
  • Ryan’s wife friend’s surname?
  • Ryan’s wife place of work (company name)?

Райан Эванс — технический директор ICO-проекта. Используя утилиты для поиска директорий и файлов, например dirb или словарь fuzz.txt, в корне веб-сайта notsopositive.online можно было найти директорию .git, откуда можно получить все исходники из репозитория. Далее — необходимо было достать исходники с помощью такого способа, воспользоваться GitRipper, указав в качестве цели реальный IP-адрес сайта, и извлечь конфигурационные файлы системы контроля версий Git. Достать /.git/config можно было и с помощью обычного браузера.

image

image

В файле config находилась ссылка на аккаунт GitHub Райана (github.com/ryanevans0082), где можно было наткнуться на его Jabber-аккаунт:

image

image

Писать туда смысла не было, а вот поискать с помощью Google — неплохая идея. Первый флаг сдан, далее нужно было найти в выдаче Google аккаунт Speaker Deck и единственную загруженную презентацию Initial Coin Offering.

image

Участников, наплакавшихся кровавыми слезами от просмотра презентации, ждала награда — на последнем слайде был опубликован корпоративный e-mail Райана.

image

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

image

Grandmother’s, да :) Вопрос не самый надежный. На реальных проектах мы частенько встречались с похожими. Ответ на эти вопросы, как правило, можно найти в социальных сетях — в Одноклассниках, ВКонтакте и Twitter. Следующий этап — поиск аккаунтов:

image

В Твиттере по запросу «Ryan Evans» показалась знакомая борода. Кстати, найти аккаунт можно было и с помощью «Яндекса».

image

В ленте Твиттера нашлось упоминание дня рождения бабушки — 20 апреля.

image

Точный возраст бабушки можно было вычислить по числу, написанном кремом на торте.

image

Немного арифметики и вот мы узнали точную дату рождения — 20 апреля 1946 года. Тут же возникает резонный вопрос — в каком формате Райан мог написать дату? Узнать это можно было, пролистав Твиттер: нашелся пост о машине, серой Kia Carens, купленной первого октября 2014 года. Дата указана в формате дд.мм.гггг. Возможно, Райан написал ответ на секретный вопрос в том же формате.

image

Не все любители OSINT оказались одновременно и автолюбителями, поэтому у некоторых участников возникали проблемы с определением марки и модели машины Адама. В тех случаях, когда не помогает поиск по картинкам в Google или водительский опыт, на помощь может прийти «Яндекс». Он точно определил марку и модель Kia Carens.

image

Флаг CTO’s Car model сдан. Далее нужно было подставить дату рождения бабушки в правильном формате (20.04.1946) в качестве ответа на секретный вопрос «Яндекс.Почты».

После можно было поставить любой новый пароль (следующий участник в любом случае его менял) и вот мы попали в почтовый ящик Райана. В отправленных сообщениях находилось письмо жене, в котором участник мог обнаружить ее email evansmegan02282@yahoo.com.

image

Из адреса несложно было вычислить имя — Megan, а поиск по соцсетям выдал страницу ВКонтакте:

image

Найти Меган ВКонтакте можно было и через форму восстановления пароля. Для это нужно запросить восстановление пароля, указать email и фамилию Evans:

image

На странице огромное количество информации:

  • родной город,
  • университет,
  • место работы (в подписках),
  • место отдыха (GPS-теги в EXIF фотографий),
  • несколько фотографий, позволяющих определить внешность,
  • примерные интересы.
  • Разом сданы сразу несколько флагов о Megan.

Держа в памяти все новое о Megan, участник, вероятно, подумал: «Почему в переписке по email Megan так и не ответила Райну на фотографию с котом?». Действительно, что-то тут нечисто.

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

Итак, устанавливаем Tinder и эмулируем геолокацию с помощью приложений типа Fake GPS — либо ставим Tinder на Bluestacks, где подобная функция присутствует из коробки.

image

Место отдыха Megan (Miami, Florida) обнаруживалось исходя из геометок на ее фотографиях со страницы ВКонтакте. С помощью Fake GPS нужно было «долететь» в Майами, штат Флорида, выставить целевую аудиторию под параметры Megan (уже известны возраст и точное местоположение из профиля ВКонтакте) и свайпать девушек. Спустя 5–10 прекрасных дам обнаружилась «та самая, единственная» Меган Эванс. Только вот имя и фамилия у нее в Tinder оказались другие, а точно удостовериться, что это она, помогли фотографии из ВКонтакте.

image

Чтобы удостовериться, что это не ошибка, а нужная нам Megan, необходимо было сверить автоматически импортируемые из Facebook при подключении аккаунта место учебы и родной город. Флаг CTO’s wife place of work сдан.

Далее продолжался поиск уже по второй, «теневой» личности Megan. Особенность Tinder — место работы автоматически подставляется из профиля Facebook. Поэтому сразу можно было перейти на Facebook, чтобы найти страницу Scamsopositive.

image

Воспользовавшись методом разведки «ревнивая студентка», также известным как «пробив по лайкам», можно было найти страницу Joanne Brandt и сдать в качестве последнего флага фамилию единственного на этой странице друга — Rossi.

image

Остальные задания были более низкого уровня сложности и объединялись в небольшие квесты со сравнительно дешевыми флагами. Для решения могли потребоваться и особые знания о работе некоторых сервисов. Например, задание на определение модели мобильного телефона фронтенд-разработчика Алексея Наборщикова предполагало осведомленность участника о возможности указать модель любимого гаджета в профиле на форуме 4PDA.

Итак, для начала нужно было найти фронтендера Алексея в соцсетях.

image

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

image

Уникальный адрес страницы (m0arc0de) выдал нам часто используемый ник. Далее следовал поиск на 4PDA или xda-developers. По нику можно было найти того самого фронтенд-разработчика из Notsopositive. В поле «О себе» Алексей написал о себе всю нужную нам информацию, позволяющая однозначно определить, что это именно тот, кто нам нужен. Флаг с моделью телефона сдан.

image

В задании по поиску неизвестного хакера (Evil guy's username on Anonymous freelance service) предполагалось, что участнику будет известно о новом портале для анонимного размещения различных услуг и коммерческих предложений под названием Yukon. Немного полистав раздел «Работа», можно было найти любопытное объявление с прямым указанием на исследуемый сайт. В контактах для обратной связи был указан и почтовый адрес, в котором и находился ник «злого» парня.

image

Как же быть тем, кто не слышал про Yukon? Здесь приходят на помощь простейшие Google dorks, а ответ очень часто скрывается в самом вопросе.

image

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

image

Сузив круг поиска до адреса почты, получили однозначно подходящий результат.

image

В сообщении на форуме обнаружили, что у нашего заказчика теневых услуг есть навыки разработки вредоносного ПО.

image

image

Какую же малварь он написал? В архиве с обещанными исходными кодами оказался исполняемый файл. Целевой фреймворк .NET 3.5 указывает на наиболее вероятный язык разработки — C#. Поиск в сети по запросу “Hidden Tear” также указал на С#. Но что именно изменилось в коде? Тут поможет декомпилятор .NET Reflector. Соблюдая все правила предосторожности при работе с вредоносным кодом, нужно загрузить исполняемый файл в декомпилятор. NET Reflector прекрасно справляется с декомпиляцией приложения. В списке используемых на одной форме функций нашлась GenEthAddress, ее название наиболее соответствует вопросу в задании Evil guy’s wallet number.

image

Беглый взгляд на декомпилированный код позволил понять алгоритм «сборки» адреса кошелька из четырех строк. Строки равной длины конкатенируются в одну большую, затем она преобразуется в массив символов. Получившийся массив переворачивается. Функция GenEthAddress вызывается из функции messageCreator, в ней и создается окончательная версия номера кошелька. Перед началом массива подставляется ‘0x’.

image

Более простой метод решения с сопутствующими страданиями виртуальной машины — запустить исполняемый файл вируса. В сообщении о шифровке файлов отображается адрес ETH-кошелька.

image

Узнать скрытый за CloudFlare IP-адрес веб-сервера notsopositive.online также можно было несколькими способами. Каждое задание решалось по запланированному организаторами пути, однако участники нередко находили и альтернативные пути.

Сверху сайта ICO можно было найти ссылку на страницу подписки на новости компании, а один из способов узнать IP-адрес за CloudFlare — отправить письмо с сервера себе на почту и посмотреть заголовки. Однако есть и другие.

image

Переходим к форме, указываем в ней любое имя и свой адрес email.

image

В пришедшем письме нужно было открыть служебные заголовки и получить следующее:

image

и 178.170.172.110 сдать как флаг.

Участник с ником @AlexPavlov60 нашел альтернативный способ узнать скрытый IP-адрес с помощью Shodan. Если в ходе прохождения участнику уже был известен IP-адрес FTP-сервера, целесообразно было проверить всю подсеть на наличие других принадлежащих компании Notsopositive серверов.

По запросу: net:178.170.172.0/24 product:»Apache httpd» Shodan возвращает сразу несколько серверов, среди которых один со знакомым DNS.

image

Еще один теневой поисковик, который может нам помочь, Censys, предложил участник @rdafhaisufyhiwufiwhfiuhsaifhsaif.

По запросу: https://censys.io/ipv4?q=80.http.get.title%3ANotSoPositive он тоже возвращает нужный адрес.

image

Конечно, существуют и готовые решения для извлечения IP-адреса, скрытого за CloudFlare. Участник Blablablashenka применил утилиту Hatcloud, нашедшую соседний адрес из подсети. Оставалось только поискать там же веб-серверы.

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

James Taylor, CEO


Вопросы в этой ветке:

  • CEO's car model
  • 'Find the CEO's nickname (we know that his friend's name is James Cottone)
  • Let's see how you can use Facebook: find the CEO's son
  • Find out his e-wallet and with whom the son of the CEO is connected

На странице ICO было упоминание Telegram, однако ссылка никуда не вела. Это был небольшой хинт для поиска канала или чата NOTSOPOSITIVE:

image

Там и можно было найти аккаунт CEO, с аватаркой и его машиной.

image

Воспользовавшись поиском по картинкам в Google легко можно было найти машину Джеймса на фото — это Toyota Land Cruiser.

image

Далее необходимо было найти никнейм CEO, которого в Telegram не было. Однако было известно, что одного из его друзей зовут James Cottone. Один из вариантов решения, который мы закладывали, — воспользоваться сервисом восстановления пароля на Facebook, где указать имя друга для поиска аккаунта:

image

На деле очень многие сервисы позволяют таким образом выяснить — привязаны ли определенные email или номер телефона к сервису. После ввода имени и фамилии друга пришло оповещение, что код доступа будет отправлен на почту:

image

Нетрудно догадаться, что почта — taylor@notsopositive.online. Также, один из вариантов, предложенный участником, — использовать сервис anymailfinder.com, где сразу отобразятся электронные адреса некоторых из сотрудников:

image

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

image

А затем найти его страницу и никнейм:

image

Для поиска сына необходимо было воспользоваться особенностью Facebook: у него есть возможность просматривать, каким публикациям ставил лайки пользователь. Все это можно увидеть на этом сервисе. По лайкам, которые ставил James, обнаружились профили его жены и сына.

image

image

На странице сына — его логин на Твиче (br4yl0r), однако это нам ничего не дало. В поисковиках тоже почти ничего нет. В таких случаях, если страницы профилей не проиндексировались, полезно использовать утилиты типа namechk.com, которые покажут занятость никнеймов и доменных имен на разных веб-сервисах. Таким образом, можно было найти профиль в Steam, а из него и в GitHub — STKLRZSQUAD. Здесь опять необходимо было знать специфику сервиса и посмотреть, что Бредли выкладывал на gist. Далее, найдя данный байткод:

0x606060405234801561001057600080fd5b5061013d806100206000396000f30060806040526004
3610610041576000357c010000000000000000000000000000000000000000000000000000000090046
3ffffffff16806338cc48311461009e575b737527f9ac752aaddbb54432d288f9a89191f7954f73fffff
fffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888
f1935050505015801561009b573d6000803e3d6000fd5b50005b3480156100aa57600080fd5b506100b36
100f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673fffffffffffffffffffff
fffffffffffffffffff16815260200191505060405180910390f35b6000737527f9ac752aaddbb54432d28
8f9a89191f7954f9050905600a165627a7a72305820a369acc2650e24d84edd29c97cee2db1f5caada8315
81fa2482a002b87404aba0029

и поискав заголовки, поняли, что это байткод смарт-контракта:

image

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

image

Неужели сын CEO заказал атаку на ICO своего отца?

Rajesh Bishop, System Administrator


Вопросы в этой ветке:

  • Find out the domain name of the system administrator\'s personal website
  • Try to find sysadmin's personal email
  • What is sysadmin's favorite beer brand?
  • The name of the restaurant, where sysadmin drank beer recently

Как обычно, начать необходимо было с типичной разведки, чтобы обнаружить домен mail.notsopositive.online, где с помощью nmap найти самоподписанный сертификат, который действовал и для другого домена:

image

Затем, сделав запрос ANY на DNS bishopshomepage.win, можно было найти его электронный адрес:

image

Затем — ответить на вопрос про любимое пиво у Раджеша. Многие любители пива знакомы с такой социальной сетью, как Untappd (ее можно найти по запросу «beer social network»). Один из вариантов был, как всегда, использовать другие поисковые системы:

image

Дальше уже проще: найти профиль сисадмина, в нем единственное фото с хештегом.

image

Однако в этой соцсети нет хештегов, что должно было натолкнуть на мысль о том, что нужно поискать по другим: ВКонтакте, Facebook, Twitter и Instagram. В последней и можно было обнаружить фото с геометкой:

image

Штаб-квартира NOTSOPOSITIVE


Поиск штаб-квартиры опять требовал от участников конкурса приложить усилия и перекопать все социальные сети. Ответ находился на LinkedIn:

image

Mark Fox, CSO


Для понимания, откуда начинается конкурс с CSO, нужно было снова воспользоваться fuzz.txt и обнаружить в корневой веб-директории файл .DS_Store, который оставляет за собой macOS. Расшифровав его с помощью онлайн-утилиты https://labs.internetwache.org/ds_store/ или просмотрев бинарный файл, можно было найти такие строчки:

image

По адресу и правда лежало фото какого-то человека. Кроме того, одна из особенностей Faceboock: раньше, при сохранении файла, вторым числовым значением был ID фотографии. Так и можно было найти профиль:

image

В профиле и корпоративный адрес Марка: mmmmmmmmfox@notsopositive.online

Итоги


В этом году участие приняли более 500 человек, а хотя бы с одним заданием справилось почти 300. Победителем снова стал Noyer_1k, старания которого вознаграждены смарт-часами Apple Watch, приглашениями на форум и сувенирами от организаторов. Второе место, Power Bank, инвайт на форум и сувениры заслужил Kaimi0. Третье место, книгу Open Source Intelligence Techniques: Resources for Searching and Analyzing Online Information, приглашение и сувениры забрал empty_jack. Финальная таблица результатов:

# Никнейм Баллы
1 Noyer_1k 816
2 Kaimi0 816
3 empty_jack 816
4 Antxak 786
5 V88005553535 661
6 jerh17 611
7 shsilvs 556
8 someotherusername 526
9 trace_rt 491
10 shadowknight 481

Поздравляем победителей!

Разборы предыдущих конкурсов:


Теги:
Хабы:
+10
Комментарии 0
Комментарии Комментировать

Публикации

Информация

Сайт
www.ptsecurity.com
Дата регистрации
Дата основания
2002
Численность
1 001–5 000 человек
Местоположение
Россия