Как определить уязвимость сетевых портов nmap. Как запустить простое сканирование Nmap


Сравнительное быстрое (благодаря ключам -nF ) сканирование локальной сети с маской 255.255.255.0 :

nmap -nF 192.168.0.0/24

Сканирование сети

Основные опции сканирования начинаются с -s.
По-умолчанию nmap практикует скрытое сканирование (-sS) сети, не создавая соединений до конца: nmap <маска подсети> .

Например:

nmap 192.168.0.1-254

Пинг-сканирование ( -sP ), в этом режиме порты не сканируются, что, конечно, заметно увеличивает скорость работы:


При этом сканировании отправляеться ICMP эхо-запрос, такой же как это делает утилита ping.
Однако пинг сканирование может привети и к ложноотрицательному срабатыванию, когда активнй, хост настроен не отвечать на ICMP эхо-запросы. Здесь логично использовать ключ -Pn , считаz все хосты активными.

Два следующих ключа, также призванны сократить время сканирования: -n не производить разрешение DNS имен. Преобразование DNS может быть медленным;
-F быстрое сканирование, ограничивает число сканируемых портов с 1000 до 100;
-sS TCP SYN сканирование или т.н. полуоткрытое сканирование ибо оно не устанавливает полных соединений , посылая только запросы на открытие и не производя больше никаких операций. В отличии от -sT . используется по-умолчанию;
-sA TCP ACK сканирование , позволяет определить, фильтруются ли порты;
-sU сканирование UDP портов.

маска подсети

Следующие три формата записи идентичны:

192.168.1.0/24
192.168.1.0-255
192.168.1.*
Если адресов немного, то их можно перечислить: 192.168.1.1,2,3,4

сканирование хоста

-sV определение сервисов;
-p порт1, порт2, ... - сканирование заданного порта или их писка
-p- сканирование всех портов;
-O определение операционной системы .

Если не удаётся точно определить ОС можно просмотреть список вероятных версий операционных использую ключ --osscan-guess :

Aggressive OS guesses: Linux 3.5 (99%), Cisco SRP 527 WAP (Linux 2.6) (99%), Linux 2.6.9 - 2.6.30 (97%), Tomato 1.28 (Linux 2.6.22) (97%), DD-WRT v24-sp2 (Linux 2.6.24) (97%), Linux 2.6.18 - 2.6.32 (96%), Linux 2.6.9 - 2.6.19 (96%), Belkin N600 DB WAP (96%), Ubiquiti AirMax NanoStation WAP (Linux 2.6) (95%), Linux 2.6.15 (likely TP-Link WAP) (95%)
-A позволяет использовать расширенные возможности программы по детектированию ОС (-O), определению версии (-sV) и др.

открыт (open) Приложение принимает запросы на TCP соединение или UDP пакеты на этот порт.

закрыт (closed) Закрытый порт доступен (он принимает и отвечает на запросы Nmap), но не используется каким-либо приложение.

фильтруется (filtered) Nmap не может определить, открыт ли порт, т.к. фильтрация пакетов не позволяет достичь запросам Nmap этого порта.

открыт|фильтруется (open|filtered) Nmap характеризует порт таким состоянием, когда не может определить открыт порт или фильтруется.

закрыт|фильтруется (closed|filtered) Это состояние используется, когда Nmap не может определить закрыт порт или фильтруется. Используется только при сканировании IP ID idle типа.

Сохранение результатов сканирования

основные опции вывода начинается с -o
Сохранение результатов сканирования в XML и копирование стандартного вывода в файл.

OX myscan.xml -oN myscan.nmap

OA <базовое_имя_файла> использовать все (gmap, xml, normal) форматы вывода.

Формат вывода gmap является своеобразной альтернативой выводу в XML и проигрывает последнему по мощности.

