На написание данной статьи меня подтолкнуло участие в соревнованиях по информационной безопасности - *Capture the Flag (CTF)*. Это был [*MCTF 2021*](https://ctftime.org/event/1439) , проводимый Московским Техническим Университетом Связи и Информатики.
![Логотип MCTF](https://habrastorage.org/getpro/habr/upload_files/7cf/8a7/2f0/7cf8a72f0b2a6b36bd7e1956781aea38.jpeg)Логотип MCTF
## Таск - Next Level Recon
### Описание
![Описание таска](https://habrastorage.org/getpro/habr/upload_files/acb/93b/e63/acb93be63b320b28975135d386e18852.png)Описание таска
Next Level Recon относится к категории *MISC (разное)* и имеет сложность *"Easy",* что как бы намекает нам, что таск будет легкий. Помимо описания содержит прикрепленный файл с расширением `.pcap`
### Решение
#### Первый взгляд
Учитывая, что нам дан *pcap*-файл - это без сомнения дамп сетевого трафика. Рассмотрим его подробнее в анализаторе сетевого трафика - *WireShark.*
![Содержимое дампа сетевого трафика](https://habrastorage.org/getpro/habr/upload_files/ec2/479/1ab/ec24791abef3648c3109ce3681cf9a04.png)Содержимое дампа сетевого трафика
В дампе всего 26 пакетов, присутствуют только протоколы *TCP*  и *HTTP*. Причем отправитель и получатель - это **один и тот же** IP-адрес.
#### Восстановление трафика
Попробуем собрать поток HTTP-трафика. Для этого щелкаем правой кнопкой мыши на HTTP-пакете и выбираем "*Follow -> HTTP Stream*".
![ Сбор потока HTTP-трафика](https://habrastorage.org/getpro/habr/upload_files/695/4d6/c3f/6954d6c3f014529f28e6ab5497cfb25f.png) Сбор потока HTTP-трафика
После сбора потока HTTP-трафика, мы наблюдаем картину обычного *GET-запроса* *HTTP* и ответа ему.
![GET-запрос HTTP и ответ ему ](https://habrastorage.org/getpro/habr/upload_files/7c1/f27/354/7c1f27354d67a1fb510ef9a90f567e4d.png)GET-запрос HTTP и ответ ему 
Судя по содержимому, ничего особенного здесь не происходит:
- Скачивается иконка сайта (*favicon.ico*)- Выводится строка "*Site in development...*"
Так как в описании задания говорится, что нужно найти какой-то сайт, то можно попробовать "пихать" в поисковики специальные поисковые запросы с определенными строками и параметрами, но заранее скажу, что данный способ здесь не поможет. Поэтому под наш прицел попадает именно *favicon.ico*. Попробуем вытащить его из дампа.
#### Экспорт объектов из HTTP-трафика
На самом деле здесь все просто - *WireShark* сделает все за нас. Нужно только нажать "*File -> Export Objects -> HTTP...*"
![Экспорт файлов](https://habrastorage.org/getpro/habr/upload_files/a3f/e5e/4d9/a3fe5e4d9a69c7e2117c0613e90b5e0d.png)Экспорт файлов
Далее просто нажать "*Save All*" и указать путь куда файлы будут сохранены.
![Выбор и сохранение файлов](https://habrastorage.org/getpro/habr/upload_files/d3d/f11/a63/d3df11a637ffcfa23e947dee0b6b0196.png)Выбор и сохранение файлов
Открыв для просмотра файл "*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 mmh3import requestsimport 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](https://habrastorage.org/getpro/habr/upload_files/2a2/e08/884/2a2e08884290a34872a3617e9a7bc1f0.png)Результат выполнения запроса в Shodan
Как видно из результата запроса - найдено 3 совпадения, одно из которых это сам сайт [https://mctf.online](https://mctf.online/), а второй с говорящим названием "*Flags are here!*". Наша теория подтвердилась! Зайдем на страницу по IP-адресу, на который указывает "*Flags are here!*", чтобы забрать наш флаг:
![img](https://habrastorage.org/getpro/habr/upload_files/c11/5a8/a09/c115a8a09bfa7cee6b414457f1f0718d.png)
## Вывод
Таким образом можно искать любые сайты в Интернете - просто узнав [MurmurHash](https://en.wikipedia.org/wiki/MurmurHash) соответствующего *favicon.ico*. Это может быть полезно, если сайт переехал на другое доменное имя, либо вы вообще не знаете ни доменное имя, ни IP-адрес, либо просто хотите посмотреть какие еще сайты хостятся с данным фавиконом.