Содержание статьи
Сегодня все большее распространение получают сервисы для защиты от DDoS-атак, скрывающие реальный IP-адрес, типа CloudFlare, Incapsula и Qrator. Думаю, не имеет смысла объяснять, насколько бывает важно и полезно определить реальный IP-адрес сервера. Поэтому в данной заметке я поделюсь алгоритмом, которого придерживаюсь во время аудитов, когда приходится участвовать в игре «Найди мой реальный IP».
Метод 1: поддомены
Первый шаг, который я предлагаю сделать, — это найти поддомены и проверить их IP. Для поиска я использую тулзу Sublist3r от Aboul-Ela и словарь. Далее отбрасываем все адреса, что принадлежат хидеру. И затем к оставшимся пробуем подключиться с кастомным хидером Host. Для этого я накидал простенький скрипт на баше.
Этот способ, кстати, используют большинство сервисов вроде Cloudflare resolver. К сожалению, этот метод все реже приносит сколько-нибудь значимые результаты, потому что большинство таки научилось правильно настраивать DNS. Однако поиск поддоменов в любом случае крайне полезная вещь, особенно при блекбоксе. Так что делаю это в первую очередь.
Метод 2: 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 — они идентичны.
Встречаются ситуации, когда переход по айпи не дает нужного результата, а возвращает, например, дефолтную страницу веб-сервера, или ошибку 404, или 403, или что-то подобное. В таких случаях не забывай пробовать подключаться с указанием Host’а:
curl -H "Host: www.baincapital.com" https://162.218.138.176 -k
Метод 3: DNS
Этот шаг — продолжение предыдущего. Нужно проверить историю изменения DNS и попробовать отрезолвить IP домена через старые NS-серверы.
Для просмотра истории я использую DNS Trails, DNS History и WhoISrequest. Для доменов .ru, .su и .рф можно воспользоваться сервисом WhoisHistory. Затем пробуем резолвить стандартным dig’ом, например:
dig @old.ns.server.pes.com pes.com
Метод 4: специализированные поисковики
Пробую искать подопытный домен на Censys и Shodan. Кроме того что это позволяет расширить скоуп и выявить новые точки входа, там можно обнаружить и реальный IP.
Я люблю максимально автоматизировать операции, поэтому, используя jQuery и консоль браузера, быстренько выуживаю все IP со страницы результатов поиска:
$('span.ip a').each(function(n,e){console.log($(e).prop("href").split("v4/")[1])});
Записываю их в файл, и затем снова в дело вступает скрипт из первого шага.
Метод 5: 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.
На этом у меня все. Надеюсь, представленная информация будет полезной. До новых встреч!