Как узнать настоящий IP сайта в Cloudflare


Cloudflare – это прокладка между пользователем и сайтом. Она работает по принципу обратного прокси, предоставляя дополнительные услуги, в том числе кэширование страниц, защиту от DDoS, защиту от плохих ботов и прочее. В том числе, Cloudflare скрывает истинный IP адрес сервера, на котором размещён сайт.

Cloudflare использует свои сервера имён, отвечающие на DNS запросы и преобразующие имя хоста в IP адрес. Т.е. владелец сайта настраивает для своего домена использование NS серверов Cloudflare, эти NS сервера в ответе на DNS запросы отправляют IP, принадлежащий сети Cloudflare. В результате запрос к сайту поступает на Cloudflare, которая получает страницу с сервера, где размещён сайт (либо из своего кэша) и показывает эту страницу пользователю, который её запросил. В результате истинный IP адрес сайта за Cloudflare становится хорошо скрытым.

Если Cloudflare настроена правильно, то настоящий IP адрес сайта никогда не раскрывается и не записывается куда-либо; но сколько вы знаете людей, которые всё всегда делают правильно? По этой причине существуют инструменты, ищущие прорехи в ваших настройках Cloudflare. Одной из таких программ является CloudFail, ей, а также другим методам нахождения настоящего IP, и посвящена данная заметка.

Что такое и как работает CloudFail

Каждый сайт может иметь поддомены вида *.сайт.ru. Где вместо звёздочки могут быть подставлены разные значения, к примеру:

  • www.сайт.ru
  • en.сайт.ru
  • forum.сайт.ru
  • test.сайт.ru
  • admin.сайт.ru
  • 111.сайт.ru
  • chat.сайт.ru

Таких поддоменов может быть неограниченное количество. Важный момент: у каждого такого поддомена может быть свой IP адрес!

Т.е. сервера имён позволяют указать IP (или сразу несколько адресов) для сайт.ru, другой IP для test.сайт.ru, другой IP для en.сайт.ru и так далее.

Может возникнуть ситуация, когда в DNS записях домена сайт.ru прописан IP адрес Cloudflare, НО DNS записи для поддомена test.сайт.ru указывают на другой IP, не находящийся под защитой Cloudflare.

В результате раскрывается IP адрес, который:

  • может оказаться настоящим IP адресом сайта;
  • является IP адресом только субдомена, но даёт нам информацию о владельце либо подсказку для дальнейших исследований.

Мы не можем просто получить список всех субдоменов. Поэтому нужно перебирать различные варианты. Именно это и реализовано в CloudFail:

  • пробуются различные варианты субдоменов;
  • если для субдомена существует DNS запись, то для неё получаем IP;
  • проверяется, входит ли полученный IP в диапазон Cloudflare (т.е. защищён с помощью Cloudflare или нет).

На самом деле, описанный процесс является уже третьей стадией. На первой стадии CloudFail получает список возможных субдоменов от DNSDumpster.com и проверяет их.

На втором этапе CloudFail обращается к сервису CrimeFlare, собравшему большую базу IP адресов для сайтов, защищённый с помощью Cloudflare. Если для сайта известен IP, то он сразу показывается. О CrimeFlare более подробно рассказано здесь.

И на третьем этапе выполняется описанный брут-форс субдоменов по словарю.

В результате такого комплексного подхода довольно часто удаётся найти IP адреса, не защищённые Cloudflare.

Важно отметить, что мы исходим из предположения, что IP адреса поддоменов принадлежат или связаны с владельцем основного сайта. Да, обычно это так, но всегда нужно помнить, что в DNS записи поддоменов владелец основного домена может указать ЛЮБЫЕ IP адреса, даже не принадлежащие ему…

Как установить CloudFail

Для установки CloudFail в Ubuntu, Kali Linux, Debian, Linux Mint и их производные выполните следующие команды:

sudo apt update
sudo apt install python3-pip git tor
git clone https://github.com/m0rtem/CloudFail
cd CloudFail/
sudo pip3 install -r requirements.txt

Чтобы проверить, запускается ли CloudFail, выполните команду:

