32 примера команды nmap

Описание

Nmap использует множество различных методов сканирования, таких как UDP, TCP (connect), TCP SYN (полуоткрытое), FTP-proxy (прорыв через ftp), Reverse-ident, ICMP(ping), FIN, ACK, Xmas tree, SYN- и NULL-сканирование. Nmap также поддерживает большой набор дополнительных возможностей, а именно: определение операционной системы удалённого хоста с использованием отпечатков стека TCP/IP, «невидимое» сканирование, динамическое вычисление времени задержки и повтор передачи пакетов, параллельное сканирование, определение неактивных хостов методом параллельного ping-опроса, сканирование с использованием ложных хостов, определение наличия пакетных фильтров, прямое (без использования portmapper) RPC-сканирование, сканирование с использованием IP-фрагментации, а также произвольное указание IP-адресов и номеров портов сканируемых сетей.
В последних версиях добавлена возможность написания произвольных сценариев (скриптов) на языке программирования Lua.
Существуют графические интерфейсы, упрощающие выполнение задач сканирования:

  • Nmap Front End (Qt);
  • zenmap (GTK, Linux).

Особенности

Функции Nmap включают:

  1. Обнаружение сети и узлов в сети. Например, перечисление узлов, которые отвечают на запросы TCP (Transmission Control Protocol) и/или ICMP (Internet Control Messaging Protocol) или имеют определенный открытый порт.
  2. Сканирование портов, перечисление открытых портов на целевых узлах.
  3. Обнаружение версий, опрос сетевых служб на удаленных устройствах для определения имени приложения и номера его версии.
  4. Обнаружение ОС, определение операционной системы и аппаратных характеристик сетевых устройств.
  5. Взаимодействие с целевой программой с помощью Nmap Scripting Engine (NSE) и языка программированияLua.
  6. Nmap может предоставить дополнительную информацию о целевых объектах, включая обратные DNS-имена, типы устройств и MAC-адреса.

Типичные области применения:

  1. Аудит безопасности устройства или брандмауэра путем определения сетевых подключений, которые могут быть сделаны, или через него.
  2. Определение открытых портов на целевом узле при подготовке к аудиту.
  3. Инвентаризация сети, составление карты сети (картирование сети), обслуживание и управление активами.
  4. Аудит безопасности сети путем выявления новых серверов.
  5. Создание трафика для хостов в сети, анализ ответов и измерение времени отклика.
  6. Поиск и использование уязвимостей в сети.

Графический интерфейс

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

Обход брандмауэров / IDS

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

  • -f Фрагментация пакетов. При включении этой опции Nmap при всех видах сканирования будет использовать небольшие фрагментированные IP пакеты. Это означает что TCP заголовок будет разбит на части, и эти части будут посылаться цели в различных пакетах, в такой ситуации есть вероятность что фильтр просто не поймёт что мы хотим сделать, а соответственно не будет реагировать. По-умолчанию Nmap разбивает пакеты на части по 8 байт. Это значение можно задать в ручную используя опцию –mtu (размер должен быть кратным 8)
  • -D фиктивный_хост1,фиктивный_хост2,фиктивный_хост3,ME,фиктивный_хост5Сканирование с использованием фиктивных хостов. Для цели это будет выглядеть как-будто её сканируют все перечисленные тобой хосты, при этом довольно трудно будет понять откуда происходило настоящее сканирование. Фиктивные хосты нужно указывать через запятую, без пробелов. Параметром ME можно задать каким в списке будет твой настоящий адрес, если этот параметр не указывать Nmap поставит его рандомно

  • –data-length числоЭта опция добавит к пакету заданное количество байт. Иногда позволяет запутать системы фильтрации
  • –spoof-mac MAC-адресПодмена mac-адреса. В качестве значения можно указать желаемый mac-адрес, если указать 0 – будет сгенерирован рандомный mac, также можно указать префикс или название производителя (список префиксов производителей есть в файле nmap-mac-prefixes в паке программы) тогда Nmap будет использовать префикс для первой части mac-адреса и рандомное значение для второй

