Сканирование портов и разведка с помощью nmap, часть 01

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
153
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие кибервоины!

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

Nmap начинался как простой и скромный инструмент сканирования портов, использующий возможность отправки TCP-, UDP- или ICMP-пакетов хосту и порту для получения ответа, определяющего, открыт ли порт. С годами он превратился в мощный инструмент сканирования с некоторыми возможностями эксплуатации уязвимостей. Например, Nmap можно использовать для: (1) обнаружения ОС, (2) определения служб и их версий, (3) определения времени бесперебойной работы ОС, (4) обхода межсетевых экранов, (5) выполнения DNS-запросов и поиска поддоменов, (6) проведения DoS-атак, (7) сканирования на наличие уязвимостей и множества других задач разведки с использованием скриптов Nmap.

Фанаты «Матрицы» (а кто из них не фанат «Матрицы»?) наверняка помнят, как в фильме «Матрица: Перезагрузка» Тринити использовала nmap, чтобы найти открытый порт TCP 22 в компьютерной системе электростанции (SCADA) и взломать пароль, чтобы предоставить Нео физический доступ.

Да, это наш любимый nmap ниже в сцене из «Матрицы: Перезагрузка» с Тринити за клавиатурой.

6a4a49_6dcca2175f794e51a3295d965e3763b5~mv2.png


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

В этой серии я расскажу вам о многочисленных возможностях nmap и скриптов nmap.

История nmap

nmap был разработан в 1997 году и опубликован Гордоном Лайоном (он же Фёдор Васькович) как бесплатный сканер портов и сетей с открытым исходным кодом в журнале Phrack Magazine. nmap претерпел множество обновлений и улучшений, и текущая версия 7.7 вышла около года назад. Изначально разработанный для Linux, nmap был портирован на Windows, macOS и BSD.

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

(1) Zenmap;

(2) NmapFE;

(3) Xnmap

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

Шаг №1: Запустите Kali и откройте терминал

Первый шаг — запустить Kali и открыть командную строку. Конечно, nmap можно использовать и в других версиях Linux и Windows, но мы выбрали Kali Linux, где он установлен по умолчанию.

6a4a49_12ac7333426f4c9fb1f6df5ca62550cf~mv2.png


Шаг №2: Откройте справку nmap

Далее давайте обратимся к файлу справки nmap, чтобы получить некоторые подсказки о том, как использовать nmap.

кали > nmap –помощь

6a4a49_8a6f2204d748475ea7fa6a26e49ebf62~mv2.png


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

Обратите внимание на инструкцию по использованию;

Использование: nmap {Тип(ы) сканирования] [Параметры] {Спецификация цели}

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

Шаг №3: Базовое сканирование TCP

Давайте используем Metasploitable в качестве целевой системы. Первым шагом будет определение IP-адреса нашей цели. В данном случае это 192.168.1.106 (ваш, вероятно, будет другим).

Самый простой, быстрый и надёжный способ сканирования nmap — это TCP-сканирование. Он отправляет TCP-пакеты для попытки трёхстороннего TCP-подтверждения (SYN-SYN/ACK-ACK) на каждом сканируемом порту. Если целевая система завершает трёхстороннее согласование, порт считается открытым. Ключевой параметр nmap — -sT или s can T CP.

Мы просто добавляем его как опцию после команды nmap, а затем следуем за IP-адресом.

nmap -sT <IP>

Такой как;

кали > nmap -sT 192.168.1.106

6a4a49_375ae1f371414911a38a5ffa390d2cd9~mv2.png


Через несколько секунд nmap выводит на экран компьютера (stdout) вывод, включающий каждый порт, для которого получены результаты, протокол, состояние порта (открыт, закрыт, фильтруется) и службу по умолчанию, работающую на этом порту (обратите внимание, что nmap НЕ сообщает, какая служба запущена на порту, а просто сообщает протокол по умолчанию для этого порта. Большинство служб могут работать на любом порту). В результате сканирования мы видим, что в этой системе, вероятно, запущено множество портов и служб (как и любой инструмент, nmap НЕ идеален. Вы можете получать ошибочные отчёты).

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

Чего мы НЕ знаем, так это:

