MetrikaYandex
Суббота, 6 ноября

Nmap для пентестера: статус порта

Nmap для пентестера: статус порта

Сегодня мы рассмотрим один из наиболее универсальных инструментов пентестера — Nmap — культовый кроссплатформенный сканер, который расшифровывается как «Network Mapper». Инструмент сам по себе довольно мощный, но его чаще всего используют в связке с другими утилитами, не предполагая, что, помимо способности сканировать сеть, Nmap имеет массу других возможностей.

Хотя Nmap постоянно наращивала функциональность, изначально утилита разрабатывалась как эффективный сканер портов, и она по-прежнему сохраняет свои основные функции. Простой командой nmap <цель сканирования> будет произведено сканирование более чем 1660 TCP портов на <целевой машине>. В то время как многие сканеры портов традиционно разделяют все порты на закрытые и открытые, Nmap имеет более подробную шкалу деления. Она подразделяет порты на шесть состояний: открыт, закрыт, фильтруется, не фильтурется, открыт|фильтруется или закрыт|фильтруется.

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

Nmap — эталон среди сканеров портов и один из важнейших инструментов пентестера.

к содержанию ↑

Давай начнем

Требование

  • IP атакующего: 192.168.1.109 [Kali Linux]
  • IP-адрес цели: 192.168.1.119 [Ubuntu]

Состояния портов не являются их существенными свойствами; он показывает, как их видит Nmap. В Nmap порт разделен на шесть состояний:

  1. Открыто: это состояние означает, что приложение на целевой машине прослушивает соединения / пакеты на этом порту.
  2. Закрыт: это состояние означает, что на портах нет приложений, которые их прослушивают, хотя они могут открыться в любое время.
  3. Filtered: это состояние означает, что брандмауэр, фильтр или другое сетевое препятствие блокирует порт, поэтому Nmap не может определить, открыт он или закрыт.
  4. Без фильтрации: порты классифицируются как нефильтрованные, если они реагируют на запросы Nmap, но Nmap не может определить, открыты они или закрыты.
  5. Open / Filtered: указывает, что порт был отфильтрован или открыт, но Nmap не смог установить состояние.
  6. Closed / Filtered : указывает, что порт был отфильтрован или закрыт, но Nmap не смог установить состояние.
к содержанию ↑

Открытый порт

В этом случае служба или приложение, работающее на порту, активно принимает соединения TCP, UDP. Мы отправляем TCP-пакеты на 80-й порт целевой машины. Находим, что порт открыт.

nmap -p80 192.168.1.119
, Nmap для пентестера: статус порта

Мы смотрим на wirehark и обнаруживаем, что происходит трехстороннее рукопожатие, как показано ниже.

  • Nmap отправляет SYN-пакет на порт 80
  • Nmap получил пакет SYN, ACK как ответ от порта 80, который означает, что порт 80 открыт.
  • Nmap отправляет пакет RST
, Nmap для пентестера: статус порта
к содержанию ↑

Закрытый порт

В этом случае служба или приложение на порту доступны, но на нем не запущено ни одно приложение. Когда порт находится в закрытом состоянии, он отправляет RST с пакетом ACK, когда получает пакет TCP SYN.

nmap -p80 192.168.1.119

Теперь мы использовали сканирование SYN для отправки пакетов TCP SYN на порт 80 целевой машины и обнаружили, что цель закрыта . Это потому, что как только он получает пакет TCP SYN, он отправляет обратно пакет TCP RST, ACK.

, Nmap для пентестера: статус порта

Мы проверим wirehark, чтобы найти дополнительную информацию, как и ожидалось, как только целевая машина получила пакет TCP SYN, она ответила TCP RST, и NMAP интерпретировал его как закрытый порт.

  • Nmap отправляет SYN-пакет на порт 80
  • Nmap получил пакет RST, ACK как ответ от порта 80, что означает, что порт 80 закрыт.
к содержанию ↑

Отфильтрованный порт

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

Давайте воспользуемся iptables, чтобы отбросить TCP-пакеты на целевой машине.

iptables -I INPUT -p tcp -j DROP
, Nmap для пентестера: статус порта