Webxml загружает таблицу стилей с Nmap.Org чтобы создать XML файл отображаемый как HTML
-v увеличивает уровень вербальности (количество выводимой информации), например показывает приблизительное время завершения работы. Ещё увеличить число подробностей можно задав этот параметр дважды.

Алсо

В Mtasploit Framework есть db_nmap , который взаимодействует со встроенной в MSF БД, записывая обнаруженные хосты и сервисы соответственно в таблицы hosts и services .
Кроме того можно используя команду db_import report_file загрузить отчёт nmap"а в формате XML в БД MSF .

Поддельные адреса сканера
-D , - маскирует реальный адрес сканера, среди нескольких поддельных. В примере, адрес сканера - 192.168.56.1 , адрес-приманка - 192.168.56.100 . Вывод снифера показывает, что сканирование происходит с этих двух адресов, однако сканер находится только на первом.

nmap -p 23 192.168.56.101 -D 192.168.56.100
--randomize-hosts сканирование заданного диапазона хостов в произвольном порядке.
Порядок сканирования портов по-умолчанию в nmap случайный , за исключением некоторых популярных портов, которые сканер проверяет в первую очередь. Ключ -r включает упорядоченное сканирование.

Подделка mac адреса
--spoof-mac <0 (случайный), mac (001122334455) или производитель (Apple, Cisco)>

***
Сканирование через Tor
Применяем proxychains для перенаправления трафика через сеть Tor.
Проследим, чтобы в разделе ProxyList конфигурационного файла /etc/proxychains.conf proxychains был указан порт tor"а:

