Nmap : сканирование портов — как это работает?

Сканирование портов через Nmap .

сканирование портов Nmap предназначена для сканирования сетей и вычленения компьютера-хоста, что делает инструмент незаменимым на некоторых этапах тестирования на проникновение. В своих возможностях nmap не ограничена лишь сбором информации и составлением реестра компьютеров в сетке. Она используется как «определялка» уязвимостей и сканер безопасности. Последнее и очень важное – идёт на всех операционных системах (в Линуксе, на мой взгляд, гораздо быстрее).

СРАЗУ. Если вам срочно потребовалось проверить какой-то сайт, а вы не собираетесь тратить время на поиски и установку программы, или просто хотите ознакомиться с предварительными результатами работы сканера, вы можете воспользоваться он-лайн сервисами по сканированию портов. Результаты будут схожи с теми, что выводит на экран Nmap. Вот один из них:

https://hackertarget.com/nmap-online-port-scanner/

Укажите в строке ввода адрес сайта на манер сайт.ru и увидите результаты по 6 основным портам требуемого сайта. В статье же я описываю работу Nmap с машинами в локальной сети: здесь нет надобности пробивать роутер, брутить к нему пароль. Здесь быстрые скорости. Вы, создав на компьютере множество виртуальных машин, вольны практиковаться c командами вдоволь.

nmap сканирование портов

Что такое nmap?

Сокращение от словосочетания Network Mapping (вольный перевод — составление сетевой карты). Её основные функции — найти рабочий компьютер в сети, определить версию ОС и открытые порты, запущенные на удалённом хосте службы; и самая главная фишка Nmap — скриптовое взаимодействие с системой. А значит…

Что умеет nmap ? Она поможет:

И это всё усилиями одной лишь Nmap.



Как использовать сканирование портов через nmap эффективно?

Nmap умеет использовать сразу несколько отличных друг от друга техник, с помощью которых сканирование портов пройдёт успешно. Самое трудное, что нас поджидает, это обход фаервола и (сейчас внимание!) внедрение программы в систему противника. Учтём и тот факт, что скрипты Nmap постоянно пополняются, и просто невозможно охватить все её возможности. Но это в другой раз, а сейчас только про порты. Да, и не забываем — по умолчанию программа сканирует только первую тысячу портов.

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

Простые команды Nmap.

Самый прямой способ узнать в сети компьютер или нет, это тот самый пинг. Он используется во всех самых простых и самых сложных (по умолчанию) утилитах сканирования. Пинг — это не что иное как ICMP запрос с ожиданием эха (одна из целей его создания, один из главных принципов — машина должна на него ответить). Ping адрес-сайта — самая простая и знакомая всем команда. Её суть — начало простого диалога с компьютером («Ты здесь? — Да/Нет»). Своим названием она обязана сонару, исследующему подводные объекты. В компьютерах сетях всё тоже самое. Большинство наиболее применимых команд Nmap можно найти в статье Самые употребляемые команды Nmap.

Кстати, для начала стоит убедиться, установлена ли сама Nmap. Для этого в терминале Линукс наберите:

nmap --version

Терминал вернёт номер текущей версии продукта. В Кали Nmap предустановлена.

Если нужно просканировать одиночную сеть, используйте команду:

nmap ваша_цель
# nmap ваша_цель.ru
# nmap 192.168.1.1

где ваша_цель — ресурс, который вы сканируете. Эта команда проверит состояние самых используемых портов на этом хосте, запустив сканер TCP портов.

Несмотря на всю кажущуюся простоту, Nmap проводит огромную работу. И это можно немного изменить. Так, утилита начинает с того, что конвертирует имя хоста, приводя его в  IPv4 вид, используя DNS. Вы можете использовать иной DNS сервер, например DNS Google:

nmap --dns-servers 8.8.8.8 site.com

Для чего я это всё пишу… Это и следующее движение можно вообще пропустить. Делается это установкой флага -n . Ведь следующим шагом Nmap будет обратная конвертация IPv4 адреса в имя хоста на латинице. Повторяю, это «дело» можно пропустить:

nmap -n site.com

В итоге целевой компьютер пингуется на предмет «жив» этот хост (работает) или спит, то есть выключен. Но и этот шаг можно пропустить (зачем — рассмотрим подробнее потом), используя опцию -PN:

nmap -PN site.com

И вот запускается само сканирование TCP портов и, чтобы указать, какие порты вас интересуют, можно придать команде вид типа:

nmap -p1-30 site.com #сканирует с 1 по 30 порты
nmap -p- site.com #сканирует все порты
nmap -p[1-65535] site.com #сканирует также все порты

Если нужно отсканировать фрагмент сети или всю, как во второй команде, подсеть, используйте команды:

nmap site.com/cdir
nmap 192.168.1.1/24

Если вы нацелились на ещё куда более обширный объём работ, можете опускать целые ранги в указанных диапазонах с помощью символа * (этот символ прекрасно «прокатывает» в поисковых сиситемах, если вы не уверены в вводимых символах, которые ищете):

