Сканирование сети с помощью Nmap

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

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

Введение

В этом практическом занятии (лабораторной работе) вы откроете для себя мир сетевой безопасности, изучив, как использовать Nmap, мощный и универсальный инструмент для сканирования сетей. Nmap (Network Mapper) — это открытый инструмент, который системные администраторы и профессионалы в области безопасности используют для обнаружения хостов, служб и уязвимостей в сети. Он похож на фонарик в темной комнате, помогающий вам увидеть, что находится там и что может скрыться от глаз.

В этом практическом занятии вы научитесь:

  1. Устанавливать и использовать Nmap
  2. Проводить различные типы сетевых сканирований
  3. Интерпретировать результаты сканирования Nmap
  4. Понимать важность сетевой безопасности в реальных условиях

Помните, что навыки, которые вы получите здесь, очень мощные, и их следует использовать только этически и на сетях, которые принадлежат вам или для которых у вас есть явное разрешение на тестирование. Давайте приступим!

Установка Nmap

Прежде чем мы приступим к исследованию сетей, нам нужно оснаститься правильным инструментом. На этом этапе мы установим Nmap на вашу систему.

  1. Сначала откройте терминал. В реальной жизни многие сетевые операции выполняются через командную строку, поэтому полезно привыкнуть к ней. На рабочем столе найдите и откройте терминал Xfce.
Окно терминала Xfce

Примечание: Пользователи бесплатной версии не могут подключиться к интернету, поэтому Nmap уже предустановлен в лабораторной среде. Вы можете перейти к пункту 4 списка (проверить, установлен ли Nmap). Перейдите к профессиональной версии, чтобы самостоятельно попрактиковаться в установке Nmap.

Только для профессиональных пользователей
  1. После открытия терминала нам нужно обновить списки пакетов. Это гарантирует, что у нас есть актуальная информация о доступном программном обеспечении. Введите следующую команду и нажмите Enter:
sudo apt-get update

sudo используется для выполнения команд с административными привилегиями.

  1. Теперь, когда наши списки пакетов обновлены, давайте установим Nmap. Введите следующую команду:
sudo apt-get install nmap -y

Флаг -y автоматически отвечает "да" на все запросы, что делает установку более плавной.

  1. После завершения установки хорошей практикой будет проверить, что Nmap был установлен правильно. Мы можем сделать это, проверив его версию. Введите:
nmap --version

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

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.6 openssl-3.0.2 nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Не беспокойтесь, если номер версии или некоторые детали отличаются – Nmap регулярно обновляется.

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

Если вы любопытны, что еще может делать Nmap, вы можете ввести man nmap в терминале. Это покажет вам страницу руководства по Nmap, в которой подробно описаны все его параметры и возможности. Не стесняйтесь исследовать, но не беспокойтесь, если не поймете сразу все – мы рассмотрим самые важные части в этом практическом занятии.

Понимание IP-адресов

Перед тем, как мы начнем сканировать сети, важно понять, что такое IP-адреса. Представьте себе IP-адрес как домашний адрес вашего компьютера в сети. Так же, как почтовая служба нуждается в вашем домашнем адресе для доставки почты, другие устройства в сети нуждаются в вашем IP-адресе, чтобы связаться с вашим компьютером.

  1. IP-адрес - это уникальный идентификатор устройства в сети. Обычно он выглядит как последовательность чисел, разделенных точками, например, 192.168.1.1.
graph LR A[Internet] --- B[Router 192.168.1.1] B --- C[PC 192.168.1.10] B --- D[Laptop 192.168.1.11] B --- E[Smartphone 192.168.1.12] B --- F[Smart TV 192.168.1.13] style A fill:#f9f,stroke:#333,stroke-width:4px style B fill:#bbf,stroke:#333,stroke-width:2px style C fill:#dfd,stroke:#333,stroke-width:2px style D fill:#dfd,stroke:#333,stroke-width:2px style E fill:#dfd,stroke:#333,stroke-width:2px style F fill:#dfd,stroke:#333,stroke-width:2px
  1. Чтобы узнать свой собственный IP-адрес, мы используем команду, которая показывает информацию о сетевых интерфейсах. Введите следующую команду:
ip addr show | grep inet

Разберем эту команду по частям:

  • ip addr show отображает информацию о всех сетевых интерфейсах
  • | (канал) передает вывод предыдущей команды следующей команде
  • grep inet фильтрует вывод, показывая только строки, содержащие "inet", которые включают IP-адреса

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