python3 cloudfail.py -h

Перед первым запуском, а также время от времени (примерно раз в месяц), рекомендуется делать обновление баз данных:

sudo python3 cloudfail.py -u

Будет обновлён список IP адресов Cloudflare, а также база данных CrimeFlare, содержащая известные IP адреса для некоторых сайтов.

Если вы хотите, чтобы программа работала через сеть Tor, то необходимо запустить службу Tor:

sudo systemctl start tor

Если вам не нужен Tor для отправки запросов, то этот шаг можно пропустить.


При желании, вы можете добавить службу Tor в автозагрузку (тогда не нужно будет запускать эту службу после каждой перезагрузки компьютера):

sudo systemctl enable tor

Как пользоваться CloudFail

У программы всего одна обязательная опция -t, после которой нужно указать доменное имя. Информация о всех опциях CloudFail: kali.tools/?p=4013.

Дополнительно можно использовать опцию --tor, чтобы запросы делались через эту сеть.

С программой уже поставляется список слов (файл subdomains.txt) для перебора возможных субдоменов по словарю. Если вы хотите использовать собственный словарь, то укажите его используя опцию -s. Файл словаря должен размещаться в папке data.

К примеру, если мы хотим получить данные для сайта anti-malware.ru, то команда запуска выглядит так:

sudo python3 cloudfail.py -t anti-malware.ru --tor

Анализ результатов CloudFail

Строка is part of the Cloudflare network! говорит о том, что сайт защищается сетью Cloudflare. Если бы это было не так, то на этом месте сканирование остановилось, поскольку оно бессмысленно.

Строка Testing for misconfigured DNS using dnsdumpster… говорит о начале первого этапа – получение известных хостов (субдоменов) связанных с анализируемым сайтом. Эти данные беруться от dnsdumpster, который, в свою очередь, собирает их из разнообразных источников (собственные обходчики сайтов из первого миллиона по рейтенгу Alexa Top, поисковые системы, популярные обходчики, Certificate Transparency, Max Mind, Team Cymru, Shodan и scans.io). Но брут-форс доменов не используется.

Как можно видеть, в наших результатах среди DNS записей найдены MX записи, которые указывают на почтовые серверы. Обратите внимание, что в этом случае MX записи указывают не на субдомены интересующего нас сайта, а на хосты Google. Об этом же говорят и данные по IP (принадлежность провайдеру услуг Интернет Google). Эти хосты не защищены Cloudflare, но для исследования на основе открытых источников в целях обнаружения настоящего IP сервера они не подходят. Мы только можем сделать вывод о том, что сайт использует электронную почту на основе почтовых услуг Google.

Строка Scanning crimeflare database… говорит о начале второго этапа – поиск по базе сайтов с известными IP от CrimeFlare.

Надпись Did not find anything. говорит о том, что в этой базе ничего не найдено.

Строка Scanning 2897 subdomains (subdomains.txt), please wait… говорит о начале третьего этапа – перебор возможных субдоменов по словарю.

Красная строка содержит информацию о найденных субдоменах, но их IP защищён сетью Cloudflare – следовательно, они бесполезны для определения настоящего IP (но могут использоваться для других целей).

Зелёные строки говорят о том, что IP найденного хоста не принадлежит Cloudflare. Следовательно, это может быть реальный IP интересующего нас сайта.

Пример строки из нашего случая - mail.anti-malware.ru, к сожалению, найденный IP вновь принадлежит Google.


Но строка test.anti-malware.ru приводит нас к успеху – это IP VPS сервера.

Поиск сайтов на одном IP подтверждает, что это настоящий IP интересующего нас домена.

Следующий пример сканирования – сайт searchengines.guru.

Получены результаты:

Они говорят о том, что первый и третий этапы не дали результатов. Зато в базе CrimeFlare найден настоящий IP этого сайта, это 159.253.17.89.

Сканирование searchengines.ru:

На первом этапе найдены только почтовые сервера Гугл. В базе данных CrimeFlare сайт не найден.