nmap 192.168.1.*

и даже

nmap 192.168.*.*

Вариаций куча. Множественные, но выборочные цели сканировать нетрудно; нужно просто разделить цели в набираемой команде с помощью пробела:

nmap цель1 цель2 цель3
# nmap 192.168.1.1 192.168.1.8

Если нужно «проверить» список IP адресов, но не всю сетку, используйте команду типа:

nmap site.com-100

Или

# nmap 192.168.1.1-100

Далее. Допустим, у вас целый список машин, которые вы собираетесь атаковать. Сканер можно заставить просканировать весь список:

# nmap -iL список_целей.txt

…если вы, конечно, абсолютно уверены, что составленный список корректен.

Флаги в Nmap.

Если вы хотите увидеть весь список компьютеров-хостов, которые сканируете, используйте в команде другой параметр:

nmap -sL target/cdir

# nmap -sL 192.168.1.1/24

А вот иногда хакеру нужно просканировать сеть ЗА ИСКЛЮЧЕНИЕМ некоторых адресов (для него это может быть опасно – об этом потом). Тогда в команде нужно использовать параметр исключения:

# nmap 192.168.1.1/24 -exclude 192.168.1.1

Соответственно, если есть файл, который содержит в себе целый список исключений (IP адресов, которые вы хотите исключить из процесса), команда примет вид:

# nmap 192.168.1.1/24 -exclude file target.txt

Подберёмся чуть ближе. Сканируем порты. Если нужно «понюхать» конкретные порты на известных машинах (например, на предмет работы протоколов HTTP, FTP, Telnet – это всё реже), используйте в команде параметр релевантности:

# nmap -p80,21,23 192.168.1.1

Как вы поняли, в сканируемой сети будут исследоваться порты 80, 21 и 23.

 

Сканирование портов на службы UDP

Проблема сервисов (в смысле посканировать) UDP состоит в том, что с ними трудно установить связь. Порой для того, чтобы установить соединение, необходимо использовать специальный протокол, чтобы удалённая машина хоть что-то нам ответила. Плюс ко всему время: сканирование UDP сервисов отнимает времени гораздо больше, нежели на обычные TCP порты. Однако многие VPN открывают для «прослушки» только именно порты UDP. Похожим образом действуют NTP и DNS. И здесь можно применить такую стратегию: сначала работаем порты TCP, вторым заходом — UDP. Эффект — чисто психологический: собираем предварительный урожай из TCP портов, а потом фоном тратим МНОГО времени на UDP сервисы.

Команда сканирования UDP имеет вид (кстати, процесс требует root прав):

nmap -sU 192.168.0.101

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

nmap -sU 192.168.0.101 -p123

Какие команды сканирования портов доступны?

Как вы поняли, ключевым параметром скриптового движка Nmap при сканировании портов (NSE) является добавление именно флага -p. Вот какие вариации с этим флагом возможны:

# nmap -p80,443 цель.com

Сканирует два порта — 80 и 443

nmap -p1-100 цель.com

Сканирует порты с первого по сотый

nmap -p- цель.com

Сканирует все порты

nmap -pT:25,U:53 цель.com

Сканирует порт 25 TCP и 53 UDP

nmap -p smtp цель.com

Сканирует порты на предмет запущенного сервиса (в нашем случае smtp)

nmap -p[1-65535] цель.com

Сканирование портов из числа тех, что зарегистрированны только в службах Nmap

Немного поглубже или виды сканирования

Программа Nmap несёт в себе сразу несколько техник сканирования. В том числе сканирование по методу соединения по протоколу TCP. Рассмотрим метод поближе.

К СВЕДЕНИЮ

Обычно, когда запускается сканер Nmap, и начинается скнирование портов, сначала идёт запрос пингом, а затем поэтапно сканируются и порты. В этом и смысл защиты: не ответив на пинг, хост сканироваться не будет (что искать по адресу, который не в сети?). Вот, в Nmap для пропуска первоначального пинга добавим флаг -Pn и вектор сканирования будет смещён. Предупреждаю, это отнимет время: сканер будет принудительно «шерстить» действительно отключённые машины. Однако порой для сканирования машин, которые Nmap обычным пингованием пропустила бы, такой вариант может оказаться полезным. Особенно это касается сканирования большого количества адресов в сетях класса B — можно выцепить некоторые компьютеры, которые маскируются под DEAD. Сюда же можно отнести и использование флага -sL, с помощью которого можно обнаружить спрятавшиеся поддомены.

И, наконец, нельзя не упомянуть о сканировании пингованием TCP SYN. Он, в отличие от простого пинга (запроса ICMP) щупает хосты на предмет ответа порта на SYN запрос. Например, если мы сканируем целый блок IP адресов, на которых запущены SSL серверы, добавления флага -PS 443 пощупает указанный порт на вероятность ответа.

Сканирование портов: а что в Nmap есть ещё?

