Tags: easy
Rating:
На написание данной статьи меня подтолкнуло участие в соревнованиях по информационной безопасности - *Capture the Flag (CTF)*. Это был [*MCTF 2021*](https://ctftime.org/event/1439) , проводимый Московским Техническим Университетом Связи и Информатики.
Логотип MCTF
## Таск - Next Level Recon
### Описание
Описание таска
Next Level Recon относится к категории *MISC (разное)* и имеет сложность *"Easy",* что как бы намекает нам, что таск будет легкий. Помимо описания содержит прикрепленный файл с расширением `.pcap`
### Решение
#### Первый взгляд
Учитывая, что нам дан *pcap*-файл - это без сомнения дамп сетевого трафика. Рассмотрим его подробнее в анализаторе сетевого трафика - *WireShark.*
Содержимое дампа сетевого трафика
В дампе всего 26 пакетов, присутствуют только протоколы *TCP* и *HTTP*. Причем отправитель и получатель - это **один и тот же** IP-адрес.
#### Восстановление трафика
Попробуем собрать поток HTTP-трафика. Для этого щелкаем правой кнопкой мыши на HTTP-пакете и выбираем "*Follow -> HTTP Stream*".
 Сбор потока HTTP-трафика
После сбора потока 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](https://mctf.online/), на котором и проходили соревнования. Судя по описанию таска, наши предположения должны быть верными. Проверить это на практике можно путем расчета контрольных сумм двух иконок (они совпадают).
#### Поиск по хешу
По заданию нам необходимо найти сайт, на который переехал сайт из дампа. Первое что приходит на ум - это искать в [Shodan](https://www.shodan.io/). У нас из исходных данных - файл *favicon.ico*. Продолжая верить в то, что это такая же иконка, как и у основного сайта соревнований, посчитаем [MurmurHash](https://en.wikipedia.org/wiki/MurmurHash) от него.
Для этого на GitHub есть даже за нас написанный [скрипт](https://gist.github.com/yehgdotnet/b9dfc618108d2f05845c4d8e28c5fc6a). Модифицируем его под наши исходные данные и получим следующее:
```
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
Как видно из результата запроса - найдено 3 совпадения, одно из которых это сам сайт [https://mctf.online](https://mctf.online/), а второй с говорящим названием "*Flags are here!*". Наша теория подтвердилась! Зайдем на страницу по IP-адресу, на который указывает "*Flags are here!*", чтобы забрать наш флаг:

## Вывод
Таким образом можно искать любые сайты в Интернете - просто узнав [MurmurHash](https://en.wikipedia.org/wiki/MurmurHash) соответствующего *favicon.ico*. Это может быть полезно, если сайт переехал на другое доменное имя, либо вы вообще не знаете ни доменное имя, ни IP-адрес, либо просто хотите посмотреть какие еще сайты хостятся с данным фавиконом.