Теперь, когда мы сканируем целевую машину, пакеты будут отброшены, как только она получит TCP-пакеты.

nmap -p80 192.168.1.119

Из приведенного ниже изображения вы можете увидеть, что теперь оно показывает состояние «отфильтровано» для порта 80.

, Nmap для пентестера: статус порта

Давайте посмотрим на wirehark и обнаружим, что когда Nmap отправляет TCP SYN-пакет, мы не получаем ответа от целевой машины. Это означает, что фильтр пакетов или брандмауэр отбрасывает наши пакеты.

, Nmap для пентестера: статус порта
к содержанию ↑

Нефильтрованный порт

Нефильтрованное состояние означает, что порт доступен, но Nmap не может определить, открыт он или закрыт. Только сканирование ACK, которое используется для сопоставления наборов правил брандмауэра, классифицирует порты в этом состоянии. Сканирование нефильтрованных портов с помощью других типов сканирования, таких как сканирование окон, сканирование SYN или сканирование FIN, может помочь определить, открыт ли порт.

Мы используем iptables для отбрасывания любого TCP-пакета, поступающего на порт 80 на целевой машине.

iptables -I INPUT -p tcp – dport = 80 -j DROP
, Nmap для пентестера: статус порта

Теперь мы используем сканирование nmap ACK для сканирования целевой машины, чтобы проверить, есть ли брандмауэр или нет.

nmap –sA -p22,80 192.168.1.119

Как видно на приведенном ниже изображении, порт без брандмауэра отображается как неотфильтрованный, поскольку Nmap не может определить, открыт он или закрыт.

, Nmap для пентестера: статус порта

Мы можем видеть в wirehark, что для порта 22 мы получаем пакет RST, тогда как в случае порта 80 пакет отбрасывается целевой машиной.

, Nmap для пентестера: статус порта
к содержанию ↑

Открыть | Отфильтрованный порт 

В этом случае Nmap не может определить, открыт порт или отфильтрован. Это происходит для типов сканирования, при которых открытые порты не отвечают. Отсутствие ответа также может означать, что фильтр пакетов отбросил зонд или любой вызванный им ответ. Таким образом, Nmap не знает наверняка, открыт порт или фильтруется. Сканирование UDP, IP-протокол, FIN, NULL и Xmas позволяет классифицировать порты таким образом.

Давайте воспользуемся nmap Xmas scan для сканирования целевой машины.

nmap -sX -p80 192.168.1.119

Как мы видим, сканирование nmap показывает нам порт, который должен быть открыт | фильтрованный.

, Nmap для пентестера: статус порта

Мы проверим WireShark, чтобы проанализировать пакеты, отправленные Nmap, и увидим, что не получаем ответа, даже если порт открыт.

, Nmap для пентестера: статус порта
к содержанию ↑

Закрыто | Отфильтрованный порт

Это состояние используется, когда Nmap не может определить, закрыт порт или отфильтрован. Он используется только для сканирования в режиме ожидания IP-идентификатора .

Мы используем iptables на нашей целевой машине, чтобы отбрасывать входящие TCP-пакеты на целевой машине.

iptables -I INPUT -p tcp -j DROP
, Nmap для пентестера: статус порта

Мы проведем сканирование IP ID на целевой машине, используя 192.168.1.107 в качестве нашего зомби.

nmap -p80 -sI 192.168.1.107 192.168.1.119

Как мы видим при сканировании в режиме ожидания зомби, он показывает состояние закрыто | фильтруется для порта 80.

, Nmap для пентестера: статус порта

Сканирование в режиме ожидания состоит из трех шагов, которые повторяются для каждого порта:

  1. Проверьте IP-идентификатор зомби и запишите его.
  2. Создайте SYN-пакет от зомби и отправьте его на нужный порт на цели. В зависимости от состояния порта реакция цели может привести или не привести к увеличению IP-идентификатора зомби.
  3. Еще раз проверьте IP ID зомби. Затем состояние целевого порта определяется путем сравнения этого нового IP-идентификатора с идентификатором, записанным на шаге 1.

Мы проверяем Wireshark и обнаруживаем, что нашли весь процесс.

, Nmap для пентестера: статус порта

Оставьте свой ответ