socks4 127.0.0.1 9050
Запустим tor и приступим к сканированию.
SYN сканирвание в таких условиях не работает, поэтому для каждого порта подключение выполняться полностью (-sT ). Цель не пингуем (-PN ) и не производим DNS разрешения (-n ) чтобы не создавать трафика идущего мимо Tor. Cканирование довольно медленное, поэтому сканируем только самые популярныйе порты (-F )
proxychains nmap -PN -n -sT -F 45.33.32.156
ProxyChains-3.1 (http://proxychains.sf.net)

Starting Nmap 6.40 (http://nmap.org) at 2041-12-01 12:57
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:1723-<--denied
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:53-<--denied


...
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:22-<><>-OK
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:587-<--denied
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:113-<--denied
|S-chain|-<>-127.0.0.1:9050-<><>-45.33.32.156:80-<><>-OK

...
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.60s latency).
Not shown: 98 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http

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

Nmap - это очень популярный сканер сети с открытым исходным кодом, который может использоваться как в Windows, так и в Linux. Программа Nmap или Network Mapper была разработана Гордоном Луоном и на данный момент используется специалистами по безопасности и системными администраторами по всему миру.

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

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

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

Но об этом вы, наверное, уже знаете. Более интересно то как Nmap узнает какие сервисы запущены на машине. Суть работы всех сетевых программ основана на портах. Чтобы получить сообщение из сети, программа должна открыть порт на вашем компьютере и ждать входящих соединений. А для отправки сообщения по сети нужно подключиться к уже другой программой (адресатом) порту. Затем программе необходимо будет открыть порт, на котором она будет ждать ответа.

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

Синтаксис Nmap

Команда запуска Nmap очень проста для этого достаточно передать ей в параметрах целевой IP адрес или сеть, а также указать опции при необходимости:

$ nmap опции адрес

Теперь давайте рассмотрим основные опции, которые понадобятся нам в этой статье.

  • -sL - просто создать список работающих хостов, но не сканировать порты nmap;
  • -sP - только проверять доступен ли хост с помощью ping;
  • -PN - считать все хосты доступными, даже если они не отвечают на ping;
  • -sS/sT/sA/sW/sM - TCP сканирование;
  • -sU - UDP сканирование nmap;
  • -sN/sF/sX - TCP NULL и FIN сканирование;
  • -sC - запускать скрипт по умолчанию;
  • -sI - ленивое Indle сканирование;
  • -p - указать диапазон портов для проверки;
  • -sV - детальное исследование портов для определения версий служб;
  • -O - определять операционную систему;
  • -T - скорость сканирования, чем больше, тем быстрее;
  • -D - маскировать сканирование с помощью фиктивных IP;
  • -S - изменить свой IP адрес на указанный;
  • -e - использовать определенный интерфейс;
  • --spoof-mac - установить свой MAC адрес;
  • -A - определение операционной системы с помощью скриптов.

Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.

Как пользоваться Nmap для сканирования портов в Linux

Дальше рассмотрим примеры nmap. Сначала давайте рассмотрим как найти все подключенные к сети устройства, для этого достаточно использовать опцию -sL и указать маску нашей сети. в моем случае это 192.168.1.1/24. Маску вашей локальной сети вы можете найти, выполнив команду:

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

nmap -sL 192.168.1.1/24

Иногда это сканирование может не дать никаких результатов, потому что некоторые операционные системы имеют защиту от сканирования портов. Но это можно обойти, просто использовав для сканирования ping всех ip адресов сети, для этого есть опция -sn:

nmap -sn 192.168.1.1/24

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

sudo nmap 192.168.1.1

Теперь мы можем видеть, что у нас открыто несколько портов, все они используются каким-либо сервисом на целевой машине. Каждый из них может быть потенциально уязвимым, поэтому иметь много открытых портов на машине небезопасно. Но это еще далеко не все, что вы можете сделать, дальше вы узнаете как пользоваться nmap.

Чтобы узнать более подробную информацию о машине и запущенных на ней сервисах вы можете использовать опцию -sV. Утилита подключится к каждому порту и определит всю доступную информацию:

sudo nmap -sV 192.168.1.1

На нашей машине запущен ftp, а поэтому мы можем попытаться рассмотреть эту службу подробнее с помощью стандартных скриптов nmap. Скрипты позволяют проверить порт более детально, найти возможные уязвимости. Для этого используйте опцию -sC и -p чтобы задать порт:

sudo nmap -sC 192.168.56.102 -p 21

Мы выполняли скрипт по умолчанию, но есть еще и другие скрипты, например, найти все скрипты для ftp вы можете командой:

sudo find /usr/share/nmap/scripts/ -name "*.nse" | grep ftp

Затем попытаемся использовать один из них, для этого достаточно указать его с помощью опции --script. Но сначала вы можете посмотреть информацию о скрипте:

sudo nmap --script-help ftp-brute.nse

Этот скрипт будет пытаться определить логин и пароль от FTP на удаленном узле. Затем выполните скрипт:

sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21

В результате скрипт подобрал логин и пароль, admin/admin. Вот поэтому не нужно использовать параметры входа по умолчанию.

Также можно запустить утилиту с опцией -A, она активирует более агрессивный режим работы утилиты, с помощью которого вы получите большую часть информации одной командой:

sudo nmap -A 192.168.1.1

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

Выводы

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

Об авторе

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

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

  1. Backtrack 5 or Kali Linux
  2. Терпение
Это будет первый учебник по серии, который даст основное представление что такое пентест. Есть много инструментов на Kali linux дистрибутиве, которые не будут охвачены в этих серии, но если у читателей есть какие-либо вопросы о других инструментов, напишите сообщение. Это первая часть нацелена на сбор информации и имеет название как (nmap сканирование портов). Она будет сосредоточена на поиске живых хостов в сети, а также на просмотра их версий программного обеспечения и на их работающих портах.

Давайте начнем

Для этого упражнения мы будем использовать следующие инструменты: Nmap

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

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

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

Мы в сети как 192.168.1.1

Nmap -sV 192.168.1.1/24

Эта команда будет проверять все 254 хостов в сети и перечислять открытые порты вместе с версией программного обеспечения, работающего на этом хосте. Я использую только 2 машины в своей сети и я сделал это, чтобы сократить учебник. Вот результаты:

Nmap scan report for 192.168.1.2 Host is up (0.0080s latency). Not shown: 995 filtered ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 445/tcp open netbios-ssn 912/tcp open vmware-auth VMware Authentication Daemon 1.0 (Uses VNC, SOAP) 5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) MAC Address: 00:25:22:12:C7:7F (ASRock Incorporation) Service Info: OS: Windows Nmap scan report for 192.168.1.14 Host is up (0.022s latency). Not shown: 996 filtered ports PORT STATE SERVICE VERSION 20/tcp closed ftp-data 21/tcp open ftp vsftpd 2.0.8 or earlier 22/tcp open ssh OpenSSH 4.7 or earlier 80/tcp open http Apache httpd 2.2.4 ((Fedora)) MAC Address: 00:21:2F:36:D2:E2 (Phoebe Micro)

