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

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

Экспорт объектов из 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! », чтобы забрать наш флаг:

image-loader.svg

Вывод

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

© Habrahabr.ru