Skip to main content

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

·515 words·3 mins· 0
writeup CTF WEB MCTF favicon ico shodan wireshark
5HM3L
Author
5HM3L

На написание данной статьи меня подтолкнуло участие в соревнованиях по информационной безопасности - 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-адрес, либо просто хотите посмотреть какие еще сайты хостятся с данным фавиконом.