Если бы мы имели большую сеть, коммутатор -p может использоваться для четкого указания какие порты искать. Так:

Nmap -sV 192.168.1.1/24 -p 21,80,445

Одна вещь, которую я рекомендую: чтобы всегда, я имею в виду всегда сканировать сеть в режиме UDP и искать открытые порты SNMP. Старые версии SNMP уязвимы для атак, поскольку они используют строки государственного и частного для входа в систему. Если вы не знаете, какие порты SNMP или SNMP являются, Google является вашим другом.

Для выполнения такого рода сбора информации вы должны использовать команду -Su . Дабы сказать Nmap сканировать UDP-порты. Наша команда должна будет выглядеть так:

Nmap -sU 192.168.1.1/24 -p161, 162

Мы указываем порты 161 и 162 , так как они являются портами где SNMP работает.

Когда работает UDP сканирование запомните, что Протокол UDP не проверяет соединение так что это хорошая идея, чтобы проверить если порт на самом деле открыт для соединения с Netcat.

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

Nmap --script-help script name

Это команда покажет вам скрипт и то, что он делает.

Первые скрипты которые мы будем использовать это SMB скрипты, так как у нас SMB -порт 445 открыт.

Nmap -sS --script smb-os-discovery 192.168.1.14 nmap -sS --script smb-check-vulns 192.168.1.14 nmap -sS --script smb-enum-users 192.168.1.14 nmap -sS --script smb-enum-shares 192.168.1.14

Вы можете видеть, что я добавил -sS команду, это приводит Nmap сканировать в скрытом режиме . Так как я работаю на Linux машине у меня будут другие отчеты. Я сделал это чтобы вы поняли как все эти команды работают. Давайте перейдем к Майкрософт машине, так что вы сможете увидеть некоторые результаты.

Host script results: | smb-enum-shares: | ADMIN$ | Anonymous access: | Current user ("guest") access: | C$ | Anonymous access: | Current user ("guest") access: | E$ | Anonymous access: | Current user ("guest") access: | IPC$ | Anonymous access: READ | Current user ("guest") access: READ | Current user ("guest") access: READ | movies | Anonymous access: | Current user ("guest") access: READ | print$ | Anonymous access: |_ Current user ("guest") access: READ Nmap done: 1 IP address (1 host up) scanned in 8.37 seconds nmap -sS --script smb-check-vulns 192.168.1.2 Host script results: | smb-check-vulns: | MS08-067: NOT VULNERABLE | Conficker: Likely CLEAN | regsvc DoS: CHECK DISABLED (add "--script-args=unsafe=1" to run) | SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add "--script-args=unsafe=1" to run) | MS06-025: CHECK DISABLED (remove "safe=1" argument to run) |_ MS07-029: CHECK DISABLED (remove "safe=1" argument to run) nmap -sS --script smb-os-discovery Host script results: | smb-os-discovery: | OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1) | Name: MSHOME\gh0s7 |_ System time: 2012-06-25 19:41:16 UTC-7

