Введение
В этой лабораторной работе вы научитесь использовать Nmap — мощный инструмент для сканирования сетей с открытым исходным кодом, широко применяемый специалистами по безопасности. Nmap помогает обнаруживать активные узлы, открытые порты и запущенные службы в сети, обеспечивая необходимую видимость для оценки защищенности.
Вы получите практический опыт выполнения базового сканирования в Nmap, научитесь интерпретировать результаты и понимать различные методы сканирования. Эти навыки являются фундаментальными для анализа сетевой безопасности. При этом важно помнить о соблюдении этических норм: сканирование разрешено проводить только в сетях, на работу с которыми у вас есть официальное разрешение.
Установка Nmap
Прежде чем приступить к исследованию сетей, нам необходимо вооружиться подходящим инструментом. Nmap (Network Mapper) — это бесплатная утилита с открытым исходным кодом, которая помогает системным администраторам и специалистам по безопасности обнаруживать устройства в сети и определять доступные службы. На этом этапе мы установим Nmap в вашу систему.
- Для начала откроем терминал. Именно здесь мы будем запускать все команды Nmap. В Linux-системах, подобных нашей лабораторной среде, терминал является основным способом взаимодействия с сетевыми инструментами. Найдите и откройте Xfce Terminal на рабочем столе.