Определение служб, их версий и операционной системы

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

-sV Определение версий. Обнаружив порт Nmap начинает посылать на него соответствующие запросы, что бы определить какая именно служба этот порт использует, для этого используется информация из базы данных nmap-service-probes (лежит в папке nmap), где содержаться запросы и и перечислены виды ответов на них, для распознавания соответствующих служб.

–version-intensityОпция устанавливающая интенсивность, определяет какие запросы будут использоваться при сканировании. Можно установить значение от 1 до 9. Чем ниже значение, тем быстрее пройдет сканирование, чем выше – тем медленнее, но больше вероятность правильного определения службы. Если опция не указанна используется значение по умолчанию – 7, которого достаточно в большинстве случаев. Если есть желание использовать максимальную интенсивность, используй параметр –version-all, это гарантирует, что каждый единичный запрос будет направлен на каждый порт (и запасись терпением, это может занять какое-то время)

-OВключить режим определения ОС. При включении этой опции Nmap посылает несколько TCP и UDP пакетов на хост, а полученные результаты сравниваются с данными из файла nmap-os-db (лежит в папке nmap) и если обнаруживает совпадения, показывает ответ для какой ОС и какой её версии типично такое поведение. По этим же совпадениям Nmap попытается определить тип устройства и его производителя

Примечание:Я рассказал про параметры определения версий и ОС потому, что про них нужно знать и для полноты обзора, при этом на практике, в большинстве случаев, в место них лучше использовать опцию -А, которая сразу включает определение ОС, версий, трассировку и сканирование с использованием скриптов.

Определяем название и версию сервиса на порте

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

Все правила идентификации служб и их версий определены в файле , а заставит Nmap их применить флаг :

Причем есть возможность даже усилить попытки Nmap определить службу с помощью флага :

Однако обычно это не повышает качество распознавания.

Nmap не смог определить версию HTTP-сервера, но узнал его имя 

Базовые возможности

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

Это действительно так, но стоит иметь в виду две особенности реализации Nmap. Первая: запущенный с правами обычного пользователя Nmap крайне неэффективен. Весь процесс сканирования при этом фактически сводится к попытке установить полноценное соединение с каждым из портов. В случае протокола TCP это значит, что Nmap пошлет на удаленную сторону пакет SYN; если запрошенный порт открыт, машина ответит пакетом SYN/ACK, после чего Nmap отправит пакет ACK и только потом закроет соединение с помощью пакета FIN.

Весь этот процесс осуществляется с помощью системного вызова connect() и, по сути, целиком ложится на сетевой стек ОС. В результате страдает как производительность сканирования, так и скрытность (сервисы, висящие на сканируемых портах, будут активно логировать соединения).

Совсем по-другому Nmap ведет себя, когда запущен с правами root:

В этом случае он полностью берет на себя формирование пакетов и управление соединением. Подключение к открытым портам будет выглядеть так: Nmap посылает SYN, машина отвечает SYN/ACK, Nmap посылает FIN, разрывая наполовину открытое соединение (это называется TCP SYN сканирование). В результате сервис, висящий на порте, не логирует попытку соединения, а Nmap способен обнаружить брандмауэр, который просто отбрасывает SYN-пакеты вместо того, чтобы отправить в ответ SYN/ACK (порт открыт) или FIN (порт закрыт), как это должна делать операционная система по умолчанию. Кроме того, этот способ сканирования намного более производительный.

Вторая особенность Nmap заключается в том, что на самом деле он сканирует не весь диапазон портов (65 536), а только 1000 портов типовых служб, определенных в файле . Так что, если кто-то повесит сервис на нестандартный порт, которого просто нет в этом файле, Nmap его не увидит. Изменить подобное поведение можно при помощи такой команды:

Nmap будет использовать сканирование типа TCP SYN и UDP-сканирование для всего диапазона портов.