Это еще не все! у Nmap есть еще пару прекрасных команд.
nmap -sS --script ftp-anon 192.168.1.2 192.168.1.14
Эта команда будет проверять если включен анонимный FTP логин на целевой машине.
nmap -A 192.168.1.2
Эта команда позволит запускать все скрипты и много других вариантов, вот описание из меню справки: Enable OS detection, version detection, script scanning, and traceroute.

Вы также можете добавить различные типы сканирования на начинающийся линии вот так:

Nmap -sS -А 192.168.1.2

Есть также способы, чтобы добавить другие аргументы в скрипты, и даже создавать свои собственные.

Теперь мы собрали список машин в сети и информацию об открытых портах! Давайте перейдем к следующему действию. Мы хотим убедиться, что порты, на самом деле открыты. Причина этого заключается в том, что иногда машины дают ложные результаты, особенно у UDP портов.

Следующий инструмент который мы будем использовать один из моих любимых это Netcat. Если мы откроем терминал и введем nc . Мы увидим меню справки Netcat. Далее мы будет работать через порты и попытаться соединиться с основными командами NetCat:

NC -v 192.168.1.2 445.

Это приведет к запуску программе и подключиться к порту 445.

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

Аргументом опции --scanflags может быть числовое значение, например, 9 (PSH и FIN флаги), но использование символьных имен намного проще. Используйте любые комбинации URG , ACK , PSH , RST , SYN и FIN . Например, опцией --scanflags URGACKPSHRSTSYNFIN будут установлены все флаги, хотя это и не очень полезно для сканирования. Порядок задания флагов не имеет значения.

В добавлении к заданию желаемых флагов, вы также можете задать тип TCP сканирования (например, -sA или -sF). Это укажет Nmap на то, как необходимо интерпретировать ответы. Например, при SYN сканировании отсутствие ответа указывает на фильтруемый порт, тогда как при FIN сканировании - на открытый|фильтруемый. Nmap будет осуществлять заданный тип сканирования, но используя указанные вами TCP флаги вместо стандартных. Если вы не указываете тип сканирования, то по умолчанию будет использоваться SYN.

-sI <зомби_хост> [: <порт> ] ("ленивое" idle сканирование)

Помимо его незаметности (в силу своей природы), этот тип сканирования также позволяет определять основанные на IP доверительные отношения между машинами. Список открытых портов показывает открытые порты с точки зрения зомби машины. Поэтому вы можете попробовать просканировать цель используя различные зомби машины, которым, вы считаете, возможно будут доверять (посредством правил роутера/пакетного фильтра).

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

Порты также могут быть заданы именами, которым они соответствуют в файле nmap-services . Вы даже можете использовать шаблоны * и? в именах. Например, чтобы просканировать ftp и все порты начинающиеся с http используйте -p ftp,http* . В таких случаях лучше брать аргументы -p в кавычки.

Диапазоны портов заключаются в квадратные скобки; будут просканированы порты из этого диапазона, встречающиеся в nmap-services . Например, с помощью следующей опции будут просканированы все порты из nmap-services равные или меньше 1024: -p [-1024] . В таких случаях лучше брать аргументы -p в кавычки.

-sO (Сканирование IP протокола)

Сканирование такого типа позволяет определить, какие IP протоколы (TCP, ICMP, IGMP и т.д.) поддерживаются целевыми машинами. Технически такое сканирование не является разновидностью сканирования портов, т.к. при нем циклически перебираются номера IP протоколов вместо номеров TCP или UDP портов. Хотя здесь все же используется опция -p для выбора номеров протоколов для сканирования, результаты выдаются в формате таблицы портов, и даже используется тот же механизм сканирования, что и при различных вариантах сканирования портов. Поэтому он достаточно близок к сканированию портов и описывается здесь.