inet 127.0.0.1/8 scope host lo
inet 172.19.0.3/16 brd 172.19.255.255 scope global eth1
  1. В этом выводе вы увидите несколько IP-адресов. Вот что они означают:

    • 127.0.0.1 - это адрес "локального хоста" (localhost). Каждый компьютер обращается к себе как к 127.0.0.1. Этот адрес используется для локальных соединений внутри вашего собственного компьютера.
    • 172.19.0.3 - это IP-адрес вашего компьютера в сети. Именно по этому адресу другие устройства могут связаться с вашим компьютером.
  2. Запишите IP-адрес, который не равен 127.0.0.1 (в данном случае, 172.19.0.3). Мы будем использовать его на следующем этапе.

/16 после IP-адреса называется маской подсети. Она определяет размер сети. В данном случае, /16 означает, что первые два числа IP-адреса (172.19) определяют сеть, а последние два могут быть использованы для индивидуальных устройств.

Если вы интересуетесь разными типами IP-адресов, стоит отметить, что существуют две основные версии протокола IP: IPv4 (например, 172.19.0.3) и IPv6 (который начинается с символов, таких как fe80::). IPv6 был создан для решения проблемы исчерпания IPv4-адресов по мере увеличения количества устройств, подключаемых к интернету. В этом практическом занятии мы сосредоточимся на IPv4-адресах.

Выполнение базового сканирования с помощью Nmap

Теперь, когда мы понимаем, что такое IP-адреса, и установили Nmap, давайте выполним наше первое сканирование сети. Мы начнем с того, что просканируем наш собственный компьютер, чтобы узнать, что о нем может сказать Nmap.

  1. Мы будем использовать IP-адрес, который вы записали на предыдущем этапе. Запустите следующую команду, заменив <YOUR_IP> на найденный вами IP-адрес:
nmap <YOUR_IP>

Например, если ваш IP-адрес 172.19.0.3, вы должны запустить:

