Изучите установку и основы использования Nmap

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

Введение

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

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

Установка Nmap

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

Сначала вам нужно открыть терминал. Терминал представляет собой текстовый интерфейс, который позволяет вам взаимодействовать с системой, вводя команды. По умолчанию вы должны находиться в каталоге /home/labex/project. Если вы не находитесь в этом каталоге, вы можете перейти в него с помощью следующей команды. Эта команда изменяет текущий рабочий каталог на /home/labex/project.

cd /home/labex/project
Терминал с установкой Nmap

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

sudo apt update
sudo apt install nmap -y

Команда sudo используется для выполнения команд с административными привилегиями. Поскольку установка программного обеспечения требует административного доступа, вам нужно использовать sudo. Флаг -y используется с командой apt install. Он автоматически отвечает "да" на любые запросы в процессе установки, поэтому вам не нужно вручную подтверждать каждый шаг.

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

nmap --version

Вы должны увидеть вывод, похожий на следующий (обратите внимание, что ваша версия может отличаться):

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

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

Настройка локального сервиса для сканирования

Прежде чем мы начнем использовать Nmap для сканирования, важно иметь работающий целевой сервис. Таким образом, мы сможем эффективно протестировать возможности сканирования Nmap. В этом шаге мы настроим простой HTTP-сервер, используя встроенный модуль http.server в Python. Модуль http.server в Python — это удобный инструмент, который позволяет быстро запустить HTTP-сервер без необходимости сложной настройки.

Сначала давайте создадим новый каталог для нашего HTTP-сервера. Каталог — это как папка на вашем компьютере, где мы можем хранить все файлы, связанные с нашим сервером.

mkdir -p /home/labex/project/http-server
cd /home/labex/project/http-server

Команда mkdir -p создает каталог с именем http-server по указанному пути. Опция -p гарантирует, что если какие-либо промежуточные каталоги не существуют, они также будут созданы. Затем команда cd изменяет наш текущий рабочий каталог на вновь созданный каталог http-server.

Теперь давайте создадим простой HTML-файл, который будет обслуживать наш сервер. HTML — это стандартный язык разметки для создания веб-страниц.

echo "<html><body><h1>Welcome to the Nmap Lab</h1></body></html>" > index.html

Эта команда использует команду echo для вывода HTML-кода в терминал, а затем перенаправляет этот вывод в файл с именем index.html. Итак, мы создали файл с базовой HTML-структурой и приветственным сообщением.

Далее мы запустим HTTP-сервер Python.

python3 -m http.server 8000

Эта команда использует интерпретатор python3 для запуска модуля http.server в качестве скрипта. Опция -m указывает Python запустить модуль как скрипт. Мы указываем порт 8000, что означает, что наш сервер будет прослушивать входящие запросы на этом порту.

Open a new terminal tab or window to continue

Важно: Откройте новую вкладку или окно терминала, чтобы продолжить. Держите HTTP-сервер запущенным в этом терминале и используйте новый терминал для всех последующих команд Nmap в этой лабораторной работе (lab). Это гарантирует, что HTTP-сервер останется активным во время выполнения сканирований.

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

curl http://localhost:8000

Когда вы запускаете эту команду, curl отправляет запрос на HTTP-сервер, работающий на localhost (который относится к вашему собственному компьютеру) на порту 8000. Если сервер работает правильно, вы должны увидеть HTML-контент, который мы создали ранее.

127.0.0.1 - - [13/Sep/2024 15:24:21] "GET / HTTP/1.1" 200 -
<html>
  <body>
    <h1>Welcome to the Nmap Lab</h1>
  </body>
</html>

Этот вывод показывает, что сервер получил запрос, успешно обработал его (что обозначено кодом состояния 200) и вернул HTML-контент файла index.html.

Базовое сканирование с использованием Nmap

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

Сначала мы выполним простое TCP-сканирование (TCP connect scan) на нашем локальном HTTP-сервере. TCP-сканирование - это фундаментальный тип сканирования в Nmap. Он пытается установить полное TCP-соединение с целевым портом. Если соединение установлено успешно, это означает, что порт открыт.

Вот команда для выполнения этого сканирования:

nmap -sT -p 8000 localhost

Разберем эту команду:

  • -sT - это опция, которая указывает на выполнение TCP-сканирования. Это сообщает Nmap использовать метод TCP connect для проверки статуса портов.
  • -p 8000 указывает, что мы хотим, чтобы Nmap сканировал только порт 8000. Если необходимо, вы можете изменить это число для сканирования других портов.
  • localhost - это цель нашего сканирования. Он ссылается на локальную машину, на которой запущена служба.