Помимо полезности непосредственно в своей сфере применения, этот тип сканирования также демонстрирует всю мощь открытого программного обеспечения (open-source software). Хотя основная идея довольна проста, я никогда не думал включить такую функцию в Nmap, и не получал запросов на это. Затем, летом 2000-го, Джерард Риджер (Gerhard Rieger) развил эту идею, написал превосходный патч воплощающий ее и отослал его на nmap-hackers рассылку. Я включил этот патч в Nmap и на следующий день выпустил новую версию. Лишь единицы комерческого программного обеспечения могут похвастаться пользователями, достаточно полными энтузиазма для разработки и предоставления своих улучшений!

Способ работы этого типа сканирования очень похож на реализованный в UDP сканировании. Вместо того, чтобы изменять в UDP пакете поле, содержащее номер порта, отсылаются заголовки IP пакета, и изменяется 8 битное поле IP протокола. Заголовки обычно пустые, не содержащие никаких данных и даже правильного заголовка для требуемого протокола. Исключениями явлются TCP, UDP и ICMP. Включение правильного заголовка для этих протоколов необходимо, т.к. в обратном случае некоторые системы не будут их отсылать, да и у Nmap есть все необходимые функции для их создания. Вместо того, чтобы ожидать в ответ ICMP сообщение о недостижимости порта, этот тип сканирования ожидает ICMP сообщение о недостижимости протокола . Если Nmap получает любой ответ по любому протоколу, то протокол помечается как открытый. ICMP ошибка о неостижимости протокола (тип 3, код 2) помечает протокол как закрытый. Другие ICMP ошибки недостижимости (тип 3, код 1, 3, 9, 10 или 13) помечают протокол как фильтруемый (в то же время они показывают, что протокол ICMP открыт). Если не приходит никакого ответа после нескольких запросов, то протокол помечается как открыт|фильтруется

. -b (FTP bounce сканирование)

Интересной возможностью FTP протокола (RFC 959) является поддержка так называемых прокси FTP соединений. Это позволяет пользователю подключиться к одному FTP серверу, а затем попросить его передать файлы другому. Это является грубым нарушением, поэтому многие сервера прекратили поддерживать эту функцию. Используя эту функцию, можно осуществить с помощью данного FTP сервера сканирование портов других хостов. Просто попросите FTP сервер переслать файл на каждый интересующий вас порт целевой машины по очереди. Сообщение об ошибке укажет: открыт порт или нет. Это хороший способ обхода брандмауэров, т.к. организационные FTP сервера обычно имеют больше доступа к другим внутренним хостам, чем какие-либо другие машины. В Nmap такой тип сканирования задается опцией -b . В качестве аргумента ей передается <имя_пользователя> : <пароль> @ <сервер> : <порт> . <Сервер> - это сетевое имя или IP адрес FTP сервера. Как и в случае в обычными URL, вы можете опустить <имя_пользователя> : <пароль> , тогда будут использованы анонимные данные (пользователь: anonymous пароль: -wwwuser@). Номер порта (и предшествующее ему двоеточие) также можно не указывать; тогда будет использован FTP порт по умолчанию (21) для подключения к <серверу> .

Эта уязвимость была широко распространена в 1997, когда была выпущена Nmap, но теперь почти везде исправлена. Уязвимые сервера по-прежнему есть, так что, если ничего другое не помогает, то стоит попробовать. Если вашей целью является обход бранмауэра, то просканируйте целевую сеть на наличие открытого порта 21 (или даже на наличие любых FTP служб, если вы используете определение версии), а затем попробуйте данный тип сканирования с каждым из найденных. Nmap скажет вам, уязвим хост или нет. Если вы просто пытаетесь замести следы, то вам нет необходимости (и, фактически, не следует) ограничивать себя только хостами целевой сети. Перед тем как вы начнете сканировать произвольные Интернет адреса на наличие уязвимого FTP сервера, имейте ввиду, что многим системным администраторам это не понравится.

