Используйте полученные знания в этичных целях
Cloudflare - компания, которая предоставляет услуги CDN, защиту против DDOS и т.д. Проще говоря, клауд помогает снизить нагрузку и подменить IP адрес, защитить от DDOS атак, перенаправлять весь трафик на https, то есть благодаря сертификату можно подключить платежку и много других функций. Именно поэтому популярность клауда с каждым годом растет. Можно ориентироваться на статистику wappalyzer.
Темы, которые рассмотрены:
1. Кратко. Как настроить Cloudflare
2. Способы нахождения IP за клаудом
3. Готовое решение для поиска по SSL
Прежде, чем искать IP важно понимать, что делает клауд и как его настраивает администратор, чтобы примерно понимать, где админ может допустить ошибку.
Кратко, как это работает:
1. Администратор регистрирует учетку на cloudflare.com
2. Указывает доменку и выбирает бесплатный или платный тариф. В основном отличия платного тарифа заключаются в том, что можно добавить всего-лишь 3 правила. То есть функционал обрезан, если администратор решит сэкономить, то это скажется на безопасности его ресурса.
3. Меняет NS сервера домена
4. Устанавливает SSL сертификат
5. Настраивает необходимые правила. Например переадресацию с http --> https
6. Настраивает WAF. Если администратор подходит к делу с головой, то он не только заблокирует OWASP top 10, но и сомнительный трафик. Как он может заблокировать crawl и парсинг? Сделать проверку, если на сайт ломятся с http и ipv6, то запросить капчу и редиректнуть на https. Ipv6 практически не распространены среди обычных юзеров, обычно они дешевые и поэтому часто используют под парс и другие сомнительные телодвижения. По статистике, свыше 98% общего мирового интернет-трафика приходится на протоколы IPv4, хотя у IPv6 немало преимуществ. Далее админ может запретить низкий http протокол. Поведенческие боты преимущественно используют протокол HTTP/1 и HTTP/1.1. Ну и напоследок может создать фильтр, чтобы доступ к ресурсу был только с определенной страны. Пример правила: (ip.geoip.country ne "RU")
Действие: Block
Как мы убедились настроить cloudflare довольно несложная задача. Если админ хоть чуть-чуть постарается, то можно забыть про acunetix и другие автоматические сканнеры. Думаю теперь понятно почему есть необходимость найти айпи за клаудом.
Но не всегда достаточно просто найти IP. Вот к примеру, что может сделать админ, чтобы защититься от прямого входа на сайт по IP для 80 порта:
server {
listen 80 default_server;
server_name _;
return 404;
}
Для 443 порта:
if ($host != "domain.com") {
return 404;
}
Создаст белые списки:
1. Внесение IP-адресов в белый список. Вариант не очень хороший, потому что придется постоянно обновлять базу с IP CDN.
2. Добавление уникального идентификатора из запроса в белый список. CDN будет отправлять уникальный id на сервер
3. Добавление скрытого хоста. Длинная комбинация букв и цифр, котооая будет известна только CDN.
2.Найти IP за клаудом - это настоящая проблема. Есть множество способов, как его заполучить. Но прежде нужно сделать базовую разведку:
1. Узнать диапазон айпи/CIDR
2. Сервисы, которые работают на сервере
3. DNS записи. Основные типы записей: A - ipv4, AAAA - ipv6, MX - mail, PTR - доменное имя для IP, CNAME - эта запись является псевдонимом. Администратор может использовать CNAME, как алиас. Например example.com CNAME exam.com. Для распределения нагрузки между серверами например: www.exam.com CNAME server.exam.com, server2.exam.com, SOA - содержит конфиденциальную информацию, например емейл администратора, серийный номер и т.д., ns(name server) - определяет авторитетные серверы имен для домена. Авторитетные серверы имен - это серверы, которые используются для разрешения запросов к именам хостов и определения того, какие IP-адреса следует использовать для доступа к данному серверу., TXT - текстовые данные. Внимательно изучите все DNS записи . Простые записи A, AAA, CNAME или MX могут послужить источником исходного IP.
4. Информация о веб сервере. Утилита whatweb может помочь в этом вопросе
5. Информация о vhosts. Вид хостинга, при котором множество веб-сайтов расположено на одном веб-сервере.
Вот основные из них о которых вы уже скорее всего знаете:
1. Брут поддоменов. Можно попробовать побрутить поддомены, если повезет, то вы добудете айпи сервера.
2. Просмотр ssl сертификата
3. Регистрация на сайте и просмотр служебных заголовков на почте. Или любым другим способом получить письмо с почтового сервиса, который расположен на сервере жертвы. Можно попробовать запросить сброс пароля, создать тикет и т.д.
4. Просмотр исходников сайта на наличие айпи в тэгах html или в js скриптах
5. MurmurHash. Вычисляем hash favicon'a и ищем https://www.shodan.io/search/report?query=http.favicon.hash:сюдахэш
6. Censys, Shodan, SecurityTrails
7. Отправить сообщение на несуществующий адрес. К примеру отправляем письмо на [email protected]. Если нам повезет, то придет письмо с ошибкой доставки сообщения и там может оказаться адрес сервера
Теперь некоторые способы попробуем на практике.
1. Попробуем просканировать тестовый ресурс на поддомены
subfinder -d domain.com
К сожалению нашлось только domain.com и www.domain.com
2. Посмотрим dns записи. Можно это делать через nslookup и другие утилиты, но смысла нет, если уже все продумали за нас и есть готовый веб ресурс, который сразу выдаст записи
клац xseo и вводим сюда доменку
По сути ничего полезного тут не оказалось.
3. Теперь включаем голову. Вспоминаем из чего состоит IPv4
Адрес IPv4 — это 32-битный адрес, который идентифицирует устройство в сети. Он состоит из 4 групп цифр (октетов) по 3 цифры в каждой.
IPv4 идентифицирует сеть и отдельный хост в сети. Вот пример IPv4-адреса: 185.107.80.231.
256.256.256.256 = 256^4 = 4 лярда + ipv4 доступно, если просканить на открытый 443 порт, то у вас на руках останется более 45 миллионов ipv4. Теперь вдумайтесь какая мощность нужна, чтобы к таргету получить ip. Не рационально сразу гнать все эти 45 миллионов - это долго и дорого.
Как говорил один важный человек., чем больше мы знаем информации о жертве, тем легче ее взломать.
Обращайте внимание на социальные сети прикрепленные к ресурсу:
Чем больше информации мы узнаем о стране и городе, тем лучше. Большая вероятность, если админ живет в стране N, то он и будет пользоваться услугами хостеров N. Если это так, то мы сильно сэкономим ресурсы.
Допустим, если мы определили, что сайт принадлежит итальянцу, то для быстрой проверки мы можем откинуть США, Китай и все другие страны, кроме Италии. Уже будет явно не 45 миллионов ipv4:443. А если мы узнаем еще и город, то проверка будет максимально быстро выполняться.
Находим ip range по городу Clifton - клац
5.62.114.0-5.62.114.255 в таком вот формате. Сканим на 443 открытый порт
**sudo masscan -iL iprange.txt --open-only **
Теперь у нас есть ip:443 с открытым портом города Clifton. Теперь остается достать доменки из этих сертов. Я уже по сути все сделал за вас.
openssl s_client -connect ip:443 2>&1 | grep -E "target.com"
или если вы хотите выводить все доменки, то используйте regex
openssl s_client -connect ip:443 2>&1 | grep -E "\b(?:https?://)?(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\.[a-zA-Z]{2,})\b|(\*\.)"
В CN как раз и лежит наша доменка.
Вот скрипт на perl, который автоматизирует процесс поиска нужного ssl для target.com
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes qw(time);
# Чтение IP из файла
open(my $fh, '<', 'ip') or die "Не удалось открыть файл 'ip': $!";
my @ip_list = <$fh>;
close($fh);
# Команда для выполнения (замените target.com на ваш)
my $command = q{cat ip | xargs -P 10 -I {} sh -c 'openssl s_client -connect {} 2>&1 | grep -E "CN = target.com" && echo {}'};
# Выполнение команды для каждого IP
foreach my $ip (@ip_list) {
** chomp $ip;**
** my $command_with_ip = $command . " -connect $ip";**
** print "Выполнение команды для IP: $ip\n";**
** eval {**
** local $SIG{ALRM} = sub { die "timeout\n" };**
** alarm 5; # Установка таймера на 5 секунд**
** my $start_time = time();**
** my $result = `$command_with_ip`;**
** my $end_time = time();**
** alarm 0; # Сброс таймера**
** my $elapsed_time = $end_time - $start_time;**
** print "Результат для IP: $ip\n";**
** if ($elapsed_time >= 5) {**
** print "Нет отклика более 5 секунд. Переход к следующей итерации\n";**
** next;**
** }**
** print $result;**
** };**
** if ($@ && $@ !~ /timeout/) {**
** die "Произошла ошибка при выполнении команды для IP $ip: $@";**
** }**
}
По сути все готово:)
3.Теперь время поискать готовые решения на тематических форумах
Человек продает такое же решение только за 1000$, но сейчас у него проходит скидка и он продает за 500$ :DDDDDDDD
Чтобы статья не была скучной я решил приобрести эту хреновину у него. Всё таки тема актуальная и у него 34 ответа в теме, люди интересуются, кто-то даже покупает.
Описание его товара
Что нового в 1.2?
- Новый дизайн Web-панели
- Добавление новой конфигурации через браузер
- Редактирование IP адресов через браузер
- Фикс бага с SNI протоколом (софт не дописывал домен в client-hello)
***
Продается софт, который находит реальные айпи адреса серверов, на которых стоят сайты, подключенные к Cloudflare и другим CDN.
Вероятность нахождения не 100%, если владелец сайта правильно настроил свой сервер, то отыскать его реальный ip невозможно (Но как правило большинство забивают на это и айпи находится).
Не связано с DNS, поднятием истории домена и паблик базами)
Реальный ip localbitcoins.com был найден за 2 дня на сервере средней мощности.
Для работы необходим сервер с мощным процессором, хорошим интернет-каналом. Хостинг должен разрешать скан.
Можно использовать несколько серверов одновременно и сканить с них централизованно.
Присутствует Web-панель (с 1.1 версии), удобная настройка параметров сканирования, статистика, логи, возможность сканить сразу с нескольких серверов, мультиязычность.
Также, с 1.2 версии была полностью переработа Web-панель (самый первый скриншот), теперь все действия производятся не вручную путем редактирования файлов конфигураций а через браузер, что очень удобно.
Всего 2 способа поиска, поддерживается многопоточность. Имеется возможность искать несколько сайтов одновременно, присутствует файл конфигурации. Результаты сохраняются в txt.
Софт работает на windows и linux, однако на linux скорость поиска гораздо быстрее.
Цена: 1000$
500$ вместе с исходниками
В планах оптимизировать скорость, добавить новые алгоритмы поиска, реализовать предварительный поиск по базам и сервисам и многое другое. Цена будет повышена при следующем обновлении!
Всем, кто купил по текущей цене все будущие обновления будут выдаваться бесплатно. Софт без привязок и прочего мусора, код не обфуцирован)
Человек после оплаты прислал мне архив
Вот содержимое:
Крч у него просто есть веб морда, через screen запускаем scanner и web panel, импортируем бд mysql, устанавливаем нужные библиотеки, подгружаем ip:443 и добавляем таргеты.
2 режима работы. По http, как он сказал мне не работает, т.к много мусора будет лететь.
Софт по каким-то причинам не принимает сразу 45kk ip:443 из-за этого пришлось разбить по 1,3kk
Есть также баги, например проверит 1 файл с айпишниками, а к следующему не перейдет.
Можно выбрать количество потоков.
В целом идея хорошая, но проект очень сырой. Не понятно какие сервера приобрести, чтобы скорость была приличная. На моем rdp скан в 200 потоков бы занял для 1 таргета более месяца)))) Крч, для меня софт оказался бесполезным, у меня нет таких ресурсов.
Вывод:
Неправильная настройка DNS приводит к раскрытию настоящего IP сайта. Есть множество способов, как найти IP за CDN, я рассказал лишь про самые основные. Важно использовать эти методы с осторожностью и в соответствии с законодательством, чтобы не нарушить приватность и безопасность пользователей