Nmap Network Scanning

Определение портов и порядка сканирования
     

Определение портов и порядка сканирования

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

(Сканирование только определенных портов)

С помощью этой опции вы можете определить, какие порты вы хотите просканировать и переопределить
установки по умолчанию. Указание отдельных номеров портов допустимо, как и задание диапазонов портов
разделенных дефисом (напр. ). Начальные и/или кончные значения
диапазонов могут быть опущены, что заставит Nmap использовать 1 и 65535 соответственно. Поэтому вы можете
задать опцию , чтобы просканировать все порты от 1 до 65535. Сканирование нулевого
порта допустимо, если вы укажене его явно
.
Для сканирования по IP протоколу (), эта опция определяет номера протоколов, которые
вы хотите просканировать для диапазона (0-255).

Когда сканируете и TCP и UDP порты, вы можете задать определенный протокол указав перед номерами
портов
или . Определитель будет действовать до того момента, пока вы не
зададите другой. Например, при задании аргумента будут просканированы UDP
порты 53,111, и 137, а также все перечисленные TCP порты. Имейте в виду, что для сканирования и UDP и
TCP портов, вы должны указать опцию и, по крайне мере, один из типов сканирования TCP
(таких как , или ). Если определитель прокотола
не указан, то перечисленные порты будут добавлены ко всем протоколам.

Порты также могут быть заданы именами, которые указаны в
. Вы даже можете использовать символы ? и * с именами.
Например, чтобы просканировать FTP и все порты, чьи имена начинаются с «http», используйте
. Будьте осторожны при вводе этой команды и лучше заключите аргумент
в кавычки.

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

(Быстрое (ограниченные порты) сканирование)

Указывает, что вы хотите произвести сканирование только портов, указанных в
, который поставляется вместе с Nmap (или в файле
протоколов для ). Это намного быстрее, чем сканировать все 65535 портов целевой машины.
Т.к. этот список содержит много TCP портов (больше 1200), разница в скорости в отличии от TCP сканирования
по умолчанию (около 1650 портов) несущественна. Разница может быть огромна, если вы определите свой
небольшой файл используя

или опции.

(Не использовать случайный порядок портов)

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

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

Сканирует N портов с наибольшими рейтингами, расположенными в
файле (только для нового формата
).

Source Code Distribution

This is the traditional compile-it-yourself format. The Nmap
tarball compiles under Linux, Mac OS X, Windows, and many UNIX
platforms (Solaris, Free/Net/OpenBSD, etc.) It includes Zenmap, the
GUI frontend.

Detailed Linux/BSD/Solaris compilation instructions and options are provided here, though this usually does the trick:

bzip2 -cd nmap-7.91.tar.bz2 | tar xvf -
cd nmap-7.91
./configure
make
su root
make install

Most Windows users install with our , but we also provide .

Most Mac OS X users install with our , but we also provide .

If you are compiling Nmap anyway, you might prefer to get the very latest code from rather than downloading a tarball here.

Latest stable Nmap release tarball: nmap-7.91.tar.bz2 (or gzip compressed)

Nmap Network Scanning

Zenmap in Your Language
  Chapter 12. Zenmap GUI Users’ Guide  

Zenmap in Your Language

Zenmap has been translated into a few languages other than English.

shows what Zenmap looks like in German. This section shows how to use
Zenmap’s translations.

Figure 12.18. Zenmap in German

On Unix-like systems, you select your preferred language by setting
the environment variable. Even on other operating
systems with different language selection facilities, setting
is the most foolproof way to get translations when
other methods don’t work. Your Unix-like operating system may set
as a side effect of its language configuration. If
it does not, add a line like the following to your

or
,
replacing with your locale name:

export LANG=de

A locale name is a language code optionally followed by a country code
and sometimes other information. Language codes are from
ISO 639
and country codes are from
ISO 3166.
Here “de” means German; another example is
“pt_BR” for Brazilian Portuguese. To disable localization
entirely and use the default English text, set .

