Skip to main content

Разбор одного таска или как найти сайт по favicon.ico

·515 words·3 mins
Writeup CTF WEB MCTF Favicon Ico Shodan Wireshark
Table of Contents

На написание данной статьи меня подтолкнуло участие в соревнованиях по информационной безопасности - Capture the Flag (CTF). Это был MCTF 2021 , проводимый Московским Техническим Университетом Связи и Информатики.

Логотип MCTF
Логотип MCTF

Таск - Next Level Recon
#

Описание
#

Описание таска
Описание таска

Next Level Recon относится к категории MISC (разное) и имеет сложность “Easy”, что как бы намекает нам, что таск будет легкий. Помимо описания содержит прикрепленный файл с расширением .pcap

Решение
#

Первый взгляд
#

Учитывая, что нам дан pcap-файл - это без сомнения дамп сетевого трафика. Рассмотрим его подробнее в анализаторе сетевого трафика - WireShark.

Содержимое дампа сетевого трафика
Содержимое дампа сетевого трафика

В дампе всего 26 пакетов, присутствуют только протоколы TCP и HTTP. Причем отправитель и получатель - это один и тот же IP-адрес.

Восстановление трафика
#

Попробуем собрать поток HTTP-трафика. Для этого щелкаем правой кнопкой мыши на HTTP-пакете и выбираем “Follow -> HTTP Stream”.

 Сбор потока HTTP-трафика
Сбор потока HTTP-трафика

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

GET-запрос HTTP и ответ ему
GET-запрос HTTP и ответ ему

Судя по содержимому, ничего особенного здесь не происходит:

  • Скачивается иконка сайта (favicon.ico)
  • Выводится строка “Site in development…

Так как в описании задания говорится, что нужно найти какой-то сайт, то можно попробовать “пихать” в поисковики специальные поисковые запросы с определенными строками и параметрами, но заранее скажу, что данный способ здесь не поможет. Поэтому под наш прицел попадает именно favicon.ico. Попробуем вытащить его из дампа.

Экспорт объектов из HTTP-трафика
#

На самом деле здесь все просто - WireShark сделает все за нас. Нужно только нажать “File -> Export Objects -> HTTP…

Экспорт файлов
Экспорт файлов

Далее просто нажать “Save All” и указать путь куда файлы будут сохранены.

Выбор и сохранение файлов
Выбор и сохранение файлов

Открыв для просмотра файл “favicon.ico” можно предположить, что он такой же, как и у самого сайта https://mctf.online, на котором и проходили соревнования. Судя по описанию таска, наши предположения должны быть верными. Проверить это на практике можно путем расчета контрольных сумм двух иконок (они совпадают).

Поиск по хешу
#

По заданию нам необходимо найти сайт, на который переехал сайт из дампа. Первое что приходит на ум - это искать в Shodan. У нас из исходных данных - файл favicon.ico. Продолжая верить в то, что это такая же иконка, как и у основного сайта соревнований, посчитаем MurmurHash от него.

Для этого на GitHub есть даже за нас написанный скрипт. Модифицируем его под наши исходные данные и получим следующее:

import mmh3
import requests
import codecs
 
response = requests.get('https://mctf.online/favicon.ico')
favicon = codecs.encode(response.content,"base64")
hash = mmh3.hash(favicon)
print(hash)

Скормив этот скрипт питону, получим хеш: -535199269

Остается скормить этот хеш в Shodan, применив специальный фильтр http.favicon.hash:

Результат выполнения запроса в Shodan
Результат выполнения запроса в Shodan

Как видно из результата запроса - найдено 3 совпадения, одно из которых это сам сайт https://mctf.online, а второй с говорящим названием “Flags are here!”. Наша теория подтвердилась! Зайдем на страницу по IP-адресу, на который указывает “Flags are here!”, чтобы забрать наш флаг:

img

Вывод
#

Таким образом можно искать любые сайты в Интернете - просто узнав MurmurHash соответствующего favicon.ico. Это может быть полезно, если сайт переехал на другое доменное имя, либо вы вообще не знаете ни доменное имя, ни IP-адрес, либо просто хотите посмотреть какие еще сайты хостятся с данным фавиконом.