Команды nmap: самые популярные из них.

Всем привет, и в продолжение вводной статьи о программе сканирования Nmap я хотел бы предложить вам список наиболее используемых на практике команд этой программы, которые помогут использовать утилиту на всю катушку. В прошлый раз мы разбирали лишь общие команды, теперь – чуть подробнее. Итак, как применить команды nmap по полной программе. Здесь могут встретиться и бесконечно устаревшие флаги, но, так как они порой всё-таки “прокатывают”, я приведу и их.

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

Сканируем отдельный IP адрес – базовая команда (здесь и далее я буду опускать ОБЯЗАТЕЛЬНЫЙ флаг -Pn ; иначе Nmap будет выдавать ошибку host seems down – “хост, походу, не работает”):

Nmap 192.168.1.1

Сканируем хост:

Nmap site.com

Сканируем на скорую руку:

Nmap -F 192.168.1.1

Сканируем хост и ещё немного информации в дополнение:

Nmap -v site.com

Сканируем одновременно несколько адресов. Это можно сделать сразу несколькими способами и большинство из них даже выглядят логично. Можно сканировать поадресно по подмаске:

Nmap 192.168.1.1 192.168.1.2 192.168.1.3

аналогична ей команда (и, как видно, побыстрее в наборе):

Nmap 192.168.1.1,2,3

можно указать диапазон адресов:

Nmap 192.168.1.1-20

или всю подсеть сразу:

Nmap 192.168.1.0/24

И тут вспоминаете, что некоторые адреса для … “анализа” бесполезны или их сканирование просто небезопасно. Можно их исключить – сама сеть может содержать много вкусненького:

Nmap 192.168.1.0/24 --exlude 192.168.0.115

Порядок написания адресов после флага exlude такой же, как и в команде поиска: можно указывать несколько адресов подряд или через дефис. Более того. Вы можете сформировать некий список адресов, на которых обожглись или просто не хотите “светиться”. Запишите из в какой-нибудь file.txt и при следующем сканировании диапазона в список исключений можно добавить не адреса, а этот список, указав его емя (file.txt):

Nmap 192.168.1.0/24 --exludefile file.txt

Читаем список сетей или хостов из файла. Опция -iL позволяет это сделать. Это полезно при сканировании большого количества сетей. Можно создать текстовый файл на манер:

Cat > /tmp/список.txt

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

Site.com 192.168.1.0/24 192.168.1.1/24 10.1.2.3 localhost

Соответственно, команда будет выглядеть как:

Nmap -iL /tmp/list.txt

Следующие команды Nmap заставят узнать название и версию работающей у жертвы операционной системы:

Nmap -A 192.168.1.254 nmap -v -A 192.168.1.1 nmap -A -iL /tmp/scanlist.txt

Проверим, работает ли фаерволл на стороне жертвы:

Nmap -sA 192.168.1.254 nmap -sA server1.site.com

Если фаерволл стоит, попробуем сканировать через него:

Nmap -PN 192.168.1.1 nmap -PN server1.site.com

Опция -6 позволит сканировать IPv6. Синтаксис команды будет таким:

Nmap -6 server1.site.com

Сканируем сеть с целью определить какие серверы и устройства запущены и работают:

Nmap -sP 192.168.1.0/24

Эти команды nmap покажут только открытые порты:

Nmap --open 192.168.1.1 nmap --open server1.site.com

Следующая команда покажет пакеты. Отправленные и полученные:

Nmap --packet-trace 192.168.1.1 nmap --packet-trace server1.site.com

Отобразить интерфейс хостов (команда покажет устройства с выходом в сеть с присвоенными адресами):

Nmap --iflist

Сканируем специальные порты:

nmap -p имя_хоста

сканирует 80 порт:

Nmap -p 80 192.168.1.1

сканирует TCP порт 80

Nmap -p T:80 192.168.1.1

сканирует UDP порт 53

