Сканирование портов с использованием Masscan

NmapNmapBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы научитесь использовать Masscan, высокопроизводительный сканер TCP-портов, для эффективного сетевого разведки в области кибербезопасности. Вы научитесь устанавливать Masscan из исходного кода, настраивать параметры сканирования и анализировать результаты на частных сетевых диапазонах.

Упражнения помогут вам определить цели, выполнить сканирование и интерпретировать результаты. Завершив это лабораторное занятие, вы получите практический опыт работы с быстрыми сканирующими возможностями Masscan, соблюдая этические практики сканирования.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/common_ports("Common Ports Scanning") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/common_ports -.-> lab-549946{{"Сканирование портов с использованием Masscan"}} nmap/save_output -.-> lab-549946{{"Сканирование портов с использованием Masscan"}} nmap/port_scanning -.-> lab-549946{{"Сканирование портов с использованием Masscan"}} nmap/target_specification -.-> lab-549946{{"Сканирование портов с использованием Masscan"}} nmap/service_detection -.-> lab-549946{{"Сканирование портов с использованием Masscan"}} end

Установка Masscan

На этом этапе вы установите Masscan, высокопроизводительный сканер TCP-портов, в среде виртуальной машины LabEx. Masscan известен своей способностью сканировать весь интернет за несколько минут, используя асинхронную передачу и собственный кастомный стек TCP/IP. В отличие от традиционных сканеров, Masscan не зависит от сетевого стека операционной системы, что позволяет ему достичь впечатляющих скоростей сканирования.

Прежде чем продолжить, убедимся, что мы находимся в правильной рабочей директории. Директория ~/project - это место, где мы будем организовывать все файлы, связанные со сканированием:

cd ~/project

Для работы Masscan сначала необходимо установить несколько зависимостей. Это включает в себя инструменты разработки и библиотеки, необходимые для компиляции исходного кода. Следующая команда обновит список пакетов и установит необходимые компоненты:

sudo apt-get update && sudo apt-get install -y git make gcc libpcap-dev

Теперь мы загрузим исходный код Masscan из его официального репозитория на GitHub. Клонирование репозитория даст нам последнюю версию кода:

git clone https://github.com/robertdavidgraham/masscan

После загрузки необходимо скомпилировать исходный код, чтобы создать исполняемую программу. Команда make считывает файл Makefile в директории и собирает программное обеспечение:

cd masscan && make

После успешного завершения компиляции мы можем проверить, что все работает, проверив установленную версию. Это хорошая практика, чтобы убедиться, что установка прошла успешно:

./bin/masscan --version

Вы должны увидеть вывод, похожий на следующий:

Masscan version 1.3.2

Наконец, чтобы Masscan был легко доступен из любой директории, мы скопируем его в /usr/local/bin/, которая обычно включена в переменную окружения PATH системы:

sudo cp bin/masscan /usr/local/bin/

Это завершает процесс установки. Теперь у вас есть Masscan, готовый к использованию для высокоскоростного сканирования портов на следующих этапах этого лабораторного занятия.

Определение диапазона целей

На этом этапе вы определите диапазон целевых IP-адресов для операции сканирования портов. Понимание диапазонов целей является фундаментальным аспектом сетевого сканирования, так как оно указывает сканеру, какие сетевые адреса нужно проверить. Masscan требует определенных диапазонов целей для эффективного сканирования, так как он предназначен для высокоскоростных операций на больших сетях.

В учебных целях мы будем использовать частные диапазоны IP-адресов, определенные в RFC 1918. Это безопасные, нераутируемые адреса, обычно используемые в локальных сетях, поэтому мы избежим случайного сканирования реальных хостов в Интернете. Три основных частных диапазона, которые мы будем использовать, следующие:

  1. 10.0.0.0/8 - Самый большой частный блок, часто используемый корпорациями.
  2. 172.16.0.0/12 - Средний по размеру диапазон, часто встречающийся в корпоративных сетях.
  3. 192.168.0.0/16 - Наиболее распространенный диапазон для домашних и малых офисных сетей.

