- Nmap Network Scanning
- Chapter 2. Obtaining, Compiling, Installing, and Removing Nmap
- Windows
While Nmap was once a Unix-only tool, a Windows version was
released in 2000 and has since become the second most popular Nmap
platform (behind Linux). Because of this popularity and the fact that
many Windows users do not have a compiler, binary executables are
distributed for each major Nmap release. We support Nmap on Windows 7
and newer, as well as Windows Server 2008 and newer. We also maintain
a guide for users
who must run Nmap on earlier Windows releases. While it has improved dramatically, the Windows port is not
quite as efficient as on Unix. Here are the known limitations:
-
Nmap only supports ethernet interfaces (including most
802.11 wireless cards and many VPN clients) for raw packet scans.
Unless you use the-sT -Pn
options, RAS connections
(such as PPP dialups) and certain VPN clients are not supported. This
support was dropped when Microsoft removed raw TCP/IP socket support
in Windows XP SP2. Now Nmap must send lower-level ethernet frames
instead. -
When using Nmap without Npcap, you cannot
generally scan your own machine from itself (using a
loopback IP such as 127.0.0.1 or any of its
registered IP addresses). This is a Windows limitation that we
have worked around in Npcap, which is included in the Windows self-installer.
Users stuck without a Npcap installation can use a TCP
connect scan without pinging (-sT -Pn
) as that uses
the high level socket API rather than sending raw
packets.
Scan speeds on Windows are generally comparable to those on
Unix, though the latter often has a slight performance edge. One
exception to this is connect scan (-sT
), which is
often much slower on Windows because of deficiencies in the Windows
networking API. This is a shame, since that is the one TCP scan that
works over all networking types (not just ethernet, like the raw packet scans).
Connect scan performance can be
improved substantially by applying the Registry changes in the
nmap_performance.reg
file included with Nmap. By default these changes are applied for you by the Nmap executable installer. This registry file
is in the nmap-
<version>
directory of the Windows binary zip file, and
nmap-
<version>
/mswin32
in the source tarball (where <version>
is the
version number of the specific release). These changes increase
the number of ephemeral ports reserved for user applications (such as
Nmap) and reduce the time delay before a closed connection can
be reused. Most people simply check the box to apply these changes in the executable Nmap installer, but you can also apply them by double-clicking on
nmap_performance.reg
, or by running the command
regedt32 nmap_performance.reg. To make the changes by hand, add these three Registry DWORD values to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
:
- MaxUserPort
-
Set a large value such as 65534 (0x0000fffe). See MS KB 196271.
- TCPTimedWaitDelay
-
Set the minimum value (0x0000001e). See MS KB 149532.
- StrictTimeWaitSeqCheck
-
Set to 1 so TCPTimedWaitDelay is checked.
Windows users have three choices for installing
Nmap, all of which are available from the
download page at https://nmap.org/download.html
.
Windows Self-installer
Every Nmap release includes a Windows
self-installer named
nmap-
<version>
-setup.exe
(where <version>
is the version number of the
specific release). Most Nmap users choose this option since it is so
easy. Another advantage of the self-installer is that it provides the option to install the Zenmap GUI and other tools. Simply run the installer file and let it walk you through
panels for choosing an install path and installing Npcap. The
installer was created with the open-source Nullsoft Scriptable
Install System. After it completes, read the section called “Executing Nmap on Windows” for instructions on executing Nmap on the
command-line or through Zenmap.
Command-line Zip Binaries
Note | |
---|---|
Most users prefer installing Nmap with the self-installer discussed previously. |
Every stable Nmap release comes with Windows
command-line binaries and associated files in a Zip archive. No
graphical interface is included, so you need to run
nmap.exe
from a DOS/command window. Or you can
download and install a superior command shell such as those included
with the free
Cygwin
system available from https://www.cygwin.com
. Here are the step-by-step instructions for installing and executing the Nmap .zip binaries.
Installing the Nmap zip binaries
-
Download the .zip binaries from
https://nmap.org/download.html
. -
Extract the zip file into the directory you want
Nmap to reside in. An example would beC:\Program
. A directory called
Files
nmap-
should be created, which includes<version>
the Nmap executable and data files. -
For improved performance, apply the Nmap Registry
changes discussed previously. -
Nmap requires the free Npcap packet capture library.
We include a recent Npcap installer which is available in the zip file
asnpcap-
,<version>
.exe
where<version>
is the Npcap version rather
than the Nmap version. Alternatively, you can obtain and install
the latest version fromhttps://npcap.com
. -
Due to the way Nmap is compiled, it requires the
Microsoft Visual C++ Redistributable Package of runtime
components. Many systems already have this installed from other
packages, but you should runVC_redist.x86.exe
from the zip file just in case you need it.
Pass the/q
option to run these installers in quiet (non interactive) mode. -
Instructions for executing your compiled Nmap are
given in the section called “Executing Nmap on Windows”.
Compile from Source Code
Most Windows users prefer to use the Nmap binary self-installer,
but compilation from source code is an option, particularly if you plan to help with Nmap development. Compilation requires
Microsoft Visual C++ 2019, which is part of their commercial Visual Studio
suite. Any of the Visual Studio 2019 editions should work, including the free
Visual Studio 2019 Community.
Some of Nmap’s dependencies on Windows are inconvenient to build. For
this reason, precompiled binaries of the dependencies are stored in
Subversion, in the directory /nmap-mswin32-aux
.
When building from source, whether from a source code release or from
Subversion, check out /nmap-mswin32-aux
as
described below.
Compiling Nmap on Windows from Source
-
Download the Windows dependencies from Subversion with the command
svn checkout https://svn.nmap.org/nmap-mswin32-aux.
The build files are configured to look for dependencies in this
checked-out directory. If you want to build the dependencies yourself
instead, you will have to reconfigure the Visual Studio project files to
point to the alternate directory. -
Decide whether to obtain the Nmap source code by downloading the latest release from nmap.org, or using a Subversion client to retrieve even newer (but less tested) code from our repository. These instructions are for the web download approach, but using Subversion instead is straightforward (see the section called “Obtaining Nmap from the Subversion (SVN) Repository”).
-
Download the latest Nmap source distribution from
https://nmap.org/download.html
. It has the name
nmap-
or<version>
.tar.bz2
nmap-
. Those are the same tar file compressed using bzip2 or gzip, respectively. The bzip2-compressed version is smaller.<version>
.tgz -
Uncompress the source code file you just downloaded. The
source code directory and thenmap-mswin32-aux
must
be in the same parent directory.
Recent releases of the free Cygwin distribution can handle both the.tar.bz2
and.tgz
formats. Use the command tar xvjf nmap-version.tar.bz2 or tar xvzf nmap-version.tgz, respectively. Alternatively, the common WinZip application can decompress these files. -
Open Visual Studio and the Nmap solution file (
nmap-
).<version>
/mswin32/nmap.sln -
Right click on
Solution 'nmap'
in the Solution Explorer sidebar and choose “Configuration Manager”. Ensure that the active solution configuration isRelease
and then close the Configuration Manager. -
Build Nmap by pressing F7 or choosing “Build
Solution” from the GUI. Nmap should begin compiling, and
end with the line “-- Done --
” saying
that all projects built successfully and there were zero
failures. -
The executable and data files can be found in
nmap-
. You can copy them to a preferred directory as long as they are all kept together.<version>
/mswin32/Release/ -
Ensure that you have Npcap installed. You can obtain it by
installing our binary self-installer or executing
npcap-
from<version>
.exe
our zip package. Alternatively, you can obtain the official installer at
https://npcap.com
. -
Instructions for executing your compiled Nmap are
given in the next section.
If you wish to build an Nmap executable Windows
installer or Zenmap executable,
see docs/win32-installer-zenmap-buildguide.txt
in the Nmap SVN repository.
Many people have asked whether Nmap can be compiled with the
gcc/g++ included
with Cygwin or other compilers. Some users have reported success with
this, but we don’t maintain instructions for building Nmap under
Cygwin.
Executing Nmap on Windows
Nmap releases now include the
Zenmap graphical user interface for Nmap.
If you used the Nmap installer and left the Zenmap field checked,
there should be a new Zenmap entry on your desktop and Start Menu.
Click this to get started. Zenmap is fully documented in
Chapter 12, Zenmap GUI Users’ Guide. While many users love Zenmap, others prefer
the traditional command-line approach to executing Nmap. Here are
detailed instructions for users who are unfamiliar with command-line
interfaces:
-
Make sure the user you are logged in as has
administrative privileges
on the computer (user should be a member of theadministrators
group). -
Open a command/DOS Window. Though it can be found in
the program menu tree, the simplest approach is to choose “Start”
-> “Run” and type cmd<enter>. Opening a Cygwin window (if you installed it) by clicking on the Cygwin icon on the desktop works too, although the necessary commands differ slightly from those shown here. -
Change to the directory you installed Nmap into. You can skip this step if Nmap is already in your command path (the Zenmap isntaller adds it there by default). Otherwise, type the following commands.
c:
cd "\Program Files (x86)\Nmap"
On Windows releases prior to Windows 7, specify
\Program Files\Nmap
instead. The directory will also be different if you chose to install Nmap in a non-default location. -
Execute nmap.exe. Figure 2.1 is a screen shot showing a simple example.
Figure 2.1. Executing Nmap from a Windows command shell
If you execute Nmap frequently, you can add the Nmap directory
(c:\Program Files (x86)\Nmap
by default) to your command execution path:
-
Open the System Properties window to the Advanced tab by running
SystemPropertiesAdvanced.exe
. -
Click the “Environment
Variables” button. -
Choose
Path
from the
System variables
section, then hit
edit. -
Add a semi-colon and then your Nmap directory (e.g.
c:\Program Files (x86)\Nmap
) to the end of the value. -
Open a new command prompt and you should be able to execute a
command such as nmap scanme.nmap.org from any directory.
Время на прочтение
5 мин
Количество просмотров 386K
Вы когда-нибудь интересовались откуда атакующий знает какие порты открыты в системе? Или как узнать, какие приложения запущены на сервере, не спрашивая об этом администратора? Вы можете сделать все это и даже больше вместе с небольшим инструментом под названием Nmap.
Что такое Nmap? Название Nmap это сокращение от “network mapper”, сам nmap это набор инструментов для сканирования сети. Он может быть использован для проверки безопасности, просто для определения сервисов запущенных на узле, для идентификации ОС и приложений, определения типа фаерволла используемого на сканируемом узле.
Nmap это знаменитый инструмент. Как только вы узнаете больше о Nmap, вы поймете, что он делает в эпизодах таких фильмов как Матрица Перезагрузка, Ультиматум Борна, Хоттабыч, и других.
В этом руководстве будут описаны основы использования Nmap и приведены некоторые примеры, которые вы сможете использовать.
Где взять Nmap?
Если Вы используете Linux, то можете найти пакеты Nmap в репозиториях для большинства дистрибутивов. Последний релиз Nmap вышел в начале 2010, поэтому самой свежей версии может не быть в текущих стабильных ветках. Найти исходники и некоторые бинарные сборки можно на странице загрузки.Там есть и windows версия.
Основы использования Nmap.
Синтаксис Nmap следующий:
nmap Опции_сканирования Цель_сканирования.
Допустим Вы хотите сканировать узел и узнать какая операционная система на нем работает. Чтобы сделать это выполните следующее:
nmap -O target.host.com
Заметим что Nmap требует привилегий суперпользователя для запуска подобного типа сканирования. Процесс сканирования может занять около минуты, так что будьте терпеливы. Когда процесс закончится вы увидите что то похожее на это:
Starting Nmap 5.21 ( nmap.org ) at 2010-02-27 23:52 EST
Nmap scan report for 10.0.0.1
Host is up (0.0015s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
53/tcp open domain
5009/tcp open airport-admin
10000/tcp open snet-sensor-mgmt
MAC Address: 00:11:24:6B:43:E2 (Apple Computer)
Device type: WAP|printer
Running: Apple embedded, Canon embedded, Kyocera embedded, Xerox embedded
OS details: VxWorks: Apple AirPort Extreme v5.7 or AirPort Express v6.3; Canon imageRUNNER printer (5055, C3045, C3380, or C5185); Kyocera FS-4020DN printer; or Xerox Phaser 8860MFP printer
Network Distance: 1 hop
Как вы видите Nmap предоставляет множество информации. Здесь он отображает предположение об операционной системе, которая была запущена на узле. В данном случае выполнялось сканирование маршрутизатора Apple Airport Extrime. В качестве дополнительного бонуса Nmap сообщил, что устройство на расстоянии одного прыжка, а также MAC адрес устройства и производителя сетевой карты, открытые порты и сколько времени выполнялось сканирование.
Ниже приведены результаты другого сканирования, домашнего компьютера с запущенной Ubuntu 9.10:
Starting Nmap 5.21 ( nmap.org ) at 2010-02-28 00:00 EST
Nmap scan report for 10.0.0.6
Host is up (0.0039s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 00:17:08:2A:D6:F0 (Hewlett Packard)
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.19 - 2.6.31
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at nmap.org/submit .
Nmap done: 1 IP address (1 host up) scanned in 3.40 seconds
Здесь мы видим, что система имеет сетевую карту HP, запущено Linux между версиями 2.6.19 и 2.6.31. Кстати, Вы не сможете явно идентифицировать дистрибутив, только версию Linux ядра.
Сканирование чужих узлов.
В примерах выше для сканирования были выбраны локальный маршрутизатор и одна из рабочих станций, потому что мы имели право на их сканирование. Однако, будет плохой идеей запуск множественного сканирования чужого узла, если вы их не контролируете или не имеете прав для сканирования. Для экспериментов Nmap имеет общедоступный тестовый сервер scanme.nmap.org который Вы можете использовать.
Многие администраторы не любят несанкционированного сканирования их серверов, так что лучшим вариантом будет ограничение сканирования узлов своей локальной сети или тех для которых у вас есть права на сканирование. Также в некоторых случаях вы можете нарушить договор с вашим провайдером, при использовании некоторых особо агрессивных методов сканирования Nmap, поэтому будьте осторожны.
Сканирование нескольких узлов.
Вы можете сканировать больше чем один узел за раз, используя nmap. Если вы производите сканирование по IP-адресу вы можете определить диапазон 10.0.0.1-6 или 10.0.0.0/24.Используя диапазон 10.0.0.1-6 будут сканироваться узлы от 10.0.0.1 до 10.0.0.6. Используя определение /24 будет сканироваться весь диапазон узлов от 10.0.0.0 до 10.0.0.255. Для примера, если нужно просканировать узлы от 10.0.0.1 до 10.0.0.42 и узнать какая ОС вероятно запущена используйте:
nmap –O 10.0.0.1-42
Если у вас есть некоторый список доменных имен вместо IP адресов, вы можете разделить их в командной строке, вот так:
nmap -O host1.target.com host2.target.com
Проверка открытых портов
Если вы запустите nmap вообще без опций и укажите какой то узел, то он будет сканировать порты и покажет все найденные открытые порты и сервисы запущенные на них. Например запустите:
nmap target.hostname.com
после чего он должен выдать что то похожее на это:
Interesting ports on target.hostname.com (10.0.0.88):
Not shown: 1711 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.228 seconds
Nmap выдаст больше информации если использовать опцию -v (verbose).
Сканирование запущенных сервисов
Если вы хотите узнать какой сервис возможно запущен попробуйте опцию –sV. Эта опция произведет более агрессивное сканирование и попытается выяснить какая версия сервисов запущена на данном узле, а также может помочь более точно определить какая ОС запущена. Для пример запустим nmap –sV на тестовый сервер и получим следующий ответ:
Starting Nmap 5.21 ( nmap.org ) at 2010-02-28 00:15 EST
Nmap scan report for test.host.net (XX.XXX.XXX.XX)
Host is up (0.090s latency).
Not shown: 965 closed ports, 33 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch)
Service Info: OS: Linux
Service detection performed. Please report any incorrect results at nmap.org/submit .
Nmap done: 1 IP address (1 host up) scanned in 11.43 seconds
Как вы видите, Nmap может проанализировать пакеты и определить версию запущенного приложений на SSH и HTTP портах. Здесь вы можете увидеть что опрашиваемая система это Ubuntu с Apache 2.2.8 и OpenSSH 4.7p1. Эта информация может быть полезна по ряду причин. Nmap сканирование может идентифицировать систему под управлением устаревших сервисов которые могут быть уязвимы для известных эксплойтов.
Кто в моей сети?
Не знаете сколько онлайн узлов находятся в вашей сети? Попробуйте использовать nmap –sP который запустит ping сканирование указанной сети. Для примера, nmap –sP 10.0.0.0/24 сканирует 256 узлов от 10.0.0.0 до 10.0.0.255 проверит доступны ли они и доложит об этом. Так же вы можете использовать диапазон, например:
nmap –sP 10.0.0.1-15
Zenmap
Наконец, если все эти радости командной строки не для вас, nmap имеет GUI который вы можете использовать для построения и выполнения команд. Называется Zenmap. Он позволит выбрать цель, запустить сканирование, отобразить результаты, а также сохранить их и сравнить с другими.
GUI Zenmap это хороший способ познакомиться с Nmap, но лучше знать как использовать Nmap в командной строке, если вы собираетесь работать с ним часто.
В будущем руководстве мы более глубоко познакомимся с Nmap и конкретными задачами которые вы сможете решить.
Данный пост это вольный перевод статьи Beginner’s Guide to Nmap. Спасибо за внимание.
Загрузить PDF
Загрузить PDF
Вы беспокоитесь о безопасности вашей или какой-нибудь другой сети? Защита вашего маршрутизатора от нежелательных подключений является залогом безопасности вашей сети. Одним из простых методов является Nmap или Network Mapper. Это программа сканирования, которая проверяет какие порты открыты и какие закрыты, а так же другие детали. Специалисты по безопасности используют эту программу для тестирования безопасности сети. Чтобы научиться использовать эту программу смотрите Шаг 1.
-
1
Скачайте установщик Nmap. Вы можете найти установщик на сайте разработчиков и скачать бесплатно. Рекомендуется скачивание именно с сайта разработчиков, чтобы избежать риск скачивания вирусов или подмененных файлов. Скачивая Nmap вы одновременно получить Zenmap, графический интерфейс для Nmap, что делает программу простой в использовании для новичков при выполнении сканирования без знания команд.
- Программа Zenmap доступна для операционных систем Windows, Linux, и Mac OS X. Вы можете найти установщики на официальном сайте Nmap.
-
2
Установите Nmap. Запустите установщик сразу после окончания загрузки. Выберите компоненты для установки. Чтобы полностью воспользоваться всеми возможностями Nmap выберите все компоненты. Nmap не будет устанавливать рекламные или шпионские приложения.
-
3
Запустите программу “Nmap – Zenmap” GUI. Если во время установки вы оставили все пункты не тронутыми, то иконка программы должна появиться на вашем рабочем столе. Если нет, посмотрите в меню старт и запустите Zenmap.
-
4
Введите цель вашего сканирования. Программа Zenmap превращает сканирование сети в очень простой процесс. В первую очередь выберете цель сканирования. Вы можете ввести домен (example.com), IP-адрес (127.0.0.1), сеть (192.168.1.0/24), или комбинацию перечисленных.
- В зависимости от загрузки и цели вашего сканирования, использование Nmap может оказаться нарушением пользовательских правил вашего интернет провайдера. Всегда проверяйте местные пользовательские правила во время использования Nmap в случаях сканирования этой программой вне вашей собственной сети.
-
5
Выберете ваш профиль. Профили представляют из себя группу модификаций, которые изменяют структуру сканирования. Профили позволяют быстро выбрать разные типы сканов без необходимости набора модификаций в командной строке. Выберете лучший профиль для ваших нужд:[1]
- Intense scan — обширное сканирование. Включает распознавание операционной системы, версии, скриптов, трассировку, и имеет агрессивное время сканирования.
- Ping scan — это сканирование, определяет онлайн статус цели вашего сканирования, и не сканирует порты.
- Quick scan — сканирует быстрее чем обычный скан с агрессивным временем сканирования и выборку портов.
- Regular scan — это стандартны Nmap скан без каких-либо модификаций. Результат включает пинг и открытые порты.
-
6
Нажмите Scan чтобы начать сканирование. Активные результаты скана будут отображаться во вкладке Nmap Output. Время сканирования будет зависеть от выбранного профиля, физического расстояния до цели, и сетевой конфигурации.
-
7
Посмотрите ваши результаты. После окончания скана, вы увидите сообщение “Nmap is done” в низу вкладки Nmap Output. Теперь вы можете проверить ваши результаты, в зависимости от типа выбранного скана. Все результаты собраны во вкладке Output, но, выбирая другие вкладки, вы можете более детально изучить получившийся результат.[2]
-
Ports/Hosts — эта вкладка покажет сканирования портов, включая службы, работающие на этих портах.
-
Topology — показывает трассировку для выполненного сканирования. Вы можете посмотреть через сколько «прыжков» ваши данные доходят до нужной цели.
-
Host Details — показывает полную информацию о цели, количество портов, IP-адреса, имена хостов, операционные системы, и другое.
-
Scans — эта вкладка записывает историю ваших предыдущих сканов. Таким образом вы можете быстро перезапустить скан, проделанный в прошлом, с определенным сетом параметров.
Реклама
-
Ports/Hosts — эта вкладка покажет сканирования портов, включая службы, работающие на этих портах.
-
1
Установите Nmap. Nmap является не большой и бесплатной программой. Вы можете скачать программу на сайте разработчика. Следуйте инструкциям исходя из вашей операционной системы:
-
Linux — скачайте и установите Nmap из вашего хранилища. Nmap доступен практически во всех версиях Linux. Введите данную команду исходя из ваших путей:
- Red Hat, Fedora, SUSE
rpm -vhU http://nmap.org/dist/nmap-6.40-1.i386.rpm
(32-bit) ORrpm -vhU http://nmap.org/dist/nmap-6.40-1.x86_64.rpm
(64-bit) - Debian, Ubuntu
sudo apt-get install nmap
- Red Hat, Fedora, SUSE
-
Windows — скачайте и установите Nmap. Вы можете найти его на сайте разработчиков и скачать бесплатно. Рекомендуется скачивание именно с сайта разработчиков, чтобы избежать риск скачивания вирусов или подмененных файлов. Используя установщик вы можете с легкостью установить командную строку Nmap.
- Если вы не хотите устанавливать графический интерфейс Zenmap, не выбирайте этот пункт во время установки программы.
-
Mac OS X – скачайте дисковый образ Nmap. Рекомендуется скачивание именно с сайта разработчиков, чтобы избежать риск скачивания вирусов или подмененных файлов. Используйте установщик, чтобы установить программу. Nmap работает на OS X 10.6 и выше.
-
Linux — скачайте и установите Nmap из вашего хранилища. Nmap доступен практически во всех версиях Linux. Введите данную команду исходя из ваших путей:
-
2
Откройте вашу командную строку. Команды Nmap работают из командной строки и показывают результаты сразу под командой. Вы можете использовать параметры, чтобы изменить структуру сканирования. Вы можете запустить сканирования из любого места прописанного в вашей командной строке.
-
Linux — откройте терминал используя графический интерфейс.
-
Windows — вы можете нажать комбинацию кнопок Windows+R и написать “cmd”. Пользователи Windows 8 могут нажать Windows+X и выбрать Командную строку из меню.
-
Mac OS X — откройте терминал, находящийся в Приложениях и Утилитах.
-
Linux — откройте терминал используя графический интерфейс.
-
3
Проведите скан нужных вам портов. Чтобы начать простое сканирование, напишите
nmap <target>
. Таким образом начнется пинг выбранной цели и сканирование портов. Этот скан очень просто распознать. Результаты будут видны на вашем экране. Возможно вам придется прокрутить наверх, чтобы увидеть результаты полностью.- В зависимости от загрузки и цели вашего скана, использование Nmap может оказаться нарушением правил вашего интернет провайдера. Всегда проверяйте местные пользовательские правила во время использования Nmap в случаях сканирования этой программой вне вашей собственной сети.
-
4
Проведите модифицированное сканирование. Вы можете использовать командные переменные, чтобы изменить параметры сканирования, в результате получая более или менее обширное сканирование. Вы можете добавить несколько переменных оставляя пробел между каждым. Переменные ставятся до цели:
nmap <variable> <variable> <target>
[3]
- -sS — это скрытое сканирование SYN. Это сканирование сложнее обнаружить, чем обычное, но может занять дольше времени для завершения. Большинство новых файерволов могут обнаружить сканирование –sS.
- -sn — это сканирование пинга. Это сканирование не использует обнаружение портов, и только проверяет онлайн статус цели.
- -O — это сканирование определяет вид операционной системы цели.
- -A — эта переменная включает обнаружение более обширной информации: операционная система, версия, скрипты, и трассировка.
- -F — включает быстрое сканирование, и уменьшает количество сканируемых портов.
- -v — эта переменная показывает большее количество результатов вашего сканирования, делая их читабельными.
-
5
Выведите результаты вашего сканирования в XML файл. Вы можете настроить вывод результатов вашего сканирования в XML файл и, в последствии, легко открыть их в любом веб-браузере. Чтобы это сделать используйте переменную -oX с названием файла для вывода данных. Полностью команда выглядит таким образом
nmap –oX ScanResults.xml <target>
.- Ваш XML файл будет сохранен в текущей директории работы вашей командной строки.
Реклама
Советы
- Интересно как проходит сканирование? Нажмите пробел, или любую кнопку, во время работы скана, чтобы посмотреть прогресс Nmap.
- Цель не отвечает? Попробуйте добавить переменную “-P0” к вашему сканированию. В результате сканирование Nmap начнет свою работу, даже если программа «думает», что цель не существует. Это бывает полезно, когда компьютер защищён файерволом.
- Если ваше сканирование занимает большое время (больше 20 минут), попробуйте добавить переменную “-F”, таким образом Nmap сканирование затронет только недавно использовавшиеся порты.
Реклама
Предупреждения
- Убедитесь, что у вас есть разрешение на сканирование цели. Сканирование государственных сайтов принесет вам не мало проблем. Если вы хотите проверить сканирование, вы можете использоваться scanme.nmap.org. Это тестовый компьютер установленный создателем программы.
- Если вы часто используете сканирование Nmap, будьте готовы ответить на вопросы от вашего интернет провайдера. Некоторые провайдеры специально проверяют трафик на сканирование Nmap. Программа является известной и часто используемой хакерами.
Реклама
Об этой статье
Эту страницу просматривали 27 596 раз.
Была ли эта статья полезной?
Nmap (Network Mapper) — универсальная программа для сканирования сети. Большой плюс в том, что она применима как на Windows , так и на Linux-системах.
Nmap можно использовать как для помощи в администрировании сети, так и для проверки сети на уязвимости, узнать как порты открыты и что можно узнать по данным портам.
В данной статье мы расскажем про наиболее интересные команды, которые могут вам пригодиться.
Nmap показывает состояния по портам:
open — порт открыт для определенного сервиса или приложения;
filtered — порт блокируется фаерволлом;
closed — порт закрыт;
unfiltered — невозможно точно определить статус порта;
Перейдем к самим командам и ключам Nmap на примерах.
Для примера мы находимся в локальной сети 192.168.0.0/24 и будем ее сканировать, но так же можно сканировать любой внешний адрес или доменное имя.
Установка namp командой:
yum install nmap
Сканирование с помощью NMAP.
Сканируем подсеть на c выводом состояния подключений на каждом ip-адресе.
Если в момент сканирования нажать «Пробел», то видим в процентах сколько уже про сканировано.
#nmap -sL 192.168.0.0/24
Если нам нужно отобразить только адреса в состоянии UP, то команда будет выглядеть следующим образом:
#nmap -sn 192.168.0.0/24
Команда nmap с ключом -sL сканирует заданную подсеть и выводит информацию о обнаруженных активных хостах в виде списка.
Можно также сканировать несколько подсетей одной командой, например подсети 192.168.0.0/24 и 10.34.100.0/24
#nmap -sL 192.168.0.0/24 10.34.100.0/24
либо, первые 100 адресов подсети 192.168.0.0/24
#nmap -sL 192.168.0.0-100
#nmap -sP 192.168.0.0/24
Если задать ключ -sP, то nmap выводит более подробную информацию о ip-адресе в виде:
# nmap -sP 192.168.0.0/24 Nmap scan report for Dlink-Router.Dlink (192.168.0.1) Host is up (0.0020s latency). MAC Address: BC:F6:XX:XX:XX:XX (D-Link International)
Мы можем также узнать операционную систему узла 192.168.0.50, через команду:
# nmap -O 192.168.0.50
Сканирование по портам с помощью NMAP.
Можно указать диапазон портов, например 1000-1010 для сканирования адреса 192.168.0.100:
#nmap -p 1000-1010 192.168.0.100
если мы хотим просканировать только tcp-порты, то используем перед портами T:, если UDP-порты, то пишем U:. Например, сканируем только порты U:53, T:23,22 для хоста 192.168.0.0/24:
#nmap -p U:53, T:23,22 192.168.0.0/24
либо с именем сервиса-порта:
#nmap -p ftp 192.168.0.0/24
Ключ «-p-» сканировать все 65 тысяч портов, по-умолчанию сканируется только около 1000-топ портов.
#nmap -p- 192.168.0.100
Как узнать информацию о запущенных сервисах на сайте или узле локальной сети?
Для поиска информации о сервисах используется ключ -sV.
#nmap -sV 192.168.0.201
Который расскажет нам историю про порт (80/tcp), состояние порта (open, closed), имя сервиса (http) и его версию (nginx).
Если вводить команду nmap 192.168.0.201 без каких-либо ключей, то мы видим почти одинаковый вывод как и с ключом -sV, только без колонки VERSION.
Показать только открытые порты.
#nmap 192.168.0.100 --open
Работа NMAP со скриптами.
У NMAP есть стандартная библиотека скриптов, через которые можно прогнать определенный хост. Скрипты можно увидеть командой:
#find /usr/share/nmap/scripts/
Как использовать библиотеку скриптов в nmap?
Через предыдущую команду мы видим в списке скрипт vnc-brute.nse, который по своей библиотеке будет перебирать учетные записи(логи-пароль) для получения доступа к узлу.
Например командой
nmap 192.168.0.100 --open
мы определили, что у хоста открыт порт 5801 и относится к сервису VNC. Теперь прогоним стандартный скрипт для vnc на наличие уязвимости либо командой:
#nmap -sC 192.168.0.10
0, которая прогонит адрес всеми скриптами в библиотеке, или
#nmap --script vnc-brute.nse 192.168.0.100
Обновить базу скриптов можно командой:
#nmap --script-updatedb
Далее примеры nmap и возможности коротко, сборки с интернета:
#nmap -p- -PS80,443 -n -T4 -p- -sS --reason 192.168.0.100
-p- сканирует весь диапазон портов;
-PS80,443 доступность адреса только если проходит ping по доступности tcp-портов 80,;
-n не делать DNS-resolve;
-T4 — быстрое сканирование;
-vvv — порты будут отображаться в онлайн-режиме сканирования, а не по окончанию;
— reason — выясняет почему nmap вывел порт в определенном состоянии
#nmap -v -iR 10 -PN -p 22 192.168.0.200
сканируем случайные 10 адресов по 22 порту;
-PN пропускаем обнаружение хостов.
#nmap -sV -p 22,80,443 192.168.0.100-150
сканер по портам 22,80,443 50 адресов с выводом информации о работающей службе по данным портам.
#nmap --traceroute adminwin.ru
показывает трасировку до хоста.
Дополнительные ключи для обходи систем защиты:
-f; —mtu <значение>: Фрагментировать пакеты (опционально с заданным значением MTU).
-D <фикт_хост1,фикт_хост2[,ME],…>: Маскировка сканирования с помощью фиктивных хостов.
-S <IP_адрес>: Изменить исходный адрес.
-e <интерфейс>: Использовать конкретный интерфейс.
-g/—source-port <номер_порта>: Использовать заданный номер порта.
—data-length <число>: Добавить произвольные данные к посылаемым пакетам.
—ip-options <опции>: Посылать пакет с заданным ip опциями.
—ttl <значение>: Установить IP поле time-to-live (время жизни).
—spoof-mac <MAC_адрес/префикс/название производителя>: Задать собственный MAC адрес.
—badsum: Посылать пакеты с фиктивными TCP/UDP контрольными суммами.
-
Установка Nmap
-
Установка Nmap в Ubuntu и Debian
-
Установка Nmap на CentOS и Fedora
-
Установка Nmap на macOS
-
Установка Nmap в Windows
-
СИНТАКСИС NMAP
-
Справка по Nmap
-
КАК ПОЛЬЗОВАТЬСЯ NMAP ДЛЯ СКАНИРОВАНИЯ ПОРТОВ В LINUX
-
Базовые возможности.
-
Определяем название и версию сервиса на порте.
-
Определяем имя и версию ОС.
-
Повышаем скорость сканирования.
-
Скрываем следы.
-
Обходим IDS и брандмауэры.
-
Используем Nmap для обнаружения машин в сети.
-
Выполняем брутфорс, дирбастинг (перебор директорий), DoS и другие атаки.
-
Поднимаем веб-сервер (внезапно).
-
Использование Nmap
-
Указание целевых хостов
-
Указание и сканирование портов
-
Ping сканирование
-
Отключение разрешения DNS-имен
-
Определение ОС, служб и версий
-
Вывод Nmap
-
Механизм сценариев Nmap
-
Заключение
Nmap — эталон среди сканеров портов и один из важнейших инструментов пентестера. Но можешь ли ты сказать, что досконально изучил все его особенности и способы применения? Из этой статьи ты узнаешь, как использовать Nmap для сканирования хостов за файрволом, повысить производительность сканирования, искать дыры в настройках HTTP-сервера, организовать DoS-атаку и даже поднять веб-сервер.
Nmap также может определять Mac-адрес, тип ОС , версию службы и многое другое.
В этой статье объясняются основы того, как использовать команду nmap
для выполнения различных сетевых задач.
к содержанию ↑
Nmap — это многоплатформенная программа, которую можно установить во всех основных операционных системах. Первоначально он был выпущен как инструмент только для Linux, а позже был перенесен на другие системы, такие как BSD, Windows и macOS.
Если вы предпочитаете графический интерфейс, а не командную строку, Nmap также имеет графический пользовательский интерфейс под названием Zenmap.
Официальные бинарные пакеты доступны для загрузки со страницы загрузки Nmap.
Процедура установки проста и зависит от вашей операционной системы.
к содержанию ↑
Установка Nmap в Ubuntu и Debian
Nmap доступен из репозиториев Ubuntu и Debian по умолчанию. Чтобы установить его, запустите:
sudo apt update sudo apt install nmap
Установка Nmap на CentOS и Fedora
На CentOS и других производных от Red Hat запускаются:
sudo dnf install nmap
Установка Nmap на macOS
Пользователи macOS могут установить Nmap, загрузив установочный пакет «.dmg» с сайта Nmap или через Homebrew:
brew install nmap
Установка Nmap в Windows
Версия Nmap для Windows имеет некоторые ограничения и, как правило, немного медленнее, чем версия для UNIX.
Самый простой вариант установки Nmap в Windows — это загрузить и запустить самоустанавливающийся exe-файл.
Вы можете запустить Nmap в Windows либо из командной строки, либо запустив программу Zenmap. Для получения дополнительной информации о том, как использовать Nmap в Windows, ознакомьтесь с инструкциями по использованию после установки.
к содержанию ↑
СИНТАКСИС 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[0-5] — скорость сканирования, чем больше, тем быстрее;
- -D — маскировать сканирование с помощью фиктивных IP;
- -S — изменить свой IP адрес на указанный;
- -e — использовать определенный интерфейс;
- —spoof-mac — установить свой MAC адрес;
- -A — определение операционной системы с помощью скриптов.
Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.
к содержанию ↑
Справка по Nmap
nmap [Тип(ы) сканирования] [Опции] {определение цели}
ОПРЕДЕЛЕНИЕ ЦЕЛИ СКАНИРОВАНИЯ: Можно использовать сетевые имена, IP адреса, сети и т.д. Пример: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL <имя_входного_файла>: Использовать список хостов/сетей из файла -iR <количество_хостов>: Выбрать произвольные цели --exclude <хост1[,хост2][,хост3],...>: Исключить хосты/сети --excludefile <имя_файла>: Исключить список из файла ОБНАРУЖЕНИЕ ХОСТОВ: -sL: Сканирование с целью составления списка - просто составить список целей для сканирования -sn: Пинг сканирование - отключить сканирование портов -Pn: Рассматривать все хосты будто бы они онлайн -- пропустить обнаружение хостов -PS/PA/PU/PY[список_портов]: TCP SYN/ACK, UDP или SCTP обнаружение данных портов пингование заданных портов -PE/PP/PM: Пингование с использованием ICMP эхо запросов, запросов временной метки и сетевой маски -PO[список_протоколов]: Пингование с использованием IP протокола -n/-R: Никогда не производить DNS разрешение/Всегда производить разрешение [по умолчанию: иногда] --dns-servers <сервер1[,сервер2],...>: Задать собственные DNS сервера --system-dns: Использовать системный DNS преобразователь --traceroute: Отслеживать путь к хосту РАЗЛИЧНЫЕ ПРИЕМЫ СКАНИРОВАНИЯ: -sS/sT/sA/sW/sM: TCP SYN/с использованием системного вызова Connect()/ACK/Window/Maimon сканирования -sU: UDP сканирование -sN/sF/sX: TCP Null, FIN и Xmas сканирования --scanflags <флаги>: Задать собственные TCP флаги -sI <зомби_хост[:порт]>: "Ленивое" (Idle) сканирование -sY/sZ: SCTP INIT/COOKIE-ECHO сканирования -sO: Сканирование IP протокола -b <FTP ретранслирующий хост>: FTP bounce сканирование ОПРЕДЕЛЕНИЕ ПОРТОВ И ПОРЯДКА СКАНИРОВАНИЯ: -p <диапазон_портов>: Сканирование только определенных портов Пример: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9 --exclude-ports <port ranges>: Exclude the specified ports from scanning -F: Быстрый режим - Сканировать меньше портов чем при сканировании по умолчанию -r: Сканировать порты последовательно - не использовать случайный порядок портов --top-ports <количество_портов>: Сканировать <количество_портов> наиболее распространенных портов --port-ratio <рейтинг>: Сканировать порты с рейтингом большим чем <рейтинг> ОПРЕДЕЛЕНИЕ СЛУЖБ И ИХ ВЕРСИЙ: -sV: Исследовать открытые порты для определения информации о службе/версии --version-intensity <уровень>: Устанавливать от 0 (легкое) до 9 (пробовать все запросы) --version-light: Ограничиться наиболее легкими запросами (интенсивность 2) --version-all: Использовать каждый единичный запрос (интенсивность 9) --version-trace: Выводить подробную информацию о процессе сканирования (для отладки) СКАНИРОВАНИЕ С ИПОЛЬЗОВАНИЕМ СКРИПТОВ: -sC: эквивалентно опции --script=default --script=<Lua скрипты>: <Lua скрипты> это разделенный запятыми список директорий, файлов скриптов или категорий скриптов --script-args=<имя1=значение1,[имя2=значение2,...]>: Передача аргументов скриптам --script-args-file=имя_файла: передать скрипту NSE аргументы в файле --script-trace: Выводить все полученные и отправленные данные --script-updatedb: Обновить базу данных скриптов. --script-help=<Lua скрипты>: Показать помощь о скриптах. <Lua скрипты> разделённый запятой список файлов скриптов или категорий скриптов. ОПРЕДЕЛЕНИЕ ОС: -O: Активировать функцию определения ОС --osscan-limit: Использовать функцию определения ОС только для "перспективных" хостов --osscan-guess: Угадать результаты определения ОС ОПЦИИ УПРАВЛЕНИЯ ВРЕМЕНЕМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ: Опции, принимающие аргумент <время>, задаются в миллисекундах, пока вы не добавите 's' (секунды), 'm' (минуты), или 'h' (часы) к значению (напр. 30m). -T[0-5]: Установить шаблон настроек управления временем (больше - быстрее) --min-hostgroup/max-hostgroup <кол_хостов>: Установить размер групп для параллельного сканирования --min-parallelism/max-parallelism <кол_хостов>: Регулирует распараллеливание запросов --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <время>: Регулирует время ожидания ответа на запрос --max-retries <количество_попыток>: Задает максимальное количество повторных передач запроса --host-timeout <время>: Прекращает сканирование медленных целей --scan-delay/--max-scan-delay <время>: Регулирует задержку между запросами --min-rate <число>: Посылать запросы с интенсивностью не меньше чем <число> в секунду --max-rate <число>: Посылать запросы с интенсивностью не больше чем <число> в секунду ОБХОД ФАЙЕРВОЛОВ/IDS И СПУФИНГ: -f; --mtu <значение>: Фрагментировать пакеты (опционально с заданным значениме MTU) -D <фикт_хост1,фикт_хост2[,ME],...>: Маскировка сканирования с помощью фиктивных хостов -S <IP_адрес>: Изменить исходный адрес -e <интерфейс>: Использовать конкретный интерфейс -g/--source-port <номер_порта>: Использовать заданный номер порта --proxies <url1,[url2],...>: Переправлять подключения через прокси HTTP/SOCKS4 --data <hex string>: Append a custom payload to sent packets --data-string <string>: Дописать пользовательскую ASCII строку к отправляемым пакетам --data-length <число>: Добавить произвольные данные к посылаемым пакетам --ip-options <опции>: Посылать пакет с заданным ip опциями --ttl <значение>: Установить IP поле time-to-live (время жизни) --spoof-mac <MAC_адрес/префикс/название производителя>: Задать собственный MAC адрес --badsum: Посылать пакеты с фиктивными TCP/UDP контрольными суммами ВЫВОД РЕЗУЛЬТАТОВ: -oN/-oX/-oS/-oG <файл>: Выводить результаты нормального, XML, s|<rIpt kIddi3, и Grepable формата вывода, соответственно, в заданный файл -oA <базовове_имя_файла>: Использовать сразу три основных формата вывода -v: Увеличить уровень вербальности (используйте -vv или более для усиления эффекта) -d: Увеличить уровень отладки (используйте -dd или более для усиления эффекта) --reason: Отобразить причину, по которой порт в конкретном состоянии --open: Показывать только открытые (или возможно открытые) порты --packet-trace: Отслеживание принятых и переданных пакетов --iflist: Вывести список интерфейсов и роутеров (для отладки) --append-output: Добавлять в конец, а не перезаписывать выходные файлы --resume <имя_файла>: Продолжить прерванное сканирование --stylesheet <путь/URL>: Устанавливает XSL таблицу стилей для преобразования XML вывода в HTML --webxml: Загружает таблицу стилей с Nmap.Org --no-stylesheet: Убрать объявление XSL таблицы стилей из XML РАЗЛИЧНЫЕ ОПЦИИ: -6: Включить IPv6 сканирование -A: Активировать функции определения ОС и версии, сканирование с использованием скриптов и трассировку --datadir <имя_директории>: Определяет место расположения файлов Nmap --send-eth/--send-ip: Использовать сырой уровень ethernet/IP --privileged: Подразумевать, что у пользователя есть все привилегии --unprivileged: Подразумевать, что у пользователя нет привилегий для использования сырых сокетов -V: Вывести номер версии -h: Вывести эту страницу помощи. ПРИМЕРЫ: nmap -v -A scanme.nmap.org nmap -v -sn 192.168.0.0/16 10.0.0.0/8 nmap -v -iR 10000 -Pn -p 80
к содержанию ↑
КАК ПОЛЬЗОВАТЬСЯ NMAP ДЛЯ СКАНИРОВАНИЯ ПОРТОВ В LINUX
Дальше рассмотрим примеры nmap. Сначала давайте рассмотрим как найти все подключенные к сети устройства, для этого достаточно использовать опцию -sL и указать маску нашей сети. в моем случае это 192.168.1.1/24. Маску вашей локальной сети вы можете найти, выполнив команду:
ip addr show
Из вывода для используемого интерфейса возьмите число после слеша, а до слэша укажите 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 на базовом уровне. Ты можешь возразить, что говорить тут не о чем, — достаточно всего лишь натравить Nmap на нужный хост, и спустя некоторое время он выдаст на экран информацию об открытых портах:
$ nmap 192.168.0.1
Это действительно так, но стоит иметь в виду две особенности реализации Nmap. Первая: запущенный с правами обычного пользователя Nmap крайне неэффективен. Весь процесс сканирования при этом фактически сводится к попытке установить полноценное соединение с каждым из портов. В случае протокола TCP это значит, что Nmap пошлет на удаленную сторону пакет SYN; если запрошенный порт открыт, машина ответит пакетом SYN/ACK, после чего Nmap отправит пакет ACK и только потом закроет соединение с помощью пакета FIN.
Весь этот процесс осуществляется с помощью системного вызова connect() и, по сути, целиком ложится на сетевой стек ОС. В результате страдает как производительность сканирования, так и скрытность (сервисы, висящие на сканируемых портах, будут активно логировать соединения).
Совсем по-другому Nmap ведет себя, когда запущен с правами root:
$ sudo nmap 192.168.0.1
В этом случае он полностью берет на себя формирование пакетов и управление соединением. Подключение к открытым портам будет выглядеть так: Nmap посылает SYN, машина отвечает SYN/ACK, Nmap посылает FIN, разрывая наполовину открытое соединение (это называется TCP SYN сканирование). В результате сервис, висящий на порте, не логирует попытку соединения, а Nmap способен обнаружить брандмауэр, который просто отбрасывает SYN-пакеты вместо того, чтобы отправить в ответ SYN/ACK (порт открыт) или FIN (порт закрыт), как это должна делать операционная система по умолчанию. Кроме того, этот способ сканирования намного более производительный.
Вторая особенность Nmap заключается в том, что на самом деле он сканирует не весь диапазон портов (65 536), а только 1000 портов типовых служб, определенных в файле /usr/share/nmap/nmap-services. Так что, если кто-то повесит сервис на нестандартный порт, которого просто нет в этом файле, Nmap его не увидит. Изменить подобное поведение можно при помощи такой команды:
$ sudo nmap -sS -sU -p 1-65535 192.168.0.1
Nmap будет использовать сканирование типа TCP SYN и UDP-сканирование для всего диапазона портов.
к содержанию ↑
Определяем название и версию сервиса на порте.
Одна из интересных особенностей Nmap в том, что он способен не только определить состояние порта (открыт, закрыт, фильтруется), но и идентифицировать имя демона/службы на этом порте, а в некоторых случаях даже его версию. Для этого Nmap может применять несколько разных техник, например подключиться к порту 80 и послать HTTP-запрос для идентификации имени и версии веб-сервера либо использовать информацию о том, как сервис отвечает на те или иные пакеты и запросы.
Все правила идентификации служб и их версий определены в файле <span class=»nobr»>/usr/share/nmap/nmap-service-probes, а заставит Nmap их применить флаг -sV:
$ sudo nmap -sV 192.168.0.1
Причем есть возможность даже усилить попытки Nmap определить службу с помощью флага —version-all:
$ sudo nmap -sV —version-all 192.168.0.1
Однако обычно это не повышает качество распознавания.
к содержанию ↑
Определяем имя и версию ОС.
Наверное, это одна из самых известных функций Nmap. Отправляя машине нестандартные пакеты и сопоставляя ее ответ (время ответа, значения полей TTL, MTU, ACK и многое другое) с «базой отпечатков ОС» (/usr/share/nmap/nmap-os-db), Nmap способен достаточно точно определить запущенную на машине ОС. Все, что нужно сделать, — это запустить Nmap с флагом -O:
$ sudo nmap -O 192.168.0.1
Однако далеко не всегда Nmap способен на 100% правильно угадать ОС. Если сделать это не получится, Nmap выведет на экран наиболее близкие к правильному варианты, заботливо снабдив их «процентом попадания»: 90%, 82%…
Более того, ты можешь пойти еще дальше и воспользоваться флагом -A, чтобы заставить Nmap попытаться определить версию ОС, версию служб и даже провести более детальный анализ служб с помощью скриптов NSE (о них позже):
$ sudo nmap -A 192.168.0.1
к содержанию ↑
Повышаем скорость сканирования.
Nmap известен своей феноменальной производительностью, которая продолжает улучшаться вот уже двадцать лет. Сканер применяет множество техник и хаков, многопоточный режим с динамически изменяемым количеством портов на поток, умеет использовать несколько ядер процессора. Но даже с целым вагоном оптимизаций в своем коде по умолчанию Nmap не такой быстрый, каким мог бы быть на самом деле.
Nmap поддерживает десяток флагов, позволяющих тонко контролировать такие параметры, как задержка между попытками подключения к порту или количество попыток подключения. Разобраться с ними с наскоку довольно тяжело, поэтому в Nmap есть набор преднастроенных шаблонов агрессивности сканирования. Всего их шесть (от 0 до 5), а сделать выбор можно с помощью опции -T:
$ sudo nmap -T3 192.168.0.1
В данном случае мы выбрали шаблон номер 3. Это дефолтовое значение, своеобразный компромисс между скоростью и точностью сканирования в медленных сетях. Однако в современных условиях, когда минимальная скорость проводного доступа в сеть уже перешагнула за 30 Мбит/с, лучшим выбором будет -T4 или даже -T5. Последний стоит применять только в стабильных сетях без провалов скорости.
Более низкие значения предназначены для обхода систем обнаружения вторжений. Например, -T0 отключает многопоточное сканирование и устанавливает задержку между пробами портов в пять минут; потратив весь день (ночь) на сканирование, ты можешь надеяться, что сама попытка сканирования будет не замечена (тем более что Nmap перебирает порты в случайном порядке). Шаблон -T1 — более быстрый режим с задержкой в 15 с, -T2 — 0,4 с, -T3 — 10 мс, -T4 — 5 мс.
к содержанию ↑
Скрываем следы.
Увеличение задержки между пробами портов — не единственный способ скрыть, что машина сканируется. Еще один интересный метод — одновременно запустить несколько потоков сканирования, подменяя обратный IP-адрес во всех случаях, кроме одного. Смысл здесь в том, чтобы запутать IDS и администратора машины. В логах IDS окажется сразу несколько попыток сканирования с разных адресов, среди которых будет только один настоящий.
Использовать такой метод довольно просто:
$ sudo nmap -D адрес1,адрес2,адрес3 192.168.0.1
Ты можешь указать сколько угодно фиктивных адресов или позволить Nmap сгенерировать рандомные адреса за тебя (в данном случае десять адресов):
$ sudo nmap -D RND:10 192.168.0.1
Однако тут необходимо иметь в виду, что рандомные адреса часто будут указывать на несуществующие или отключенные машины. IDS и хороший админ смогут отсеять их, чтобы вычислить реальный адрес.
Более сложный способ — организовать так называемое Idle-сканирование. Это очень интересная техника, которая базируется на трех простых фактах:
- При выполнении SYN-сканирования удаленная сторона посылает пакет SYN/ACK в случае, если порт открыт, и пакет RST, если нет.
- Машина, получившая незапрошенный пакет SYN/ACK, должна отвечать пакетом RST, а при получении незапрошенного RST — игнорировать его.
- Каждый IP-пакет, отправленный машиной, имеет IPID, а многие ОС при отправке пакета просто увеличивают IPID.
Сама техника заключается в том, чтобы найти неактивную сетевую машину, которая просто ничего не делает (Idle), но при этом находится в рабочем состоянии и способна отвечать на сетевые запросы. Более того, машина должна работать на древней ОС, которая увеличивает IPID пакетов вместо рандомизации, как современные ОС. Сделать это можно с помощью все тех же флагов -O -v Nmap (строка IP ID Sequence Generation в выводе) либо с помощью Metasploit Framework (это удобнее и быстрее):
> use auxiliary/scanner/ip/ipidseq
> set RHOSTS 192.168.0.1-192.168.0.255
> run
Далее ты запускаешь сканирование портов:
$ sudo nmap -sI IP-Idle-машины 192.168.0.1
На каждую пробу порта Nmap сначала будет посылать запрос Idle-машине, записывать IPID пакета, затем посылать SYN-пакет жертве, подменяя обратный адрес на IP Idle-машины, затем снова посылать запрос Idle-машине и сверять IPID с ранее сохраненным. Если IPID увеличился со времени прошлой проверки, значит, машина посылала пакеты, а, как мы знаем из второго пункта выше, это означает, что она ответила пакетом RST. Это, в свою очередь, говорит, что проверяемый порт жертвы открыт. Если IPID не увеличился, значит, порт закрыт.
В современном мире, где уже не осталось Windows 95, это действительно сложно реализуемая техника, но она позволяет полностью отвести от себя подозрения о сканировании. IDS обвинит в сканировании Idle-машину.
к содержанию ↑
Обходим IDS и брандмауэры.
Сразу оговорюсь: сегодняшние IDS и брандмауэры намного умнее тех, что существовали во времена, когда в Nmap появились средства борьбы с ними. Поэтому многие приведенные здесь техники могут уже не работать, но это не повод ими не пользоваться, в Сети полно доисторического оборудования.
Начнем с того, что даже без дополнительных опций Nmap уже способен хоть и не обойти, но обнаружить брандмауэр. Происходит так потому, что при SYN-сканировании состояние открыт/закрыт определяется путем анализа ответа машины: SYN/ACK — открыт, FIN — закрыт. Однако брандмауэры, чтобы минимизировать процессорные ресурсы, зачастую просто дропают пакеты, адресуемые фильтруемым портам (даже при настройке iptables в Linux стандартная практика — это дропнуть пакет с помощью -j DROP). Nmap отслеживает, при пробе каких портов не было получено ответа, и помечает эти порты filtered.
Еще одна техника обнаружения брандмауэра заключается в том, чтобы заставить Nmap генерировать «невероятные пакеты», такие как пакеты без единого флага (-sN), FIN-пакеты (-sF) и Xmas-пакеты, содержащие флаги FIN, PSH и URG (-sX). RFC описывает все эти ситуации, поэтому любое расхождение с RFC Nmap интерпретирует как наличие брандмауэра.
Многие брандмауэры можно обойти и точно определить, фильтруется порт или нет. Для этого можно использовать ACK-сканирование:
$ sudo nmap -sA 192.168.0.1
Теория здесь следующая: брандмауэр должен отбивать все новые TCP-подключения к порту, но также обязан не препятствовать прохождению пакетов в рамках уже установленных соединений. Простой способ сделать это — отбивать все SYN-пакеты (используется для установки соединения), но не мешать ACK-пакетам (используется для отправки пакетов в рамках уже открытого соединения).
Но есть одна тонкость. Дело в том, что есть так называемые stateful-брандмауэры. Они умеют отслеживать состояние соединения и проверяют такие поля пакетов, как IP-адрес и номер последовательности TCP, чтобы отслеживать, какие пакеты действительно пришли в рамках открытого ранее соединения, а какие были отправлены Nmap в рамках ACK-сканирования (iptables в Linux может работать в обоих режимах, но по умолчанию он не stateful, это более производительный вариант).
Выяснить, какой тип брандмауэра используется, можно, выполнив SYN-сканирование и сразу за ним — ACK-сканирование:
$ sudo nmap -sS 192.168.0.1
$ sudo nmap -sA 192.168.0.1
Если во втором случае порты, отмеченные во время SYN-сканирования как filtered, стали unfiltered, значит, перед тобой не stateful-брандмауэр.
Кроме того, можно попробовать обойти брандмауэр с помощью изменения номера исходящего порта:
$ sudo nmap —source-port 53 192.168.0.1
Это эксплуатация старой как мир ошибки настройки брандмауэра, которая заключается в том, что админ открывает доступ всему входящему трафику (включая протокол TCP) с порта 53, чтобы позволить приложениям беспрепятственно выполнять DNS-запросы. Сегодня такое встречается редко, но, как показывает практика, некомпетентность со временем не исчезает.
Кроме всего прочего, в Nmap есть средства для скрытия факта сканирования от глаз брандмауэров и IDS:
$ sudo nmap -f 192.168.0.1
В этом случае Nmap будет разбивать пакеты на крохотные фрагменты размером 8 байт. Делает он это в надежде на то, что брандмауэр или IDS не сможет собрать пакет из фрагментов и проанализировать его заголовок (по причине плохой реализации или в угоду производительности) и просто пропустит пакет или отбросит.
$ sudo nmap —mtu 16 192.168.0.1
Та же история, только с возможностью контролировать размер пакета (в данном случае 16). Можно использовать против брандмауэров и IDS, которые умеют ловить факты сканирования с помощью Nmap, анализируя размер фрагмента.
$ sudo nmap —data-length 25 192.168.0.1
Добавляет в конец пакета указанное количество рандомных байтов. Цель та же, что и в предыдущем случае: обмануть IDS, которая может быть способна обнаружить сканирование, анализируя размер пакета (Nmap всегда посылает пакеты длиной 40 байт при использовании протокола TCP).
к содержанию ↑
Используем Nmap для обнаружения машин в сети.
Хотя Nmap известен именно как сканер портов, это также отличный инструмент для обнаружения машин в сети. Его можно натравить на любое количество хостов и буквально за несколько секунд получить результат пинга тысяч хостов. Вот только пингует хосты он совсем не так, как всем известная утилита ping. По умолчанию перед началом сканирования портов Nmap посылает несколько пакетов, чтобы удостовериться в доступности хоста:
- ICMP Echo request — аналог того, как работает ping;
- SYN-пакет на порт 443;
- ACK-пакет на порт 80;
- ICMP timestamp request.
Так много способов проверки необходимы для обхода брандмауэров и ситуаций, когда, например, в ОС или сетевом оборудовании включен запрет отвечать на запросы ICMP Echo (сегодня это частая практика).
Проверку доступности легко отключить, используя опцию -PN, о чем сам Nmap сообщит, если не сможет удостовериться в доступности порта:
$ sudo nmap -PN 192.168.0.1
Обычно в этом мало смысла, а вот обратная операция, то есть отключение сканера портов, очень даже полезна для проверки доступности множества хостов:
$ sudo nmap -sn 192.168.0.1-255
Эта команда заставит Nmap просканировать адреса с 192.168.0.1 по 192.168.0.255. Ее более удобный аналог:
$ sudo nmap -sn 192.168.0.*
А так можно попросить Nmap просканировать всю подсеть:
$ sudo nmap -sn 192.168.0.0/24
Ну или записать необходимые адреса в файл и попросить просканировать их:
$ sudo nmap -sn -iL /путь/до/файла
Если опустить флаг -sn, Nmap будет не просто проверять доступность хостов, но еще и сканировать порты.
Самих техник пингования также довольно много. Nmap поддерживает определение доступности хоста с помощью посылки SYN-пакета на указанный порт:
$ sudo nmap -sn -PS80 192.168.0.1
ACK-пакета:
$ sudo nmap -sn -PA80 192.168.0.1
UDP-пакета:
$ sudo nmap -sn -PU53 192.168.0.1
ICMP Echo request:
$ sudo nmap -sn -PE 192.168.0.1
ICMP timestamp:
$ sudo nmap -sn -PP 192.168.0.1
Все их можно комбинировать:
$ sudo nmap -sn -PE -PS443 -PA80 -PP 192.168.0.1
к содержанию ↑
Выполняем брутфорс, дирбастинг (перебор директорий), DoS и другие атаки.
Относительно новая фишка Nmap — поддержка скриптов, расширяющих функциональность сканера. Nmap поставляется с более чем 500 скриптами, которые могут относиться к одной или нескольким из четырнадцати категорий:
- auth — проверка возможности логина. Например, скрипт ftp-anon пробует выполнить анонимный логин на FTP-сервер и выводит список файлов, помечая доступные для записи файлы;
- broadcast — различные виды обнаружения хостов в сети. Пример: broadcast-upnp-info — скрипт для поиска UPnP-сервисов;
- brute — реализация техник брутфорса паролей. Пример: http-brute — брутфорс паролей от веб-сервера;
- default — скрипты, запускаемые автоматически при указании опции -A или -sC. Обычно это простые быстрые скрипты, собирающие дополнительную информацию о машине, вроде уже приведенного выше ftp-anon;
- discovery — практически аналог broadcast. Пример: smb-enum-shares — поиск расшаренных с помощью протокола SMB дисков;
- dos — скрипты для организации DoS-атак. Пример: smb-vuln-regsvc-dos — выводит из строя Windows 2000 путем эксплуатации уязвимости MSRC8742;
- exploit — эксплуатация или проверка на уязвимость. Пример: smb-vuln-ms06-025 — проверка машин Windows на уязвимость MS06-025;
- external — скрипты, использующие внешние ресурсы для получения дополнительной информации о машине. Пример: whois;
- fuzzer — скрипты, посылающие удаленной стороне неожиданные и неправильно сформированные данные с целью поиска уязвимостей или попытки выполнить DoS. Пример: dns-fuzz;
- intrusive — скрипты, выполняющие активные действия в отношении машины. Пример: snmp-brute — брутфорс SNMP-сервера;
- malware — проверка на зараженность машины вирусами и бэкдорами. Пример: smtp-strangeport — поиск SMTP-сервера на нестандартном порте, что может быть свидетельством заражения машины трояном, рассылающим спам;
- safe — «безопасные» скрипты, которые не совершают активных действий в отношении машины, не забивают канал пакетами и не эксплуатируют уязвимости. Пример: ssh-hostkey — получает публичные ключи SSH-сервера;
- version — получение версий работающих служб. Пример: pptp-version — выводит на экран дополнительную информацию о PPTP-сервере;
- vuln — проверка служб на уязвимости.
Если указать опции -A или -sC, скрипты категории default будут запускаться автоматически. Для запуска скриптов других категорий можно использовать опцию —script:
$ sudo nmap —script «default and safe» 192.168.0.1
Выбор можно обратить, заставив Nmap запустить все скрипты, кроме тех, что относятся к указанной категории:
$ sudo nmap —script «not intrusive» 192.168.0.1
А можно указать имя нужного скрипта (http-enum выполняет дирбастинг HTTP-сервера):
$ sudo nmap -p80 —script «http-enum» 192.168.0.1
Или попросить Nmap запустить все скрипты, относящиеся к протоколу HTTP:
$ sudo nmap -p80 —script «http-*» 192.168.0.1
Сами скрипты вместе с описанием и примерами использования можно найти в каталоге /usr/share/nmap/scripts.
к содержанию ↑
Поднимаем веб-сервер (внезапно).
Немногие знают, но в комплекте с Nmap идет утилита ncat. Это аналог известнейшего netcat — универсального сетевого инструмента, с помощью которого можно тестировать сетевые службы, выполнять удаленные команды, передавать файлы, прокидывать через сеть аудио, слушать порты и делать множество других интересных вещей.
С его же помощью можно запустить простейший веб-сервер:
$ ncat -lk -p 8080 —sh-exec «echo -e ‘HTTP/1.1 200 OK’; cat index.html»
Шесть состояний порта по версии Nmap
open — порт открыт;
closed — порт закрыт;
filtered — порт фильтруется, неизвестно, закрыт или открыт;
unfiltered — порт не фильтруется, неизвестно, закрыт или открыт (такой результат может дать только ACK-сканирование);
open|filtered — порт либо открыт, либо фильтруется;
closed|filtered — порт либо закрыт, либо фильтруется (такой результат может дать только Idle-сканирование).
к содержанию ↑
Использование Nmap
Nmap обычно используется для аудита сетевой безопасности, отображения сети, определения открытых портов и поиска сетевых устройств.
Упрощенный синтаксис команды nmap выглядит следующим образом:
nmap [Options] [Target...]
Самый простой пример использования Nmap — сканирование одной цели от имени обычного пользователя без указания каких-либо параметров:
nmap scanme.nmap.org
При вызове от имени пользователя без полномочий root, у которого нет прав на использование сырых пакетов, nmap запускает сканирование TCP-соединения. Параметр -sT
по умолчанию включен в непривилегированном режиме.
Вывод будет выглядеть примерно так, включая основную информацию о сканировании и список открытых и отфильтрованных TCP-портов.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET Nmap scan report for cast.lan (192.168.10.121) Host is up (0.048s latency). Not shown: 981 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 53/tcp open domain 80/tcp open http 110/tcp open pop3 143/tcp open imap 443/tcp open https 587/tcp open submission 993/tcp open imaps 995/tcp open pop3s 1025/tcp open NFS-or-IIS 1080/tcp open socks 8080/tcp open http-proxy 8081/tcp open blackice-icecap Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
Самым популярным вариантом сканирования является TCP SYN scan (-sS
), который быстрее, чем вариант подключения, и работает со всеми совместимыми стеками TCP.
-sS
включается по умолчанию, когда nmap вызывает пользователь с административными привилегиями:
sudo nmap 192.168.10.121
Для более подробного вывода используйте увеличение детализации с помощью -v
или -vv
:
sudo nmap -vv 192.168.10.121
Чтобы выполнить сканирование UDP, вызовите команду с параметром ( -sU) от имени пользователя root:
sudo nmap -sU 192.168.10.121
Для получения полного списка методов сканирования портов посетите страницу документации Nmap.
Nmap также поддерживает адреса IPv6. Чтобы указать хост IPv6, используйте опцию -6
:
sudo nmap -6 fd12:3456:789a:1::1
к содержанию ↑
Указание целевых хостов
Nmap рассматривает все аргументы, которые не являются опциями, как целевые хосты.
Аргументы считаются вариантами, если они начинаются с одинарного или двойного тире (-
, --
).
Самый простой вариант — передать один или несколько целевых адресов или доменных имен:
nmap 192.168.10.121 host.to.scan
Вы можете использовать нотацию CIDR, чтобы указать диапазон сети:
nmap 192.168.10.0/24
Чтобы указать диапазон октетов, используйте символ тире. Например, для сканирования 192.168.10.1, 192.168.11.1и 192.168.12.1:
nmap 192.168.10-12.1
Другой символ, который вы можете использовать для указания целей, — это запятая. Следующая команда нацелена на те же хосты, что и предыдущая:
nmap 192.168.10,11,12.1
Вы можете комбинировать все формы:
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Чтобы убедиться, что вы указали правильные хосты перед сканированием, используйте параметр сканирования списка (-sL
), который перечисляет только цели без запуска сканирования:
nmap -sL 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Если вы хотите исключить цели, которые включены в указанный вами диапазон, используйте опцию --exclude
:
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
к содержанию ↑
Указание и сканирование портов
По умолчанию Nmap выполняет быстрое сканирование 1000 самых популярных портов. Это не первые 1000 последовательных портов, а 1000 наиболее часто используемых портов в диапазоне от 1 до 65389.
Для поиска всех портов с 1 по 65535 используйте опцию -p
:
nmap -p- 192.168.10.121
Каждый порт может находиться в одном из следующих состояний:
- open — программа, запущенная на порту, отвечает на запрос.
- closed — на порту не работает ни одна программа, и хост отвечает на запросы.
- filtered — хост не отвечает на запрос.
Порты и диапазоны портов указываются с помощью опции -p
.
Например, чтобы просканировать только порт 443, вы должны использовать следующую команду:
nmap -p 443 192.168.10.121
Чтобы указать более одного порта, разделите целевые порты запятой:
nmap -p 80,443 192.168.10.121
Диапазоны портов можно указать с помощью символа тире. Например, чтобы просканировать все порты UDP в диапазоне от 1 до 1024, вы должны запустить:
sudo nmap -sU -p 1-1024 192.168.10.121
Все вместе:
nmap -p 1-1024,8080,9000 192.168.10.121
Порты также можно указать с помощью имени порта. Например, для поиска порта 22, ssh, вы можете использовать:
nmap -p ssh 192.168.10.121
к содержанию ↑
Ping сканирование
Чтобы выполнить ping-сканирование или обнаружение хоста, вызовите команду nmap с опцией -sn
:
sudo nmap -sn 192.168.10.0/24
Эта опция указывает Nmap только на обнаружение сетевых хостов, а не на сканирование портов. Это полезно, когда вы хотите быстро определить, какой из указанных хостов запущен и работает.
Отключение разрешения DNS-имен
По умолчанию Nmap выполняет обратное разрешение DNS для каждого обнаруженного хоста, что увеличивает время сканирования.
При сканировании больших сетей рекомендуется отключить разрешение обратного DNS и ускорить сканирование. Для этого вызовите команду с опцией -n
:
sudo nmap -n 192.168.10.0/16
Определение ОС, служб и версий
Nmap может обнаружить операционную систему удаленного хоста с помощью снятия отпечатков стека TCP/IP. Чтобы запустить обнаружение ОС, вызовите команду с опцией -O
:
sudo nmap -O scanme.nmap.org
Если Nmap может обнаружить ОС хоста, он напечатает что-то вроде следующего:
... Device type: general purpose Running: Linux 5.X OS CPE: cpe:/o:linux:linux_kernel:5 OS details: Linux 5.0 - 5.4 Network Distance: 18 hops OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
Обычно системные службы прослушивают стандартные порты, которые хорошо известны и зарезервированы для них. Например, если порт 22, соответствующий службе SSH, открыт, вы предполагаете, что на хосте работает SSH-сервер. Однако вы не можете быть абсолютно уверены, потому что люди могут запускать службы на любых портах, которые им нужны.
Благодаря обнаружению службы и версии Nmap покажет вам, какая программа прослушивает порт и версию программы.
Для поиска службы и версии используйте опцию -sV
:
sudo nmap -sV scanme.nmap.org
... PORT STATE SERVICE VERSION 19/tcp filtered chargen 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 9929/tcp open nping-echo Nping echo 31337/tcp open tcpwrapped Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel ...
Вы также можете сканировать ОС, версии и запускать traceroute с помощью одной команды, используя параметр -A
:
sudo nmap -A 192.168.10.121
к содержанию ↑
Вывод Nmap
По умолчанию Nmap выводит информацию на стандартный вывод (stdout).
Если вы сканируете большую сеть или нуждаетесь в информации для дальнейшего использования, вы можете сохранить результат в файл.
Nmap предоставляет несколько типов вывода. Чтобы сохранить вывод в нормальном формате, используйте параметр, за которым следует имя файла -oN
:
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
Самый популярный вариант — сохранить вывод в формате XML. Для этого воспользуйтесь опцией -oX
:
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
Еще один полезный формат — вывод grepable, который можно анализировать с помощью стандартных инструментов Unix, таких как grep
, awk
и cut
. Вывод grepable указывается с опцией -oG
:
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
к содержанию ↑
Механизм сценариев Nmap
Одна из самых мощных функций Nmap — это скриптовый движок. Nmap поставляется с сотнями скриптов , и вы также можете писать свои собственные скрипты на языке Lua.
Вы можете использовать скрипты для обнаружения вредоносных программ и бэкдоров, выполнения атак методом перебора и т.д.
Например, чтобы проверить, скомпрометирован ли данный хост, вы можете использовать:
nmap -sV --script http-malware-host scanme.nmap.org
Заключение
Nmap — это инструмент с открытым исходным кодом, который в основном используется администраторами сети для обнаружения узлов и сканирования портов.
Обратите внимание, что в некоторых странах сканирование сетей без разрешения является незаконным.
Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.