To set on Windows XP, follow these steps. Open the
Control Panel and choose the “System” item. Click
the “Advanced” tab and then the
“Environment Variables” button. A new display
will open up; under “User variables” click
“New”. In the form that appears enter
“LANG” for the variable name and your locale name for the
value. The process is illustrated in
.

Figure 12.19. Setting the environment variable on Windows XP

On Mac OS X, setting in a shell startup file as
described above has an effect only when Zenmap is started from a
terminal. The graphical Finder interface keeps its environment
variables in a separate file,
.
To create it, open the TextEdit application and enter the following,
replacing with your locale name:

{ LANG=de; }

Then from the “Format” menu choose
“Make Plain Text”. Open the
“Save” dialog, select your home directory and
click “New Folder”. Create a folder called
and click past the warning that appears.
Save the file with the name ,
and insist on the extension in the next
warning that appears. Finally, log out and back in to make the change
take effect. A portion of this process is shown in
.

Figure 12.20. Setting the environment variable on Mac OS X

Creating a new translation

Creating a new translation for Zenmap, or updating an existing one,
is not hard technically, though of course it requires some know-how
and knowledge of at least one language other than English. Zenmap’s
translations are handled by the GNU
gettext system,
which is documented fully at
http://www.gnu.org/software/gettext/manual/. This
section is a summary of the manual translation process. There also
exist specialized translation editing programs that do these steps
automatically.

Let’s say you are going to make a translation into Spanish, which
has the language code “es”. Within the Zenmap source
tree there is a plain-text file
containing all the translatable strings in the application. You
create a new portable object
() file by running
msginit -l es.po -i zenmap.pot. The new
file contains all the application’s
English strings followed by blank strings where you fill in the
appropriate translations.

To test the portable object file you must turn it into a
machine object ()
file. Create the directory and
then run msgfmt es.po -o es/LC_MESSAGES/zenmap.mo.
With this file in place Zenmap will use your translation when
is set properly. To update the portable object
file when changes, run
msgmerge -U es.po zenmap.pot. This will add new
strings and mark any obsolete strings so they can be removed.

История

Nmap был впервые опубликован в сентябре 1997 года, как статья в журнале Phrack Magazine с исходным кодом включены. С помощью и вкладами сообщества компьютерной безопасности его развитие продолжалось. Усовершенствования включали внедрение операционной системы дактилоскопии, дактилоскопического обслуживания, переписанный код (с языка C на C++), дополнительные виды сканирования, поддержка протокола (например, IPv6, протокол SCTP) и новые программы, которые дополняют основные функции cканирования. Изменения включали в себя:

  • 12 декабря 1998—Выпущена Nmap 2.00, включая операционную систему сканирования отпечатков пальцев
  • 11 апреля 1999—NmapFE, передняя часть GTK+, в комплекте с Nmap
  • 7 декабря 2000—порт Windows
  • 28 августа 2002—переписка с языка С на C++ (язык программирования)
  • 16 сентября 2003—первый публичный выпуск, включающий обнаружение служебной версии
  • 31 августа 2004—ядро сканирования переписано для версии 3.70, новый движок называется ultra_scan

Лето 2005-Nmap выбран для участия в Google Summer of Code. Добавлены возможности Zenmap, который использует скриптовый движок (НСЕ), Netcat, и операционная система 2-го поколения.

  • 13 декабря 2007—был выпущен Nmap 4.50, 10-летие издания. Включены Zenmap, операционная система 2-го поколения, и nmap, использующий скриптовый движок.
  • 30 марта 2009 года—аварийный релиз Nmap 4.85BETA5, использование Nmap Scripting Engine (NSE) для выявления вирусные инфекции
  • 16 2009—5 июля.00 в комплекте с netcat-замена и Ndiff сканирования сравнение инструментов.
  • 28 января 2011—5.50 включена генерация Netcat пакетов Nping
  • 21 мая 2012—6.00 выпущен с полной поддержкой IPv6.
  • 9 ноября 2015—Nmap 7.00
  • 20 декабря 2016—Nmap 7.