Сначала перейдем в нашу рабочую директорию, где мы будем хранить список целей:

cd ~/project

Теперь создадим текстовый файл для хранения наших диапазонов целей. Мы используем nano в качестве текстового редактора, так как он прост и доступен в большинстве Linux-окружений:

nano targets.txt

В редакторе добавьте эти три стандартных частных диапазона (нажмите Ctrl+O, чтобы сохранить изменения, затем Ctrl+X, чтобы выйти из nano):

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

Запись в формате CIDR (/8, /12, /16) указывает, сколько IP-адресов содержится в каждом диапазоне:

  • /8 означает, что первые 8 битов фиксированы (10.x.x.x).
  • /12 фиксирует первые 12 битов (от 172.16.x.x до 172.31.x.x).
  • /16 фиксирует первые 16 битов (192.168.x.x).

Проверим, что наш файл с целями был создан правильно, отобразив его содержимое:

cat targets.txt

Вы должны увидеть три диапазона в формате CIDR, точно так же, как они были введены. Этот файл будет использоваться в качестве входных данных для Masscan на следующих этапах, указывая ему, какие сети нужно сканировать.

Запуск высокоскоростного сканирования портов

На этом этапе вы выполните высокоскоростное сканирование портов с использованием Masscan на диапазонах целей, определенных на предыдущем этапе. Сканирование портов - это фундаментальная техника сетевой разведки, которая помогает определить доступные сервисы на целевых системах. Уникальная архитектура Masscan позволяет ему сканировать тысячи портов в секунду, сохраняя при этом точность, что делает его идеальным для быстрого сканирования больших сетей.

Сначала убедитесь, что вы находитесь в правильной рабочей директории, где расположен файл с целями. Это обеспечит доступ Masscan к вашему предварительно определенному списку целей:

cd ~/project

Теперь запустим фактическое сканирование. Следующая команда Masscan выполнит сканирование наиболее распространенных портов (от 1 до 1000) на ваших диапазонах целей. Эти порты обычно включают в себя известные сервисы, такие как веб-серверы (80, 443), электронная почта (25, 110) и другие часто используемые протоколы:

sudo masscan -p1-1000 -iL targets.txt --rate 1000 -oG scan_results.gnmap

Разберем каждую часть этой команды, чтобы понять, что она делает:

  • -p1-1000: Указывает диапазон портов для сканирования (порты от 1 до 1000).
  • -iL targets.txt: Читает целевые IP-адреса из вашего предварительно определенного списка в файле.
  • --rate 1000: Управляет скоростью сканирования (1000 пакетов в секунду безопасно для учебных окружений).
  • -oG scan_results.gnmap: Сохраняет результаты в grepable-формате для удобного анализа.

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