SYN Scan (-sS) – базовое сканирование портов. Иногда оно называется полуоткрытым, так как позволяет получать информацию от удалённого хоста без подтверждения установленного соединения по протоколу. Nmap отсылает так называемые пакеты SYN – символы синхронизации в компьютер назначения. Но фишка в том, что сессии никакой создано не будет, а потому логи соединения на принимающем пакеты компьютере созданы не будут – сессии-то нет – что придаёт этому методу определённые преимущества.

Как это выглядит в команде?

Да никак. Если команде в терминале не придать специфический вид, этот тип сканирования TCP SYN проводится по умолчанию. Но права root (или админа) понадобятся всё равно:

# nmap -sS 192.168.1.1

TCP connect scan (-sT) – техника сканирования по умолчанию БЕЗ ROOT (АДМИНИСТРАТОРА) ПРАВ. Так что будьте внимательны.  В отличие от предыдущего типа (TCP SYN), соединение по протоколу TCP идёт по всем правилам, ваш компьютер будет просить соединения по портам TCP (не UDP) официально:

# nmap -sT 192.168.1.1

UDP Scan (-sU)

По названию вы уже поняли, что работа будет проводиться с портами UDP. Об этом разговор уже шёл. Сразу к делу: поиск открытых портов будет эффективнее, если использовать опции -sS вместе с –sU. В этом режиме Nmap отсылает UDP пакеты на компьютер-жертву и ждёт ответа. Если возвращается сообщение об ошибке,  что ICMP недоступен, значит порт закрыт. Напротив, если сообщение подходящего характера, порт открыт:

# nmap -sU 192.168.1.1

FIN Scan (-sF) и иже с ним

О двух типах сканирования портов TCP вы уже знаете: «полноразмерный» пинг (-sT) и «половинчатый» SYN (-sS). Они запомнятся сами по себе, так как будут нас сопровождать почти в каждой из операций сканирования. Однако есть смысл попробовать и дополнительные варианты сканирования. О них я уже упоминал в одной из предыдущих статей: FIN, Xmas Tree и Null сканирования. Против серверов на базе ОС от Microsoft они не прокатят.

Смысл применения каждого из трёх вариантов прост: сканируя «мёртвый» порт, Nmap видит RESET пакет — своеобразную попытку перезагрузить связь со стороны закрытого порта, который этот пакет нам и присылает. А что делает открытый порт? Он роняет или сбрасывает это пинг. Потому, что большинство систем обнаружения вторжений (IDS) внимательно следят за входящими SYN пакетами.

Если на компьютере пользователя установлен фаерволл, простые TCP пакеты не «прокатят». Сканирование IDS и IPS ещё куда ни шло, но вот пакеты синхронизации бранмауэр заблокирует обязательно. Сканирование портов с флагом FIN не требует полноценного обмена данными между вашими компьютерами.

В этом случае компьютер жертвы не сможет создать лог соединения с компьютером хакера. Это тоже преимущество FIN сканирования. На тот же манер можно использовать сканирование с атрибутами xmas (-sX) и Null (-sN). Смысл тот же, но есть небольшая разница. FIN сканирование посылает пакеты с пометкой FIN, Null сканирование не отсылает ни одного бита информационных пакетов, а вот Xmas отсылает пакеты с флагами FIN, PSH и URG.



Ping Scan (-sP) – этот вид сканирования предназначен только для того, чтобы определить, работает ли хост. Открытые порты он не обнаруживает.

# nmap -sP 192.168.1.1

Version Detection (-sV)

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

# nmap -sV 192.168.1.1

Idle Scan (-sI)

Самый, видимо, популярный тип сканирования, так позволяет проводить сканирование портов анонимно. Nmap не отправляет пакеты с вашего IP – программа использует другой компьютер из той же сети.

nmap -sI компьютер-зомби компьютер-жертва

# nmap -sI 192.168.1.6 192.168.1.1

Эти команды используются для того, чтобы обнаружить открытые порты на компьютере с IP адресом 192.168.1.1 при одновременном использовании компьютера-зомби с адресом 192.168.1.6. Идеальная техника сканирования в анонимном режиме.

Чем закончится сканирование портов ?

Nmap разделяет порты по следующим категориям:

  • Open (открыт) — означает, что некое приложение слушает соединения именно через этот порт
  • Closed (закрыт) — означает, что пробы получены, однако ни одна из программ не собирается соединятся с сетью через этот порт
  • Filtered (фильтруется) — пробы на пинг даже не прошли, следовательно, состояние порта (открыт или закрыт) установить на этом этапе не удалось; возможно, система безопасности фильтрует порт от прослушки
  • Unfitered (не фильтруется) — означает, что пробы на пинг положительные, но на данный момент установить состояние порта невозможно
  • Open/Filtered (открыт, но отфильтрован) — сканер не сможет установить состояние порта
  • Closed/Filtered (закрыт и отфильтрован) — тоже самое, но порту предшествовало открытое состояние.

Ладно, техник сканирования ещё немало. Но те, какими можно воспользоваться с максимальным результатом, я перечислил.

Успехов.

Запись опубликована в рубрике Linux, Полезные программы. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

девятнадцать + 3 =