Tags: easy 

Rating:

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

Original writeup (https://habr.com/ru/post/589433/).