Существуют разные сервисы, которые скрывают адрес сайта за другим IP — в целях защиты от DoS, DDoS или прочих атак. Это могут быть как всем известные облачные сервисы вроде Cloudflare, так и файрволы веб-приложений (WAF) и другие защитные решения. Задача их обхода сводится к тому, чтобы вызнать реальный IP, и для этого существуют готовые утилиты. Давай посмотрим, как пользоваться ими на практике.
Для начала чуть подробнее расскажу о том, что такое WAF и как он работает. Например, в составе всем знакомого веб-сервера Apache есть модуль mod_security, который способен выполнять функции файрвола веб-приложений и помочь защитить твой сервис от какой-нибудь тривиальной DoS-атаки. Одна из таких атак — HTTP(S) GET-флуд, когда серверу посылают бесчисленное множество запросов на получение информации. Сервер неспособен обработать столько запросов за очень короткий промежуток и попросту падает.
Подобную функцию может предоставлять и какой-то облачный провайдер — для простоты разные сервисы такого типа я дальше буду называть просто WAF. Принцип их работы можно описать следующим образом.
Так как современные WAF блокируют множество вредоносных запросов, не получится использовать утилиты вроде sqlmap или WPScan. Также невозможны атаки типа DoS или DDoS.
Поэтому у нас есть два варианта действий.
Для этой цели мы будем использовать скрипт с длинным, но говорящим названием: Bypass firewalls by abusing DNS history.
Эта утилита пытается узнать настоящий IP-адрес нужного нам сервера сразу двумя методами.
К практике
Скрипт находится в открытом доступе на . Я запускал его в Kali Linux, но он может работать и в других дистрибутивах.
Команды для установки на Kali выглядят так:
В колонке IP будут поочередно записаны IP-адреса, по которым можно напрямую обратиться к серверу. Во второй колонке указана вероятность того, что это верный IP, выраженная в процентах. В колонке Organisation — название компании, которой принадлежит данный IP.
Возьмем другой пример и расширим зону поиска: добавим сопоставление IP с поддоменами:
Здесь, помимо всего прочего, появляется еще одна колонка — Domain, в которой перечислены поддомены, соответствующие найденным IP-адресам.
Чтобы потом не потерять результат работы, его обычно сохраняют в файл. Что ж, используем параметр -o и пропишем путь для сохранения лога в домашнюю папку пользователя.
Как ты знаешь, не все взламывается в один клик. Иногда программам тоже нужна помощь — в нашем случае мы можем облегчить тулзе задачу, составив объемный список поддоменов. Этот список мы заполним с помощью скрипта Amass, который прекрасно умеет это делать. Запускается Amass вот такой командой:
Возвращаемся к WAF Bypass. Теперь мы будем использовать список найденных поддоменов для поиска настоящего IP-адреса атакуемого сервера:
Как видим, найдены два наиболее вероятных bypass-ip.
Пробуем навыки в деле
Чтобы развеять у тебя сомнения в работоспособности этого метода, я предлагаю провести небольшое исследование. Мы попробуем пробить с помощью данной утилиты несколько сайтов и составим небольшую статистику.
Хочу уточнить: проверять мы будем только серверы, которые защищены WAF. Чтобы в этом убедиться, используем встроенную в Kali утилиту dig:
Команду для тестирования будем использовать тоже общую:
Как видишь, мы получили список возможных байпасов, но он слишком огромный, и у каждого IP своя оценка вероятности. Это говорит о том, что не так-то просто пробить крупные компании.
Теперь посмотрим на один из серверов для совместной игры в Minecraft. Они тоже часто пользуются услугами защиты от DoS и DDoS.
Для эксперимента я беру первые попавшиеся серверы. Этот был зарубежным, и его защита выстояла.
Попробуем что-нибудь более беззащитное — мне под руку попался кастомный ролевой сервер игры GTA V.
Стопроцентный успех. Однако сервер был настолько скромным, что пришлось принудительно остановить полное сканирование.
Теперь проверим несколько новостных сайтов. Первой «жертвой» (в кавычках, поскольку никакого вреда мы не причинили) выступил один популярный новостной портал.
Мы получили огромное количество ошибок. Они связаны с тем, что сервер журнала ограничил нам возможность делать запросы. Однако утилите это не помешало добиться успеха. В самом первом отчете был найден байпас с вероятностью в 100%, однако это был поддомен.
Далее попробуем зарубежный образовательный журнал.
Можно заметить, что программа уже начала отваливаться, но все же попыталась найти в поддоменах байпасы. Процент успеха достаточно мал.
И наконец, последний кандидат.
Успех! Найден стопроцентный байпас.
Выводы
Как видишь, этим методом действительно можно отыскивать верные байпасы. Конечно, не всегда это получается качественно, иначе WAF вообще были бы бесполезными. Однако, наткнувшись на один из них, не опускай руки, ведь в твоем арсенале теперь еще пара действенных инструментов.
Для начала чуть подробнее расскажу о том, что такое WAF и как он работает. Например, в составе всем знакомого веб-сервера Apache есть модуль mod_security, который способен выполнять функции файрвола веб-приложений и помочь защитить твой сервис от какой-нибудь тривиальной DoS-атаки. Одна из таких атак — HTTP(S) GET-флуд, когда серверу посылают бесчисленное множество запросов на получение информации. Сервер неспособен обработать столько запросов за очень короткий промежуток и попросту падает.
Подобную функцию может предоставлять и какой-то облачный провайдер — для простоты разные сервисы такого типа я дальше буду называть просто WAF. Принцип их работы можно описать следующим образом.
- Веб-сервер, который нужно защитить, работает в обычном режиме без фильтрации опасных запросов, а WAF-сервис настроен на отдельном сервере компании, предоставляющей подобные услуги.
- В некой DNS-записи в качестве IP нужного сайта указывается не его настоящий адрес, а IP-адрес сервера WAF.
- После такой настройки все запросы к доменному имени сайта будут направляться не на сам сайт, а на WAF-сервер.
- Этот сервер принимает запрос, обрабатывает его и, если запрос удовлетворяет настроенным правилам, отсылает его на защищаемый сервер. WAF получает от этого сервера запрашиваемую информацию (веб-страницу, файл) и перенаправляет ее клиенту (пользователю).
Так как современные WAF блокируют множество вредоносных запросов, не получится использовать утилиты вроде sqlmap или WPScan. Также невозможны атаки типа DoS или DDoS.
Поэтому у нас есть два варианта действий.
- Сконструировать запрос таким образом, чтобы обойти правила, прописанные в WAF.
- Отправить запрос напрямую к веб-серверу, минуя проверку WAF.
Для этой цели мы будем использовать скрипт с длинным, но говорящим названием: Bypass firewalls by abusing DNS history.
Эта утилита пытается узнать настоящий IP-адрес нужного нам сервера сразу двумя методами.
- Анализ истории DNS-записей.
- Поиск поддоменов и последующий анализ их IP-адресов.
К практике
Скрипт находится в открытом доступе на . Я запускал его в Kali Linux, но он может работать и в других дистрибутивах.
Команды для установки на Kali выглядят так:
Команда для установки в дистрибутиве BlackArch:$ sudo apt install jq
$ git clone
Возвращаемся в Kali. Первой строчкой мы ставим необходимый модуль для работы скрипта, а второй скачиваем скрипт с GitHub. Чтобы получить справку по использованию тулзы, достаточно перейти в ее директорию и выполнить следующую команду:$ sudo pacman -S bypass-firewall-dns-history jq
Как видишь, разработчик скрипта предусмотрел несколько параметров:$ bash bypass-firewalls-by-DNS-history.sh --help
- -d — обязательный ключ для использования скрипта. С его помощью мы указываем доменное имя сайта, для которого хотим найти bypass;
- -a — с этим параметром найденные IP будут проверены не только для основного домена, но и для поддоменов;
- -l — этот параметр позволяет подгрузить в скрипт твой список поддоменов, чтобы выполнить более детальную и точную проверку;
- -o — данный параметр позволяет сохранить результат работы скрипта в файл, путь к которому указывается после параметра.
Для примера я нашел один сайт, который уязвим к атаке такого вида. Вот как выглядит вывод скрипта для этого сайта.$ bash bypass-firewalls-by-DNS-history.sh -d <Your_target>
В колонке IP будут поочередно записаны IP-адреса, по которым можно напрямую обратиться к серверу. Во второй колонке указана вероятность того, что это верный IP, выраженная в процентах. В колонке Organisation — название компании, которой принадлежит данный IP.
Возьмем другой пример и расширим зону поиска: добавим сопоставление IP с поддоменами:
$ bash bypass-firewalls-by-DNS-history.sh -d <Your_target> -a
Здесь, помимо всего прочего, появляется еще одна колонка — Domain, в которой перечислены поддомены, соответствующие найденным IP-адресам.
Чтобы потом не потерять результат работы, его обычно сохраняют в файл. Что ж, используем параметр -o и пропишем путь для сохранения лога в домашнюю папку пользователя.
Можно указывать не весь путь, а только название файла, в который будет записан результат. Файл сохранится в папку со скриптом.$ bash bypass-firewalls-by-DNS-history.sh -d <Your_target> -a -o /home/kali/<output.txt>
Как ты знаешь, не все взламывается в один клик. Иногда программам тоже нужна помощь — в нашем случае мы можем облегчить тулзе задачу, составив объемный список поддоменов. Этот список мы заполним с помощью скрипта Amass, который прекрасно умеет это делать. Запускается Amass вот такой командой:
С помощью параметра -d указываем свою цель, с помощью -o — файл для сохранения результата работы.$ Amass enum -d <Your_target> -o <subdomains.txt>
Возвращаемся к WAF Bypass. Теперь мы будем использовать список найденных поддоменов для поиска настоящего IP-адреса атакуемого сервера:
$ bash bypass-firewalls-by-DNS-history.sh -d <Your_target> -l <subdomains.txt>
Как видим, найдены два наиболее вероятных bypass-ip.
Пробуем навыки в деле
Чтобы развеять у тебя сомнения в работоспособности этого метода, я предлагаю провести небольшое исследование. Мы попробуем пробить с помощью данной утилиты несколько сайтов и составим небольшую статистику.
Хочу уточнить: проверять мы будем только серверы, которые защищены WAF. Чтобы в этом убедиться, используем встроенную в Kali утилиту dig:
Утилита выведет нам список DNS-серверов, к которым подключен сайт. Если ты увидишь DNS сервера Cloudflare или других WAF, это означает, что сайт находится под защитой от DOS- и DDоS-атак.$ dig <DOMAIN> NS +short
Команду для тестирования будем использовать тоже общую:
Итак, поехали. Возьмем для примера один игровой сайт, защищенный Cloudflare. Домен я по понятным причинам показывать не стану. Попробуем использовать нашу утилиту для пробива WAF и посмотрим, добьемся ли мы успеха.$ bash bypass-firewalls-by-DNS-history.sh -d <Your_target> -a
Как видишь, мы получили список возможных байпасов, но он слишком огромный, и у каждого IP своя оценка вероятности. Это говорит о том, что не так-то просто пробить крупные компании.
Теперь посмотрим на один из серверов для совместной игры в Minecraft. Они тоже часто пользуются услугами защиты от DoS и DDoS.
Для эксперимента я беру первые попавшиеся серверы. Этот был зарубежным, и его защита выстояла.
Попробуем что-нибудь более беззащитное — мне под руку попался кастомный ролевой сервер игры GTA V.
Стопроцентный успех. Однако сервер был настолько скромным, что пришлось принудительно остановить полное сканирование.
Теперь проверим несколько новостных сайтов. Первой «жертвой» (в кавычках, поскольку никакого вреда мы не причинили) выступил один популярный новостной портал.
Мы получили огромное количество ошибок. Они связаны с тем, что сервер журнала ограничил нам возможность делать запросы. Однако утилите это не помешало добиться успеха. В самом первом отчете был найден байпас с вероятностью в 100%, однако это был поддомен.
Далее попробуем зарубежный образовательный журнал.
Можно заметить, что программа уже начала отваливаться, но все же попыталась найти в поддоменах байпасы. Процент успеха достаточно мал.
И наконец, последний кандидат.
Успех! Найден стопроцентный байпас.
Выводы
Как видишь, этим методом действительно можно отыскивать верные байпасы. Конечно, не всегда это получается качественно, иначе WAF вообще были бы бесполезными. Однако, наткнувшись на один из них, не опускай руки, ведь в твоем арсенале теперь еще пара действенных инструментов.