«Changelog» nmap фиксирует все изменения.

Nmap Related Projects

  • Nmap Online is a handy web-based interface to Nmap—a way to scan yourself and see what your computer or network looks like from the Internet side. They also have an Nping Online system.
  • Self Audit My Server (SAMS) is a web-based application allowing you to run Nmap and a few other security tools against an Internet host.
  • Nmap-CGI is a web-based application for scanning your network with Nmap. It offers user management and privilege levels to control who can scan what.
  • Ruby Nmap::Parser
    is a Ruby library for executing Nmap scans and parsing the output for
    use in a higher level application/script. It was created by Kris
    Katterjohn.
  • Nmap::Scanner performs
    Nmap scans programatically using Perl. It was written by Max Schubert (nmap&at&webwizarddesign.com).
  • Nmap-Parser is a Perl
    module for parsing Nmap’s XML output. It was created by Anthony Persaud.
  • Cancerbero is an nmap-based port scan engine which automates regular scans, storing results in MySQL and generating alerts, change reports, etc. A web interface is provided for configuration and data mining.

  • Inprotect offers free
    (GPL) web frontend software for Nmap and Nessus, as well as certain services.
  • Alexandre Sagala has created a Qt/KDE frontend called
    KNmap
  • You can port
    scan yourself with this simple but useful web service by Ulrich Keil.
  • Joshua D. Abraham <jabra&at&ccs.neu.edu> has created Pbnj, a tool for running Nmap scans and diff’ing the results.

  • Remote nmap (Rnmap) is
    a pair of client and server programs which allow for various
    authorised clients to run their port scans from a centralised
    server. It was written by Tuomo Makinen <tmakinen&at&pp.htv.fi>.
  • Alek O. Komarnitsky (alek&at&komar.org) has created nmap-web, a simple Perl/CGI
    script(s) you install on your web server which allows you to submit nmap
    commands (and receive the responses) through a web interface. This is
    especially oriented toward «white-hat» Sysadmins trying to figure out what
    ports are open and what versions of programs are running.
  • RadialNet is a gorgeous tool for visualizing Nmap data. It was created by João Paulo de Souza Medeiros. Note that this functionality is now included with our Zenmap GUI.
  • Vacuum
    has created Winfingerprint, an
    application that uses SMB to determine OS, shares, users, and other
    information about Windows machines on a network (Note: this
    scanner currently only runs on Windows).

Быстрое сканирование огромных сетей в nmap

lijiejie, в предложил вариант быстрого сканирования огромных подсетей.

Сканирование больших подсетей в nmap, например 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16,100.64.0.0/10 — это нетривиальная задача. На таких сетях nmap очень медленный и можно никогда не дождаться результатов сканирования. В результате многие просто используют другие инструменты, такие как и . 

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

Основная идея быстрого сканирования — пинговать с высоким уровнем параллелизма:

sudo nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oX nmap_output.xml 100.64.0.0/10