Примечание: Пользователи бесплатного тарифа не имеют доступа к интернету, поэтому Nmap уже предустановлен в лабораторной среде. Вы можете сразу перейти к пункту 4 (проверка установки Nmap). Перейдите на тариф Pro, чтобы попрактиковаться в самостоятельной установке ПО.
Только для пользователей Pro
- После открытия терминала необходимо обновить списки пакетов. Это важный первый шаг, так как он гарантирует, что система знает о последних доступных версиях программного обеспечения. Введите следующую команду и нажмите Enter:
sudo apt-get update
sudo расшифровывается как "superuser do" (выполнить от имени суперпользователя) и дает нам административные привилегии, которые необходимы для установки программ.
- Теперь, когда списки пакетов обновлены, установим Nmap. Следующая команда загрузит и установит Nmap вместе со всеми необходимыми зависимостями:
sudo apt-get install nmap -y
Флаг -y автоматически подтверждает согласие на установку, что удобно при использовании скриптов или когда вы уверены в своих действиях.
- После завершения установки следует убедиться, что 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 как мощный фонарик, который позволяет увидеть, что происходит в вашей сети. Он может показать, какие устройства подключены, какие службы на них запущены и даже какие операционные системы они используют. Эти возможности делают Nmap незаменимым инструментом как для системного администрирования, так и для тестирования безопасности.
Если вы хотите изучить все возможности Nmap, вы можете ввести man nmap в терминале, чтобы просмотреть справочное руководство. В этой документации описаны все расширенные опции и функции, но не пугайтесь объема информации — в этой лабораторной работе мы начнем с основ и будем расширять ваши знания шаг за шагом.
Понимание IP-адресов
Прежде чем начать сканирование сетей, крайне важно разобраться в том, что такое IP-адреса. Представьте IP-адрес как домашний адрес вашего компьютера в сети. Точно так же, как почтовой службе нужен ваш домашний адрес для доставки писем, другим устройствам в сети нужен ваш IP-адрес для связи с вашим компьютером.
- IP-адрес — это уникальный идентификатор устройства в сети. Обычно он выглядит как ряд чисел, разделенных точками, например, 192.168.1.1. Эти числа варьируются от 0 до 255, и каждый сегмент представляет часть сетевой иерархии. Первая часть идентифицирует саму сеть, а последующие — конкретные устройства.
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
- Чтобы узнать свой собственный 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
Числа после косой черты (например, /8 и /16) используют нотацию CIDR (бесклассовая адресация). Эта запись указывает, сколько бит IP-адреса отведено под идентификатор сети, а сколько — под идентификатор устройства. Например, /16 означает, что первые 16 бит (первые два числа) определяют сеть, а оставшиеся биты могут быть назначены отдельным устройствам.
В этом выводе вы увидите несколько IP-адресов. Вот что они означают на практике:
127.0.0.1называется адресом "петли" (loopback) или "localhost". Этот специальный адрес всегда указывает на ваш собственный компьютер и используется, когда программе нужно связаться с самой собой.172.19.0.3— это фактический сетевой адрес вашей машины. Именно этот адрес другие устройства будут использовать для отправки данных на ваш компьютер, подобно тому как почтовый адрес идентифицирует ваш дом.
Запишите IP-адрес, отличный от 127.0.0.1 (в данном примере это 172.19.0.3). Мы будем использовать этот реальный сетевой адрес в наших упражнениях по сканированию.
Понимание нотации CIDR важно для определения того, какие устройства находятся в вашей локальной сети, а какие — в удаленных сетях.
Вы также можете заметить адреса, начинающиеся с "fe80::" — это адреса IPv6, новой версии протокола IP, разработанной для замены IPv4. Хотя значимость IPv6 растет, большинство локальных сетей по-прежнему в основном используют адреса IPv4, подобные тем, что мы рассматриваем сейчас. В целях обучения сканированию мы сосредоточимся на IPv4, так как они чаще встречаются в локальных сетевых средах.
Выполнение базового сканирования Nmap
Теперь, когда мы разобрались с IP-адресами и установили Nmap, давайте выполним наше первое сканирование сети. Это начальное сканирование будет направлено на вашу собственную машину — это самый безопасный способ изучить базовые функции Nmap перед сканированием других систем.
- Сначала воспользуемся IP-адресом, который вы определили на предыдущем шаге. Для базовой команды сканирования Nmap требуется только целевой IP-адрес. Запустите следующую команду, заменив
<YOUR_IP>на найденный вами адрес:
nmap <YOUR_IP>
Например, если ваш IP — 172.19.0.3, вы должны запустить:
nmap 172.19.0.3
Эта команда приказывает Nmap просканировать 1000 наиболее распространенных TCP-портов по указанному IP-адресу. TCP-порты можно представить как пронумерованные двери в компьютере, через которые сетевые службы могут обмениваться данными.
- После выполнения команды 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
Давайте разберем каждую часть этого вывода, чтобы понять, о чем сообщает Nmap:
- "Starting Nmap 7.80": Показывает используемую версию Nmap. Разные версии могут иметь немного отличающиеся функции или форматы вывода.
- "Host is up (0.00017s latency)": Подтверждает, что целевая машина ответила на сетевые запросы; время отклика указано в секундах.
- "Not shown: 998 closed ports": Указывает, что из 1000 просканированных портов 998 не принимали соединения.
- "PORT STATE SERVICE": Список всех открытых портов, найденных в ходе сканирования:
22/tcp open ssh: Порт 22 открыт, на нем работает SSH (Secure Shell), используемый для безопасного удаленного администрирования систем.3001/tcp open nessus: Порт 3001 открыт, на нем запущено то, что Nmap идентифицирует как Nessus (сканер уязвимостей).
Это базовое сканирование дает ценную информацию о сетевых службах, запущенных на вашей машине. На практике эта информация помогает в:
- Аудите безопасности: выявлении ненужных открытых портов, которые могут быть использованы злоумышленниками.
- Устранении сетевых неполадок: проверке доступности ожидаемых служб.
- Обнаружении инцидентов: поиске неожиданных служб, которые могут указывать на компрометацию системы.
Помните, что сканирование сети следует проводить только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Сканирование сетей без авторизации может нарушать закон и этические нормы. Всегда получайте надлежащее разрешение перед сканированием любой системы, не являющейся вашей собственной.
Выполнение сканирования для определения ОС
Nmap не ограничивается поиском открытых портов. Он также может попытаться определить операционную систему целевой машины. Эта функция невероятно полезна для сетевых администраторов и специалистов по безопасности, так как разные ОС имеют разные уязвимости и требуют различных мер защиты.
Прежде чем начать, важно понять, как работает определение ОС. Nmap отправляет на цель специально сформированные пакеты и анализирует ответы. Каждая операционная система реагирует на сетевые запросы немного по-своему, создавая уникальный "отпечаток" (fingerprint), который Nmap сопоставляет со своей базой данных.
- Для выполнения сканирования с определением ОС мы используем флаг
-O(обратите внимание, что это заглавная буква 'O', а не цифра ноль). Это сканирование требует привилегий суперпользователя, так как программе необходимо отправлять и анализировать "сырые" (raw) пакеты на низком уровне. Мы воспользуемсяsudoдля запуска этой команды. Замените<YOUR_IP>на фактический IP-адрес, который вы хотите просканировать:
sudo nmap -O <YOUR_IP>
Например, если ваш целевой IP — 172.19.0.3, запустите:
sudo nmap -O 172.19.0.3
- В выводе будут показаны открытые порты, как и при обычном сканировании, но теперь добавится информация об операционной системе. Типичный результат может выглядеть так:
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
Давайте подробно рассмотрим новую информацию, связанную с ОС:
- "Device type: general purpose": Это говорит о том, что устройство является обычным компьютером, а не специализированным оборудованием, таким как маршрутизатор или устройство интернета вещей (IoT).
- "Running: Linux 2.6.X": Основное предположение Nmap о семействе и версии операционной системы.
- "OS CPE": Стандартизированный идентификатор версии операционной системы.
- "OS details": Более точная идентификация версии на основе совпадения отпечатков.
Понимание этой информации ценно для нескольких практических задач:
- Специалисты по безопасности используют её для выявления потенциально уязвимых систем, требующих обновления.
- Сетевые администраторы ведут точный учет устройств в своей сети.
- Системные администраторы проверяют, работают ли машины под управлением ожидаемых ОС.
Помните, что определение ОС не всегда дает стопроцентный результат. На точность могут влиять несколько факторов:
- Межсетевые экраны (firewalls) могут блокировать пробы, которые Nmap использует для обнаружения.
- Нестандартные конфигурации ядра могут не совпадать с эталонными отпечатками.
- Виртуальные машины иногда показывают ОС хоста вместо гостевой ОС.
Для достижения наилучших результатов комбинируйте определение ОС с другими методами Nmap и по возможности проверяйте полученные данные несколькими способами.
Сканирование диапазона сети
В реальных сетевых средах часто возникает необходимость просканировать сразу несколько IP-адресов или целые сегменты сети. Это полезно для обнаружения всех устройств в сети — обычная задача для администраторов и аудиторов безопасности. Давайте попробуем просканировать диапазон сети.
- Начнем со сканирования небольшого диапазона IP-адресов. Это часто становится первым шагом при изучении незнакомой сети. Команда ниже сканирует 20 последовательных IP-адресов, начиная с 172.19.0.1:
nmap 172.19.0.1-20
Эта команда указывает Nmap последовательно проверить каждый IP-адрес от 172.19.0.1 до 172.19.0.20 и сообщить, какие узлы находятся в сети и какие порты на них открыты.
- Теперь просканируем целую подсеть, используя нотацию CIDR, о которой мы говорили ранее. Суффикс /24 означает, что мы сканируем все 256 адресов в последнем октете. Запустите следующую команду, заменив
<YOUR_NETWORK>на адрес вашей сети:
nmap YOUR_NETWORK /24
Например:
nmap 172.19.0.0/24
Это сканирование проверит каждый IP-адрес от 172.19.0.0 до 172.19.0.255. Нотация /24 эквивалентна маске подсети 255.255.255.0.
- Чтобы сохранить результаты сканирования для документации или последующего анализа, мы используем флаг
-oN(output normal). Это создаст текстовый файл, удобный для чтения человеком:
nmap 172.19.0.0/24 -oN network_scan.txt
Команда выполняет то же сканирование подсети, но записывает результат в файл network_scan.txt в текущем рабочем каталоге.
- Давайте изучим содержимое выходного файла:
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
Разберем полученные данные:
- Сканирование охватило все 256 возможных адресов в диапазоне 172.19.0.0/24.
- Только 5 узлов ответили на сканирование (были в состоянии "up").
- Для каждого узла указаны:
- Имя хоста (если оно разрешимо) и IP-адрес.
- Измеренная задержка сети (latency).
- Количество проверенных портов (закрытые порты по умолчанию не отображаются).
- Список открытых портов и связанных с ними служб.
Практическое применение сканирования сети включает:
- Инвентаризацию сети: ведение точного списка всех устройств.
- Аудит безопасности: выявление неавторизованных устройств или служб.
- Устранение неполадок: проверка сетевой связности и доступности сервисов.
- Оценку уязвимостей: обнаружение потенциально опасных служб.
Помните, что сканирование сети должно проводиться только в тех сетях, которыми вы владеете или на сканирование которых у вас есть официальное разрешение. Несанкционированное сканирование может нарушать законы о конфиденциальности или правила использования сети.
Резюме
В этой лабораторной работе вы изучили основы сканирования сети с помощью Nmap — мощного инструмента для разведки и оценки безопасности сетей. Вы попрактиковались в установке Nmap, выполнении базового сканирования для поиска открытых портов и служб, определении операционных систем и исследовании сетевых диапазонов с эффективным управлением результатами вывода.
Эти навыки закладывают фундамент для более продвинутых практик в области сетевой безопасности. Всегда помните о необходимости получения надлежащего разрешения перед сканированием сетей и используйте эти знания ответственно для укрепления цифровой безопасности.