Starting masscan 1.3.2 (http://bit.ly/14GZzcT) at 2023-01-01 00:00:00 GMT
Initiating SYN Stealth Scan
Scanning 3 hosts [1000 ports/host]

После завершения (обычно менее 1 минуты для небольших сетей) вы можете просмотреть результаты сканирования. Grepable-формат позволяет легко определить открытые порты и сервисы:

cat scan_results.gnmap

Вывод будет показывать обнаруженные открытые порты в таком четком формате, где каждая строка представляет хост и его открытые порты:

Host: 10.0.0.1 ()   Ports: 80/open/tcp//http///, 443/open/tcp//https///

Проверка открытых портов

На этом этапе вы проанализируете результаты сканирования портов из предыдущего шага, чтобы определить открытые порты и связанные с ними сервисы. Открытые порты похожи на двери в сети: когда они открыты, они позволяют устройствам обмениваться данными. Понимание, какие порты открыты, является важной частью сетевой безопасности, так как каждый открытый порт может потенциально стать точкой входа как для законной трафика, так и для угроз безопасности.

Сначала перейдем в директорию, где хранятся результаты сканирования. Это обеспечит работу с правильными файлами данных:

cd ~/project

Для просмотра полных результатов сканирования в исходном формате используем команду cat. Она покажет все, что записал Masscan, включая закрытые порты и метаданные сканирования:

cat scan_results.gnmap

Поскольку нас в первую очередь интересуют открытые порты, мы можем отфильтровать результаты с помощью команды grep. Эта команда покажет только строки, содержащие слово "open", что упростит поиск активных сервисов:

grep "open" scan_results.gnmap

Для лучшей организации можно отобразить результаты так, чтобы IP-адреса были четко связаны с их открытыми портами. Команда awk поможет переструктурировать вывод, чтобы показать, какие порты открыты на каких конкретных хостах:

awk '/Host:/ {ip=$2} /open/ {print ip,$0}' scan_results.gnmap

Если вы хотите проверить, сколько хостов имеют определенный порт открыт (например, популярный веб-порт 80), команда grep с флагом -c даст вам количество:

grep -c "80/open" scan_results.gnmap

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

grep -oP '\d+/open' scan_results.gnmap | sort | uniq -c

Пример вывода может выглядеть так, показывая, что у трех хостов открыт SSH (порт 22), у пяти - HTTP (порт 80) и у двух - HTTPS (порт 443):

   3 22/open
   5 80/open
   2 443/open

Экспорт результатов сканирования

На этом этапе вы узнаете, как экспортировать результаты сканирования Masscan в различные форматы файлов. Корректный экспорт данных сканирования является важным, так как он позволяет анализировать полученные результаты, делиться отчетами с членами команды или использовать данные в других инструментах безопасности. Мы создадим три распространенных формата: CSV для анализа в электронных таблицах, обычный текст для быстрого просмотра и JSON для автоматизированной обработки.

Сначала перейдите в директорию проекта, где хранятся результаты сканирования. Это обеспечит сохранение всех экспортированных файлов в правильном месте:

cd ~/project

Первое преобразование создает файл в формате CSV (Comma-Separated Values - разделенные запятыми значения). CSV идеально подходит для импорта в программное обеспечение для электронных таблиц, такое как Excel. Команда awk извлекает IP-адрес, номер порта и имя сервиса из файла в grepable-формате:

awk -F'[ /]' '/Host:/ {ip=$2} /open/ {print ip","$4","$7}' scan_results.gnmap > scan_results.csv

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

grep "open" scan_results.gnmap | awk '{print "Host:", $2, "Port:", $4}' > scan_report.txt

Для интеграции с другими инструментами или скриптами мы создадим файл в формате JSON. JSON - это структурированный формат, который большинство языков программирования могут легко разобрать. Следующие команды создают правильный JSON-массив со всеми результатами сканирования:

echo '[' > scan_results.json
grep "open" scan_results.gnmap | awk '{print "{\"host\":\""$2"\",\"port\":\""$4"\",\"service\":\""$7"\"},"}' >> scan_results.json
sed -i '$ s/,$//' scan_results.json
echo ']' >> scan_results.json

Наконец, убедитесь, что все экспортированные файлы были успешно созданы. Эта команда выводит список файлов с их размерами, чтобы вы могли убедиться, что экспорт прошел как ожидалось:

ls -l scan_results.* scan_report.txt

Вы должны увидеть вывод, похожий на следующий:

-rw-r--r-- 1 labex labex 1234 scan_results.csv
-rw-r--r-- 1 labex labex 5678 scan_results.json
-rw-r--r-- 1 labex labex 9012 scan_report.txt

Резюме

В этом практическом занятии вы узнали, как выполнять высокоскоростное сканирование портов с использованием Masscan, начиная от установки и заканчивая подготовкой целей. Процесс включал настройку зависимостей, компиляцию исходного кода и настройку диапазонов частных IP-адресов для безопасной практики.

Вы получили практические знания о асинхронных возможностях сканирования Masscan и использовании нотации CIDR. В рамках практики были подчеркнуты этические методы сканирования, сконцентрировавшись на нераспространяемых (не-routable) адресах, что подготовило вас к сценариям анализа сетей в реальной жизни.