Массовое сканирование. Masscan
E7|MGMx80
Тему массового сканирования сети интернет на наличие работающих служб, наверное, только ленивый не осветил. Отчего задача стоит нелегкая: доступно и насыщенно осветить материал и не залезть в скучные дебри мануала.
Программ для массового сканирования достаточно много, но широко известны nmap, zmap и masscan.
Останавливаться на каждой не буду, а выделю свою любимую Masscan.
Это один из самых быстрых и гибких сканеров портов. За счет кастомного TCP/IP стека он может выполнять до 10 миллионов пакетов с секунду.
В Kali Linux данная программа уже входит в список предустановленного софта.
Для установки на Linux Debian семейства (Ubuntu, Mint) можно проинсталлировать из репозитория:
sudo apt update sudo apt install masscan
или собрать из исходников:
sudo apt-get install git gcc make libpcap-dev git clone https://github.com/robertdavidgraham/masscan cd masscan make
Синтаксис запуска программы:
masscan <ip/range_ip> -p <ports> <options>
Команда для сканирования на наличие сайтов в подсети 1.0.0.0/255.0.0.0 со скоростью 20000 пакетов в секунду:
masscan -p80,443 1.0.0.0/8 --rate=20000
Это хорошо, когда нам нужно обычные сайты найти. Часто бывает так, что критически важная служба сайта крутится не на IP доменного сайта, а просто проксируются на него. Все это обычно скрывают за произвольными портами.
К ним же относятся различные API службы.

Masscan позволяет задавать диапазоны портов:
masscan -p80,443,1000-6000 87.0.0.0/8 --rate=20000
Но я бы вам не рекомендовал так делать. Сильно увеличивается количество запросов.
Расчет количества запросов:
5003 порта х 16 777 214 хостов = 83 936 401 642 запросов.
Поиск по диапазону портов осуществляется только после грамотного осинта, который сократит список исследуемых IP адресов, и, как результат, количество запросов и время сканирования.
masscan -p80,443,1000-6000 87.250.10.0/24 --rate=20000
Сканируя 80, 443 и другие http порты можно получить много паразитного трафика. Отчего велика вероятность забить канал или на VDS получить предупреждение/бан от хостера.
Есть два пути решения этой проблемы: или DROP-ать на определенном порту в iptables, или устроить спуфинг.
Первый вариант самый этичный.
Делаем блокировку входящих запросов на интерфейсе eth0 с портов 65000:
iptables -A INPUT -p tcp -i eth0 --dport 65000 -j DROP
Проверяем список правил iptables:
iptables -L INPUT

Далее производим скан сети 87.0.0.0/8 на наличие служб на портах 80 и 443 с указанием сбора баннеров HTTP заголовков с отправкой пакетов на 65000 порт в качестве источника:
masscan 87.0.0.0/8 -p80,443 --rate=20000 --banners --adapter-port 65000
Не умеете работать с iptables? Остается вариант использования спуфинга.
Выбираем IP адрес из своей локальной сети, который никем не занят, все пакеты заворачиваем на него.
masscan 87.0.0.0/8 -p80,443 --rate=20000 --banners --adapter-ip 192.168.10.111
Моя этичность не позволяет описывать злобные схемы, но таким образом можно хорошо насолить владельцам соседних VDS, которые вместе с вами находятся в одной подсети.
Masscan позволяет сохранять результаты сканирования в различных форматах
-oL - Список -oJ - JSON -oG - Grepable -oB - Бинарный -oX - XML
Вывод в бинарном формате:
masscan 87.0.0.0/8 -p80,443 --rate=20000 --banners --adapter-port 65000 -oB 87.0.0.0_8.bin
Вывод в XML формате:
masscan 87.0.0.0/8 -p80,443 --rate=20000 --banners --adapter-port 65000 -oX 87.0.0.0_8.xml
Для чтения сохраненного файла есть опция --readscan
masscan --readscan 87.0.0.0_8.bin
При сканировании можно так же использовать udp порты, они обозначаются префиксом u: перед номером порта.
Пример сканирования сети 1.0.0.0/8 на наличие DNS серверов, работающих на 53 tcp и udp портах с сохранением версии DNS сервера в файле 1_8_dns.xml
masscan 1.0.0.0/8 -pU:53,53 --banners --output-filename 1_8_dns.xml
Для более подробного изучения опций сканирования, можно воспользоваться мануалом:
man masscan
Masscan очень гибкий, мощный и быстрый сканер. В грамотных руках это боевой инструмент.
Рассмотрим практический пример использования masscan.
Задача: Нужно получить выход на Украину с приватных IP адресов самой Украины.
Самый простой способ, выбираем крупного оператора связи, допустим это будет КиевСтар.
Проводим Osint по данной организации https://dnsdumpster.com/static/graph/kyivstar.ua-202211030722.html

Узнаем используемые IP адреса, и какие зарегистрированы автономные системы.
Посмотрим в какой AS находится IP 94.153.164.9.

Получаем подсеть 94.153.164.9/16.
Возвращаемся к нашей задаче и думаем через что это всех проще реализовать.
У большинства дома имеются wi-fi маршрутизаторы для выхода в интернет. Их великое множество, но среди них есть интересная железка как Microtik. Интересна она тем, что это как мини сетевой комбайн, есть почти все на вкус и цвет. Любой грамотный специалист сможет на данном маршрутизаторе настроить VPN Server (L2TP или PPTP). Микротики так же являются очень мощными Wi-Fi точками с возможностью ручного выставления децибел, отчего эти железки покупают опытные пользователи и обыватели. Обычному пользователю ее сложно настроить, но и "прямота" рук IT-специалистов на час тоже нам на руку, из-за чего в сети интернет можно найти много маршрутизаторов с дефолтными настройками.
Идентифицировать Mikrotik можно по службе удаленного администрирования winbox, которая крутится на порту 8291.
Вот по этому порту и будем осуществлять поиск.

masscan 94.153.0.0/16 -p 8291 --rate=1000 --banners --adapter-port 65000 -oX UA_94.153.0.0_16.xml

Содержимое поиска сохранится в файле UA_94.153.0.0_16.xml

Из данной подсети мы нашли 334 маршрутизатора.
Таким образом можно себе насканировать этих железок в любой стране.
К примеру в USA на сети 1.0.0.0/8 их нашлось 1530.
Как дальше получить к ним доступ и настроить VPN, это тема отдельной статьи.
Особо пытливые умы могут взять на домашнее задание.
На этом тема массового сканирования раскрыта в необходимом практическом объеме.
P.S. Если кому интересен графический интерфейс, пишите в комментариях.
Может для вас напишу статью по его установке и использованию.
Ваш MGMx80.