Nmap -p U:53 192.168.1.1

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

Nmap -p 80,443 192.168.1.1

сканирует порты в диапазоне:

Nmap -p 80-200 192.168.1.1

Здесь несколько опций комбинируются:

Nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1 nmap -p U:53,111,137,T:21-25,80,139,8080 server1.site.com nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 192.168.1.254

Вот эти команды nmap сканируют наиболее часто используемые порты:

Nmap --top-ports 5 192.168.1.1 nmap --top-ports 10 192.168.1.1

Самый быстрый способ отсканировать все устройства на предмет открытых портов:

Nmap -T5 192.168.1.0/24

Следующая команда сканирует адреса на предмет версий служб плюс на открытые TCP порты:

Nmap -p 1-65535 -sV -sS -T4 192.168.1.0/24

После этой команды результаты сканирования SYN по версии ОС и маршрутизации в подробностях, за счёт менее низкого тайминга они более аккуратные:

Nmap -v -sS -A -T4 192.168.1.0/24

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

Nmap -v -p 1-65535 -sV -O -sS -T4 192.168.1.0/24 nmap -v -p 1-65535 -sV -O -sS -T5 192.168.1.0/24

Как определить удалённую операционную систему? Используем известные вам команды и опции:

Nmap -O 192.168.1.1 nmap -O --osscan-guess 192.168.1.1 nmap -v -O --osscan-guess 192.168.1.1

Сканируем хост при помощи TCP ACK (PA) и TCP Syn (PS) ping. Если фаерволл блокирует стандартные пинги, можете попробовать вот эти команды:

Nmap -PS 192.168.1.1 nmap -PS 80,21,443 192.168.1.1 nmap -PA 192.168.1.1 nmap -PA 80,21,200-512 192.168.1.1

Сканируем хост с использованием IP ping:

Nmap -PO 192.168.1.1

Сканируем хост с использованием UDP ping (это сканирование помогает обойти фаерволы, которые защищают TCP соединение):

Nmap -PU 192.168.1.1 nmap -PU 2000.2001 192.168.1.1

Следующая команда обнаруживает наиболее используемые порты для протокола TCP, используя TCP SYN Scan (команды мало чем отличаются):

Команды nmap для скрытого сканирования:

Nmap -sS 192.168.1.1 nmap -sT 192.168.1.1 nmap -sA 192.168.1.1 nmap -sW 192.168.1.1 nmap -sM 192.168.1.1

Сканируем хост на предмет запущенных UDP сервисов:

Nmap -sU 192.168.1.1

Сканируем на предмет IP протокола (этот тип протокола позволяет обнаружить, какие Ip протоколы поддерживаются машиной жертвы):

Nmap -sO 192.168.1.1

Сканируем фаервол на предмет дыр в безопасности (неплох для тестирования безопасности против типичных атак):

Команда обманет фаервол и заставит отправить ответ:

Nmap -sN 192.168.1.254

TCP Fin сканирование для проверки брандмауэра. Устанавливает TCP FIN бит:

Nmap -sF 192.168.1.254

Сканируем фаервол на предмет фрагментов пакетов (идея заключается в том, чтобы раздробить заголовки TCP на несколько пакетов, что затрудняет их анализ фильтрами и другими защитными системами; так брандмауэр жертвы не понимает, что вы делаете в данный момент):

Nmap -f 192.168.1.1 nmap -f site.com

Сканируем фаерволл на предмет спуффинга mac адреса.

  • Подделаем собственный Mac адрес:
nmap --spoof-mac MAC-адрес 192.168.1.1
  • Добавим ещё немного опций:
nmap -v -sT -PN --spoof-mac MAC-адрес 192.168.1.1
  • используем случайный MAC адрес. Цифра 0 означает, что nmap выбирает абсолютно случайный MAC адрес:
nmap -v -sT -PN --spoof-mac 0 192.168.1.1