nmap 172.19.0.3
  1. После запуска этой команды Nmap выполнит сканирование и выведет результаты. Вот пример того, что вы можете увидеть:
Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-24 10:00 CST
Nmap scan report for 336efdcfb776.external (172.19.0.3)
Host is up (0.00017s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus

Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
  1. Разберем этот вывод, чтобы понять, что нам сообщает Nmap:

    • "Starting Nmap 7.80": Это версия Nmap, которую вы используете.
    • "Host is up": Это подтверждает, что IP-адрес ответил на сканирование.
    • "Not shown: 998 closed ports": Nmap просканировал 1000 распространенных портов, и 998 из них были закрыты.
    • "PORT STATE SERVICE": Здесь показаны открытые порты, найденные Nmap.
      • 22/tcp open ssh: Порт 22 открыт и обычно используется для SSH (Secure Shell) - протокола для безопасного удаленного доступа.
      • 3001/tcp open nessus: Порт 3001 открыт и связан с сканером уязвимостей Nessus.
  2. Это базовое сканирование дает нам быстрый обзор служб, запущенных на компьютере. В реальной жизни эта информация может быть использована для:

    • Определения потенциальных уязвимостей (например, ненужного открытого порта)
    • Проверки запуска необходимых служб
    • Обнаружения неожиданных служб, которые могут указывать на нарушение безопасности

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

Выполнение сканирования для определения операционной системы

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

  1. Чтобы выполнить сканирование для определения операционной системы, мы используем флаг -O (обратите внимание, что это заглавная буква 'O', а не цифра ноль). Для этого сканирования требуются привилегии суперпользователя, поэтому мы будем использовать sudo. Запустите эту команду, заменив <YOUR_IP> на ваш фактический IP-адрес:
sudo nmap -O <YOUR_IP>

Например, если ваш IP-адрес 172.19.0.3, вы должны запустить:

sudo nmap -O 172.19.0.3
  1. Вывод будет похож на вывод базового сканирования, но с дополнительной информацией о операционной системе. Вот пример:
Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-24 10:01 CST
Nmap scan report for 336efdcfb776.external (172.19.0.3)
Host is up (0.000035s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/.
Nmap done: 1 IP address (1 host up) scanned in 1.76 seconds
  1. Разберем новую информацию:

    • "Device type: general purpose": Это указывает, что это обычный компьютер, а не специализированное устройство, такое как маршрутизатор или принтер.
    • "Running: Linux 2.6.X": Nmap определил, что, вероятно, это система Linux с версией ядра 2.6.X.
    • "OS details: Linux 2.6.32": Это более точное предположение о версии ядра.
  2. В реальной жизни эта информация может быть использована несколькими способами:

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

Следует отметить, что определение операционной системы не всегда является 100% точным. Nmap делает свое лучшее предположение на основе того, как система отвечает на различные запросы, но брандмауэры и другие меры безопасности могут иногда мешать точному определению.

Сканирование диапазона IP-адресов в сети

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

  1. Мы будем сканировать небольшой диапазон IP-адресов на основе того IP, который мы использовали ранее. Давайте сканируем диапазон от 172.19.0.1 до 172.19.0.20:
nmap 172.19.0.1-20

Эта команда сообщает Nmap сканировать все IP-адреса от 172.19.0.1 до 172.19.0.20.

  1. Теперь давайте сканируем целую подсеть. Мы будем использовать запись в формате CIDR для указания сети. Запустите следующую команду, заменив <YOUR_NETWORK> на адрес вашей сети:
nmap YOUR_NETWORK /24

Например:

nmap 172.19.0.0/24

Nmap сканирует все 256 IP-адресов в диапазоне сети 172.19.0.0/24 (где /24 указывает на 24-битную маску подсети) в поисках активных хостов и открытых портов.

  1. Чтобы сохранить вывод этого сканирования в файл для дальнейшего анализа, мы можем использовать флаг -oN, за которым следует имя файла. Запустите:
nmap 172.19.0.0/24 -oN network_scan.txt

Это выполнит сканирование и сохранит результаты в файл с именем network_scan.txt в текущем каталоге.

  1. Давайте посмотрим на содержимое файла:
cat network_scan.txt

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

## Nmap 7.80 scan initiated Fri Sep 27 15:45:29 2024 as: nmap -oN network_scan.txt 172.19.0.0/24
Nmap scan report for iZrj9gvdh5xn02z8rmsn9mZ (172.19.0.1)
Host is up (0.00045s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
111/tcp   open  rpcbind
10010/tcp open  rxapi

Nmap scan report for node_openresty.external (172.19.0.2)
Host is up (0.00047s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
80/tcp open  http

Nmap scan report for 36cff415ddd9.external (172.19.0.3)
Host is up (0.00045s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus

Nmap scan report for 041bf22f47a1.external (172.19.0.4)
Host is up (0.00050s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus

Nmap scan report for 2299e8eff7e5.external (172.19.0.5)
Host is up (0.00048s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus

## Nmap done at Fri Sep 27 15:45:32 2024 -- 256 IP addresses (5 hosts up) scanned in 3.25 seconds
  1. Давайте проинтерпретируем этот вывод:

    • Nmap сканировал все 256 IP-адресов в сети 172.19.0.0/24.
    • Он обнаружил 5 активных и реагирующих хостов.
    • Для каждого хоста были перечислены открытые порты и обнаруженные сервисы.
  2. В реальной жизни такой тип сканирования бесценен для:

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

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

Итоги

Поздравляем! Вы только что сделали первые шаги в мир сетевого сканирования и безопасности. В этом практическом занятии вы приобрели практический опыт работы с Nmap, одним из самых мощных инструментов в арсенале сетевого профессионала. Давайте вспомним, что вы узнали:

  1. Установка: Вы установили Nmap, что является важным навыком для создания своего инструментария в области кибербезопасности.
  2. Базовое использование: Вы выполнили простое сканирование, научившись определять открытые порты и сервисы на одном хосте.
  3. Определение операционной системы: Вы использовали функцию определения операционной системы в Nmap, поняв, как эта информация может быть важной как для атакующих, так и для защитников.
  4. Исследование сети: Вы просканировали диапазон IP-адресов и целую подсеть, имитируя то, как профессионалы могут составить карту сети.
  5. Управление выводом: Вы научились сохранять результаты сканирования в файл для дальнейшего анализа, что является важным навыком для документирования сетевых аудитов.

Это практическое занятие дало вам основу в сетевом сканировании, но о Nmap и сетевой безопасности есть еще многое, что узнать. Чтобы продолжить свое обучение и углубить свои знания, мы рекомендуем пройти комплексный курс "Быстрый старт с Nmap", доступный по адресу https://labex.io/courses/quick-start-with-nmap.

Быстрый старт с Nmap

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

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

Продолжайте учиться, оставайтесь любопытными и удачного сканирования!