После выполнения этой команды вы должны увидеть вывод, похожий на следующий:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

Этот вывод показывает, что порт 8000 открыт и запущена на нем HTTP-служба. Столбец STATE указывает статус порта, и в данном случае он равен open. Столбец SERVICE дает представление о том, какого рода служба может быть запущена на этом порту.

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

Вот команда для более детального сканирования:

nmap -sV -p 8000 localhost

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

После выполнения этой команды вы должны увидеть вывод, похожий на следующий:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE VERSION
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.48 seconds

Этот вывод предоставляет более детальную информацию о службе, запущенной на порту 8000. Он сообщает нам, что это Python SimpleHTTPServer и даже дает номер версии.

Вы можете просмотреть запросы Nmap в журналах терминала, в котором вы запустили Python HTTP-сервер. Это может быть полезно для отладки или дальнейшего анализа.

Сканирование нескольких портов

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

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

Сначала давайте сканируем 1000 самых распространенных портов на локальном компьютере (localhost). Локальный компьютер (localhost) представляет собой текущее устройство, на котором вы работаете, и обозначается IP - адресом 127.0.0.1. Сканирование 1000 самых распространенных портов - это быстрый способ получить обзор служб, работающих на вашем локальном компьютере.

nmap localhost

После выполнения этой команды вы увидите вывод, похожий на следующий:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:29 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

Эта команда без указания портов сканирует 1000 самых распространенных портов. Вы должны увидеть список открытых, закрытых и отфильтрованных портов. Вывод показывает номер порта, его состояние (открыт, закрыт или отфильтрован) и связанную службу.

Теперь давайте сканируем все 65535 портов. В протоколе TCP/IP доступно всего 65535 портов. Сканирование всех портов позволяет получить полное представление о службах, работающих на цели, но требует больше времени.

nmap -p- localhost

Опция -p- сообщает Nmap сканировать все порты от 1 до 65535. Это сканирование займет больше времени на выполнение, так как нужно проверить каждый отдельный порт.

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

nmap -p 1-1000 localhost

Эта команда сканирует порты от 1 до 1000. Указав диапазон портов, вы можете сосредоточить сканирование на портах, наиболее важных для ваших нужд.

Форматы вывода и сохранение результатов

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

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

nmap -oN normal_output.txt localhost

В этой команде опция -oN используется для того, чтобы указать Nmap сохранить вывод в обычном формате. normal_output.txt - это имя файла, в котором будут храниться результаты. localhost - это цель сканирования, которая относится к локальной машине.

Теперь сохраним вывод в формате XML. XML (eXtensible Markup Language, расширяемый язык разметки) - это широко используемый формат для хранения и обмена данными. Он имеет структурированный формат, который может быть легко разобран скриптами или импортирован в другие инструменты для дальнейшей обработки. Чтобы сохранить вывод в формате XML, используем следующую команду:

nmap -oX xml_output.xml localhost

Здесь опция -oX сообщает Nmap сохранить вывод в формате XML. xml_output.xml - это файл, в котором будут сохранены результаты в формате XML.

Наконец, сохраним вывод в grep - совместимом формате. Grep - совместимый формат разработан для того, чтобы его можно было легко разобрать с помощью таких инструментов, как grep, который является мощным текстовым поисковым инструментом в системах на основе Unix. Этот формат полезен, когда вы хотите быстро найти определенную информацию в результатах сканирования. Чтобы сохранить вывод в grep - совместимом формате, используем следующую команду:

nmap -oG grepable_output.txt localhost

Опция -oG используется для сохранения вывода в grep - совместимом формате, и grepable_output.txt - это файл, в котором будут храниться результаты.

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

cat normal_output.txt

Эта команда выведет содержимое файла normal_output.txt в терминал, позволяя вам увидеть результаты сканирования.

Резюме

В этом практическом занятии вы изучили основы Nmap, мощного инструмента для сканирования сетей и аудита безопасности. Сначала вы установили Nmap на системе Ubuntu Linux и проверили его установку. Затем вы настроили локальный HTTP - сервер в качестве цели для сканирования, показав, как создать простую службу для тестирования.

Вы также изучили различные методы сканирования, начиная от базовых сканирований портов и заканчивая детекцией версий служб. Вы научились сканировать определенные порты, диапазоны портов и все 65535 портов на системе, что является важным для понимания сети и поиска потенциальных уязвимостей. Наконец, вы узнали о параметрах вывода Nmap, таких как сохранение результатов в обычном текстовом формате, XML и grep - совместимом формате, которые необходимы для документирования и дальнейшего анализа.

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