(1) Какие порты UDP работают;

(2) Какая операционная система работает?

(3) Какие фактические службы и версии работают на этих портах.

Шаг №4: Базовое сканирование UDP

Теперь посмотрим, сможем ли мы найти открытые UDP-порты. Команда nmap для поиска UDP-портов практически идентична, только мы заменяем T в команде на U (UDP).

Теперь наше UDP-сканирование выглядит так:

kali > nmap -sU 192.168.1.106

6a4a49_ab42b7642b29436b93a81dc20ffae883~mv2.png


Как правило, сканирование UDP занимает гораздо больше времени, чем сканирование TCP, поскольку механизм, используемый UDP для сигнализации о закрытии порта, несколько отличается от TCP и более неоднозначен. В моём случае сканирование TCP заняло 2,97 секунды, а сканирование UDP — 1081,63 секунды, что почти в 400 раз больше .

Будьте терпеливы с UDP.

Шаг №5: сканирование одного порта

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

Такой как;

кали > нмап -sT 192.168.1.106 – стр. 445

6a4a49_f01d8cd054f9462bb6b55f0e7bd400a2~mv2.png


Эта команда попытается установить трёхстороннее TCP-соединение на порту 445, и в случае успеха сообщит об открытии порта. Как видите, nmap обнаружил порт 445 открытым и предполагает, что на нём запущен протокол SMB.

Если бы мы хотели просканировать всю подсеть на предмет порта 445 и SMB, вы могли бы использовать нотацию CIDR для подсети и оставить все остальное таким же, как в предыдущей команде.

кали > нмап -sT 192.168.1.0/24 -p445

6a4a49_0a6fd217dc1b4388b68c21f4964bb4a3~mv2.png


Теперь nmap просканирует каждое устройство в этой подсети (255) на наличие порта 445 и сообщит нам об этом. Как видите выше, было обнаружено множество хостов с портом 445: некоторые закрыты, некоторые отфильтрованы, а некоторые открыты.

Шаг №6: Получите ОС, службы и их версии

На данный момент мы знаем только, какие порты UDP и TCP открыты, и какие протоколы по умолчанию на них работают. Мы всё ещё не знаем;

1. Операционная система

2. Фактические службы, работающие на этих портах

3. Версии сервисов (разные версии имеют разные уязвимости).

Ответить на эти вопросы нам поможет ключ -A в nmap .

Такой как;

кали > nmap -sT -A 192.168.1 106

Это сканирование также занимает больше времени, поскольку оно выполняет гораздо больше работы, чем простое сканирование открытых портов – весьма детерминированный процесс. В данном случае nmap будет проверять каждый открытый порт специально сформированными пакетами, а затем, оценивая различия в ответах, определять службу и её версию. Для определения операционной системы используется аналогичный, менее детерминированный процесс. Как я уже отмечал в руководстве по p0f , стек TCP/IP каждой операционной системы помещает немного разные значения в поля заголовков. Считывая эти поля, мы можем с высокой точностью оценить целевую операционную систему.

6a4a49_1a36bcecb87b4f7ab153105a0925ba92~mv2.png


Как видно выше, nmap прошёл по каждому из открытых портов, отправил пакетные зонды и дал высоконадёжную оценку сервиса, его версии и другой критически важной информации, такой как команды и даже уязвимости. Обратите внимание на ответ для порта 21 FTP (с запущенным vsftpd 2.3.4) и порта 25 SMTP (с запущенным Postfix smtpd).

Просматривая результаты, мы видим порт 80 (работает Apache httpd 2.2.8), порт 3306 (работает MySQL 5.0.51a)…

6a4a49_16b5be8bb3dd4ce180648558b77a8551~mv2.png


…а затем почти в самом низу мы видим оценку nmap базовой операционной системы (Linux 2.6.x).

6a4a49_c1b6fc9598a142398183e236a83776be~mv2.png


Заворачивать

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

1. TCP-порты

2. UDP-порты

3. Открыт ли порт 445 во всей нашей сети.

4. Операционная система цели

5. Какие службы и их версии работают на этих портах.

Довольно неплохо за небольшую работу или знания!

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