На третьем этапе следующие хорошие данные:

 [09:19:32] [FOUND:SUBDOMAIN] cdn.searchengines.ru IP: 54.192.98.230 HTTP: 403
 [09:20:51] [FOUND:SUBDOMAIN] link.searchengines.ru IP: 90.156.201.86 HTTP: 200
 [09:21:06] [FOUND:SUBDOMAIN] mail.searchengines.ru IP: 64.233.164.121 HTTP: 200

mail.searchengines указывает на IP почтового сервера Гугл.

cdn.searchengines.ru имеет IP CloudFront – одного из сервисов Cloudflare, т.е. нам это также не подходит.

Зато link.searchengines.ru имеет IP адрес (90.156.201.86) стороннего сервера. Можно открыть страницу link.searchengines.ru – там какой-то забытый, видимо, уже много лет не использующийся онлайн-сервис. Этот IP может быть адресом, в том числе, searchengines.ru. В любом случае, этот IP связан с владельцами searchengines.ru, даже если сам этот хост находится на другом сервере.


Сканирование anycoin.news

Результаты:


Найден IP в базе CrimeFlare. На этот же IP (165.227.129.89) указывают субдомены – вероятно, этих субдоменов не существуют, но из-за особенностей настройки DNS (использование подстановочных символов), каждый запрошенный субдомен преобразуется в настоящий IP сервера.

В данном случае не используются почтовые сервера Гугл, но используются услуги другого сервиса – protonmail. Т.е. IP 185.70.40.101 не даёт нам полезной информации.

Сканирование codeby.net

Результаты:

Этот домен имеет очень интересные MX записи:

[FOUND:MX] 46.8.158.106 Russian Federation 10 mail.codeby.net
[FOUND:MX] 46.8.158.106 Russian Federation 20 mail.codeby.net.

IP адрес 46.8.158.106 не только может оказаться настоящим адресом сервера. Но даёт нам очень интересную информацию о провайдере Интернет услуг:

А whois даёт нам его адрес и телефон.

Найденный субдомен также полезен:

[FOUND:SUBDOMAIN] market.codeby.net IP: 186.2.167.150 HTTP: 200

Он содержит информацию о другом возможном настоящем IP сайта - 186.2.167.150. В любом случае, этот IP имеет отношение к владельцу интересующего сайта.

Онлайн сервис определения настоящего IP адреса сайта за Cloudflare

CloudFail реализован онлайн, его адрес: https://suip.biz/ru/?act=cloudfail

Пример отчёта: https://suip.biz/ru/?act=report&id=84f16c83f45bcd9a42a16197ee9c2089

Анализ истории смены IP адреса

Иногда веб-сайт после создания работает некоторое время напрямую и только позднее начинает использовать Cloudflare. В этом случае велика вероятность, что многочисленные сервисы хранения истории смены IP содержат информацию об исходном IP адресе сайта.

На скриншоте пример работы сервиса: https://suip.biz/ru/?act=domainiphistory

Адреса других сервисов: https://hackware.ru/?p=5714#whoisiphistory

Поиск по специализированным поисковикам

Посмотрите на пример поиска домена searchengines.guru по shodan.io:

Найдено сразу несколько серверов в одной подсети.

Дело в том, что при запросе к этим серверам по IP, они перенаправляют на интересующий нас сайт:

Location: https://searchengines.guru

Т.е. мы не просто нашли один IP адрес, мы определили сразу все сервера, используемые, видимо, для балансировки нагрузки.

Получение IP адреса от ранее используемого сервера имён

Когда сайт становится за защиту Cloudflare, то он начинает использовать Name Server (сервера имён) принадлежащие Cloudflare. Но если у сайта есть история работы до подключения к Cloudflare, то ранее он использовал другие сервера имён – например, хостинг-провайдера.

Если сделать запрос к этим предыдущим серверам имён, то есть шанс получить IP адрес сайта, который он имен в момент пользования этими серверами имён.

Для поиска ранее используемых сайтом серверов имён (NS) можно воспользоваться сервисами:

Затем нужно запустить команду dig вида:

dig @старый_сервер_имён домен

Где нужно вписать интересующий домен и полученный для него старый_сервер_имён.