Значение опций:

  • -sn: не сканировать порты, только пинговать хост
  • -PE: определяет, жив ли хост через эхо ICMP
  • -n: не преобразует IP-адреса в доменные имена.
  • —min-hostgroup 1024: Регулирует размер групп для параллельного сканирования. Минимальная группировка установлена на 1024 IP-адреса. В Nmap есть возможность осуществлять сканирование портов или сканирование с целью определения версии нескольких хостов параллельно. Это происходит путём разделения целевого IP пространства на группы, а затем сканирования одной группы за раз. В общем случае целесообразно использовать большие группы. Недостатком является то, что вы не можете узанть информацию о каком-либо хосте, пока не закончится сканирование всей группы. Таким образом, если Nmap начнет сканирование группы из 50-ти хостов, то пользователь не будет получать никакой информации (кроме обновлений информации предлагаемых в вербальном режиме), пока не будет завершено сканирование всех 50-ти хостов. о умолчанию Nmap использует компромиссный подход к решению этой проблемы. Сначала производится сканирование небольших групп из 5-ти хостов, поэтому первые результаты приходят быстро, затем размер группы постепенно увеличивается до максимального — 1024. Точные значения по умолчанию зависят от заданных опций. Для большей эффективности Nmap использует группы больших размеров для UDP сканирования и для некоторых типов TCP сканирования портов.
  • —min-parallelism 1024: Регулирует распараллеливание запросов. Этот параметр очень важен. Чтобы в полной мере использовать системные и сетевые ресурсы, мы устанавливаем количество проверок на не менее чем 1024. Эти опции регулируют общее количество запросов для группы хостов. Опции используются при сканировании портов и при обнаружении хостов. По умолчанию Nmap высчитывает степень параллельности основываясь на производительности сети. Если пакеты отбрасываются, то Nmap использует меньшее количество запросов. Количество запросов медленно увеличивается по мере того, как сеть продолжает нормально работать. Эти опции устанавливают минимальную и максимальную границы для этой переменной. По умолчанию параллелизм устанавливается в 1, если сеть работает плохо, и может достигать нескольких сотен при идеальных условиях.
  • -oX nmap_output.xml: Вывести результат в формате XML, имя файла — nmap_output.xml

По окончании сканирования вы можете проанализировать XML-документ, чтобы узнать, какие IP-адреса активны.

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

Посмотрите на следующие данные результатов сканирования:

 
Read data files from: /usr/bin/../share/nmap
Nmap done: 4012855 IP addresses (140507 hosts up) scanned in 2590.61 seconds
           Raw packets sent: 7897197 (221.122MB) | Rcvd: 160371 (6.456MB)

Просканировано 4012855 адресов за 2590 секунд — это 43 минуты. Найдено 140507 хостов онлайн. С настройками по умолчанию сканирование сети /10 заняло бы намного больше времени.

Определяем имя и версию ОС

Наверное, это одна из самых известных функций Nmap. Отправляя машине нестандартные пакеты и сопоставляя ее ответ (время ответа, значения полей TTL, MTU, ACK и многое другое) с «базой отпечатков ОС» (), Nmap способен достаточно точно определить запущенную на машине ОС. Все, что нужно сделать, — это запустить Nmap с флагом :

Однако далеко не всегда Nmap способен на 100% правильно угадать ОС. Если сделать это не получится, Nmap выведет на экран наиболее близкие к правильному варианты, заботливо снабдив их «процентом попадания»: 90%, 82%…

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

Предположения Nmap о версии ОС сканируемой машины 

Introduction

Scanning, as a method for discovering exploitable communication channels, has
been around for ages. The idea is to probe as many listeners as possible, and
keep track of the ones that are receptive or useful to your particular need.
Much of the field of advertising is based on this paradigm, and the «to current
resident» brute force style of bulk mail is an almost perfect parallel to what
we will discuss. Just stick a message in every mailbox and wait for the
responses to trickle back.

Scanning entered the h/p world along with the phone systems. Here
we have this tremendous global telecommunications network, all
reachable through codes on our telephone. Millions of numbers are
reachable locally, yet we may only be interested in 0.5% of these
numbers, perhaps those that answer with a carrier.

The logical solution to finding those numbers that interest us is
to try them all. Thus the field of «wardialing» arose. Excellent
programs like Toneloc were developed to facilitate the probing of
entire exchanges and more. The basic idea is simple. If you dial a
number and your modem gives you a CONNECT, you record it. Otherwise
the computer hangs up and tirelessly dials the next one.

While wardialing is still useful, we are now finding that many of
the computers we wish to communicate with are connected through
networks such as the Internet rather than analog phone dialups.
Scanning these machines involves the same brute force technique. We
send a blizzard of packets for various protocols, and we deduce which
services are listening from the responses we receive (or don’t
receive).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий