Как узнать IP адрес сайта за CloudFlare

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

Картинки по запросу cloudflare hack

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

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

Что такое и как работает 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 имеет отношение к владельцу интересующего сайта.

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

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

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

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

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

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

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

поддомены

Первый шаг, который я предлагаю сделать, — это найти поддомены и проверить их IP. Для поиска я использую тулзу Sublist3r от Aboul-Ela и словарь. Далее отбрасываем все адреса, что принадлежат хидеру. И затем к оставшимся пробуем подключиться с кастомным хидером Host. Для этого я накидал простенький скрипт на баше.

 

Этот способ, кстати, используют большинство сервисов вроде Cloudflare resolver. К сожалению, этот метод все реже приносит сколько-нибудь значимые результаты, потому что большинство таки научилось правильно настраивать DNS. Однако поиск поддоменов в любом случае крайне полезная вещь, особенно при блекбоксе. Так что делаю это в первую очередь.

history

Второй шаг простой, но в то же время наиболее эффективный. Смысл в том, чтобы найти старый IP-адрес домена. Быть может, сейчас он скрыт, но раньше, возможно, он был «голым».

Для просмотра истории изменения IP есть несколько сервисов. Например, мои любимые http://viewdns.info/iphistory/ и http://ptrarchive.com/ спасали мою задницу не один раз. Эти сервисы сейчас пока бесплатны (к сожалению, большинство сервисов такого плана переходят на платную основу).

Для примера возьмем сайт https://www.baincapital.com/. Он защищен CloudFlare, смотрим в историю — http://viewdns.info/iphistory/?domain=baincapital.com.

Видим, что раньше домен резолвился на IP 162.218.138.176, перейдем на него в браузере. Наблюдаем главную страницу Bain Capital, также можно заметить, что сертификат выдан на имя baincapital.com. Хороший знак, сравним с оригинальным сайтом https://baincapital.com — они идентичны.

Проверка реального IP-адреса домена и сертификата
Проверка реального IP-адреса домена и сертификата
История IP-адресов для домена baincapital.com
История IP-адресов для домена baincapital.com

Встречаются ситуации, когда переход по айпи не дает нужного результата, а возвращает, например, дефолтную страницу веб-сервера, или ошибку 404, или 403, или что-то подобное. В таких случаях не забывай пробовать подключаться с указанием Host’а:

curl -H "Host: www.baincapital.com" https://162.218.138.176 -k
 

DNS

Этот шаг — продолжение предыдущего. Нужно проверить историю изменения DNS и попробовать отрезолвить IP домена через старые NS-серверы.

Для просмотра истории я использую DNS Trails, DNS History и WhoISrequest. Для доменов .ru, .su и .рф можно воспользоваться сервисом WhoisHistory. Затем пробуем резолвить стандартным dig’ом, например:

dig @old.ns.server.pes.com pes.com
 

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

Пробую искать подопытный домен на Censys и Shodan. Кроме того что это позволяет расширить скоуп и выявить новые точки входа, там можно обнаружить и реальный IP.

Я люблю максимально автоматизировать операции, поэтому, используя jQuery и консоль браузера, быстренько выуживаю все IP со страницы результатов поиска:

$('span.ip a').each(function(n,e){console.log($(e).prop("href").split("v4/")[1])});

Записываю их в файл, и затем снова в дело вступает скрипт из первого шага.

 

email

Этот метод мне засветил @i_bo0om, за что ему огромное спасибо. Идея в том, чтобы получить email от сервиса и проверить хидеры письма на наличие интересной информации. Тут проще показать, чем объяснять.

Возьмем какой-нибудь https://shop.eurovision.tv/ Тут снова CloudFlare. Регистрируемся там и ждем письмо с подтверждением. Смотрим хидеры в частности, нас интересует Recieved:

Recieved: esc-web4-tng.virtu.nl (77.222.68.234)

Далее в дело еще раз вступает curl и Host-хидер:

curl -H "Host: shop.eurovision.tv" -k https://77.222.68.234

Вуаля! Реальный адрес найден, дальше можно работать без ограничений CloudFlare.

Хидеры письма, раскрывающие IP-адрес сервера
Хидеры письма, раскрывающие IP-адрес сервера
Найденный IP-адрес домена shop.eurovision.tv
Найденный IP-адрес домена shop.eurovision.tv

На этом у меня все. Надеюсь, представленная информация будет полезной. До новых встреч!

Click to rate this post!
[Total: 3 Average: 3.7]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

Leave a reply:

Your email address will not be published.