К примеру для домена codeby.net найден предыдущий его сервер имён ns.hostland.ru,

тогда команда будет выглядеть так:

dig @ns.hostland.ru codeby.net

В результате получен IP адрес, который может являться настоящим адресом веб-сервера, на котором размещён сайт.

Определение настоящего IP по заголовкам письма

Если есть возможность инициализировать отправку письма с целевого сайта на вашу почту (подтверждение регистрации/заказа/подписки, запрос в службу поддержки и прочее), то изучите заголовки (в частности Recieved:) оригинала письма. Есть вероятность, что письмо содержит настоящий IP адрес сервера:

Определение настоящего IP сайта по HTTP запросу с него

Ещё более экзотический вариант, но не стоит его пропускать. Изучите возможность инициализировать запрос по загрузки файла на интересующий вас сайта с удалённого адреса. Пример: загрузка на инетесующий сайт изображения (аватарки, скриншота) по ссылке. Если это возможно, то загрузите файл на свой сервер (хостинг) и после его запроса целевым сайтом, изучите логи вашего веб-сервера – там должен быть настоящий IP целевого сайта.

Как верифицировать, принадлежит ли добытый IP адрес интересующему сайту

Самый простой способ – это ввести IP в адресную строку веб-браузера – есть шанс, что вы увидите сайт, для которого ищите реальный IP. Но этот способ может не сработать из-за того, что веб-сервер настроен игнорировать запросы, которые не содержат правильное имя хоста, либо на одном веб-сервере размещено сразу несколько сайтов.

Эту проблему можно обойти, используя curl. Утилита curl получает исходный код веб-страницы сайта, при этом она позволяет отправлять запросы с пользовательским заголовком, который нужно указать после опции -H.

Для запроса к конкретному хосту с curl команда имеет следующий вид:

curl -H "Host: ИМЯ ХОСТА" IP

Где необходимо заменить ИМЯ ХОСТА на реальное имя, а IP – на IP адрес сервера, к которому отправляется запрос.

Например, я хочу на сервере с адресом 185.117.153.79 проверить, имеется ли там хост suip.biz, тогда команда выглядит так:

curl -H "Host: suip.biz" 185.117.153.79

Изучите полученный HTML код – это может быть страница искомого хоста, либо просто информация о том, что на этом сервере нет такого хоста, либо даже что-то другое.

Если вы хотите подключиться по протоколу HTTPS, то просто добавьте префикс «https://» перед IP адресом. Также используйте опцию -k, которая означает «разрешить небезопасные соединения» - то есть данные всё равно будут получены, не смотря на проблемы с SSL сертификатом. А такие проблемы могут быть просто из-за того, что сертификат выдан для определённого имени хоста, а мы делаем запрос по IP, т.е. имена хостов не совпадают.

Команда будет иметь вид:

curl -H "Host: ИМЯ ХОСТА" -k https://IP

Для моего примера:

curl -H "Host: suip.biz" -k https://185.117.153.79

Как правильно настроить Cloudflare, чтобы невозможно было узнать настоящий IP сайта

Как можно увидеть из рассмотренных примеров, неправильная настройка DNS приводит к раскрытию настоящего IP сайта, даже если он защищён с помощью Cloudflare. Необходимо все хосты, имеющие отношения к сайту, защищать сетью Cloudflare. Это же относиться к подстановочным символам в DNS записях – такие записи не должны раскрыть истинный IP адрес сайта.

Необходимо помнить о возможности раскрытия владельца через хосты используемых сайтом почтовых серверов.

Сам сайт не должен содержать уязвимости, позволяющие злоумышленнику провести атаки по другим направлениям.

Источники

Некоторые методы подсмотрены в статьях:


Рекомендуется Вам:

3 комментария to Как узнать настоящий IP сайта в Cloudflare

  1. На Kali Linux запускается с ошибками.. Обновление БД не работает… возможно, есть Docker-контейнер?

  2. Wh4t3v3r:

    У меня та же проблема на kali - при обновлении БД виснет и вылетает с ошибками

  3. Аноним:

    На Kali все работает, пришлось немного подшаманить CloudFail

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *