mirror of
https://github.com/nmap/nmap.git
synced 2025-12-10 09:49:05 +00:00
3659 lines
368 KiB
XML
3659 lines
368 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!-- $Id: manhtml.xml 6184 2007-11-10 01:55:40Z Hackcat $ -->
|
||
<article id="man" lang="ru">
|
||
<artheader>
|
||
<title>Справочное руководство Nmap (Man Page)</title>
|
||
</artheader>
|
||
<indexterm significance="normal"><primary>man page</primary><see>reference guide</see></indexterm>
|
||
<indexterm class="startofrange" id="man-nmap1-indexterm" significance="normal"><primary>reference guide (man page)</primary></indexterm>
|
||
<refentry id="man-nmap1">
|
||
<refmeta>
|
||
<refentrytitle>nmap</refentrytitle>
|
||
<manvolnum>1</manvolnum>
|
||
<refmiscinfo class="source">Nmap</refmiscinfo>
|
||
<refmiscinfo class="manual">Справочное руководство Nmap</refmiscinfo>
|
||
</refmeta>
|
||
<refnamediv id="man-name">
|
||
<refname>nmap</refname>
|
||
<refpurpose>Утилита для исследования сети и сканер портов</refpurpose>
|
||
</refnamediv>
|
||
<!-- body begins here -->
|
||
<refsynopsisdiv id="man-synopsis">
|
||
<cmdsynopsis sepchar=" ">
|
||
<command moreinfo="none">nmap</command>
|
||
<arg choice="opt" rep="repeat">
|
||
<replaceable>Тип сканирования</replaceable>
|
||
</arg>
|
||
<arg choice="opt" rep="norepeat">
|
||
<replaceable>Опции</replaceable>
|
||
</arg>
|
||
<arg choice="req" rep="norepeat">
|
||
<replaceable>цель сканирования</replaceable>
|
||
</arg>
|
||
</cmdsynopsis>
|
||
</refsynopsisdiv>
|
||
<refsect1 id="man-description">
|
||
<title>Описание</title>
|
||
<indexterm significance="normal"><primary>Nmap</primary><secondary>description of</secondary></indexterm>
|
||
<web>
|
||
<note><para>
|
||
Этот документ описывает версию Nmap 4.22SOC8. Последняя документация
|
||
доступна на английском языке по ссылке
|
||
<ulink url="https://nmap.org/book/man.html"/>.</para></note>
|
||
</web>
|
||
<para>Nmap (<quote>Network Mapper</quote>) - это утилита с открытым исходным кодом для исследования сети и
|
||
проверки безопасности. Она была разработана для быстрого сканирования больших сетей, хотя прекрасно справляется
|
||
и с единичными целями. Nmap использует "сырые" IP пакеты оригинальным способом, чтобы определить какие хосты
|
||
доступны в сети, какие службы (название приложения и версию) они предлагают, какие операционные системы (и версии
|
||
ОС) они используют, какие типы пакетных фильтров/брандмауэров используются и еще множество других характеристик.
|
||
В то время, как Nmap обычно используется для проверки безопасности, многие системные администраторы находят ее
|
||
полезной для обычных задач, таких как контролирование структуры сети, управление расписаниями запуска
|
||
служб и учет времени работы хоста или службы. </para>
|
||
|
||
<para>Выходные данные Nmap это список просканированных целей с дополнительной информацией по каждой из них в зависимости
|
||
от заданных опций. Ключевой информацией является <quote>таблица важных портов</quote>.<indexterm significance="normal"><primary>ports</primary><secondary sortas="interesting">“interesting”</secondary></indexterm>
|
||
Эта таблица содержит номер порта, протокол, имя службы и состояние. Состояние может иметь значение
|
||
<literal moreinfo="none">open</literal> (открыт), <literal moreinfo="none">filtered</literal> (фильтруется),
|
||
<literal moreinfo="none">closed</literal> (закрыт) или <literal moreinfo="none">unfiltered</literal> (не
|
||
фильтруется).
|
||
<literal moreinfo="none">Открыт</literal><indexterm significance="normal"><primary><literal moreinfo="none">open</literal> port state</primary></indexterm>
|
||
означает, что приложение на целевой машине готово для установки соединения/принятия пакетов на этот порт.
|
||
<literal moreinfo="none">Фильтруется</literal><indexterm significance="normal"><primary><literal moreinfo="none">filtered</literal> port state</primary></indexterm>
|
||
означает, что брандмауэр, сетевой фильтр, или какая-то другая помеха в сети блокирует порт, и Nmap не может установить
|
||
<literal moreinfo="none">открыт</literal> этот порт или <literal moreinfo="none">закрыт</literal>.
|
||
<literal moreinfo="none">Закрытые</literal><indexterm significance="normal"><primary><literal moreinfo="none">closed</literal> port state</primary></indexterm>
|
||
порты не связаны ни с каким приложением, но могут быть открыты в любой момент. Порты расцениваются как
|
||
<literal moreinfo="none">не фильтрованные</literal><indexterm significance="normal"><primary><literal moreinfo="none">unfiltered</literal> port state</primary></indexterm>, когда они отвечают на запросы Nmap, но Nmap не может определить открыты они или закрыты. Nmap выдает комбинации
|
||
<literal moreinfo="none">открыт|фильтруется</literal><indexterm significance="normal"><primary><literal moreinfo="none">open|filtered</literal> port state</primary></indexterm>
|
||
и <literal moreinfo="none">закрыт|фильтруется</literal><indexterm significance="normal"><primary><literal moreinfo="none">closd|filtered</literal> port state</primary></indexterm>, когда не может определить, какое из этих двух
|
||
состояний описывает порт. Эта таблица также может предоставлять детали о версии программного обеспечения, если это
|
||
было запрошено. Когда осуществляется сканирование по IP протоколу (<option>-sO</option>), Nmap предоставляет
|
||
информацию о поддерживаемых протоколах, а не об открытых портах.</para>
|
||
|
||
<para>В дополнение к таблице важных портов Nmap может предоставлять дальнейшую информацию о целях: преобразованные
|
||
DNS имена, предположение об используемой операционной системе, типы устройств и MAC адреса.</para>
|
||
|
||
<para>Типичное сканирование с использованием Nmap показано в <xref linkend="man-ex-repscan" xrefstyle="select: label nopage"/>. Единственные аргументы, использованные в этом примере - это <option>-A</option>, для определения версии ОС,
|
||
сканирования с использованием скриптов и трассировки; <option>-T4</option> для более быстрого выполнения; затем
|
||
два целевых хоста.</para>
|
||
|
||
<example id="man-ex-repscan"><title>Типичный пример сканирования с помощью Nmap</title>
|
||
<indexterm significance="normal"><primary><option>-A</option></primary><secondary>example of</secondary></indexterm>
|
||
<screen format="linespecific">
|
||
# nmap -A -T4 scanme.nmap.org playground
|
||
|
||
Starting Nmap ( https://nmap.org )
|
||
Interesting ports on scanme.nmap.org (64.13.134.52):
|
||
(The 1663 ports scanned but not shown below are in state: filtered)
|
||
PORT STATE SERVICE VERSION
|
||
22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99)
|
||
53/tcp open domain
|
||
70/tcp closed gopher
|
||
80/tcp open http Apache httpd 2.0.52 ((Fedora))
|
||
113/tcp closed auth
|
||
Device type: general purpose
|
||
Running: Linux 2.4.X|2.5.X|2.6.X
|
||
OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
|
||
|
||
Interesting ports on playground.nmap.org (192.168.0.40):
|
||
(The 1659 ports scanned but not shown below are in state: closed)
|
||
PORT STATE SERVICE VERSION
|
||
135/tcp open msrpc Microsoft Windows RPC
|
||
139/tcp open netbios-ssn
|
||
389/tcp open ldap?
|
||
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
|
||
1002/tcp open windows-icfw?
|
||
1025/tcp open msrpc Microsoft Windows RPC
|
||
1720/tcp open H.323/Q.931 CompTek AquaGateKeeper
|
||
5800/tcp open vnc-http RealVNC 4.0 (Resolution 400x250; VNC port: 5900)
|
||
5900/tcp open vnc VNC (protocol 3.8)
|
||
MAC Address: 00:A0:CC:63:85:4B (Lite-on Communications)
|
||
Device type: general purpose
|
||
Running: Microsoft Windows NT/2K/XP
|
||
OS details: Microsoft Windows XP Pro RC1+ through final release
|
||
Service Info: OSs: Windows, Windows XP
|
||
|
||
Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds
|
||
</screen>
|
||
</example>
|
||
|
||
<para>Самую новую версию Nmap можно скачать с <ulink url="https://nmap.org"/>. Самая новая версия страницы справки Nmap
|
||
(man page) расположена по адресу <ulink url="https://nmap.org/book/man.html"/>.</para>
|
||
|
||
</refsect1>
|
||
|
||
|
||
<refsect1 id="man-translation">
|
||
<title>Замечания о переводе</title>
|
||
|
||
<para>Гуз Александр (Guz Alexander) <email>kalimatas@gmail.com</email> </para>
|
||
|
||
<para>Этот русский вариант Справочного Руководства Nmap является переводом версии 6184 <ulink url="https://nmap.org/book/man.html">оригинальной английской версии</ulink>. Хотя я надеюсь, что данный перевод
|
||
сделает Nmap более доступным для русскоязычных пользователей, я не могу гарантировать, что он является полным или
|
||
является переводом последней официальной английской версии. Эту работу можно модифицировать и(или) распространять
|
||
на основе лицензии <ulink url="http://creativecommons.org/licenses/by/2.5/">Creative
|
||
Commons Attribution License</ulink>.</para>
|
||
|
||
<para>Марк Бруцкий (Mark Brutsky) <email>hackcat.dev@gmail.com</email> </para>
|
||
|
||
<para>Этот русский вариант Справочного Руководства Nmap является переводом версии 6184 <ulink url="https://nmap.org/book/man.html"> оригинальной английской версии</ulink>. Хотя я надеюсь, что данный перевод
|
||
сделает Nmap более доступным для русскоязычных пользователей, я не могу гарантировать, что он является полным или
|
||
является переводом последней официальной английской версии. Эту работу можно модифицировать и(или) распространять
|
||
на основе лицензии <ulink url="http://creativecommons.org/licenses/by/2.5/">Creative
|
||
Commons Attribution License</ulink>.</para>
|
||
</refsect1>
|
||
|
||
|
||
|
||
<refsect1 id="man-briefoptions">
|
||
<title>Сводка опций</title>
|
||
|
||
<para>Эта сводка опций выводится на экран, когда Nmap запускается без каких-либо опций; последняя версия всегда доступна
|
||
здесь <ulink url="https://nmap.org/data/nmap.usage.txt"/>.
|
||
Эта сводка помогает людям запомнить наиболее употребляемые опции, но она не может быть заменой документации,
|
||
предоставленной в данном руководстве. Некоторые опции не включены в этот список.</para>
|
||
|
||
<para>
|
||
<!-- sortas="#" puts it before the entries that start with '-' in the options
|
||
section. -->
|
||
<indexterm class="startofrange" id="nmap-usage-indexterm" significance="normal"><primary sortas="#">summary of options</primary></indexterm>
|
||
<indexterm class="startofrange" id="nmap-usage-nmap-indexterm" significance="normal"><primary>command-line options</primary><secondary>of Nmap</secondary></indexterm>
|
||
<?dbfo-need height="1in"?>
|
||
<literallayout format="linespecific" class="normal">
|
||
Nmap 4.76 ( https://nmap.org )
|
||
Использование: 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: Сканирование с целью составления списка - просто составить список целей для сканирования
|
||
-sP: Пинг сканирование - просто определить, работает ли хост
|
||
-PN: Расценивать все хосты как работающие - пропустить обнаружение хостов
|
||
-PS/PA/PU [список_портов]: TCP SYN/ACK или UDP пингование заданных хостов
|
||
-PE/PP/PM: Пингование с использованием ICMP-эхо запросов, запросов временной метки и сетевой маски
|
||
-PO [список_протоколов]: Пингование с использованием IP протокола
|
||
-n/-R: Никогда не производить DNS разрешение/Всегда производить разрешение [по умолчанию: иногда]
|
||
--dns-servers <сервер1[,сервер2],...>: Задать собственные DNS сервера для разрешения доменных имён
|
||
--system-dns: Использовать системный DNS-преобразователь
|
||
РАЗЛИЧНЫЕ ПРИЕМЫ СКАНИРОВАНИЯ:
|
||
-sS/sT/sA/sW/sM: TCP SYN/с использованием системного вызова Connect()/ACK/Window/Maimon сканирования
|
||
-sU: UDP сканирование
|
||
-sN/sF/sX: TCP Null, FIN и Xmas сканирования
|
||
--scanflags <флаги>: Задать собственные TCP флаги
|
||
-sI <зомби_хост[:порт]>: "Ленивое" (Idle) сканирование
|
||
-sO: Сканирование IP протокола
|
||
-b <FTP_хост>: FTP bounce сканирование
|
||
--traceroute: Трассировка пути к хосту
|
||
--reason: Выводить причину, почему Nmap установил порт в определенном состоянии
|
||
ОПРЕДЕЛЕНИЕ ПОРТОВ И ПОРЯДКА СКАНИРОВАНИЯ:
|
||
-p <диапазон_портов>: Сканирование только определенных портов
|
||
Пример: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
|
||
-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-trace: Выводить все полученные и отправленные данные
|
||
--script-updatedb: Обновить базу данных скриптов
|
||
ОПРЕДЕЛЕНИЕ ОС:
|
||
-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 <номер_порта>: Использовать заданный номер порта
|
||
--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: Увеличить уровень вербальности (задать дважды или более для увеличения эффекта)
|
||
-d[уровень]: Увеличить или установить уровень отладки (до 9)
|
||
--open: Показывать только открытые (или возможно открытые) порты
|
||
--packet-trace: Отслеживание принятых и переданных пакетов
|
||
--iflist: Вывести список интерфейсов и роутеров (для отладки)
|
||
--log-errors: Записывать ошибки/предупреждения в выходной файл нормального режима
|
||
--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 -sP 192.168.0.0/16 10.0.0.0/8
|
||
nmap -v -iR 10000 -PN -p 80
|
||
ДЛЯ СПРАВКИ ПО ДРУГИМ ОПЦИЯМ, ОПИСАНИЙ И ПРИМЕРОВ СМОТРИТЕ MAN СТРАНИЦУ
|
||
|
||
</literallayout>
|
||
|
||
<indexterm class="endofrange" startref="nmap-usage-nmap-indexterm" significance="normal"/>
|
||
<indexterm class="endofrange" startref="nmap-usage-indexterm" significance="normal"/>
|
||
</para>
|
||
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-target-specification">
|
||
<title>Определение цели сканирования</title>
|
||
<indexterm significance="normal"><primary>target specification</primary></indexterm>
|
||
|
||
<para>В командной строке Nmap все, что не является опцией (или аргументом опции), рассматривается как цель
|
||
сканирования. В простейшем случае для сканирования используется IP адрес или сетевое имя целевой машины.</para>
|
||
|
||
<para>Иногда необходимо просканировать целую сеть. Для этого Nmap поддерживает CIDR адресацию. <indexterm significance="normal"><primary>CIDR (Classless Inter-Domain Routing)</primary></indexterm>
|
||
Вы можете добавить
|
||
/<replaceable>кол-во бит</replaceable> к IP адресу или сетевому имени и Nmap просканирует каждый IP адрес, для которого
|
||
первые <replaceable>кол-во бит</replaceable> такие же как и у заданного хоста. Например, 192.168.10.0/24 просканирует
|
||
256 хостов между 192.168.10.0 (бинарное: <literal moreinfo="none">11000000 10101000
|
||
00001010 00000000</literal>) и 192.168.10.255 (бинарное: <literal moreinfo="none">11000000 10101000
|
||
00001010 11111111</literal>) включительно.
|
||
192.168.10.40/24 сделает абсолютно то же самое. Зная, что IP адрес scanme.nmap.org 64.13.134.52, при записи типа
|
||
scanme.nmap.org/16 будет произведено сканирование 65,536 IP адресов между 64.13.0.0 и 64.13.255.255. Наименьшее
|
||
допустимое значение /0, при котором будет просканирован весь Интернет. Наибольшее значение /32, при котором будет
|
||
просканирован только заданный хост или IP адрес, т.к. все адресные биты заблокированы.</para>
|
||
|
||
<indexterm significance="normal"><primary>address ranges</primary></indexterm>
|
||
<para>CIDR нотация коротка, однако не всегда достаточно гибка. Например, вы хотите просканировать
|
||
192.168.0.0/16, но пропустить все IP-адреса, оканчивающиеся на .0 или .255, т.к. обычно это широковещательные адреса.
|
||
Nmap может осуществить такое сканирование путем задания диапазонов в октетах. Вместо определния обычного IP адреса, вы
|
||
можете определить для каждого октета либо разделенный запятыми список чисел, либо диапазон. Например,
|
||
192.168.0-255.1-254 пропустит все адреса в диапазоне оканчивающиеся на .0 и .255. Диапазоны не обязательно задавать
|
||
только в последних октетах: при записи 0-255.0-255.13.37 будет произведено сканирование всех адресов в Интернете
|
||
оканчивающихся на 13.37. Такой тип сканирования может быть полезен для исселедования просторов Интернета.</para>
|
||
|
||
<para>IPv6 адреса могут быть определны только в форме, полностью соответствующей правильной форме записи IPv6 адресов.
|
||
CIDR и использование диапазонов в октетах не применимо к IPv6 адресам, т.к. они редко используются.</para>
|
||
|
||
<para>Вы можете передавать в командной строке Nmap различные варианты определения целей, не обязательно одного типа.
|
||
Команда <command moreinfo="none">nmap
|
||
scanme.nmap.org 192.168.0.0/16 10.0.0,1,3-7.0-255</command> сделает то, что вы ожидаете.</para>
|
||
|
||
<para>Цели сканирования обычно задаются в командной строке, и существуют различные опции контроля выбора целей:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-iL <replaceable>имя_файла</replaceable></option> (Ввод из списка)
|
||
<indexterm significance="normal"><primary><option>-iL</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>target specification</primary><secondary>from list</secondary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Считывает цели из <replaceable>имя_файла</replaceable>. Хотя передача большого списка хостов для
|
||
сканирования является обычным явлением, это не удобно. Например, ваш DHCP сервер передают вам список из
|
||
10,000 используемых им на данный момент адресов, и вы хотите его просканировать. Или, возможно, вы хотите
|
||
просканировать все IP адреса, <emphasis>кроме</emphasis> переданных им, чтобы выявить несанкционированное
|
||
использование статических IP адресов. Просто сгенерируйте список хостов для сканирования и передайте
|
||
имя файла в Nmap как аргумент для опции<option>-iL</option>. Записи в файле могут находиться в любой
|
||
приемлимой для Nmap форме (IP адреса, сетевые имена, CIDR, IPv6, или диапазоны в октетах). Каждая запись
|
||
должна быть отделена пробелом или несколькими, символами табуляции либо символами перехода на новую строку.
|
||
Вы можете передать в качестве аргумента дефис(<literal moreinfo="none">-</literal>) как имя файла, если
|
||
хотите, чтобы Nmap считывал список хостов из стандартного ввода, а не из файла.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-iR <replaceable>кол-во хостов</replaceable></option> (Выбирает произвольные цели)
|
||
<indexterm significance="normal"><primary><option>-iR</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>random targets</primary></indexterm>
|
||
<indexterm significance="normal"><primary>target specification</primary><secondary>at random</secondary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Для сканирования в пределах всего Интернета или каких-либо исследований, вам, возможно, понадобится
|
||
выбрать цели произвольно. Аргумент <replaceable>кол-во хостов</replaceable> определяет сколько необходимо
|
||
сгенерировать IP адресов. Неподходящие IP адреса, такие как частные, широковещательные или нелокализованные
|
||
диапазоны адресов автоматически пропускаются. Аргумент <literal moreinfo="none">0</literal> может быть
|
||
передан для бесконечного сканирования. Имейте в виду, что некоторым системным администраторам может не
|
||
понравиться неразрешенное сканирование их сетей и они могут пожаловаться. Используйте эту опцию на свой страх
|
||
и риск! Если в дождливый денек вам будет скучно, попробуйте команду
|
||
<command moreinfo="none">nmap -sS -PS80 -iR 0 -p 80</command>
|
||
<indexterm significance="normal"><primary><option>-sS</option></primary><secondary>example of</secondary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-PS</option></primary><secondary>example of</secondary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-iR</option></primary><secondary>example of</secondary></indexterm>
|
||
для сканирования произвольных веб-серверов.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--exclude
|
||
<replaceable>хост1</replaceable><optional>,<replaceable>хост2</replaceable><optional>,...</optional></optional></option> (Исключить хосты/сети)
|
||
<indexterm significance="preferred"><primary><option>--exclude</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>excluding targets</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Определяет разделенный запятыми список целей, которые необходимо исключить из сканирования, даже если
|
||
они являются частью заданного вами диапазона сканирования. Передаваемый список использует стандартный
|
||
синтаксис Nmap, поэтому может содержать сетевые имена, CIDR адресацию, диапазоны в октетах и т.д. Эта
|
||
опция может быть полезна, если сеть, которую вы хотите просканировать, содержит сервера или системы,
|
||
негативно реагирующие на сканирование портов, или подсети, администрируемые другими людьми.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--excludefile <replaceable>имя_файла</replaceable></option> (Исключить список из файла)
|
||
<indexterm significance="preferred"><primary><option>--excludefile</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Эта опция делает то же самое, что и <option>--exclude</option>, за исключением того, что цели для
|
||
исключения находятся в разделенном пробелами, символами табуляции или символами перехода на новую строку
|
||
<replaceable>файле</replaceable>, а не в командной строке.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-host-discovery">
|
||
<title>Обнаружение хостов</title>
|
||
<indexterm class="startofrange" id="man-host-discovery-indexterm" significance="normal"><primary>host discovery</primary></indexterm>
|
||
|
||
<para>Одна из первейших задач при исследовании любой сети это сократить (иногда довольно большой) набор IP диапазонов
|
||
до списка активных или интересных хостов. Сканирование каждого порта каждого IP адреса медленно и необязательно.
|
||
Конечно же то, что делает хост интересным для исселедования во многом определяется целями сканирования. Сетевые
|
||
администраторы возможно будут заинтересованы только в хостах, на которых запущена определенная служба, в то время
|
||
как тем, кого интересует безопасность, будут интересны все устройства с IP адресами. Задачи администраторов по
|
||
обнаружению работающих хостов в сети могут быть удовлетворены обычным ICMP пингом, людям же, которые тестируют
|
||
способность сети противостоять атакам из вне, необходимо использовать разнообразные наборы запросов с целью обхода
|
||
брандмауэра.</para>
|
||
|
||
<para>Посколько задачи, требующие обнаружения хостов столь различны, Nmap предоставляет большое разнообразие опций
|
||
для различных методов. Задачу обнаружения хостов иногда называют пинг сканированием (ping scan), однако она намного
|
||
превосходит использование обычных ICMP запросов ассоциирующихся с вездесущими
|
||
<application moreinfo="none">ping</application> утилитами. Пользователи могут полностью пропустить шаг пинг
|
||
сканирования с помощью опции сканирования с целью составления списка (<option>-sL</option>) или просто отключив его
|
||
(<option>-PN</option>), или сканировать сеть с помощью произвольных комбинаций мультипортовых TCP SYN/ACK, UDP и
|
||
ICMP запросов. Целью всех этих запросов является получение ответов, указывающих, что IP адрес в настоящее время
|
||
активен (используется хостом или сетевым устройством). В большинстве сетей лишь небольшой процент IP адресов
|
||
активен постоянно. Это особенно характерно для адресных пространств вида 10.0.0.0/8. Такие сети
|
||
имеют 16 млн. IP адресов, но я видел, как они используются компаниями, в которых не более тысячи машин. Функция
|
||
обнаружения хостов может найти эти машины в этом необъятном море IP адресов. </para>
|
||
|
||
<para>Если не задано никаких опций обнаружения хостов, то Nmap посылает TCP ACK пакет на порт 80 и запрос на ICMP
|
||
эхо ответ кажодй целевой машине. Исключение составляет ARP сканировании всех целей в сети. Для непривилегированных
|
||
пользователей Unix оболочки, вместо ACK пакета посылается SYN используя системный вызов
|
||
<function moreinfo="none">connect</function><indexterm significance="normal"><primary>unprivileged users</primary><secondary>limitations of</secondary></indexterm>
|
||
Эти умолчания равнозначны опциям <option>-PA -PE</option>. Такое сканирование достаточно для локальных сетей,
|
||
но для исследования безопасности необходимо использовать более сложные наборы запросов.
|
||
</para>
|
||
|
||
<para>Опции <option>-P*</option> (определяющие тип пинг сканирования) могут комбинироваться. Вы можете увеличить
|
||
шансы обхода строго брандмауэра посылая множество запросов различных типов, используя различные TCP порты/флаги и
|
||
ICMP коды. Также имейте в виду, что даже если вы определите различные <option>-P*</option> опции, по умолчанию
|
||
применительно к целям локальной сети будет производиться и ARP сканирование
|
||
(<option>-PR</option>)<indexterm significance="normal"><primary><option>-PR</option></primary></indexterm>, т.к.
|
||
оно почти всегда быстрее и более эффективно.</para>
|
||
|
||
<para>По умолчанию после обнаружения хостов Nmap начинает сканирование портов каждой активной машины. Так будет,
|
||
даже если вы укажите на использование нестандартных методов обнаружения хостов, например, с использованием
|
||
UDP запросов (<option>-PU</option>). Прочтите об опции <option>-sP</option>, чтобы узнать, как выполнить только
|
||
обнаружение хостов, или используйте опцию <option>-PN</option>, чтобы пропустить обнаружение хостов и осуществить
|
||
сканирование портов всех целевых машин. С помощью следующих опций можно настраивать функцию обнаружения хостов:
|
||
</para>
|
||
|
||
<variablelist>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sL</option> (Сканирование с целью составления списка)
|
||
<indexterm significance="normal"><primary><option>-sL</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>list scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Это тип сканирования является "упрощенной" версией функции обнаружения хостов, при помощи которого
|
||
просто будет создан список хостов заданной сети без посылки каких-либо пакетов целевым машинам. По умолчанию
|
||
Nmap все же будет осуществлять обратное разрешение DNS с целью узнавания имен хостов. Часто бывает
|
||
удивительно, как много полезной информации могут содержать обычные имена хостов. Например,
|
||
<literal moreinfo="none">fw.chi</literal> это имя брандмауэра одной Чикагской компании.
|
||
<indexterm significance="normal"><primary>DNS</primary><secondary>records as source of information</secondary></indexterm>
|
||
В конце Nmap также сообщает общее количество IP адресов. Этот тип сканирования также является хорошим способом
|
||
проверить, что вы действительно знаете IP адреса необходимых вам целей. Если имена хостов содержат неизвестные
|
||
вам доменные имена, то стоит провести дальнейшее исследование, чтобы избежать сканирования сети не той
|
||
компании, которая вам нужна.</para>
|
||
|
||
<para>Т.к. целью является просто составление списка целевых хостов, то опции с большим уровнем
|
||
функциональности, такие как сканирование портов, определение ОС или пинг сканирование не могут сочетаться с
|
||
рассматриваемой опцией. Если вы хотите отключить пинг сканирование, но хотите использовать опции с таким
|
||
высоким уровнем функциональности, то почитайте об опции <option>-PN</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sP</option> (Пинг сканирование)
|
||
<indexterm significance="normal"><primary><option>-sP</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>ping scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Эта опция указывает Nmap произвести пинг сканирование (определение хостов), а затем вывести список
|
||
доступных хостов, т.е. тех, которые ответили на запросы. Определение маршрутов и NSE скрипты также
|
||
используются, если необходимо, однако дальнейшее тестирование (как сканирование портов или определение ОС)
|
||
не производится. По умолчанию эта опция считается как бы на один шаг более тщательной, чем сканирование
|
||
с целью составления простого списка хостов, и может быть использована в этих же целях. Она позволяет
|
||
произвести исследование целевой сети без привлечения внимания. Знание, какие хосты в сети в данный момент
|
||
работают, для атакующих ценне, чем просто список IP адресов и сетевых имен, предоставляемых
|
||
опцией -sL.</para>
|
||
|
||
<para>Эта опция также полезна системным администраторам. Она может быть использована для подсчета
|
||
количества работающих в сети машин или мониторинга доступности сервера. Это часто называют "пинг чисткой"
|
||
(ping sweep) и результаты, предоставляемые этой опцией, заслуживают больше доверия, чем обычное пингование
|
||
широковещательных адресов, т.к. большинство хостов не отвечают на подобные запросы.</para>
|
||
|
||
<para>По умолчанию опцией <option>-sP</option> посылаются запрос на ICMP это ответ и TCP ACK пакет на порт
|
||
80. Когда используется непривилегированным пользователем, посылается только SYN пакет
|
||
(используя системные вызов <function moreinfo="none">connect</function>) на порт 80 целевой машины.
|
||
Когда привилегированный пользователь производит сканирование целей локальной сети, то используются ARP
|
||
запросы до тех пор, пока не будет задано <option>--send-ip</option>. Для большей гибкости опция
|
||
<option>-sP</option> может быть скомбинирована с любой из опций <option>-P*</option> (за исключением
|
||
<option>-PN</option>). Если используется какой-либо из этих типов запросов и опции для задания номеров
|
||
портов, то запросы по умолчанию (ACK и это ответы) опускаются. Когда между машиной с Nmap и целевой сетью
|
||
расположен строгий брандмауэр, то рекомедуется использование таких расширенных методов сканирования.
|
||
Иначе некоторые из хостов могут быть не определены, т.к. брандмауэр заблокировал запрос или ответ.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-PN</option> (Не использовать пинг сканирование)
|
||
<indexterm significance="normal"><primary><option>-PN</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>host discovery</primary><secondary>disabling</secondary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Указывает Nmap полностью пропустить этап обнаружения хостов. Обычно, Nmap использует этот этап для
|
||
обнаружения активных машин, к которым можно применить более углубленное сканирование. По умолчанию Nmap
|
||
производит углубленное сканирование, такое как сканирование портов, определение версии или определение ОС
|
||
только обнаруженных работающих хостов. После отключения этапа обнаружения хостов опцией <option>-PN</option>,
|
||
Nmap будет производить сканирование <emphasis>каждого</emphasis> заданого целевого IP адреса.
|
||
Так что, если для сканирования будет определена сеть с адресным пространством класса B (/16), то будет
|
||
произведено сканирование всех 65,536 IP адресов. Т.к. этап обнаружения хостов и составления списка целей
|
||
сканирования пропущен, то Nmap будет исполнять запрошенные функции, как если бы каждый IP адрес был активен.
|
||
Для машин локальной сети будет произведено ARP сканирование (пока не зададите <option>--send-ip</option>),
|
||
т.к. Nmap необходимы MAC адреса для дальнейшего сканирования целевых хостов. Раньше эта опция задавалась
|
||
флагом <option>P0</option> (используется нуль), но была переименова, чтобы избежать путаницы с
|
||
пингованием с использованием IP протокола <option>PO</option> (используется буква O).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-PS <replaceable>список_портов</replaceable></option> (TCP SYN пингование)
|
||
<indexterm significance="normal"><primary><option>-PS</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>SYN ping</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Эта опция посылает пустой TCP пакет с установленным SYN флагом. Порт по умолчанию - 80 (можно задать
|
||
во время компилирования изменяя <varname>DEFAULT_TCP_PROBE_PORT_SPEC</varname>
|
||
<indexterm significance="normal"><primary><varname>DEFAULT_TCP_PROBE_PORT_SPEC</varname></primary></indexterm>
|
||
в <filename moreinfo="none">nmap.h</filename>).
|
||
<indexterm significance="normal"><primary><filename moreinfo="none">nmap.h</filename></primary></indexterm>
|
||
Альтернативные порты задаются в качестве параметров. Синтаксис такой же как и для опции <option>-p</option>
|
||
за исключением того, что спецификаторы типа <literal moreinfo="none">T:</literal> недопустимы. Примеры:
|
||
<option>-PS22</option> и <option>-PS22-25,80,113,1050,35000</option>. Имейте в виду, что между списком
|
||
портов и <option>-PS</option> не должно быть пробела. Если заданы несколько запросов, то они будут посланы
|
||
параллельно.</para>
|
||
|
||
<para>Установленные флаг SYN указывает удаленной системе, что вы пытаетесь установить соединение. Если порт
|
||
назначения закрыт, то в ответ посылается RST (сброс) пакет. Если порт открыт, то удаленная система
|
||
предпримет второй шаг в 3-ех этапной последовательности установки TCP соединения путем ответа
|
||
<indexterm significance="normal"><primary>three-way handshake</primary></indexterm>
|
||
SYN/ACK TCP пакетом. Система, на которой работает Nmap, сбрасывает почти установленное соединение отвечая RST
|
||
пакетом вместо ACK, что привело бы к установке полного соединения. RST пакет посылается ядром системы, на
|
||
которой работает Nmap, в ответ на непредвиденный SYN/ACK пакет, а не самой Nmap.</para>
|
||
|
||
<para>Nmap не важно открыт порт или закрыт. Ответы пакетами RST или SYN/ACK описанными выше, указывают
|
||
Nmap на то, что хост доступен и может отвечать на запросы.</para>
|
||
|
||
<para>На Unix машинах, только пользователь с правами
|
||
<literal moreinfo="none">root</literal><indexterm significance="normal"><primary>privileged users</primary></indexterm>, как правило, может посылать и принимать сырые TCP пакеты.<indexterm significance="normal"><primary>raw packets</primary></indexterm>
|
||
Для непривилегированного пользователя<indexterm significance="normal">
|
||
<primary>unprivileged users</primary><secondary>limitations of</secondary></indexterm> для каждого целевого
|
||
порта инициируется системный вызов <function moreinfo="none">connect</function>. Поэтому при попытке
|
||
установить соединение на целевой хост посылается SYN пакет. Если на вызов
|
||
<function moreinfo="none">connect</function> приходит быстрый ответ или отказ типа ECONNREFUSED, значит
|
||
TCP стек получил SYN/ACK или RST пакет, и хост помечается как доступный. Если соединение не устанавливается
|
||
по причине истечения времени (timeout), то хост помечается как не работающий. Этот механизм также
|
||
используется для соединений с использованием протокола IPv6, т.к. построение сырых пакетов IPv6 еще не
|
||
реализовано в Nmap.<indexterm significance="normal"><primary>IPv6</primary><secondary>limitations of</secondary></indexterm>
|
||
</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-PA <replaceable>список_портов</replaceable></option> (TCP ACK пингование)
|
||
<indexterm significance="normal"><primary><option>-PA</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>ACK ping</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Этот тип пингования очень похож на описанный выше. Разница состоит в том, как вы могли догадаться, что
|
||
вместо установки SYN флага устанавливается TCP ACK флаг. Такой ACK пакет имеет своей целью распознавание
|
||
данных во время установленного TCP соединения, но такого соединения не существует, поэтому удаленные хосты
|
||
всегда будут отвечат на такой запрос RST пакетом, тем самым выдавая свое существование.</para>
|
||
|
||
<para>Опция <option>-PA</option> использует тот же порт по умолчанию, что и SYN запросы (80), и так же может
|
||
принимать в качестве параметра список портов в том же формате. Если эту опцию пытается использовать
|
||
непривилегированный пользователь или задана цель в формате IPv6, то используется механизм с использованием
|
||
вызова <function moreinfo="none">connect</function> описанный выше. Этот механизм несовершенен, т.к. при
|
||
использовании вызова <function moreinfo="none">connect</function> вместо ACK пакета посылается SYN.</para>
|
||
|
||
<para>Причина, по которой Nmap предоставляет оба типа пингования (SYN и ACK), состоит в повышении шансов
|
||
обхода брандмауэров. Многие администраторы конфигурируют роутеры или другие простые брандмауэры на блокировку
|
||
входящих SYN пакетов за исключением тех, что предназначены для публичных служб, таких как веб сайт или
|
||
почтовый сервер. Тем самым предотвращаются все остальные соединения, и в то же время пользователи могут
|
||
беспрепятственно выходить в Интернет. Такой подход не требует много ресурсов от брандмауэров/роутеров и
|
||
широко поддерживается различными аппаратными и программными фильтрами. <indexterm significance="normal"><primary>iptables</primary></indexterm>
|
||
для реализации такого подхода имеет опцию <option>--syn</option>. Когда брандмауэр использует такие правила,
|
||
то запросы с установленным флагом SYN (<option>-PS</option>), посланные на закрытые порты, с большой
|
||
вероятностью будут заблокированы. В таких случаях более выгодно использовать запросы с флагом ACK, т.к.
|
||
они не попадают под эти правила.</para>
|
||
|
||
<para>Другим популярным типом сетевого экрана является брандмауэр блокирующий все непредвиденные пакеты.
|
||
Изначально эта функция поддерживалась только в наиболее продвинутых брандмауэрах, хотя с годами она становится
|
||
все популярнее. Использующийся в Linux сетевой экран Netfilter/iptables реализует этот механизм с помощью
|
||
опции <option>--state</option>, которая категоризирует пакеты в зависимости от состояния соединения. Против
|
||
таких систем лучше использовать пакеты SYN, т.к. непредвиденные пакеты ACK с большой вероятностью будут
|
||
распознаны как фиктивные и заблокированы. Решение такого затруднительного положение состоит в том, чтобы
|
||
посылать и SYN и ACK запросы путем задания опций <option>-PS</option> и <option>-PA</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-PU <replaceable>список_портов</replaceable></option> (UDP пингование)
|
||
<indexterm significance="normal"><primary><option>-PU</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>UDP ping</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Еще одной функцией используемой для обнаружения хостов является UDP пингование, которая посылает пустой
|
||
(пока не задана опция <option>--data-length</option>) UDP пакет на данные порты. Список портов задается в том
|
||
же формает, что и для описанных выше опций <option>-PS</option> и <option>-PA</option>. Если порты не заданы,
|
||
то по умолчанию используется 31338. Порт по умолчанию может быть задан во время компиляции путем изменения
|
||
<varname>DEFAULT_UDP_PROBE_PORT_SPEC</varname><indexterm significance="normal"><primary>
|
||
<varname>DEFAULT_UDP_PROBE_PORT_SPEC</varname></primary></indexterm>
|
||
в <filename moreinfo="none">nmap.h</filename>.
|
||
<indexterm significance="normal"><primary><filename moreinfo="none">nmap.h</filename></primary></indexterm>
|
||
По умолчанию выбран не распростаненный порт, т.к. отправка запросов на открытые порты нежелательна для
|
||
этого типа сканирования.</para>
|
||
|
||
<para>Целью запроса UDP является получение в ответ ICMP пакета с ошибкой "порт недостижим". Это указывает
|
||
Nmap на то, что машина работает и доступна. Другие типы ICMP ошибок, такие как хост/сеть недоступна или
|
||
превышение TTL указывают на то, что машина выключена или недоступна. Отсутствие ответа интерпретируется
|
||
этим же путем. Если такой запрос посылается на открытый порт, то большинство служб просто игнорируют пустой
|
||
пакет и не посылают никакого ответа. Поэтому портом по умолчанию является 31338, т.к. он вряд ли будет
|
||
использоваться какой-либо службой. Лишь некоторые службы, такие как Character Generator (chargen) protocol,
|
||
ответят на пустой UDP пакет, и это также укажет Nmap на то, что машина доступна.</para>
|
||
|
||
<para>Основным преимуществом такого типа сканирования является то, что он позволяет обходить брандмауэры,
|
||
фильтрующие только TCP запросы. Например, однажды у меня был беспроводной широкополосный роутер
|
||
Linksys BEFW11S4. Внутренний интерфейс этого устройства фильтровал по умолчанию все TCP порты, в то время
|
||
как в ответ на UDP запросы посылалось сообщение об ошибке "порт недостижим", что делало его работу
|
||
бесполезной.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-PE</option>;
|
||
<option>-PP</option>;
|
||
<option>-PM</option> (Типы пинг пакетов ICMP)
|
||
<indexterm significance="normal"><primary><option>-PE</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-PP</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-PM</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>ICMP ping</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>В дополнении к нестандратным методам обнаружения хостов с помощью TCP и UDP запросов, Nmap может
|
||
посылать и стандартные пакеты, используемые вездесущей программой
|
||
<application moreinfo="none">ping</application>. Nmap посылает ICMP пакет типа 8 (эхо запрос) на целевой
|
||
IP адрес, ожидая в ответ от доступного хоста пакет типа 0 (эхо ответ).<indexterm significance="normal">
|
||
<primary>ICMP echo</primary></indexterm> К сожалению для сетевых исследователей, многие хосты и брандмауэры
|
||
теперь блокируют такие пакеты вместо того, чтобы ответить на них, как это требуется в
|
||
<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc1122.txt">RFC 1122</ulink>. По этой причине
|
||
сканеры использующе только ICMP запросы редко бывают полезны при сканировании неизвестных целей в Интернете.
|
||
Но они могут быть полезны системным администраторам, занимающимся мониторингом внутренней сети. Используйте
|
||
опцию <option>-PE</option>, чтобы активировать такой тип сканирования.</para>
|
||
|
||
<para>Но Nmap использует не только стандратный эхо запрос. В стандарте ICMP
|
||
(<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc792.txt">RFC 792</ulink>) также определены
|
||
запросы временной метки, информационные запросы и запросы адресной маски с кодами 13, 15 и 17 соответственно.
|
||
Хотя они служат для того, чтобы узнать какую-либо информацию, такую как адресную маску или текущее время, они
|
||
могут быть легко применены для обнаружения целей. Система, которая отвечает на них, работает и доступна. В
|
||
настоящее время Nmap не использует информационные запросы, т.к. они не получиил широкого распространения.
|
||
Стандарт RFC 1122 наставивает на том, что <quote>хост НЕ ДОЛЖЕН посылать такие сообщения</quote>. Запросы
|
||
временной метки или адресной маски могут быть посланы путем задания опций <option>-PP</option> и
|
||
<option>-PM</option> соответственно. Ответ на запрос временной метки (ICMP код 14) или на запрос адресной
|
||
маски (код 18) указывают на то, что хост доступен. Эти запросы могут быть полезны, когда администраторы
|
||
блокируют пакеты эхо запросов, но забывают о том, что другие типы ICMP запросов могут быть использованы в
|
||
тех же целях.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-PO <replaceable>список_протоколов</replaceable></option> (пингование с использованием IP протокола)
|
||
<indexterm significance="normal"><primary><option>-PO</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>IP protocol ping</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Новейшей опцией для обнаружения хостов является пингование с использованием IP протокола, которая
|
||
посылает IP пакеты с номером протокола, указанным в заголовке пакета. Список протоколов задается в том же
|
||
формате, что и список портов в описанных выше опциях обнаружения хостов с помощью протоколов TCP и UDP. Если
|
||
не указан ни один протокол, то по умолчанию будут использованы IP пакеты ICMP (протокол 1),
|
||
IGMP (протокол 2) и IP-in-IP (протокол 4). Протоколы по умолчанию могут быть заданы во время компиляции
|
||
путем изменения
|
||
<varname>DEFAULT_PROTO_PROBE_PORT_SPEC</varname><indexterm significance="normal">
|
||
<primary><varname>DEFAULT_PROTO_PROBE_PORT_SPEC</varname></primary></indexterm>
|
||
в <filename moreinfo="none">nmap.h</filename>.<indexterm significance="normal">
|
||
<primary><filename moreinfo="none">nmap.h</filename></primary></indexterm>
|
||
Имейте в виду, что для ICMP, IGMP, TCP (протокол 6) и UDP (протокол 17), пакеты посылаются с "правильными"
|
||
заголовками протокола, в то время как для остальных протоколов пакеты посылаются без дополнительной
|
||
информации после IP заголовка (пока не задана опция <option>--data-length</option>).</para>
|
||
|
||
<para>При использовании этого метода ожидаются ответы по протоколу исходного запроса, либо ICMP сообщение
|
||
о недостижимости, что свидетельствует о том, что данный протокол не поддерживается удаленным хостом. Оба
|
||
варианта ответа означают, что целевой хост доступен.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-PR</option> (ARP пингование)
|
||
<indexterm significance="normal"><primary><option>-PR</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>ARP ping</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Одной из наиболее популярных сфер применения Nmap является сканирование локальных сетей (LAN). В
|
||
большинстве локальных сетей, особенно тех, которые используют диапазоны частных адресов определенные в
|
||
<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc1918.txt">RFC 1918</ulink>, большое количество
|
||
IP адересов не используется в любой момент времени. Когда Nmap пытается послать сырой IP пакет, такой как
|
||
ICMP эхо запрос, операционная система должна определить MAC-адрес (ARP) соответствующий целевому IP,
|
||
чтобы правильно адресовать фрейм. Это часто бывает медленно и проблематично, т.к. операционные системы
|
||
не были написаны с учетом того, что им придется посылать миллионы ARP запросов недоступным хостам в
|
||
короткий промежуток времени. </para>
|
||
|
||
<para>ARP сканирование позволяет Nmap вместо ARP запросов использовать свои собственные оптимизированные
|
||
алгоритмы. И если Nmap получает ответ, то ей даже нет необходимости беспокоиться о других типах обнаружения
|
||
хостов, основанных на IP пакетах. Этот делает ARP сканирование более быстрым и надежным. Поэтому оно
|
||
применяется по умолчанию для сканирования локальных сетей. Даже если указаны другие типы сканирования
|
||
(как <option>-PE</option> или <option>-PS</option>), Nmap все равно использует ARP сканирование для
|
||
машин локальной сети. Если вы абсолютно не хотите использовать такой тип сканирования, то задайте опцию
|
||
<option>--send-ip</option>.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--traceroute</option> (Отслеживать путь к хосту)
|
||
<indexterm significance="preferred"><primary><option>--traceroute</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>traceroute</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>
|
||
Отслеживание осуществляется после сканирования, используя результаты этого сканирования для определения порта и
|
||
протокола, с помощью которых можно будет достичь цели. Процедура работает со всеми типами сканирования кроме
|
||
сканирования с использованием системного вызова connect (<option>-sT</option>) и "ленивого" (idle) сканирования
|
||
(<option>-sI</option>). Все отслеживания используют динамическую модель таймингов Nmap и осуществляются параллельно.
|
||
</para>
|
||
|
||
<para>
|
||
Процедура отслеживания маршрута работает путем посылки пакетов с низким TTL (time-to-live (временем-жизни) в попытке
|
||
получить в ответ ICMP сообщение Time Exceeded (Превышение Времени Жизни) от промежуточных узлов между сканером и
|
||
целевым хостом. Стандартные реализации процедуры отслеживания маршрута начинают с TTL равным 1, а затем увеличивают
|
||
его до тех пор, пока не будет достигнут целевой хост. В реализации же этой процедуры в Nmap сначала устанавливается
|
||
высокий TTL, а затем TTL уменьшается, пока не станет равным 0. Это позволяет Nmap использовать "умные" алгоритмы
|
||
кэширования с целью увеличения скорости отслеживания маршрута. В среднем Nmap посылает 5-10 пакетов на хост, в
|
||
зависимости от условий в сети. В случае сканирования единственной подсети (напр. 192.168.0.0/24), возможно будет
|
||
необходимо послать только один пакет на каждый хост.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--reason</option> (Показать причины состояний портов и хостов)
|
||
<indexterm significance="normal"><primary><option>--reason</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>
|
||
Показывает информацию о причинах, по которым каждый порт установлен в какое-либо состояние, и по которым каждый хост
|
||
работает или нет. Эта опция выводит тип пакета, по которому было определено состояние порта или хоста. Например,
|
||
<literal moreinfo="none">RST</literal> пакет от закрытого порта или эхо ответ от работающего хоста. Информация, которую
|
||
может предоставить Nmap, определяется типом сканирования или пингования. SYN сканирование и SYN пингование
|
||
(<option>-sS</option> и <option>-PS</option>) описываются очень детально, а информация о сканировании с использованием TCP соединений (<option>-sT</option>) ограничена реализацией системного вызова
|
||
<function moreinfo="none">connect</function>. Эта функция автоматически активируется при использовании опции отладки
|
||
(<option>-d</option>)<indexterm significance="normal"><primary><option>--reason</option></primary><secondary>implied by <option>-d</option></secondary></indexterm>,
|
||
и результаты ее работы хранятся в XML файлах, даже если эта опция не была задана.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-n</option> (Не производить разрешение DNS имен)
|
||
<indexterm significance="normal"><primary><option>-n</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap <emphasis>никогда</emphasis> не производить обратное разрешение DNS
|
||
<indexterm significance="normal"><primary>reverse DNS</primary><secondary>disabling with <option>-n</option>
|
||
</secondary></indexterm> имен каждого обнаруженного активного IP адереса. Преобразование DNS может быть
|
||
медленным даже со встроенным в Nmap параллельным преобразователем IP адресов, поэтому данная опция может
|
||
сократить время сканирования.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-R</option> (Производить разрешение DNS имен для всех целей)
|
||
<indexterm significance="normal"><primary><option>-R</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Указыват Nmap <emphasis>всегда</emphasis> производить обратное разрешение DNS имен для каждого целевого
|
||
IP адреса. Обычно DNS преобразование применяется только к доступным хостам.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--system-dns</option> (Использовать системный DNS преобразователь)
|
||
<indexterm significance="preferred"><primary><option>--system-dns</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>По умолчанию Nmap преобразует IP адреса путем посылки запросов непосредственно серверам имен, указанным
|
||
в вашей системе, и последующим анализом ответов. Многие запросы (часто десятки) исполняются параллельно для
|
||
увеличения производительности. Задайте эту опцию, чтобы использовать ваш системный преобразователь IP адресов
|
||
(один IP адрес за один системный вызов <function moreinfo="none">getnameinfo</function>). Это медленно и
|
||
редко бывает полезно, до тех пор, пока вы не найдете ошибку в параллельном преобразователе Nmap (если найдете,
|
||
известите нас, пожалуйста). Системный преобразователь всегда используется для сканирования с использованием
|
||
протокола IPv6.
|
||
<indexterm significance="normal"><primary>IPv6</primary><secondary>limitations of</secondary></indexterm>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--dns-servers <replaceable>server1</replaceable><optional>,<replaceable>server2</replaceable><optional>,...</optional></optional>
|
||
</option> (Сервера для обратного разрешения DNS)
|
||
<indexterm significance="preferred"><primary><option>--dns-servers</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>По умолчанию Nmap определяет DNS сервера (для разрашения rDNS) из вашего resolv.conf файла (Unix) или
|
||
из реестра (Win32). Вы можете использовать эту опцию для задания альтернативных серверов. Эта опция
|
||
игнорируется, если вы используете <option>--system-dns</option> или сканирование по протоколу IPv6.
|
||
Использование нескольких DNS серверов частно увеличивает скорость сканирования, особенно если вы выбираете
|
||
официальные сервера для IP пространства вашей цели. Эта опция также может увеличить незаметность, т.к. ваши
|
||
запросы могут быть перенаправлены любым рекурсивным DNS сервером в Интернете.</para>
|
||
|
||
<para>Эта опция также бывает полезна при сканировании частных сетей. Иногда лишь некоторые сервера имен
|
||
предоставляют правильную rDNS информацию, и вы можете даже не знать, где они. Вы можете просканировать сеть
|
||
на наличие открытого порта 53 (возможно с помощью фукнкции определения версии), затем попробовать составить
|
||
список (<option>-sL</option>) указывая по очереди все сервера имен в опции <option>--dns-servers</option>
|
||
до тех пор, пока не найдете тот, который работает.</para>
|
||
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
<indexterm class="endofrange" startref="man-host-discovery-indexterm" significance="normal"/>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-port-scanning-basics">
|
||
<title>Основы сканирования портов</title>
|
||
|
||
<para>Хотя Nmap постоянно наращивала функциональность,
|
||
изначально утилита разрабатывалась как эффективный сканер портов,
|
||
и она по-прежнему сохраняет свои основные функции. Простой командой <command moreinfo="none">nmap
|
||
<replaceable>цель сканирования</replaceable></command> будет произведено сканирование более чем
|
||
1660 TCP портов на <replaceable>целевой машине</replaceable>. В то время как многие сканеры портов
|
||
традиционно разделяют все порты на закрытые и открытые, Nmap имеет более подробную шкалу деления.
|
||
Она подразделяет порты на шесть состояний: <literal moreinfo="none">открыт</literal>,
|
||
<literal moreinfo="none">закрыт</literal>, <literal moreinfo="none">фильтруется</literal>,
|
||
<literal moreinfo="none">не фильтурется</literal>,
|
||
<literal moreinfo="none">открыт|фильтруется</literal> или
|
||
<literal moreinfo="none">закрыт|фильтруется</literal>.</para>
|
||
|
||
<para>Эти состояния не являются собственно характеристиками самих портов, а лишь описывают, как Nmap видит их.
|
||
Например, сканирование из той же сети, что и цель, может показать, что порт
|
||
<literal moreinfo="none">135/tcp</literal> открыт, в то время как сканирование из Интернета в то же время и с теми же
|
||
опциями может показать, что порт <literal moreinfo="none">фильтруется</literal>.</para>
|
||
|
||
<variablelist><title>Шесть состояний портов распознаваемых Nmap</title>
|
||
|
||
<varlistentry><term>
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">open</literal> port state</primary></indexterm>
|
||
открыт (open)</term>
|
||
<listitem><para>Приложение принимает запросы на TCP соединение или UDP пакеты на этот порт.
|
||
Обнаружение этого состояния обычно является основной целью сканирования. Люди разбирающиеся в безопасности знают,
|
||
что каждый открытый порт это прямой путь к осуществлению атаки. Атакующие хотят использовать открытые порты, а
|
||
администраторы пытаются закрыть их или защитить с помощью брадмауэров так, чтобы не мешать работе обычных
|
||
пользователей. Октрытые порты также интересны с точки зрения сканирования, не связанного с безопасностью, т.к. они
|
||
позволяют определить службы доступные в сети.
|
||
</para></listitem></varlistentry>
|
||
|
||
<varlistentry><term>
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">closed</literal> port state</primary></indexterm>
|
||
закрыт (closed)</term>
|
||
|
||
<listitem><para>Закрытый порт доступен (он принимает и отвечает на запросы Nmap), но не используется каким-либо
|
||
приложением. Они могут быть полезны для установления, что по заданному IP адресу есть работающий хост (определение
|
||
хостов, ping сканирование), или для определения ОС. Т.к. эти порты достижимы, может быть полезным произвести
|
||
сканирование позже, т.к. некоторые из них могут открыться. Администраторы могут заблокировать такие порты с
|
||
помощью брандмауэров. Тогда их состояние будет определено как фильтруется, что обсуждается далее.
|
||
</para></listitem></varlistentry>
|
||
|
||
<varlistentry><term>
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">filtered</literal> port state</primary></indexterm>
|
||
фильтруется (filtered)</term>
|
||
|
||
<listitem><para>Nmap не может определить, открыт ли порт, т.к. фильтрация пакетов не позволяет достичь запросам
|
||
Nmap этого порта. Фильтрация может осуществляться выделенным брадмауэром, правилами роутера или брандмауэром на
|
||
целевой машине. Эти порты бесполезны для атакующих, т.к. предоставляют очень мало информации. Иногда они отвечают
|
||
ICMP сообщениями об ошибке, такими как тип 3 код 13 (destination unreachable: communication administratively
|
||
prohibited (цель назначения недоступна: связь запрещена администратором)), но чаще встречаются фильтры, которые
|
||
отбрасывают запросы без предоставления какой-либо информации. Это заставляет Nmap совершить еще несколько
|
||
запросов, чтобы убедиться, что запрос был отброшен фильтром, а не затором в сети. Это очень сильно замедляет
|
||
сканирование.</para></listitem></varlistentry>
|
||
|
||
<varlistentry><term>
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">unfiltered</literal> port state</primary></indexterm>
|
||
не фильтруется (unfiltered)</term>
|
||
<listitem><para>Это состояние означает, что порт доступен, но Nmap не может определить открыт он или закрыт.
|
||
Только ACK сканирование, используемое для определения правил брандмауэра, может охарактеризовать порт этим состоянием.
|
||
Сканирование не фильтруемых портов другими способами, такими как Window сканирование, SYN сканирование или FIN
|
||
сканирование может помочь определить, является ли порт открытым.
|
||
</para></listitem></varlistentry>
|
||
|
||
<varlistentry><term>
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">open|filtered</literal> port state</primary></indexterm>
|
||
открыт|фильтруется (open|filtered)</term>
|
||
<listitem><para>Nmap характеризует порт таким состоянием, когда не может определить октрыт порт или фильтруется.
|
||
Это состояние возникает при таких типах сканирования, при которых открытые порты не отвечают. Отсутствие ответа
|
||
также может означать, что пакетный фильтр не пропустил запрос или ответ не был получен. Поэтому Nmap не может
|
||
определить наверняка открыт порт или фильтруется. При сканировании UDP, по IP протоколу, FIN, NULL, а также Xmas
|
||
порт может быть охарактеризован таким состоянием.</para></listitem></varlistentry>
|
||
|
||
<varlistentry><term>
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">closed|filtered</literal> port state</primary></indexterm>
|
||
закрыт|фильтруется (closed|filtered)</term>
|
||
<listitem><para>Это состояние используется, когда Nmap не может определить закрыт порт или фильтруется.
|
||
Используется только при сканировании IP ID idle типа.</para></listitem></varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-port-scanning-techniques">
|
||
<title>Различные приемы сканирования портов</title>
|
||
|
||
<para>Как новичок в автомобильном деле, я могу часами биться в попытках использовать свои элементарные инструменты
|
||
(молоток, клейкая лента, гаечный ключ и т.д.) для решения какой-либо проблемы. Когда все мои попытки с крахом
|
||
проваливаются, и я буксирую свою развалюху к настоящему механику, он неизменно достает из большой коробки с интрументами
|
||
какую-нибудь штуковину, и сразу складывается впечатление, что решение проблемы не требует много усилий. Искусство
|
||
сканирования портов очень на это похоже. Эксперты понимают дюжины различных приемов сканирования портов и выбирают для конкретной задачи подходящий (или комбинацию из нескольких). Неопытные пользователи и script kiddies,
|
||
<indexterm significance="normal"><primary>script kiddies</primary></indexterm>
|
||
пытаются решить все задачи с помощью используемого по умолчанию SYN сканирования. Т.к. Nmap является бесплатной, то
|
||
единственным барьером на пути к овладению техникой сканирования портов является знание. Это все же лучше чем в мире
|
||
автомобилей, где, когда вам наконец-то удается определить, что вам необходимо какое-либо устройство, вам еще надо
|
||
будет заплатить за него тысячу долларов.</para>
|
||
|
||
<para>Большинство типов сканирования доступны только привилегированным пользователям,
|
||
<indexterm significance="normal"><primary>privileged users</primary></indexterm>
|
||
потому что посылаются и принимаются сырые пакеты,
|
||
<indexterm significance="normal"><primary>raw packets</primary></indexterm>
|
||
что требует прав пользователя root на Unix системах. Под Windows рекомендуется работать с учетной записью
|
||
администратора, хотя иногда Nmap работает и с непривилегированными пользователя, когда в ОС уже загружена утилита
|
||
WinPcap. Требование root привилегий было серьезным ограничением, когда Nmap была выпущена в свет в 1997, т.к. многие
|
||
пользователи имели доступ только к разделяемым аккаунтам. Сейчас мир изменился. Компьютеры стали дешевле, многие
|
||
пользователи имеют постоянный доступ в Интернет, а Unix системы для домашних компьютеров (включая Linux и Mac OS X)
|
||
теперь широко распространены. Также теперь доступна Windows версия Nmap, что позволяет запускать ее на еще большем
|
||
количестве компьютеров. По этим причинам, пользователям нет необходимости запускать Nmap с разделяемых аккаунтов.
|
||
Это большая удача, т.к. функции требующие привилегированного доступа делают Nmap намного более мощной и гибкой.</para>
|
||
|
||
<para>Когда Nmap предпринимает попытку выдать правильные результаты, надо иметь ввиду, что вся информация базируется
|
||
на пакетах, возвращенных целевыми машинами (или брандмауэром перед ними). Такие хосты могут быть ненадежными и
|
||
посылать ответы с целью ввести Nmap в забдуждение. Намного более распространным случаем являются не совместимые с
|
||
RFC хосты, которые отвечают на запросы Nmap не так, как должны. Сканирования типа FIN, NULL и Xmas наиболее
|
||
восприимчивы к такого рода проблемам. Такие сложности специфичны только для определенных типов сканирования, и поэтому
|
||
обсуждаются в посвященных им разделах.</para>
|
||
|
||
<para>В этом разделе описываются около дюжины способов сканирования портов поддерживаемых Nmap. В любой момент времени
|
||
вы можете использовать только один метод; исключение составляет UDP сканирование (<option>-sU</option>), которое может
|
||
быть скомбинировано с любым типом TCP сканирования. В качестве памятки имейте ввиду, что различные опции сканирования
|
||
портов задаются в форме <option>-s<replaceable>C</replaceable></option>, где <replaceable>C</replaceable> это символ
|
||
из названия какого-либо типа сканирования, обычно первый. Единственное исключение это FTP bounce сканирование
|
||
(<option>-b</option>). По умолчанию Nmap осуществляет SYN сканирование; этот тип сканирования заменяет сканирование с
|
||
использованием соединения для пользователей не имеющих достаточных привилегий для отправки сырых пакетов (требует
|
||
root доступа в Unix), или если были заданы цели в формате IPv6. Среди описанных ниже типов сканирования,
|
||
непривилегированные пользователи могут осуществлять только сканирование с использованием соединения и FTP bounce
|
||
сканирование.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sS</option> (TCP SYN сканирование)
|
||
<indexterm significance="normal"><primary><option>-sS</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>SYN scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>SYN это используемый по умолчанию и наиболее популярный тип сканирования. На то есть несколько причин. Он может
|
||
быть быстро запущен, он способен сканировать тысячи портов в секунду при быстром соединении, его работе не препятствуют
|
||
ограничивающие бранмауэры. Этот тип сканирования относительно ненавящив и незаметен, т.к. при таком сканировании TCP
|
||
соединение никогда не устанавливается до конца. Он работает с любым TCP стеком, не завися от каки-либо особенностей
|
||
специфичной платформы, как это происходит при сканированиях типа FIN/NULL/Xmas, Maimon и idle сканировании. Он также
|
||
предоставляет ясную и достоверную дифференциацию между состояниями <literal moreinfo="none">открыт</literal>,
|
||
<literal moreinfo="none">закрыт</literal> и <literal moreinfo="none">фильтруется</literal>.</para>
|
||
|
||
<para>Эту технику часто называют сканированием с использованием полуотрытых соединений, т.к. вы не открываете
|
||
полного TCP соединения. Вы посылаете SYN пакет, как если бы вы хотели установить реальное соединение и ждете. Ответы
|
||
SYN/ACK указывают на то, что порт прослушивается (открыт), а RST (сброс) на то, что не прослушивается. Если после
|
||
нескольких запросов не приходит никакого ответа, то порт помечается как фильтруемый. Порт также помечается как
|
||
фильтруемый, если в ответ приходит ICMP сообщение об ошибке недостижимости (тип 3, код 1,2, 3, 9, 10 или 13).</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sT</option> (TCP сканирование с использованием системного вызова connect)
|
||
<indexterm significance="normal"><primary><option>-sT</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>connect scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Это используемый по умолчанию тип TCP сканирования, когда недоступно SYN сканирование. Это происходит в случае,
|
||
когда у пользователя нет привилегий для использования сырых пакетов или при сканировании IPv6 сетей. Вместо того,
|
||
чтобы использовать сырые пакеты, как это происходит при большинстве других типов сканирования, Nmap "просит"
|
||
операционную систему установить соединение с целевой машиной по указанному порту путем системного вызова
|
||
<function moreinfo="none">connect</function>. Это такой же высокоуровневый системный вызов, используемый браузерами,
|
||
P2P клиентами и другими приложениями для установки соединения. Этот вызов является частью программируемого интерфейса,
|
||
известного как Berkeley Sockets API. Вместо того, чтобы считывать ответы в форме сырых пакетов, Nmap использует этот
|
||
API для получения информации о статусе каждой попытки соединения.</para>
|
||
|
||
<para>При доступности SYN сканирования, оно, безусловно, будет являться лучшм выбором. У Nmap имеется меньше
|
||
возможностей контролирования высокоуровнего вызова <function moreinfo="none">connect</function> по сравнению с
|
||
сырыми пакетами, что делает его менее эффективным. Системный вызов завершает соединения по открытым портам, вместо
|
||
того, чтобы использовать полуоткрытые соединения, как в случае с SYN сканированием. Таким образом на получение
|
||
той же самой информации потребуется больше времени и пакетов, да к тому же целевые машины скорее всего запишут это
|
||
соединение в свои логи. То же самое сделает и порядочная IDS, хотя большинство машин не имеют такой системы защиты.
|
||
Многие службы на вашей Unix системе будут добавлять запись в системный лог (syslog), а также сообщение об ошибке,
|
||
когда Nmap будет устанавливать и закрывать соединение без отправления данных. Некоторые службы даже аварийно завершают
|
||
свою работу, когда это происходит, хотя это не является обычной ситуацией. Администратор, который увидит в логах
|
||
группу записей о попытке установки соединения от одной и той же системы, должен знать, что его машина подверглась
|
||
такому типу сканирования.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sU</option> (Различные типы UDP сканирования)
|
||
<indexterm significance="normal"><primary><option>-sU</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>UDP scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>В то время как большинство сервисов Интернета используют TCP протокол,
|
||
<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc768.txt">UDP</ulink> службы также широко распространены.
|
||
Тремя наиболее популярными являются DNS, SNMP и DHCP (используют порты 53, 161/162 и 67/68). Т.к. UDP сканирование
|
||
в общем случае медленнее и сложнее TCP, то многие специалисты по безопасности игнорируют эти порты. Это является
|
||
ошибкой, т.к. существуют UDP службы, которые используются атакующими. К счастью, Nmap позволяет инвентаризировать UDP
|
||
порты.</para>
|
||
|
||
<para>UDP сканирование запускается опцией <option>-sU</option>. Оно может быть скомбинировано с каким-либо типом TCP
|
||
сканирования, например SYN сканирование (<option>-sS</option>), чтобы использовать оба протокола за один проход.</para>
|
||
|
||
<para>UDP сканирование работает путем посылки пустого (без данных) UDP заголовка на каждый целевой порт. Если в ответ
|
||
приходит ICMP ошибка о недостижимости порта (тип 3, код 3), значит порт <literal moreinfo="none">закрыт</literal>.
|
||
Другие ICMP ошибки недостижимости (тип 3, коды 1, 2, 9, 10 или 13) указывают на то, что порт
|
||
<literal moreinfo="none">фильтруется</literal>. Иногда, служба будет отвечать UDP пакетом, указывая на то, что порт
|
||
<literal moreinfo="none">открыт</literal>. Если после нескольких попыток не было получено никакого ответа, то порт
|
||
классифицируется как <literal moreinfo="none">открыт|фильтруется</literal>. Это означает, что порт может быть открыт,
|
||
или, возможно, пакетный фильтр блокирует его. Функция определения версии (<option>-sV</option>) может быть полезна
|
||
для дифференциации действительно открытых портов и фильтруемых.</para>
|
||
|
||
<para>Большой проблемой при UDP сканировании является его медленная скорость работы. Открытые и фильтруемые порты редко
|
||
посылают какие-либо ответы, заставляя Nmap отправлять повторные запросы, на случай если пакеты были утеряны. Закрытые
|
||
порты часто оказываются еще большей проблемой. Обычно они в ответ возвращают ICMP ошибку о недостижимости порта. Но в
|
||
отличии от RST пакетов отсылаемых закрытыми TCP портами в ответ на SYN или сканирование с установкой соединения, многие
|
||
хосты ограничивают лимит <indexterm significance="normal"><primary>rate limiting</primary></indexterm>
|
||
ICMP сообщений о недостижимости порта по умолчанию. Linux и Solaris особенно строги в этом плане. Например, ядро
|
||
Linux 2.4.20 огранивает количество таких сообщений до одного в секунду (в
|
||
<filename moreinfo="none">net/ipv4/icmp.c</filename>).</para>
|
||
|
||
<para>Nmap обнаруживает такого рода ограничения и соответственно сокращает количество запросов, чтобы не забивать
|
||
сеть бесполезными пакетами, которые все равно будут отброшены целевой машиной. К сожалению, при ограничении в стиле
|
||
Linux (один пакет в секунду) сканирование 65,536 портов займет более 18 часов. К способам увеличения скорости UDP
|
||
сканирования относятся: параллельное сканирование нескольких хостов, сканирование в первую очередь только наиболее
|
||
популярных портов, сканирование из-за брандмауэра и использование <option>--host-timeout</option> дял пропуска
|
||
медленных хостов.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sN</option>; <option>-sF</option>; <option>-sX</option> (TCP NULL, FIN и Xmas сканирования)
|
||
<indexterm significance="normal"><primary><option>-sN</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-sF</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-sX</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>NULL scan</primary></indexterm>
|
||
<indexterm significance="normal"><primary>FIN scan</primary></indexterm>
|
||
<indexterm significance="normal"><primary>Xmas scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Эти три типа сканирования используют (другие типы сканирования доступны с использованием опции
|
||
<option>--scanflags</option> описанной в другой секции)
|
||
незаметную лазейку в <ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc793.txt">TCP RFC</ulink>, чтобы
|
||
разделять порты на <literal moreinfo="none">открытые</literal> и <literal moreinfo="none">закрытые</literal>. На
|
||
странице 65 RFC 793 говорится, что <quote>если порт назначения ЗАКРЫТ .... входящий сегмент не содержащий RST повлечет
|
||
за собой отправку RST в ответ.</quote> На следующей странице, где обсуждается отправка пакетов без установленных
|
||
битов SYN, RST или ACK, утверждается что: <quote>вы вряд ли с этим столкнетесь, но если столкнетесь, то сбросьте
|
||
сегменти и вернитесь к исходному состоянию.</quote></para>
|
||
|
||
<para>Когда сканируется система отвечающая требованиям RFC, любой пакет, не содержащий установленного бита SYN, RST или
|
||
ACK, повлечет за собой отправку RST в ответ в случае, если порт закрыт, или не повлечет никакого ответа, если порт
|
||
открыт. Т.к. ни один из этих битов не установлен, то любая комбинация трех оставшихся (FIN, PSH и URG) будет являться
|
||
правильной. Nmap использует это в трех типах сканирования:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry><term>Null сканирование (<option>-sN</option>)</term>
|
||
<listitem><para>Не устанавливаются никакие биты (Флагов в TCP заголовоке 0)</para></listitem></varlistentry>
|
||
|
||
<varlistentry><term>FIN сканирование (<option>-sF</option>)</term>
|
||
<listitem><para>Устанавливается только TCP FIN бит.</para></listitem></varlistentry>
|
||
|
||
<varlistentry><term>Xmas сканирование (<option>-sX</option>)</term>
|
||
<listitem><para>Устанавливаются FIN, PSH и URG флаги.</para></listitem></varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Эти три типа сканирования работают по одной схеме, различия только в TCP флагах установленных в пакетах запросов.
|
||
Если в ответ приходит RST пакет, то порт считается <literal moreinfo="none">закрытым</literal>, отсутствие ответа
|
||
означает, что порт <literal moreinfo="none">открыт|фильтруется</literal>. Порт помечается как
|
||
<literal moreinfo="none">фильтруется</literal>, если в ответ приходит ICMP ошибка о недостижимости (тип 3, код
|
||
1, 2, 3, 9, 10 или 13).</para>
|
||
|
||
<para>Ключевой особенностью этих типов сканирования является их способность незаметно обойти некоторые не учитывающие
|
||
состояние (non-stateful) брандмауэры и роутеры с функцией пакетной фильтрации. Еще одним преимуществом является то, что
|
||
они даже чуть более незаметны, чем SYN сканирование. Все же не надо на это полагаться - большинство современных IDS
|
||
могут быть сконфигурированы на их обнаружение. Большим недостатком является то, что не все системы следуют RFC 793
|
||
дословно. Некоторые системы посылают RST ответы на запросы не зависимо от того, открыт порт или закрыт. Это приводит
|
||
к тому, что все порты помечаются как <literal moreinfo="none">закрытые</literal>. Основными системами ведущими себя
|
||
подобным образом являются Microsoft Windows, многие устройства Cisco, BSDI и IBM OS/400. Хотя такое сканирование
|
||
применимо к большинству систем, основанных на Unix. Еще одним недостатком этих видов сканирования является их
|
||
неспособность разделять порты на <literal moreinfo="none">открытые</literal> и
|
||
<literal moreinfo="none">фильтруемые</literal>, т.к. порт помечается как
|
||
<literal moreinfo="none">открыт|фильтруется</literal>.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sA</option> (TCP ACK сканирование)
|
||
<indexterm significance="normal"><primary><option>-sA</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>ACK scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Этот тип сканирования сильно отличается от всех других тем, что он не способен определить открый порт
|
||
<literal moreinfo="none">open</literal> (или даже <literal moreinfo="none">открытый|фильтруемый</literal>). Он
|
||
используются для выявления правил брандмауэров, определения учитывают ли он состояние или нет, а также для определения
|
||
фильтруемых ими портов.</para>
|
||
|
||
<para>Пакет запроса при таком типе сканирования содержит установленным только ACK флаг (если не используется
|
||
<option>--scanflags</option>). При сканировании нефильтруемых систем,
|
||
<literal moreinfo="none">открытые</literal> и <literal moreinfo="none">закрытые</literal> порты оба будут возвращать
|
||
в ответ RST пакет. Nmap помечает их как <literal moreinfo="none">не фильтруемые</literal>, имея ввиду, что они
|
||
достижимы для ACK пакетов, но неизвестно <literal moreinfo="none">открыты</literal> они или
|
||
<literal moreinfo="none">закрыты</literal>. Порты, которые не отвечают или посылают в ответ ICMP сообщение об ошибке
|
||
(тип 3, код 1, 2, 3, 9, 10 или 13), помечаются как <literal moreinfo="none">фильтруемые</literal>.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sW</option> (TCP Window сканирование)
|
||
<indexterm significance="normal"><primary><option>-sW</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>window scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Этот тип сканирования практически то же самое, что и ACK сканирование, за исключением того, что он использует
|
||
особенности реализации различных систем для разделения портов на открытые и закрытые, вместо того, чтобы всегда при
|
||
получении RST пакета выводить <literal moreinfo="none">не фильтруется</literal>. Это осуществляется путем анализа
|
||
TCP Window поля полученного в ответ RST пакета. В некоторых системах открытые порты используют положительное значение
|
||
этого поля (даже в RST пакетах), а закрытые - нулевое. Поэтому вместо того, что все время при получении RST пакета в
|
||
ответ помечать порты как <literal moreinfo="none">не фильтруемые</literal>, при Window сканировании порты помечаются
|
||
как <literal moreinfo="none">открытые</literal> или <literal moreinfo="none">закрытые</literal>, если значение поля
|
||
TCP Window положительно или равно нулю соответственно.</para>
|
||
|
||
<para>Этот тип сканирования основывается на особенностях реализации меньшинства систем в Интернете, поэтому вы не
|
||
можете все время доверять ему. В общем случае в системах, не имеющих таких особенностей, все порты будут помечаться
|
||
как <literal moreinfo="none">закрытые</literal>. Конечно, это возможно, что у машины действительно нет открытых портов.
|
||
Если большинство просканированных портов <literal moreinfo="none">закрыты</literal>, и лишь несколько распространненых
|
||
портов (таких как 22, 25, 53) <literal moreinfo="none">фильтруются</literal>, то скорее всего результатам сканирования
|
||
можно доверять. Иногда, системы будут вести себя прямо противоположным образом. Если в результате сканирования будет
|
||
найдено 1000 открытых портов и 3 закрытых или фильтруемых, то как раз эти 3 могут оказаться действительно открытыми.
|
||
</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sM</option> (TCP сканирование Мэймона (Maimon))
|
||
<indexterm significance="normal"><primary><option>-sM</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>Maimon scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Этот тип сканирования носит имя своего первооткрывателя, Уриела Мэймона (Uriel Maimon).
|
||
<indexterm significance="normal"><primary>Maimon, Uriel</primary></indexterm>
|
||
Он описал эту технику в журнале <citetitle>Phrack</citetitle> Magazine, выпуск #49 (Ноябрь 1996).
|
||
<indexterm significance="normal"><primary><citetitle>Phrack</citetitle></primary></indexterm>
|
||
Версия Nmap с поддержкой этого типа сканирования была выпущена через два номера. Техника практически такая же как и
|
||
при NULL, FIN и Xmas сканированиях, только в качестве запросов используются запросы FIN/ACK. Согласно
|
||
<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc793.txt">RFC 793</ulink> (TCP), в ответ на такой запрос
|
||
должен быть сгенерирован RST пакет, если порт открыт или закрыт. Тем не менее, Уриел заметил, что многие BSD системы
|
||
просто отбрасывают пакет, если порт открыт.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--scanflags</option> (Заказное TCP сканирование)
|
||
<indexterm significance="normal"><primary><option>--scanflags</option></primary></indexterm></term>
|
||
<listitem>
|
||
|
||
|
||
<para>Действительно продвинутым пользователям Nmap не нужды ограничивать себя заранее приготовленными типами
|
||
сканирования. С помощью опции <option>--scanflags</option> вы можете разработать свой тип сканирования путем задания
|
||
специфичных TCP флагов.<indexterm significance="normal"><primary>TCP flags</primary></indexterm>
|
||
Используйте свое воображение, обходя системы обнаружения вторжений, чьи производители просто просмотрели справочное
|
||
руководство Nmap, путем задания собственных правил!<indexterm significance="normal"><primary>intrusion detection systems</primary><secondary>evading</secondary></indexterm></para>
|
||
|
||
<para>Аргументом опции <option>--scanflags</option> может быть числовое значение, например, 9 (PSH и FIN флаги), но
|
||
использование символьных имен намного проще. Используйте любые комбинации <literal moreinfo="none">URG</literal>,
|
||
<literal moreinfo="none">ACK</literal>, <literal moreinfo="none">PSH</literal>,
|
||
<literal moreinfo="none">RST</literal>, <literal moreinfo="none">SYN</literal> и
|
||
<literal moreinfo="none">FIN</literal>. Например, опцией <option>--scanflags
|
||
URGACKPSHRSTSYNFIN</option> будут установлены все флаги, хотя это и не очень полезно для сканирования. Порядок задания
|
||
флагов не имеет значения.</para>
|
||
|
||
<para>В добавлении к заданию желаемых флагов, вы также можете задать тип TCP сканирования (например,
|
||
<option>-sA</option> или <option>-sF</option>). Это укажет Nmap на то, как необходимо интерпретировать ответы.
|
||
Например, при SYN сканировании отсутствие ответа указывает на <literal moreinfo="none">фильтруемый</literal> порт,
|
||
тогда как при FIN сканировании - на <literal moreinfo="none">открытый|фильтруемый</literal>. Nmap будет осуществлять
|
||
заданный тип сканирования, но используя указанные вами TCP флаги вместо стандартных. Если вы не указываете тип
|
||
сканирования, то по умолчанию будет использоваться SYN.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sI <replaceable>зомби_хост</replaceable><optional>:<replaceable>порт</replaceable></optional></option> ("ленивое" idle сканирование)
|
||
<indexterm significance="normal"><primary><option>-sI</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>idle scan</primary></indexterm>
|
||
</term>
|
||
|
||
<listitem>
|
||
|
||
<para>Этот продвинутый метод сканирования позволяет осуществить действительно незаметное TCP сканирование
|
||
портов цели (имеется ввиду, что никакие пакеты не отсылаются на целевую машину с вашего реального IP адерса).
|
||
Вместо этого, на зомби машине используется предсказуемая последовательность генерации ID IP фрагментов для
|
||
сбора информации об открытых портах цели. Системы IDS будут считать, что сканирование производится с
|
||
заданной вами зомби машины (которая должна работать и удовлетворять определенным критериям). <man>
|
||
Этот тип сканирования слишком сложен для описания в этом справочном руководстве, поэтому я написал и выложил
|
||
подробное описание на <ulink url="https://nmap.org/book/idlescan.html"/>.</man>
|
||
<notman>
|
||
Подробное описание этого типа сканирования смотрите на <xref linkend="idlescan"/>.
|
||
</notman>
|
||
</para>
|
||
|
||
<para>Помимо его незаметности (в силу своей природы), этот тип сканирования также позволяет определять
|
||
основанные на IP доверительные отношения между машинами. Список открытых портов показывает открытые порты
|
||
<emphasis>с точки зрения зомби машины.</emphasis> Поэтому вы можете попробовать просканировать цель
|
||
используя различные зомби машины, которым, вы считаете, возможно будут доверять
|
||
<indexterm significance="normal"><primary>trust relationships</primary></indexterm>
|
||
(посредством правил роутера/пакетного фильтра).
|
||
</para>
|
||
|
||
<para>Вы можете добавить номер порта после двоеточия к зомби хосту, если хотите использовать конкретный
|
||
порт. По умолчанию будет использоваться порт 80.</para>
|
||
|
||
<para>Порты также могут быть заданы именами, которым они соответствуют в файле
|
||
<filename moreinfo="none">nmap-services</filename>. Вы даже можете использовать шаблоны * и ? в именах.
|
||
Например, чтобы просканировать ftp и все порты начинающиеся с http используйте <option>-p ftp,http*</option>.
|
||
В таких случаях лучше брать аргументы -p в кавычки.</para>
|
||
|
||
<para>Диапазоны портов заключаются в квадратные скобки; будут просканированы порты из этого диапазона,
|
||
встречающиеся в <filename moreinfo="none">nmap-services</filename>.
|
||
Например, с помощью следующей опции будут просканированы все порты из
|
||
<filename moreinfo="none">nmap-services</filename> равные или меньше 1024: <option>-p [-1024]</option>.
|
||
В таких случаях лучше брать аргументы -p в кавычки.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sO</option> (Сканирование IP протокола)
|
||
<indexterm significance="normal"><primary><option>-sO</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>IP protocol scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Сканирование такого типа позволяет определить, какие IP протоколы (TCP, ICMP, IGMP и т.д.) поддерживаются
|
||
целевыми машинами. Технически такое сканирование не является разновидностью сканирования портов, т.к. при нем
|
||
циклически перебираются номера IP протоколов вместо номеров TCP или UDP портов. Хотя здесь все же используется опция
|
||
<option>-p</option> для выбора номеров протоколов для сканирования, результаты выдаются в формате таблицы портов, и
|
||
даже используется тот же механизм сканирования, что и при различных вариантах сканирования портов. Поэтому он
|
||
достаточно близок к сканированию портов и описывается здесь.</para>
|
||
|
||
<para>Помимо полезности непосредственно в своей сфере применения, этот тип сканирования также демонстрирует всю мощь
|
||
открытого программного обеспечения (open-source software). Хотя основная идея довольна проста, я никогда не думал
|
||
включить такую функцию в Nmap, и не получал запросов на это. Затем, летом 2000-го, Джерард Риджер (Gerhard Rieger)
|
||
<indexterm significance="normal"><primary>Rieger, Gerhard</primary></indexterm>
|
||
развил эту идею, написал превосходный патч воплощающий ее и отослал его на
|
||
<citetitle>nmap-hackers</citetitle> рассылку.<indexterm significance="normal"><primary><citetitle>nmap-hackers</citetitle> mailing list</primary></indexterm>
|
||
Я включил этот патч в Nmap и на следующий день выпустил новую версию. Лишь единицы комерческого программного обеспечения
|
||
могут похвастаться пользователями, достаточно полными энтузиазма для разработки и предоставления своих улучшений!</para>
|
||
|
||
<para>Способ работы этого типа сканирования очень похож на реализованный в UDP сканировании. Вместо того, чтобы
|
||
изменять в UDP пакете поле, содержащее номер порта, отсылаются заголовки IP пакета, и изменяется 8 битное поле IP
|
||
протокола. Заголовки обычно пустые, не содержащие никаких данных и даже правильного заголовка для требуемого протокола.
|
||
Исключениями явлются TCP, UDP и ICMP. Включение правильного заголовка для этих протоколов необходимо, т.к. в обратном
|
||
случае некоторые системы не будут их отсылать, да и у Nmap есть все необходимые функции для их создания. Вместо того,
|
||
чтобы ожидать в ответ ICMP сообщение о недостижимости порта, этот тип сканирования ожидает ICMP сообщение о
|
||
недостижимости <emphasis>протокола</emphasis>. Если Nmap получает любой ответ по любому протоколу, то протокол
|
||
помечается как <literal moreinfo="none">открытый</literal>. ICMP ошибка о неостижимости протокола (тип 3, код 2)
|
||
помечает протокол как <literal moreinfo="none">закрытый</literal>. Другие ICMP ошибки недостижимости (тип 3, код
|
||
1, 3, 9, 10 или 13) помечают протокол как <literal moreinfo="none">фильтруемый</literal> (в то же время они показывают,
|
||
что протокол ICMP <literal moreinfo="none">открыт</literal>). Если не приходит никакого ответа после нескольких
|
||
запросов, то протокол помечается как <literal moreinfo="none">открыт|фильтруется</literal></para>.
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-b <replaceable>FTP хост</replaceable></option> (FTP bounce сканирование)
|
||
<indexterm significance="normal"><primary><option>-b</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>FTP bounce scan</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Интересной возможностью FTP протокола (<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc959.txt">RFC 959</ulink>) является поддержка так называемых прокси FTP соединений. Это позволяет пользователю подключиться к одному
|
||
FTP серверу, а затем попросить его передать файлы другому. Это является грубым нарушением, поэтому многие сервера
|
||
прекратили поддерживать эту функцию. Используя эту функцию, можно осуществить с помощью данного FTP сервера
|
||
сканирование портов других хостов. Просто попросите FTP сервер переслать файл на каждый интересующий вас порт целевой
|
||
машины по очереди. Сообщение об ошибке укажет: открыт порт или нет. Это хороший способ обхода брандмауэров, т.к.
|
||
организационные FTP сервера обычно имеют больше доступа к другим внутренним хостам, чем какие-либо другие машины.
|
||
В Nmap такой тип сканирования задается опцией <option>-b</option>. В качестве аргумента ей передается
|
||
<replaceable>имя_пользователя</replaceable>:<replaceable>пароль</replaceable>@<replaceable>сервер</replaceable>:<replaceable>порт</replaceable>.
|
||
<replaceable>Сервер</replaceable> - это сетевое имя или IP адрес FTP сервера. Как и в случае в обычными URL, вы можете опустить <replaceable>имя_пользователя</replaceable>:<replaceable>пароль</replaceable>, тогда будут использованы
|
||
анонимные данные (пользователь: <literal moreinfo="none">anonymous</literal>
|
||
пароль:<literal moreinfo="none">-wwwuser@</literal>). Номер порта (и предшествующее ему двоеточие) также можно не
|
||
указывать; тогда будет использован FTP порт по умолчанию (21) для подключения к <replaceable>серверу</replaceable>.
|
||
</para>
|
||
|
||
<para>Эта уязвимость была широко распространена в 1997, когда была выпущена Nmap, но теперь почти везде исправлена.
|
||
Уязвимые сервера по-прежнему есть, так что, если ничего другое не помогает, то стоит попробовать. Если вашей целью
|
||
является обход бранмауэра, то просканируйте целевую сеть на наличие открытого порта 21 (или даже на наличие любых
|
||
FTP служб, если вы используете определение версии), а затем попробуйте данный тип сканирования с каждым из найденных.
|
||
Nmap скажет вам, уязвим хост или нет. Если вы просто пытаетесь замести следы, то вам нет необходимости (и, фактически,
|
||
не следует) ограничивать себя только хостами целевой сети. Перед тем как вы начнете сканировать произвольные Интернет
|
||
адреса на наличие уязвимого FTP сервера, имейте ввиду, что многим системным администраторам это не понравится.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-port-specification">
|
||
<title>Определение портов и порядка сканирования</title>
|
||
<indexterm significance="normal"><primary>port specification</primary></indexterm>
|
||
|
||
<para>В дополнении ко всем методам сканирования описанными ранее, Nmap предлагает опции для определения портов
|
||
для сканирования, а также порядка сканирования: произвольного или последовательного. По умолчанию, Nmap сканирует
|
||
все порты до 1024 включительно, а также все порты с большими номерами упомянутыми в файле <filename moreinfo="none">nmap-services</filename> для протокола, по которому идет сканирование.
|
||
<indexterm significance="normal"><primary>default ports</primary></indexterm>
|
||
</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-p <replaceable>диапазон портов</replaceable></option> (Сканирование только определенных портов)
|
||
<indexterm significance="normal"><primary><option>-p</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>С помощью этой опции вы можете определить, какие порты вы хотите просканировать и переопределить
|
||
установки по умолчанию. Указание отдельных номеров портов допустимо, как и задание диапазонов портов
|
||
разделенных дефисом (напр. <literal moreinfo="none">1-1023</literal>). Начальные и/или кончные значения
|
||
диапазонов могут быть опущены, что заставит Nmap использовать 1 и 65535 соответственно. Поэтому вы можете
|
||
задать опцию <option>-p-</option>, чтобы просканировать все порты от 1 до 65535. Сканирование нулевого
|
||
порта допустимо, если вы укажене его явно
|
||
<indexterm significance="normal"><primary>port zero</primary></indexterm>.
|
||
Для сканирования по IP протоколу (<option>-sO</option>), эта опция определяет номера протоколов, которые
|
||
вы хотите просканировать для диапазона (0-255).</para>
|
||
|
||
<para>Когда сканируете и TCP и UDP порты, вы можете задать определенный протокол указав перед номерами
|
||
портов <literal moreinfo="none">T:</literal>
|
||
или <literal moreinfo="none">U:</literal>. Определитель будет действовать до того момента, пока вы не
|
||
зададите другой. Например, при задании аргумента <option>-p
|
||
U:53,111,137,T:21-25,80,139,8080</option> будут просканированы UDP
|
||
порты 53,111, и 137, а также все перечисленные TCP порты. Имейте в виду, что для сканирования и UDP и
|
||
TCP портов, вы должны указать опцию <option>-sU</option> и, по крайне мере, один из типов сканирования TCP
|
||
(таких как <option>-sS</option>, <option>-sF</option> или <option>-sT</option>). Если определитель прокотола
|
||
не указан, то перечисленные порты будут добавлены ко всем протоколам.</para>
|
||
|
||
|
||
<para><indexterm significance="normal"><primary>port specification</primary><secondary>wildcards in</secondary></indexterm>
|
||
Порты также могут быть заданы именами, которые указаны в
|
||
<filename moreinfo="none">nmap-services</filename>. Вы даже можете использовать символы ? и * с именами.
|
||
Например, чтобы просканировать FTP и все порты, чьи имена начинаются с <quote>http</quote>, используйте
|
||
<option>-p ftp,http*</option>. Будьте осторожны при вводе этой команды и лучше заключите аргумент
|
||
<option>-p</option> в кавычки.</para>
|
||
|
||
<para>Диапазоны портов могут быть заключены в квадратные скобки, чтобы определить порты внутри этого
|
||
диапазона, которые упомянуты в <filename moreinfo="none">nmap-services</filename>.
|
||
Например, с помощью следующей команды будут просканированы все порты из
|
||
<filename moreinfo="none">nmap-services</filename> равные или меньшие 1024:
|
||
<option>-p [-1024]</option>. Будьте осторожны при вводе этой команды и лучше заключите аргумент
|
||
<option>-p</option> в кавычки.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-F</option> (Быстрое (ограниченные порты) сканирование)
|
||
<indexterm significance="preferred"><primary><option>-F</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Указывает, что вы хотите произвести сканирование только портов, указанных в
|
||
<filename moreinfo="none">nmap-services</filename>, который поставляется вместе с Nmap (или в файле
|
||
протоколов для <option>-sO</option>). Это намного быстрее, чем сканировать все 65535 портов целевой машины.
|
||
Т.к. этот список содержит много TCP портов (больше 1200), разница в скорости в отличии от TCP сканирования
|
||
по умолчанию (около 1650 портов) несущественна. Разница может быть огромна, если вы определите свой
|
||
небольшой <filename moreinfo="none">nmap-services</filename> файл используя
|
||
<option>--servicedb</option><indexterm significance="normal"><primary><option>--servicedb</option></primary></indexterm>
|
||
или <option>--datadir</option><indexterm significance="normal"><primary><option>--datadir</option></primary></indexterm> опции.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-r</option> (Не использовать случайный порядок портов)
|
||
<indexterm significance="normal"><primary><option>-r</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>randomization of ports</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>По умолчанию, Nmap использует произвольный порядок сканирования портов (исключение составляют лишь
|
||
наиболее часто употребляемые порты, которые расположены в начале списка сканирования по причинам
|
||
эффективности). Обычно эта случайность нужна, но вы можете задать опцию <option>-r</option>, чтобы
|
||
использовать прямой порядок сканирования.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--port-ratio <десятичное число между 0 и 1></option>
|
||
</term>
|
||
<listitem>
|
||
<indexterm significance="normal"><primary>--port-ratio</primary></indexterm>
|
||
<para>Сканирует все порты из <filename moreinfo="none">nmap-services</filename>, чей рейтинг больше числа,
|
||
указанного как аргумент (только для нового формата <filename moreinfo="none">nmap-services</filename>).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--top-ports <целое число от 1 и выше></option>
|
||
</term>
|
||
<listitem>
|
||
<indexterm significance="normal"><primary>--top-ports</primary></indexterm>
|
||
<para>Сканирует N портов с наибольшими рейтингами, расположенными в
|
||
<filename moreinfo="none">nmap-services</filename> файле (только для нового формата
|
||
<filename moreinfo="none">nmap-services</filename>).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
|
||
</refsect1>
|
||
|
||
|
||
<refsect1 id="man-version-detection">
|
||
<title>Обнаружение служб и их версий</title>
|
||
<indexterm class="startofrange" id="man-version-detection-indexterm" significance="normal"><primary>version detection</primary></indexterm>
|
||
|
||
|
||
<para>При сканировании удаленной машины Nmap может выдать, что порты
|
||
<literal moreinfo="none">25/tcp</literal>, <literal moreinfo="none">80/tcp</literal>, и
|
||
<literal moreinfo="none">53/udp</literal> открыты. Используя свою базу данных
|
||
<filename moreinfo="none">nmap-services</filename><indexterm significance="normal"><primary><filename moreinfo="none">nmap-services</filename></primary></indexterm>,
|
||
состоящюю из около 2200 известных служб,
|
||
<indexterm significance="normal"><primary>well-known ports</primary></indexterm>
|
||
Nmap сообщит, что эти порты вероятно соответстуют почтовому серверу (SMTP), веб серверу (HTTP),
|
||
и серверу доменных имен (DNS) соответственно. Эта информация обычно верна, т.к. подавляющее большинство служб,
|
||
использующих 25 TCP порт, фактически, почтовые сервера. Тем не менее, вам не следует полностью полагаться на эту
|
||
информацию! Люди могут и запускают службы с использованием нестандартных портов.
|
||
<indexterm significance="normal"><primary>non-standard ports</primary></indexterm>
|
||
</para>
|
||
|
||
<para>Даже если Nmap права, и на какой-либо гипотетической машине упомянутой выше запушены SMTP, HTTP и DNS
|
||
сервера, это не так уж и много информации. Когда производится сканирование с целью обнаружения уязвимостей
|
||
(или же просто определение структуры сети) компьютеров ваших компаний или клиентов, вам хочется знать, какие точно
|
||
почтовые и DNS сервера и какие версии используются. Знание точной версии очень помогает в определении, к каким
|
||
эксплоитам сервер наиболее уязвим. Эту информацию вы можете получить с помощью задания опции определения версии.
|
||
</para>
|
||
|
||
<para>После того как какие-либо TCP и/или UDP были обнаружены, Nmap начинает "опрашивать" эти порты, чтобы
|
||
определить, какие же приложения (службы) их действительно используют. База данных
|
||
<filename moreinfo="none">nmap-service-probes</filename><indexterm significance="normal"><primary><filename moreinfo="none">nmap-service-probes</filename></primary></indexterm>
|
||
содержит запросы для обращения к различным службам и соответствующие выражения для распознавания и анализа ответов.
|
||
Nmap пытается определить протоколо службы (напр. FTP, SSH, Telnet, HTTP), имя приложения (e.g. ISC
|
||
BIND, Apache httpd, Solaris telnetd), номер версии, имя хоста, тип устройства (напр. принтер, роутер),
|
||
семейство ОС (напр. Windows, Linux) и иногда различные детали типа возможно ли соединится с X сервером,
|
||
версию протокола SSH, или имя пользователя KaZaA. Конечно же, большинство служб не предоставляют такую информацию.
|
||
Если Nmap была скомпилирована с поддержкой OpenSSL, Она соединится с сервером SSL, чтобы попытаться определить
|
||
запущенные службы, работающие за зашифрованным слоем.
|
||
<indexterm significance="normal"><primary>SSL</primary><secondary>in version detection</secondary></indexterm>
|
||
Когда обнаружены службы RPC, удет автоматически задействована опция Nmap
|
||
<indexterm significance="normal"><primary>RPC grinder</primary></indexterm> (<option>-sR</option>)
|
||
<indexterm significance="normal"><primary><option>-sR</option></primary></indexterm>
|
||
для определения программы RPC и ее версии. После сканирования портов UDP некоторые из них характеризуются как
|
||
<literal moreinfo="none">открыт|фильтруется</literal>, если сканирование не может определить открыт порт или
|
||
фильтруется. С заданной опцией определения версии Nmap попытается получить ответ от таких портов (точно так же как
|
||
она поступает с открытыми портами), и, в случае успеха, поменяет состояние этого порта на открыт
|
||
<literal moreinfo="none">открытые|фильтруемые</literal> TCP порты обрабатываются так же. Имейте в виду, что
|
||
опция Nmap <option>-A</option> помимо других команд активирует также и обнаружение версии.
|
||
<man>
|
||
Бумажная документация по работе, использованию и настройке опции обнаружения версии доступна на
|
||
<ulink url="https://nmap.org/book/vscan.html"/>.
|
||
</man>
|
||
<notman>
|
||
Опция обнаружения версии подробнее рассматривается в <xref linkend="vscan"/>.
|
||
</notman>
|
||
</para>
|
||
|
||
<para>Когда Nmap получает ответы от службы, но не может сопоставить их с какой-либо записью в своей базе данных,
|
||
она выводит на экран специальную информацию и URL, по которому вы можете опубликовать эту информацию, если вы точно
|
||
уверены, что за служба запущена на исследуемом вами порте. Пожалуйста, потратьте пару минут на публикацию этой
|
||
информации, т.к. ваша находка поможет остальным. Благодаря таким публикациям, Nmap содержит в своей базе данных
|
||
около 3000 записей для более чем 350 протоколов, таких как SMTP, FTP, HTTP и т.д.
|
||
<indexterm significance="normal"><primary>submission of service fingerprints</primary></indexterm>
|
||
</para>
|
||
|
||
<para>Функция определения версии включается и управляется с помощью следующих опций:</para>
|
||
|
||
|
||
<variablelist>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sV</option> (Определение версии)
|
||
<indexterm significance="normal"><primary><option>-sV</option></primary></indexterm></term>
|
||
<listitem>
|
||
|
||
|
||
<para>Включает функцию определения версии, работа которой описана выше. Вы также можете использовать
|
||
опцию <option>-A</option>, которая помимо других функций включает определение версии.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--allports</option> (Не исключать порты из проверки определения версии)
|
||
<indexterm significance="normal"><primary><option>--allports</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>По умолчанию, функция определения версии пропускает TCP порт 9100,
|
||
потому что некоторые принтеры просто распечатывают все, что приходить на этот порт, что ведет к
|
||
дюжинам страниц HTTP GET запросов, бинарных запросов SSL сессий т.д. Это может быть изменено путем
|
||
модифицирования или удаления директивы <literal moreinfo="none">Exclude</literal>
|
||
в <filename moreinfo="none">nmap-service-probes</filename>, или вы можете задать опцию
|
||
<option>--allports</option>, сканированить все порты не обращая внимания на всякие
|
||
<literal moreinfo="none">Exclude</literal> директивы.
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">Exclude</literal> directive (<filename moreinfo="none">nmap-service-probes</filename>)</primary></indexterm>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--version-intensity <replaceable>интенсивность</replaceable></option> (Устанавливает интенсивность
|
||
работы функции)
|
||
<indexterm significance="normal"><primary><option>--version-intensity</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Когда производится сканирование с заданной опцией определения версии
|
||
(<option>-sV</option>), Nmap посылает серию запросов, каждому из которых присваивается значение в диапазоне
|
||
от 1 до 9. Запросы с низкими значениями эффективны для большинства типичных служб, в то время как запросы
|
||
с более высокими значениями редко применяются на практике. Уровень интенсивности определяет, какие запросы
|
||
должны использоваться во время сканирования. Чем выше значение запроса, тем больше вероятность корректного
|
||
определения службы. Тем не менее, сканирование с высокой интенсивностью займет много времени. Уровень
|
||
интенсивности должна быть задана числом от 0 до 9.
|
||
<indexterm significance="normal"><primary>version detection</primary><secondary>intensity</secondary></indexterm>
|
||
По умолчанию уровень интенсивности равен 7.
|
||
<indexterm significance="normal"><primary>version detection</primary><secondary>default intensity</secondary></indexterm>
|
||
Когда запрос привязан к целевому порту посредством директивы
|
||
<filename moreinfo="none">nmap-service-probes</filename> <literal moreinfo="none">ports</literal>,
|
||
этот запрос будет производиться вне зависимости от уровня интенсивности. Это гарантирует, что DNS
|
||
запросы всегда будут производится с использование порта 53, SSL запросы - 443 и т.д.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--version-light</option> (Включить облегченный режим)
|
||
<indexterm significance="normal"><primary><option>--version-light</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Это не что иное как псевдоним для <option>--version-intensity 2</option>. Этот режим существенно
|
||
уменьшает время сканирования, но вероятность определения служб сокращается.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--version-all</option> (Использовать каждый единичный запрос)
|
||
<indexterm significance="normal"><primary><option>--version-all</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Псевдоним для <option>--version-intensity 9</option>, гарантирующий что каждый единичный запрос
|
||
будет направлен на каждый порт.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--version-trace</option> (Отслеживание процесса сканирования)
|
||
<indexterm significance="preferred"><primary><option>--version-trace</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Указывает Nmap выводить подробную отладочную информацию о процессе сканирования. Это часть той
|
||
информации, которую вы можете получить с помощью опции <option>--packet-trace</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-sR</option> (RPC сканирование)
|
||
<indexterm significance="preferred"><primary><option>-sR</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>RPC scan</primary><see>RPC grinder</see></indexterm>
|
||
<indexterm significance="normal"><primary>RPC grinder</primary></indexterm>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Этот метод работает в связке с различными методами сканирования портов Nmap. При включении этой опции
|
||
на все обнаруженные открытые TCP/UDP порты посылатеся множество NULL команд программы SunRPC
|
||
в попытке определить, являются ли эти порты RPC портами, и если так, то какими программами (а также их версии)
|
||
они используются. Таким образом, вы можете получить ту же информацию как и в случае использования команды
|
||
<command moreinfo="none">rpcinfo -p</command>, даже если целевой сервер портмаппинга (portmapper) находится
|
||
за брандмауэром (или защищен TCP фильтром). На сегодняшний момент ловушки со сканированием RPC не работают
|
||
<indexterm significance="normal"><primary>decoys</primary><secondary>which scans use</secondary></indexterm>
|
||
Эта опция автоматически активируется как часть сканирования с функцией определения версии
|
||
(<option>-sV</option>). Т.к. это включено в функцию определения версии и более детально проработано,
|
||
то опция <option>-sR</option> нужна очень редко.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
<indexterm class="endofrange" startref="man-version-detection-indexterm" significance="normal"/>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-os-detection">
|
||
|
||
<title>Определение ОС</title>
|
||
<indexterm class="startofrange" id="man-os-detection-indexterm" significance="normal"><primary>OS detection</primary></indexterm>
|
||
|
||
<para>Одна из наиболее известных функциональных возможностей Nmap это удаленное определение ОС на основе
|
||
анализа работы стека TCP/IP. Nmap посылает серию TCP и UDP пакетов на удаленный хост и изучает практически
|
||
каждый бит в ответах. После проведения дюжины тестов таких как TCP ISN выборки, поддержки опций TCP, IP ID
|
||
выборки, и анализа продолжительности процедуры инициализации, Nmap сравнивает результаты со своей
|
||
<filename moreinfo="none">nmap-os-db</filename><indexterm significance="normal"><primary><filename moreinfo="none">nmap-os-db</filename></primary></indexterm> базой данных, состоящей из более чем тысячи известных наборов
|
||
типичных результатов для различных ОС и, при нахождении соответствий, выводит информацию об ОС. Каждый набор
|
||
содержит свободное текстовое описание ОС и классификацию, в которой указаны название производителя (напр. Sun),
|
||
название ОС (напр. Solaris), поколение ОС (напр. 10), и тип устройства ().
|
||
OS, and a classification which provides the vendor name
|
||
(e.g. Sun), underlying OS (e.g. Solaris), OS generation (e.g. 10),
|
||
and device type (для общих целей, роутер, коммутатор (switch), игровая консоль и т.д.).</para>
|
||
|
||
<para>Если Nmap не может определить ОС, но для этого есть хорошие предпосылки (наприме, по крайней мере,
|
||
найдены один открытый и один закрытый порты), то Nmap предоставит URL, по которому, если вы точно знаете,
|
||
какая ОС используется, вы сможете предоставить набор ее характеристик. Тем самым вы внесете свой вклад в дополнение
|
||
базы данных известных ОС Nmap, и она будет более полезна для всех остальных.</para>
|
||
|
||
<para>Опция определения ОС также активирует проведение некоторых других тестов, которые позволяют воспользоваться
|
||
собираемой в процессе работы информацией. Один из них Классификация Предсказуемости Последовательности TCP
|
||
(TCP Sequence Predictability Classification). Это позволяет приблизительно определить, насколько сложно установить
|
||
ложное TCP соединение с удаленным хостом. Это может быть полезно для взлома и эксплуатации программ, базирующихся
|
||
на доверительных отношениях (rlogin, фильтры брандмауэров и т.д.) или для сокрытия источника атаки. Этот тип
|
||
спуфинга (spoofing) теперь редко используется, но многие машины все еще уязвимы к такого рода атакам. Число,
|
||
характеризующее сложность, базируется на статистической выборке и может колебаться. Обычно лучше испльзовать
|
||
классификацию с испльзованием английских фраз типа
|
||
<quote>worthy challenge(достойное испытание)</quote> или <quote>trivial joke(шуточное дело)</quote>. Эта
|
||
информация будет выведена только при включенном вербальном режиме (<option>-v</option>). Когда вербальный режим
|
||
активирован вместе с опцией <option>-O</option>, то выводится также информация о генарции IP ID последовательности.
|
||
Большинство машин находятся в классе <quote>incremental(возрастающий)</quote>, что означает, что они увеличивают
|
||
поле ID в IP заголовке для каждого посланого пакета. Это делает их уязвимыми к спуфинг(spoofing) атакам и атакам
|
||
с целью сбора расширенной информации.</para>
|
||
|
||
<indexterm significance="normal"><primary>uptime guess</primary></indexterm>
|
||
<para>
|
||
Также во время определения ОС делается попытка узнать время работы целевой машины. С помощью временных меток
|
||
(timestamp) TCP (<ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc1323.txt">RFC 1323</ulink>) Nmap
|
||
пробует угадать, когда машина была перезагружена в последний раз. Информация может быть не точна, т.к. счетчик
|
||
временной метки не был обнулен или был переполнен, или каким-то образом скрыт. Информация выводится только в
|
||
вербальном режиме.</para>
|
||
|
||
<para>
|
||
<man>
|
||
Бумажная документация по работе, использованию и настройки опции определения ОС находится на
|
||
<ulink url="https://nmap.org/book/osdetect.html"/>.
|
||
</man>
|
||
<notman>
|
||
Опция определения ОС рассмотрена в <xref linkend="osdetect"/>.
|
||
</notman>
|
||
</para>
|
||
|
||
<para>Функция определения ОС включается и управляется с помощью следующих опций:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-O</option> (Включить определение ОС)
|
||
<indexterm significance="preferred"><primary><option>-O</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Включает фукнцию определения ОС, работа которой описана выше. Вы также можете использовать
|
||
опцию <option>-A</option>, которая помимо других функций включает определение ОС.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--osscan-limit</option> (Использовать функцию определения ОС только для "перспективных" хостов)
|
||
<indexterm significance="preferred"><primary><option>--osscan-limit</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Функция определения ОС намного более эффективна, если обнаружены, по крайней мере, один открытый и один
|
||
закрытый TCP порты. Задайте эту опцию, и Nmap не будет даже пытаться определить ОС хостов, не удовлетворяющих
|
||
этому критерию. Это поможет сэкономить массу времени, особенно при <option>-PN</option> сканирование многих
|
||
хостов. Эта опция будет действовать только при включении функции ОС путем задания опций <option>-O</option>
|
||
или <option>-A</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--osscan-guess</option>; <option>--fuzzy</option> (Угадать результаты определения ОС)
|
||
<indexterm significance="preferred"><primary><option>--osscan-guess</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--fuzzy</option></primary><see><option>--osscan-guess</option></see></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Когда Nmap не в состоянии определеить точное совпадение, она иногда предоставляет наиболее близкие
|
||
к результатам сканирования совпадения. Чтобы Nmap сделала это по умолчанию, совпадения должны быть очень
|
||
близки. Любая их этих (равных) опций побуждает Nmap к более агрессивному анализу результатов. Nmap
|
||
по-прежнему будет сообщать, когда будет найдено не идеальное совпадение, а также отображать стпень
|
||
соответствия (в процентах) для каждого набора характеристик.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--max-os-tries</option> (Устанавливает максимальное количество попыток определения ОС)
|
||
<indexterm significance="preferred"><primary><option>--max-os-tries</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Когда Nmap пытается определить ОС на целевом хосте и не может найти идеального соответствия результатов,
|
||
то она обычно повторяет попытку. По умолчанию, Nmap совершает пять попыток при условии, что существуют
|
||
благоприятные условия для определения ОС, и дважды - в противном случае. Задание более низкого значения
|
||
<option>--max-os-tries</option> (напр. 1) увеличивает скорость работы Nmap, однако вы пропускаете некоторые
|
||
записи, с помощью которых, возможно, можно было бы определить ОС. Большое значение может быть задано для
|
||
разрешения большего количества попыток при благоприятных условиях. Это делается редко, за исключением тех
|
||
случаев, когда необходимо сгенерировать более детальный набор характеристик ОС для занесения в базу данных
|
||
Nmap.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
<indexterm class="endofrange" startref="man-os-detection-indexterm" significance="normal"/>
|
||
</refsect1>
|
||
<refsect1 id="man-nse">
|
||
<title>Скриптовый движок Nmap(NSE - Nmap Scripting Engine)</title>
|
||
<indexterm class="startofrange" id="man-nse-indexterm" significance="normal"><primary>Nmap Scripting Engine (NSE)</primary></indexterm>
|
||
|
||
<para>Скриптовый движок Nmap (NSE) это одна из наиболее мощных и гибких возможностей Nmap. Он позволяет
|
||
пользователям писать (и делиться ими) простые скрипты (используя
|
||
<ulink url="http://lua.org">язык программирования Lua</ulink>,
|
||
<indexterm significance="normal"><primary>Lua programming language</primary></indexterm>) для автоматизации
|
||
широкого круга сетевых задач. Эти скрипты выполняются со скоростью и эффективность ожидаемой вами от Nmap.
|
||
Пользователи могут использовать разнообразный и постоянно расщиряющийся набор скриптов, которые поставляются
|
||
вместе с Nmap, или написать свои скрипты под свои собственные нужды.</para>
|
||
|
||
<para>Когда мы создавали эту систему, считалось, что она будет использоваться для задач исследования сети, более
|
||
изощренного варианта определения версии, исследования уязвимостей. NSE может быть исполльзован даже для
|
||
обнаружения уязвимостей.</para>
|
||
|
||
<para>
|
||
Чтобы отразить все многообразие возможностей использования скриптов и при этом упростить выбор необходимого
|
||
скрипта, каждый из них содержит поле, где указано к какой категории он принадлежит. Сейчас определены следующие
|
||
категории: <literal moreinfo="none">safe</literal>,
|
||
<literal moreinfo="none">(intrusive)</literal>, <literal moreinfo="none">malware</literal>,
|
||
<literal moreinfo="none">version</literal>, <literal moreinfo="none">discovery</literal>,
|
||
<literal moreinfo="none">vuln</literal>, <literal moreinfo="none">auth</literal> и
|
||
<literal moreinfo="none">default</literal>. Все они описаны
|
||
<man>в <ulink url="https://nmap.org/book/nse-usage.html#nse-categories"/>.</man>
|
||
<notman>в <xref linkend="nse-categories"/>.</notman></para>
|
||
|
||
|
||
<para>Скриптовый движок Nmap детально описан
|
||
<man>на <ulink url="https://nmap.org/book/nse.html"/></man>
|
||
<notman>в <xref linkend="nse"/></notman> и настраивается с помощью следующих опций:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-sC</option>
|
||
<indexterm significance="preferred">
|
||
<primary><option>-sC</option></primary>
|
||
</indexterm>
|
||
</term>
|
||
|
||
<listitem>
|
||
|
||
<para>Осуществляет сканирование на основе скриптов. Эквивалентно опции <option>--script=default</option>.
|
||
Некоторые их применяемых здесь скриптов относятся к категории intrusive (навязчивые) и не должны быть
|
||
использованы для сканирования целевой сети без разрешения.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script <replaceable>категории-скриптов</replaceable>|<replaceable>директория</replaceable>|<replaceable>имя_файла</replaceable>|all</option><indexterm significance="preferred"><primary><option>--script</option></primary></indexterm></term>
|
||
|
||
<listitem>
|
||
<para>Осуществляет сканирование на основе скриптов (как <option>-sC</option>) используя разделенный запятыми список
|
||
категорий скриптов, отдельных файлов скриптов или директорий содержащих скрипты вместо стандартного набора скриптов.
|
||
Сначала Nmap пытается интерпретирует все аргументы как категории, затем (в случае неудачи) как файлы или директории.
|
||
Файл скрипта или директория скриптов могут быть определны с использованием абсолютного или относительного пути.
|
||
Абсолютные пути используются так, как вы их зададите. Относительные пути будут определяться относительно:
|
||
<indexterm significance="normal"><primary>data files</primary><secondary>directory search order</secondary></indexterm><indexterm significance="normal"><primary>scripts, location of</primary></indexterm>
|
||
<filename moreinfo="none">--datadir/</filename>;
|
||
<filename moreinfo="none">$NMAPDIR/</filename>;<indexterm significance="normal"><primary><envar>NMAPDIR</envar> environment variable</primary></indexterm>
|
||
<filename moreinfo="none">~/.nmap/</filename> (не используется в Windows);<indexterm significance="normal"><primary sortas="nmap directory"><filename moreinfo="none">.nmap</filename> directory</primary></indexterm>
|
||
NMAPDATADIR/ или<indexterm significance="normal"><primary>NMAPDATADIR</primary></indexterm>
|
||
<filename moreinfo="none">./</filename>. Также все эти папки будут проверяться на наличие поддиректории
|
||
<filename moreinfo="none">scripts/</filename></para>
|
||
|
||
<para>Если вы определили директорию со скриптами, и она была найдена, то Nmap загружает все NSE
|
||
скрипты (все файлы с расширением <literal moreinfo="none">.nse</literal>) из этой директории. Файлы без расширения
|
||
<literal moreinfo="none">nse</literal> игнорируются. Nmap не производит рекурсивный поиск скриптов во всех
|
||
поддиректориях. Если вы указываете конкретный файл, то его расширение не обязательно должно быть
|
||
<literal moreinfo="none">nse</literal>.</para>
|
||
|
||
<para>По умолчанию скрипты Nmap хранятся в папке <filename moreinfo="none">scripts</filename> -
|
||
поддиректории основного каталого Nmap. Для большей производительности,
|
||
все скрипты проиндексированы в базе даннных <filename moreinfo="none">scripts/script.db</filename>,
|
||
<indexterm significance="normal"><primary><filename moreinfo="none">script.db</filename></primary></indexterm>
|
||
где указано к какой категории или категориям принадлежит каждый скрипт. Для исполнения всех скриптов из базы данных
|
||
Nmap задайте атрибут <literal moreinfo="none">all</literal>.</para>
|
||
|
||
<para>Злонамеренные скрипты запускатся не в "песочнице" (sandbox) и поэтому могут повредить вашу систему или нарушить
|
||
вашу анонимность. Никогда не используйте скрипты от третьих лиц до тех пор, пока не будете доверять автору или
|
||
сами тщательно просмотрите скрипт.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script-args <replaceable>имя1</replaceable>=<replaceable>значение1</replaceable>,
|
||
<replaceable>имя2</replaceable>={<replaceable>имя3</replaceable>=<replaceable>значение3</replaceable>},
|
||
<replaceable>имя4</replaceable>=<replaceable>значение4</replaceable></option>
|
||
<indexterm significance="preferred"><primary><option>--script-args</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>script arguments</primary><seealso><option>--script-args</option></seealso></indexterm></term>
|
||
|
||
<listitem>
|
||
<para>Позволяет вам передавать аргументы NSE скриптам. Аргументы передаются как пары
|
||
<literal moreinfo="none">имя=значение</literal>. Передаваемый аргумент обрабатывается и хранится в Lua таблице,
|
||
к которой имеют доступ все скрипты. Имена передаются как строки (должны быть буквенно-цифровыми значениями) и
|
||
используются в качестве ключей в <literal moreinfo="none">argument-table</literal>. Значения могут быть также строками
|
||
или в свою очередь таблицами (заключенными в ‘<literal moreinfo="none">{</literal>’ и
|
||
‘<literal moreinfo="none">}</literal>’). Такие подтаблицы позволяют переопределить аргументы для конкретных скриптов
|
||
(например, если вы хотите предоставить различным скриптам различные пары login/password). Например, вы можете
|
||
определить аргументы через запятые: <literal moreinfo="none">user=bar</literal>,
|
||
<literal moreinfo="none">password=foo</literal> и
|
||
<literal moreinfo="none">anonFTP={password=nobody@foobar.com}</literal>. Если вы хотите переопределить опцию для
|
||
скрипта, вы должны проиндексировать подтаблицу с помощью <literal moreinfo="none">id</literal> скрипта, т.к. это
|
||
единственный способ указать скрипту на наличие специального аргумента.</para>
|
||
</listitem>
|
||
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><option>--script-trace</option>
|
||
<indexterm significance="preferred"><primary><option>--script-trace</option></primary></indexterm></term>
|
||
|
||
<listitem>
|
||
<para>
|
||
Эта опция делает то же самое, что и <option>--packet-trace</option>, но на один ISO уровень выше.
|
||
Если задана эта опция, то все входящие и исходящие соединения, осуществляемые скриптом, выводятся на экран.
|
||
Выводимая информация включает в себя используемый коммуникационный протокол, источник, цель и переданные
|
||
данные. Если более 5% переданных данных невозможно вывести на экран, то вывод будет представлять собой
|
||
шестнадцатеричный (hex) дамп.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script-updatedb</option>
|
||
<indexterm significance="preferred"><primary><option>--script-updatedb</option></primary></indexterm></term>
|
||
|
||
<listitem>
|
||
|
||
<para>Этой опцией обновляется база скриптов <filename moreinfo="none">scripts/script.db</filename>,
|
||
которая используется Nmap для определения доступных скриптов по умолчанию и их категорий. Обновлять
|
||
базу необходимо, только если вы добавили или удалили NSE скрипты из директории
|
||
<filename moreinfo="none">scripts</filename>, или поменяли категорию какого-нибудь скрипта. Эта опция
|
||
обычно используется без аргументов: <command moreinfo="none">nmap --script-updatedb</command>.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<indexterm class="endofrange" startref="man-nse-indexterm" significance="normal"/>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-performance">
|
||
<title>Опции управления временем и производительностью</title>
|
||
<indexterm class="startofrange" id="man-performance-timing-indexterm" significance="normal"><primary>timing</primary></indexterm>
|
||
<indexterm class="startofrange" id="man-performance-indexterm" significance="normal"><primary>performance</primary></indexterm>
|
||
<para>Наиболее приоритетной стороной развития Nmap для меня всегда была производительность. Сканирование по
|
||
умолчанию (<command moreinfo="none">nmap <replaceable>имя_хоста</replaceable></command>) какого-либо хоста в моей
|
||
локальной сети занимает пятую долю секунды. Этого едва хватает, чтобы моргнуть, но становится существенным, когда
|
||
вы сканируете сотни или тысячи хостов. Более того, некоторые типы сканирования, как например, UDP или
|
||
сканирование с целью определения версии могут в значительной степени увеличить время сканирования. Этому также
|
||
могут поспособствовать настройки некоторых брандмауэров, где есть ограничения на количество ответов. Хотя в Nmap
|
||
используются параллелизм и различные продвинутые алгоритмы для уменьшения времени сканирования, у пользователя
|
||
есть возможность полностью контролировать работу программы. Опытные пользователи Nmap задают команды таким образом,
|
||
чтобы получать только необходимую им информацию и в удовлетворяющие им сроки.</para>
|
||
|
||
<para>Способами увеличения скорости сканирования могут быть пропуск не критичных тестов, или обновление Nmap до
|
||
последней версии (улучшения производительности выходят довольно часто). Оптимизация параметров опций управления
|
||
временем также может значительно повлиять на скрость сканирования. Эти опции описаны ниже.</para>
|
||
|
||
<para>Некоторые опции могут принимать параметр <literal moreinfo="none">время</literal>. По умолчанию он задается в
|
||
миллисекундах, но вы можете добавить ‘s’, ‘m’ или ‘h’ к значению, чтобы задать его в секундах, минутах или часах.
|
||
Поэтому для опции <option>--host-timeout</option> аргументы <literal moreinfo="none">900000</literal>,
|
||
<literal moreinfo="none">900s</literal> и <literal moreinfo="none">15m</literal> означают одно и то же.</para>
|
||
|
||
<variablelist>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--min-hostgroup <replaceable>количество_хостов</replaceable></option>;
|
||
<option>--max-hostgroup
|
||
<replaceable>количество_хостов</replaceable></option> (Регулирует размер групп для параллельного сканирования)
|
||
<indexterm significance="normal"><primary><option>--min-hostgroup</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--max-hostgroup</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>В Nmap есть возможность осуществлять сканирование портов или сканирование с целью определения версии нескольких
|
||
хостов параллельно. Это происходит путем разделения целевого IP пространства на группы, а затем сканирования одной
|
||
группы за раз. В общем случае целесообразно использовать большие группы. Недостатком является то, что вы не можете
|
||
узнать информацию о каком-либо хосте, пока не закончится сканирование всей группы. Таким образом, если Nmap начнет
|
||
сканирование группы из 50-ти хостов, то пользователь не будет получать никакой информации (кроме обновлений информации
|
||
предлагаемых в вербальном режиме), пока не будет завершено сканирование всех 50-ти хостов.</para>
|
||
|
||
<para>По умолчанию Nmap использует компромиссный подход к решению этой проблемы. Сначала производится сканирование
|
||
небольших групп из 5-ти хостов, поэтому первые результаты приходят быстро, затем размер группы постепенно
|
||
увеличивается до максимального - 1024. Точные значения по умолчанию зависят от заданных опций. Для большей
|
||
эффективности Nmap использует группы больших размеров для UDP сканирования и для некоторых типов TCP сканирования
|
||
портов.</para>
|
||
|
||
<para>Когда максимальный размер группы задан опцией <option>--max-hostgroup</option>, Nmap не будет его превышать.
|
||
Минимальный размер группы задается опцией <option>--min-hostgroup</option>, и Nmap будет пытаться поддерживать размер
|
||
групп больше этого уровня. Возможно Nmap придется использовать группы меньше заданных размеров, когда для выполнения
|
||
условия минимальности будет не хватать целевых хостов. Эти опции могут быть использованы для удержания размера
|
||
группы внутри некоторого диапазона, хотя это редко необходимо.</para>
|
||
|
||
<para>Эти опции не имеют эффекта на фазе обнаружения хостов. Там используются обычное ping сканирование
|
||
(<option>-sP</option>). При сканировании с целью обнаружения хостов всегда используются большие группы для увеличения
|
||
скорости и точности.</para>
|
||
|
||
<para>Основной целью использования этих опций является задание большого минимума размера группы, с тем чтобы
|
||
сканирование проходило быстрее. При сканировании сети класса C обычным выбором является 256. При сканировании
|
||
большого количества портов, превышение этого числа вряд ли поможет. При сканировании лишь нескольких портов,
|
||
наилучшим размером группы будет 2048 или больше.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--min-parallelism <replaceable>количество_запросов</replaceable></option>;
|
||
<option>--max-parallelism
|
||
<replaceable>количество_запросов</replaceable></option> (Регулирует распараллеливание запросов)
|
||
<indexterm significance="normal"><primary><option>--min-parallelism</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--max-parallelism</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Эти опции регулируют общее количество запросов для группы хостов. Опции испльзуются при сканировании портов и при
|
||
обнаружени хостов. По умолчанию Nmap высчитывает степень параллельности основываясь на производительности сети. Если
|
||
пакеты отбрасываются, то Nmap использует меньшее количество запросов. Количество запросов медленно увеличивается по
|
||
мере того, как сеть продолжает нормально работать. Эти опции устанавливают минимальную и максимальную границы для этой
|
||
переменной. По умолчанию параллелизм устанавливается в 1, если сеть работает плохо, и может достигать нескольких сотен
|
||
при идеальных условиях.</para>
|
||
|
||
<para>Наиболее частым вариантом применения является установка опции <option>--min-parallelism</option> в значение
|
||
большее единицы, чтобы увеличить скорость сканирования плохо работающих хостов и сетей. Это очень рискованная опция,
|
||
т.к. установка большого значения может повлиять на правильность результатов сканирования. Установка этого значения
|
||
также сокращает возможности Nmap по динамическому контролю параллелизма в зависимости от условий в сети. Значение
|
||
равное 10-ти является приемлимым, хотя я прибегаю к этой опции в последнюю очередь.</para>
|
||
|
||
<para>Опция <option>--max-parallelism</option> иногда устанавливается для предотвращения отправки хостам более одного
|
||
запроса за раз. Это может быть полезно в комбинации с опцией <option>--scan-delay</option> (описывается далее), хотя
|
||
она и сама справляется со своими обязанностями.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--min-rtt-timeout <replaceable>время</replaceable></option>,
|
||
<option>--max-rtt-timeout <replaceable>время</replaceable></option>,
|
||
<option>--initial-rtt-timeout
|
||
<replaceable>время</replaceable></option> (Регулирует время ожидания ответа на запрос)
|
||
<indexterm significance="normal"><primary><option>--min-rtt-timeout</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--max-rtt-timeout</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--initial-rtt-timeout</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>В Nmap есть значение промежутка времени, в течении которого будет ожидаться ответ на запрос, перед тем как
|
||
прекратить попытки или совершить еще одну. Этот промежуток вычисляется на основе времени, в течении которого были
|
||
получены ответы на предыдущие запросы. Если в сети есть значительная и непостоянная задержка, то этот промежуток может
|
||
возрасти до нескольких секунда. Он также устанавливается на безопасном (высоком) уровне и может таким и оставаться
|
||
некоторое время, если Nmap производит сканирование не отвечающих на запросы хостов .</para>
|
||
|
||
<para>
|
||
Задание значений <option>--max-rtt-timeout</option> и <option>--initial-rtt-timeout</option> ниже значений по
|
||
умолчанию может существенно сократить время сканирования. Это особенно заметно при различных вариантах сканирования
|
||
с заданной опцией <option>-PN</option>, а также при сканировании сильно фильтруемых сетей. Однако не торопитесь
|
||
делать этого сразу. Сканирование займет много времени, если вы укажете такое низкое значение, при котором у большинства
|
||
запросов закончиться время ожидания ответа, и они будут ретранслированы, в то время как ответы на них будут в пути.
|
||
</para>
|
||
|
||
<para>Если хосты находятся в локальной сети, то 100 миллисекунда будет приемлимым значением опции
|
||
<option>--max-rtt-timeout</option>. Если при этом производится отслеживание маршурта, то для начала пропингуйте хост
|
||
в сети с помощью утилиты ICMP ping или <command moreinfo="none">hping2</command><indexterm significance="normal">
|
||
<primary><command moreinfo="none">hping2</command></primary></indexterm>,
|
||
у которой больше шансов обойти брандмауэр. Выясните среднее максимальное значение для, примерно, 10-ти пакетов.
|
||
Удвойте это значение для передачи опции <option>--initial-rtt-timeout</option> и умножьте на три или четыре для опции
|
||
<option>--max-rtt-timeout</option>. Обычно я не устанавливаю maximum RTT ниже 100 мс, не зависимо от результатов
|
||
пингования. А также не превышаю 1000 мс.</para>
|
||
|
||
<para>Опция <option>--min-rtt-timeout</option> редко используется; она может быть полезна, в случае если сеть
|
||
настолько ненадежна, что даже значения Nmap по умолчанию слишком агрессивны. Так как Nmap просто сокращает время
|
||
ожидания до минимума, в случае если сеть кажется надежной, то нужды в этой опции нет, о ней дожно быть сообщено как
|
||
о баге на <citetitle>nmap-dev</citetitle> рассылку.<indexterm significance="normal"><primary><citetitle>nmap-dev</citetitle> mailing list</primary></indexterm>
|
||
</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--max-retries <replaceable>количество_попыток</replaceable></option> (Задает максимальное
|
||
количество повторных передач запроса)
|
||
<indexterm significance="normal"><primary><option>--max-retries</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Когда Nmap не получает ответа на запрос сканирования порта, это может означать, что порт фильтруется. А возможно,
|
||
запрос или ответ просто затерялись в сети. Также возможно, что у цели есть ограничение на количество ответов, что
|
||
стало причиной временной блокировки запроса. В этом случае Nmap повторную передачу исходного запроса. Если для Nmap
|
||
сеть кажется ненадежной, то она может совершить очень много попыток, перед тем как бросить это дело. Хотя это и
|
||
придает достоверность результатам сканирования, это в то же время увеличивает время сканирования. Когда
|
||
производительность критична, время сканирования может быть сокращено путем введения ограничения на максимальное
|
||
количество повторных передач запроса. Вы даже можете задать <option>--max-retries 0</option>, чтобы предотвратить
|
||
все повторные попытки, хотя это не рекомендуется.</para>
|
||
|
||
<para>Значением по умолчанию (без <option>-T</option> шаблона) является 10 ретрансляций. Если сеть кажется надежной, и
|
||
целевые хосты не имеют ограничений на количество ответов, то Nmap обычно делают одну повторную попытку. Поэтому
|
||
установка <option>--max-retries</option> в низкое значение (например, 3) никак не вличет на большинство типов
|
||
сканирования. Такие значения могут значительно увеличить скорость сканирования медленных (с ограничениями на
|
||
количество ответов) хостов. Обычно вы теряете некоторую информацию, когда Nmap рано прекращает сканировать порты,
|
||
поэтому лучше дать истечь времени <option>--host-timeout</option>, и потерять всю информацию о цели.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--host-timeout <replaceable>время</replaceable></option> (Прекращает сканирование медленных целей)
|
||
<indexterm significance="normal"><primary><option>--host-timeout</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Некоторые хосты просто требуют <emphasis>длительного</emphasis> времени сканирования. Это может быть в силу
|
||
низкой производительности или ненадежности сетевого оборудования или программного обеспечения, ограничений на
|
||
количество пакетов или ограничивающих брандмауэров. Несколько процентов наиболее медленных хостов могут занять
|
||
большую часть времени сканирования. Иногда лучшим выходом является просто пропуск таких хостов. Передайте в качестве
|
||
аргумента опции <option>--host-timeout</option> максимальное значение промежутка времени, в течении которого вы
|
||
готовы ждать. Я часто задаю <literal moreinfo="none">30 мин</literal>, чтобы удостовериться в том, что Nmap не потратит
|
||
более получаса на единичный хост. Имейте ввиду, что в течении этого получаса Nmap может сканировать другие хосты, так
|
||
что это не просто потеря времени. Хост, чье время истекло, пропускается. Для этого хоста не выводится ни таблица портов,
|
||
ни информации об ОС.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--scan-delay <replaceable>время</replaceable></option>;
|
||
<option>--max-scan-delay
|
||
<replaceable>время</replaceable></option> (Регулирует задержку между запросами)
|
||
<indexterm significance="normal"><primary><option>--scan-delay</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--max-scan-delay</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Эта опция вынуждает Nmap подождать по крайней мере заданное время между каждым запросом. Это особенно полезно в
|
||
случае наличия ограничения на количество ответов у целевых хостов. Машины Solaris (как и многие другие) обычно отвечают
|
||
на запросы при UDP сканировании только одним ICMP сообщением в секунду. Посылка большего количества запросов со
|
||
стороны Nmap будет впустую. Установка значения опции <option>--scan-delay</option> в
|
||
<literal moreinfo="none">1 сек</literal> будет поддерживать в Nmap такую медленную интенсивность. Nmap пытается
|
||
определить ограничения на количество ответов у целевых хостов и подстроить задержку между запросами соответственно,
|
||
но ничто не мешает указать вам это значение явно, если вы точно знаете, что так будет лучше.</para>
|
||
|
||
<para>Когда Nmap подстраивает задержку между запросами к обнаруженному ограничению, то скорость сканироания
|
||
значительно уменьшается. Опция <option>--max-scan-delay</option> позволяет задать наибольшую возможную задержку.
|
||
Установка здесь маленького значения может привести к бесполезной ретрансляции пакетов или возможному пропуску портов,
|
||
если у цели есть строгий лимит на количество ответов.</para>
|
||
|
||
<para>Еще одним вариантом использования опции <option>--scan-delay</option> является обход пороговых систем обнаружения
|
||
и предотвращения вторжений (IDS/IPS).<indexterm significance="normal"><primary>intrusion detection systems</primary><secondary>evading</secondary></indexterm>
|
||
</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--min-rate <replaceable>число</replaceable></option>
|
||
(Задает минимальную интенсивность сканирования)
|
||
<indexterm significance="normal"><primary><option>--min-rate</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Функции динамического управления различными опциями времени в Nmap хорошо справляются с задачей подборки
|
||
подходящей скорости сканирования. Тем не менее, иногда вы можете заранее узнать подходящую интенсивность сканирования
|
||
сети, или можете гарантировать, что сканирование закончится к определенному времени. Когда задается опция
|
||
<option>--min-rate</option>, Nmap будет пытаться отсылать пакеты с той же или большей, чем задано, интенсивностью.
|
||
Аргументом этой опции является положительное число, отражающее интенсивность сканирования в пакетах в секунду. Например,
|
||
задание опции <option>--min-rate 300</option> означает, что Nmap будет пыпыться отсылать пакеты с интенсивностью
|
||
300 пакетов в секунду или больше. Задание низкого значения не отнимает у Nmap права работать с большей интенсивностью,
|
||
если позволяют условия.</para>
|
||
|
||
<para>Существуют два варианта, при которых реальная интенсивность работы будет меньше заданного минимума. Первый, когда
|
||
заданный минимум быстрее, чем наиболее быстрый возможный уровень работы Nmap, который зависит от аппаратного
|
||
обеспечения. В этом случае Nmap будет посылать пакеты так быстро, как может; но будьте осторожны, т.к. при быстрой
|
||
скорости возможны потери точности. Второй случай, когда у Nmap больше нечего отсылать, например, в конце сканирования,
|
||
когда последние запросы уже посланы, и Nmap ожидает ответы на них. Это нормально, когда интенсивность падает в
|
||
конце сканирования или при смене групп сканирования.</para>
|
||
|
||
<para>Задание минимального уровня интенсивности должно производится с осторожностью. Сканирование быстрее, чем
|
||
возможно в данной сети, может привести к потери точности. В некоторых случаях, задание выского уровня интенсивности
|
||
может привести к тому, что сканирование займет <emphasis>больше</emphasis> времени, чем с более низким уровнем. Это
|
||
может произойти в случае, если адаптивные ретрансляционные <indexterm significance="normal"><primary>adaptive retransmission</primary><see>retransmission</see></indexterm><indexterm significance="normal"><primary>retransmission</primary></indexterm>
|
||
алгоритмы Nmap обнаружат перегрузку сети, вызванную высоким уровнем интенсивности сканирования, и увеличат количество
|
||
ретрансляций для повышения точности сканирования. Поэтому, даже хотя пакеты отсылаются с большой интенсивностью,
|
||
еще больше пакетов отсылается впустую. Установите максимальное количество ретрансляций с помощью опции
|
||
<option>--max-retries</option>, если вы хотите ограничить общее время сканирования.</para>
|
||
|
||
<para>Опция <option>--min-rate</option> глобальна, она оказывает влияние на все сканирование, а не на отдельные хосты.
|
||
Учитывается только при сканировании с целью обнаружения хостов и сканировании портов. Другие функции, как например
|
||
определение ОС, имеют собственные особенности управления временем.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--max-rate <replaceable>число</replaceable></option>
|
||
(Задает максимальную интенсивность сканирования)
|
||
<indexterm significance="normal"><primary><option>--max-rate</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Дополнительно к опции <option>--min-rate</option> есть опция <option>--max-rate</option>, которая ограничивает
|
||
максимальную интенсивность сканирования заданным значением. Используйте <option>--max-rate 100</option>, например,
|
||
чтобы ограничиться 100 пакетами в секунду в быстрой сети. Используйте <option>--max-rate 0.1</option> для медленного
|
||
сканирования - один пакет в десять секунд.</para>
|
||
|
||
<para><option>--max-rate</option> также как и <option>--min-rate</option> глобальная опция, оказывающая влияние
|
||
на все сканирование. Учитывается только при сканировании с целью обнаружения хостов и сканировании портов.</para>
|
||
|
||
<para>Иногда уровень интенсивности может превышать максимальное заданное значение для больры с непредвиденными
|
||
задержками, но в среднем он будет находится на максимальном уровне или ниже. Nmap будет работать с меньшей
|
||
интенсивностью, если того требуют условия. Чтобы удерживать интенсивность сканирования внутри определенного
|
||
промежутка, используйте опции <option>--min-rate</option> и <option>--max-rate</option> вместе.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--defeat-rst-ratelimit</option>
|
||
<indexterm significance="normal"><primary><option>--defeat-rst-ratelimit</option></primary></indexterm></term>
|
||
<listitem>
|
||
|
||
<para>Многие хосты имеют давно использующие ограничения <indexterm significance="normal"><primary>rate limiting</primary></indexterm>
|
||
на количество ICMP сообщений об ошибке (как ошибки о недостижимости порта). Многие системы сейчас используют похожие
|
||
ограничения на количество пакетов RST (сброс), генерируемых ими. Это может сильно замедлить сканирование, т.к. Nmap
|
||
подстраивается под эти ограничения. Вы можете указать Nmap игнорировать такие ограничения (для сканирования портов типа
|
||
SYN, при котором не отвечающие порты <emphasis>не считаются</emphasis> <literal moreinfo="none">открытыми</literal>)
|
||
путем задания опции <option>--defeat-rst-ratelimit</option>.</para>
|
||
|
||
<para>Использование этой опции может привести к потери точности сканирования, т.к. Nmap могла не подождать неоходимое
|
||
время ответа RST (на которые у целевой машины есть ограничения). При сканировании типа SYN не отвечающие порты
|
||
помечаются как <literal moreinfo="none">фильтруемые</literal>, а не <literal moreinfo="none">закрытые</literal>, как в
|
||
случае принятия ответа RST. Это опция полезна, только когда вам важны открытые порты, а различать
|
||
<literal moreinfo="none">закрытые</literal> и <literal moreinfo="none">фильтруемые</literal> порты нет необходимости.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-T
|
||
paranoid(паранойдный)|sneaky(хитрый)|polite(вежливый)|normal(обычный)|aggressive(агрессивный)|insane(безумный)
|
||
</option>
|
||
(Устанавливает шаблон настроек управления временем)
|
||
<indexterm significance="normal"><primary><option>-T</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>timing templates</primary><seealso><literal moreinfo="none">paranoid</literal>, <literal moreinfo="none">sneaky</literal>, <literal moreinfo="none">polite</literal>, <literal moreinfo="none">normal</literal>, <literal moreinfo="none">aggressive</literal>, and <literal moreinfo="none">insane</literal></seealso></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<indexterm significance="normal"><primary><option>-T0</option></primary><see><literal moreinfo="none">paranoid</literal> timing template</see></indexterm>
|
||
<indexterm significance="normal"><primary><option>-T1</option></primary><see><literal moreinfo="none">sneaky</literal> timing template</see></indexterm>
|
||
<indexterm significance="normal"><primary><option>-T2</option></primary><see><literal moreinfo="none">polite</literal> timing template</see></indexterm>
|
||
<indexterm significance="normal"><primary><option>-T3</option></primary><see><literal moreinfo="none">normal</literal> timing template</see></indexterm>
|
||
<indexterm significance="normal"><primary><option>-T4</option></primary><see><literal moreinfo="none">aggressive</literal> timing template</see></indexterm>
|
||
<indexterm significance="normal"><primary><option>-T5</option></primary><see><literal moreinfo="none">insane</literal> timing template</see></indexterm>
|
||
|
||
|
||
<para>Хотя описанные выше опции управления временем мощны и эффективны, многих людей они сбивают с толку. Более того,
|
||
выбор подходящих значений может иногда занимать больше времени, чем само сканирование. Поэтому Nmap предлагает более
|
||
легкий подход, заключайющийся в применении шести шаблонов настроек. Вы можете задавать их с помощью опции
|
||
<option>-T</option> и номера шаблона (0–5) или его имени. Имена шаблонов следующие:
|
||
<option>paranoid(паранойдный)</option> (<option>0</option>),
|
||
<option>sneaky(хитрый)</option> (<option>1</option>),
|
||
<option>polite(вежливый)</option> (<option>2</option>),
|
||
<option>normal(обычный)</option> (<option>3</option>),
|
||
<option>aggressive(агрессивный)</option> (<option>4</option>)
|
||
и <option>insane(безумный)</option> (<option>5</option>).
|
||
Первые два предназначены для обхода IDS. Вежливый (polite) режим снижает интенсивность сканирования с целью меньшего
|
||
потребления пропускной способности и машинных ресурсов. Обычнй (normal) режим устанавливается по умолчанию, поэтому
|
||
опция <option>-T3</option> ничего не делает. Агрессивный (aggressive) режим повышает интенсивность сканирования,
|
||
предполагая, что вы используете довольно быструю и надежную сеть. Наконец, безумный (insane) режим
|
||
<indexterm significance="normal"><primary><literal moreinfo="none">insane</literal> (<option>-T5</option>) timing template</primary></indexterm>
|
||
предполагает, что вы используете чрезвычайно быструю сеть и готовы пожертвовать точностью ради скорости.</para>
|
||
|
||
<para>Эти опции позволяет определять пользователям, насколько агрессивными они хотят быть, оставляя за Nmap право
|
||
выбирать подходящие значения опций управления временем. Также шаблоны позволяют производить некоторые незначительные
|
||
корректировки скорости, для которых пока нет отдельных опций. Например, <option>-T4</option><indexterm significance="normal"><primary><literal moreinfo="none">aggressive</literal> (<option>-T4</option>) timing template</primary></indexterm>
|
||
запрещает установку динамической задержки во время сканирования выше 10 мс для TCP порт, а <option>-T5</option> - выше
|
||
5 мс. Шаблоны могут использоваться в комбинации с описанными выше опциями; в этом случает будут использоваться в
|
||
качестве значений аргументы этих опций, а не значения по умолчанию, заданные в шаблонах. Я рекомендую задавать
|
||
<option>-T4</option> при сканировании довольно современных и надежных сетей. Задавайте эту опцию, даже если вы
|
||
используете описанные выше опции управления временем, и вы сможете получить выгоду от этих незначительных
|
||
оптимизаций, которые включаются этой опцией.</para>
|
||
|
||
<para>Если у вас приличная широкополосная связь или ethernet соединение, то я бы порекомендовал вам всегда использовать
|
||
<option>-T4</option>. Некоторым людям нравится <option>-T5</option>, хотя она чересчур агрессивна на мой взгляд. Иногда
|
||
люди используют <option>-T2</option>, потому что думают, что так у них мешьнше шансов пропустить какие-либо хосты или
|
||
потому, что считают себя вежливыми по жизни. Они часто не осознают, насколько опция <option>-T polite</option><indexterm significance="normal"><primary><literal moreinfo="none">polite</literal> (<option>-T2</option>) timing template</primary></indexterm>
|
||
медленна. Время их сканирования может занять в десять раз больше обычного. Проблемы с хостами и пропускной
|
||
способностью редки при использовании опции (<option>-T3</option>), поэтому я рекомендую ее для осторожного сканирования.
|
||
Отключение функции определения версии намного более эффективно для сокращения таких проблем, чем попытка настройки
|
||
всех опций управления временем.</para>
|
||
|
||
<para>Хотя опции <option>-T0</option><indexterm significance="normal"><primary><literal moreinfo="none">paranoid</literal> (<option>-T0</option>) timing template</primary></indexterm>
|
||
и <option>-T1</option><indexterm significance="normal"><primary><literal moreinfo="none">sneaky</literal> (<option>-T1</option>) timing template</primary></indexterm>
|
||
могут быть полезны для обхода IDS, они отнимут очень много времени при сканировании тысяч хостов или портов. Для
|
||
такого сканирования, предпочтительнее будет задать свои точные значения, чем полагаться на опции <option>-T0</option>
|
||
и <option>-T1</option>.</para>
|
||
|
||
<para>При использовании опции <option>T0</option> в любой момент времени производится сканирование только одного порта,
|
||
и перед отправкой каждого запроса проходит пять минут. <option>T1</option> и <option>T2</option> практически одинаковы,
|
||
только между запросами проходит 15 секунд и 0.4 секунды соответственно. Опция <option>T3</option> является опцией
|
||
Nmap по умолчанию, она включает распараллеливание.<indexterm significance="normal"><primary><literal moreinfo="none">normal</literal> (<option>-T3</option>) timing template</primary></indexterm>
|
||
<option>-T4</option> эквивалента опциям <option>--max-rtt-timeout 1250
|
||
--initial-rtt-timeout 500 --max-retries 6</option> и устанавливает максимальную задержку при TCP сканировании 10
|
||
миллисекунд. <option>T5</option> эквивалента опциям
|
||
<option>--max-rtt-timeout 300 --min-rtt-timeout 50
|
||
--initial-rtt-timeout 250 --max-retries 2 --host-timeout 15m</option> и устанавливает максимальную задержку при TCP сканировании 5 миллисекунд.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
<indexterm class="endofrange" startref="man-performance-indexterm" significance="normal"/>
|
||
<indexterm class="endofrange" startref="man-performance-timing-indexterm" significance="normal"/>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-bypass-firewalls-ids">
|
||
<title>Обход Брандмауэров/IDS</title>
|
||
<indexterm class="startofrange" id="man-bypass-filewalls-indexterm" significance="normal"><primary>firewalls</primary><secondary>bypassing</secondary></indexterm>
|
||
<indexterm class="startofrange" id="man-bypass-ids-indexterm" significance="normal"><primary>intrusion detection systems</primary><secondary>evading</secondary></indexterm>
|
||
|
||
<para>Многие пионеры Интернета представляли его в своем воображении как открутую глобальную сеть с универсальным
|
||
пространством IP адресов, позволяющую создавать виртуальные соединения между любыми двумя точками. Это позволило бы
|
||
хостам общаться на равных, обмениваясь информацией между собой. Люди могли бы получить доступ к своим домашним
|
||
системам с работы, изменяя настройки климат-контроля или открывая двери ранним гостям. Этому видению глобальной
|
||
соединенности не суждено было сбыться по причинам нехватки адресного пространства и проблемам безопасности. В ранние
|
||
1990-е организации стали использовать брадмауэры с целью сокращения возможностей соединения. Огромные сети были
|
||
отрезаны от Интернета различными программными прокси, серверами преобразования имен и пакетными фильтрами.
|
||
Неограниченный поток информации сократился до строго регламентированных каналов связи и содержимому передающемуся по
|
||
ним.</para>
|
||
|
||
<para>Сетевые барьеры, такие как брандмауэры, могут сделать процесс исследования сети чрезвычайно сложным. Никаких
|
||
послаблений не намечается, т.к. предотвращение инвентаризации сети часто является ключевой целью введения таких
|
||
устройств. Тем не менее, Nmap предоставляет множество функций для облегчения понимания структуры таких сложных сетей
|
||
и для проверки того факта, что сетевые фильтры работают как предполагалось. Поддерживаются даже механизмы обхода
|
||
плохо организованных вариантов защит. Один из лучших методов проверки вашей системы безопасности - это попытка ее
|
||
обойти. Поставьте себя на место атакующего и примените описанные ниже методы к вашей сети. Запустите FTP bounce
|
||
сканирование, idle сканирование, атаку с фрагментацией пакетов или попробуйте пробиться через один из ваших
|
||
прокси-серверов.
|
||
</para>
|
||
|
||
<para>В дополнении к ограничению сетевой активности, компании все больше и больше используют мониторинг траффика с
|
||
помощью систем обнаружения вторжений (intrusion detection systems - IDS). Все эти системы используют правила,
|
||
составленные для обнаружения различного рода сканирований с помощью Nmap, т.к. сканирование часто оказывается
|
||
предвестником атак. Многие из этих систем недавно были преобразованы в системы
|
||
<emphasis>предотвращения</emphasis> вторжений (intrusion prevention systems - IPS),
|
||
<indexterm significance="normal"><primary>intrusion prevention systems</primary>
|
||
<seealso>intrusion detection systems</seealso></indexterm>
|
||
которые блокирую трафик, расцениваемый как злонамеренный. К сожалению для сетевых администраторов и продавцов IDS,
|
||
обнаружение вторжений с большой долей вероятности путем анализа паетов данных является сложной задачей. Атакующие с
|
||
помощью терпения, навыков и с помощью некоторых опций Nmap обычно могут незамеченными обойти системы IDS. Между тем,
|
||
администраторам приходится иметь дело с большим количеством ложных положительных результатов, когда такие системы
|
||
ошибаются и блокируют безвредную сетевую активность.</para>
|
||
|
||
<para>Время от времени некоторые высказывают предположения, что Nmap не следует предоставлять фукнции для обхода IDS.
|
||
Они аргументируют свою позицию тем, что эти функции могут быть с равным успехом использованы атакующими, так же как они
|
||
используются администраторами для улучшения систем защиты. Проблема в таких рассуждениях заключается в том, что
|
||
такие методы будут по-прежнему использоваться атакующими, которые просто найдут другие утилиты или самостоятель
|
||
добавят такие функции в Nmap. Тем временем администраторам будет намного сложнее выполнять свою работу. Использование
|
||
только современных FTP серверов намного более мощное средство защиты, чем попытки предотвратить распространение
|
||
утилит позволяющих реализовать FTP bounce атаки.
|
||
</para>
|
||
|
||
<para>Не существует такой магической опции, которая позволяла бы обнаруживать и обходить брандмауэры и IDS. Для этого
|
||
необходимы навыки и опыт. Подробное описание таких методов выходит за рамки данного справочного руководства, где
|
||
содержаться только важные опции с описанием их возможностей.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-f</option> (фрагментировать пакеты);
|
||
<option>--mtu</option> (используя заданное значение MTU)
|
||
<indexterm significance="preferred"><primary><option>-f</option></primary></indexterm>
|
||
<indexterm significance="preferred"><primary><option>--mtu</option></primary></indexterm>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>При задании опции <option>-f</option> все типы сканирования (включая различные типы пингования) будут
|
||
использовать маленькие фрагментированные IP пакеты. Идея состоит в том, чтобы разбить TCP заголовок на
|
||
части и посылать их в различных пакетах для того, чтобы не дать определить пакетным фильтрам и системам
|
||
обнаружения вторжения, что вы делаете. Будьте осторожны с этой опцией! Некоторые программы имеют проблемы с
|
||
обработкой таких маленьких пакетов. Один старый сниффер Sniffit аварийно завершал работу после принятия
|
||
первого фрагмента. Задайте эту опцию один раз, и Nmap будет разбивать пакеты на части по 8 байт или меньше
|
||
после IP заголовка. Таким образовм, 20-ти байтный TCP заголовок будет разбит на 3 пакета. Два из них будут
|
||
содержать по 8 байт этого заголовка, а третий - последние 4. Конечно же, каждый фрагмент также имеет IP
|
||
заголовок. Задайте опцию <option>-f</option> снова, чтобы использовать фрагменты по 16 байт
|
||
(тем самым сократится число фрагментов).<indexterm significance="normal">
|
||
<primary><option>-f</option></primary><secondary>giving twice</secondary></indexterm>
|
||
Или вы можете задать свой собственный размер фрагмента с помощью опции <option>--mtu</option>. Не используйте
|
||
опцию <option>-f</option> вместе с <option>--mtu</option>. Размер должен быть кратным 8. В то время как
|
||
фрагментированные пакеты не смогут пройти через пакетные фильтры и брандмауэры, которые ставят в очередь
|
||
все IP фрагменты, например, с помощью опции <varname>CONFIG_IP_ALWAYS_DEFRAG</varname>в ядре Linux, некоторые
|
||
сети не могут позволить себе связанное с этим падение производительности и поэтому не используют такую
|
||
возможность. Другие могут использовать ее, потому что фрагменты в таких сетях могут идти по разным маршрутам.
|
||
Некоторые системы фрагментируют исходящие пакеты прямо в ядре. Linux с включенным модулем отслеживания
|
||
соединения iptables <indexterm significance="normal"><primary>iptables</primary></indexterm> тому пример.
|
||
Произведите сканирование с включенным сниффером <application moreinfo="none">Wireshark</application>
|
||
<indexterm significance="normal"><primary>
|
||
<application moreinfo="none">Wireshark</application></primary></indexterm>,
|
||
чтобы убедиться, что пакеты фрагментируются. Если в вашей ОС возникают проблемы, попробуйте задать опцию
|
||
<option>--send-eth</option><indexterm significance="normal"><primary><option>--send-eth</option></primary>
|
||
</indexterm>, чтобы обойти IP слой и отсылать сырые ethernet фрэймы.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-D <replaceable>фиктивный_хост1</replaceable><optional>,<replaceable>фиктивный_хост2</replaceable></optional><optional>,ME</optional><optional>,...</optional></option>
|
||
(Маскировка сканирования с помощью фиктивных хостов)
|
||
<indexterm significance="normal"><primary><option>-D</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>decoys</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Производится сканирование с использованием фиктивных хостов; в этом случае цель сканирования считает,
|
||
что заданные вами фиктивные хосты также производят ее сканирование. Хотя IDS цели может сообщить о том, что
|
||
было произведено 5-10 сканирований портов с каждого IP адреса, система не сможет узнать, с какого из этих
|
||
IP адресов действительно производилось сканирование, а какие были лишь безвредными ловушками. Хотя этот тип
|
||
сканирования может быть распознан путем отслеживания маршрута, сбрасыванием ответа или другими активными
|
||
методами, в большинстве случае он является эффективным способом сокрытия вашего IP адреса.</para>
|
||
|
||
<para>При задании фиктивных хостов, разделяйте их запятыми; вы также можете указать
|
||
<literal moreinfo="none">ME</literal><indexterm significance="normal">
|
||
<primary><literal moreinfo="none">ME</literal> (decoy address)</primary></indexterm>
|
||
как один из фиктивных хостов для задания позиции в списке вашего реального IP адреса. Если вы задаете
|
||
<literal moreinfo="none">ME</literal> в шестой позиции или дальше, некоторые обычные системы обнаружения
|
||
сканирования портов (например, Solar Designer's<indexterm significance="normal">
|
||
<primary>Solar Designer</primary></indexterm> excellent Scanlogd)<indexterm significance="normal">
|
||
<primary><application moreinfo="none">Scanlogd</application></primary></indexterm>
|
||
вряд ли вообще отобразят ваш IP адрес. Если вы не задаете флаг <literal moreinfo="none">ME</literal>, Nmap
|
||
поставит его в произвольную позицию. Вы также можете использовать
|
||
<literal moreinfo="none">RND</literal><indexterm significance="normal"><primary><literal moreinfo="none">RND</literal> (decoy address)</primary></indexterm>
|
||
для генерации произвольного, незарезервированного IP адреса, или
|
||
<literal moreinfo="none">RND:<replaceable>чило</replaceable></literal> для генерации определенного
|
||
<replaceable>числа</replaceable> адресов.</para>
|
||
<para>Имейте ввиду, что хосты, указанные вами в качестве фиктивных, должны работать, иначе вы просто
|
||
зафлудите целевые хосты с помощью запросов на подключение. Также легко будет определить, какой хост
|
||
действительно производит сканирование, если только он будет работать. Возможно вы захотите использовать IP
|
||
адреса вместо имен (в этом случае сети, в которых находятся фиктивные хосты, не видят вас в своих логах).
|
||
</para>
|
||
|
||
<para>Фиктивные хосты используются и во время фазы обнаружения хостов (используя ICMP, SYN, ACK и что там
|
||
еще), и во время сканирования портов. Также они используются во время удаленного определения ОС
|
||
(<option>-O</option>). Эта техника не работает при сканировании с целью определения версии или с целью
|
||
обнаружения возможности установления TCP соединения. Во время сканирования задержки принудительно
|
||
устанавливаются между каждой группой обманных запросов. Т.к. ловушки посылаются одной группой сразу, то это
|
||
может временно нарушить работу системы контроля ограничений нагрузок.</para>
|
||
|
||
<para>Использование большого количества фиктивных хостов может снизить скорость вашего сканирование и даже
|
||
сделать его менее точным. Также, некоторые ISP будут отфильтровывать ваши обманные пакеты, в то время как
|
||
некоторые вообще никак не ограничивают такого рода IP пакеты.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-S <replaceable>IP_адрес</replaceable></option> (Изменить исходный адрес)
|
||
<indexterm significance="normal"><primary><option>-S</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>spoofing source address</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>В некоторых обстоятельствах Nmap может не определить ваш адрес (в этом случае Nmap сообщит вам об этом).
|
||
В этом случае используйте опцию <option>-S</option>, передав ей в качестве параметра IP адрес, чтобы указать
|
||
интерфейс, который вы хотите использовать для отправки пакетов.</para>
|
||
|
||
<para>Также эта опция может быть использована для того, чтобы заставить "думать" цель сканирования, что ее
|
||
сканирует <emphasis>кто-то другой</emphasis>. Представьте компанию, которая частенько подвергается
|
||
сканированию портов со стороны конкурента! Как правило, в этом случае необходимо использовать также опции
|
||
<option>-e</option> и <option>-PN</option>. Имейте ввиду, что вы не будете получать в ответ никаких пакетов
|
||
(они будут отправлены на указанный вами IP адрес), поэтому Nmap не будет выводить какой-либо полезной
|
||
информации.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-e <replaceable>интерфейс</replaceable></option> (Использовать конкретный интерфейс)
|
||
<indexterm significance="normal"><primary><option>-e</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>interface</primary><seealso><option>-e</option></seealso></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap, какой интерфейс использовать для отправки и приема пакетов. Nmap в состоянии
|
||
определить его автоматически, но сообщит вам, если не сможет.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--source-port <replaceable>номер_порта</replaceable>;</option>
|
||
<option>-g <replaceable>номер_порта</replaceable></option> (Задать свой номер порта)
|
||
<indexterm significance="preferred"><primary><option>--source-port</option></primary></indexterm>
|
||
<indexterm significance="preferred"><primary><option>-g</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>source port number</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Одной из удивительно часто встречаюшиься ошибок при конфигурировании системы безопасности является тенденция
|
||
доверять траффику основываясь только на номере исходного порта. Легко понять как это происходит. Администратор
|
||
устанавливает новенький брандмауэр, и его заваливают жалобы от неблагодарных пользователей, чьи приложения перестали
|
||
работать. В частности, может не работать DNS, т.к. UDP DNS ответы от внешних серверов больше не могут войти в сеть. Еще
|
||
одним распространенным примером ялвяется FTP. При активной FTP передаче, удаленный сервер пытается установить
|
||
соединение с клиентом, чтобы послать запрашиваемый файл.</para>
|
||
|
||
<para>Существуют безопасные методы решения этих проблем, часто в виде прокси на уровне приложений или надстроек к
|
||
брандмауэрам. Но, к сожалению, существуют и более легкие, небезопасные методы. Принимая во внимание то, что DNS ответы
|
||
приходят с порта 53 а FTP с порта 20, многие администраторы поддаются искушению и просто разрешают весь входящий
|
||
трафик с этих портов. Они также часто полагают, что атакующие не заметят и не будут использовать такие дыры в
|
||
брандмауэрах. В других случаях, администраторы считают, что это всего лишь временные меры, до тех пор пока они не
|
||
придумают более безопасные способы решения проблем. Потом они забывают об этом.</para>
|
||
|
||
<para>Перегруженные работой сетевые администраторы не единственные, кто попадается в такую ловушку. Многочисленные
|
||
продукты просто кишат такими небезопасными правилами. Даже Microsoft заслуживает порицания. Фильтры IPsec, которые
|
||
были установлены в Windows 2000 и Windows XP содержат внутренне правило, разрешающее весь TCP или UDP траффик с порта
|
||
88 (Kerberos). Еще один известный случай: версии брандмауэра Zone Alarm до 2.1.25 разрешали все входящие UDP пакеты с
|
||
порта 53 (DNS) или 67 (DHCP).</para>
|
||
|
||
<para>Nmap предоставляет опции <option>-g</option> и <option>--source-port</option> (они эквиваленты) для того, чтобы
|
||
воспользоваться такими ошибками. Просто задайте номер порта, и Nmap будет использовать его для отправки пакетов. Nmap
|
||
должна использовать различные номера портов, чтобы точно определить ОС; также DNS запросы игнорируют опцию
|
||
<option>--source-port</option>, т.к. для их осуществления Nmap использует системные библиотеки. Большинство TCP
|
||
вариантов сканирований, включая SYN сканирование, полностью поддерживают эту опцию, как и UDP сканирование.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--data-length <replaceable>число</replaceable></option> (Добавить произвольные данные к посылаемым
|
||
пакетам)
|
||
<indexterm significance="normal"><primary><option>--data-length</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>В обычных условиях Nmap посылает минимальные пакеты, содержащие только заголовок. Так TCP пакеты
|
||
составляют 40 байтов, а запросы на ICMP эхо ответ всего 28. Эта опция указывет Nmap добавлять заданное число
|
||
произвольных байтов к посылаемым пакетам. Эта опция не влияет на пакеты, используемые для определения ОС
|
||
(<option>-O</option>) <indexterm significance="normal">
|
||
<primary><option>--data-length</option></primary><secondary>no effect in OS detection</secondary></indexterm>,
|
||
поскольку в этом случае необходимо тщательное соответствие запросов, но большинство пакетов, используемых для
|
||
различных видов пингования и сканирования портов поддерживают ее. Это немного замедляет сканирование, зато
|
||
делает его более незаметным.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--ip-options <replaceable>S|R [маршрут]|L [маршрут]|T|U ... </replaceable>;</option>
|
||
<option>--ip-options <replaceable>шестнадцатиричная строка</replaceable></option> (Посылать пакет с заданным ip
|
||
опциями)
|
||
<indexterm significance="normal"><primary><option>--ip-options</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>IP options</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para><ulink role="hidepdf" url="http://www.rfc-editor.org/rfc/rfc791.txt">Протокол IP</ulink> предоставляет
|
||
несколько опций, которые могут быть заданы в заголовке пакета. В отлиии от повсеместно используемых TCP опций,
|
||
опций IP редко видны из соображений практичности и безопасности. Фактически, большинство роутеров Интернета
|
||
блокируют наиболее опасные опации, как, например, отслеживание источника. И все же опции могут быть полезны для
|
||
определения и манипулирования сетевым маршрутом к целевым машинам. Например, возможно вы сможете воспользоваться
|
||
опцией для определния маршрута до цели, когда более традиционные методы в стиле tracerout будут бесполезны. Или
|
||
если ваши пакеты блокируются каким-либо брандмауэром, вы можете попробовать задать маршрут с менее строгим
|
||
сетевым экраном.</para>
|
||
|
||
<para>Наиболее действенным способом задания IP опций является передача их значений в качестве аргументов опции
|
||
<option>--ip-options</option>. Каждое шестнадцатиричное значение задается с помощью
|
||
<literal moreinfo="none">\x</literal>, после которого следуют два цифры. Вы можете повторять символы, поставив
|
||
после них звездочку и указав количество повторений. Например,
|
||
<literal moreinfo="none">\x01\x07\x04\x00*36\x01</literal> это шестнадцатиричная строка, содержащая 36 NUL байтов.
|
||
</para>
|
||
|
||
<para>Nmap также предоставляет механизм сокращений для задания таких опций. Просто передайте в качестве
|
||
аргумента букву <literal moreinfo="none">R</literal>, <literal moreinfo="none">T</literal> или
|
||
<literal moreinfo="none">U</literal> для задания опции записи маршрута,
|
||
<indexterm significance="normal"><primary>record route IP option</primary></indexterm> записи временной метки
|
||
<indexterm significance="normal"><primary>record timestamp IP option</primary></indexterm> или обеих
|
||
соответственно. Ослабление или ужесточение отслеживания источника
|
||
<indexterm significance="normal"><primary>source routing</primary></indexterm>
|
||
может быть задано с помощью <literal moreinfo="none">L</literal> или <literal moreinfo="none">S</literal>,
|
||
затем пробела, а затем разделенный пробелами список IP адресов.</para>
|
||
|
||
<para>Если вы хотите заданные опции в передаваемых и получаемых пакетах, задайте опцию
|
||
<option>--packet-trace</option>. Для большей информации и примеров использования IP опций с Nmap, смотрите
|
||
<ulink url="https://seclists.org/nmap-dev/2006/q3/0052.html"/>.
|
||
</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--ttl <replaceable>значение</replaceable></option> (Установить IP поле time-to-live (время жизни)
|
||
<indexterm significance="normal"><primary><option>--ttl</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>time to live (TTL)</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Устанавливает IPv4 поле time-to-live в посылаемых пакетах в соответствии с заданным значением.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--randomize-hosts</option> (Использовать произвольный порядок целей сканирования)
|
||
<indexterm significance="preferred"><primary><option>--randomize-hosts</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>randomization of hosts</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap перемешать каждую группу, содержащую до 16384 хостов, перед началом сканирования. Это
|
||
может сделать сканирование менее заметным для различного рода систем сетевого мониторинга, особенно если вы
|
||
используете низкие значения таймингов. Если вы хотите перемешивать большие по размеру группы, то увеличьте
|
||
значение
|
||
<varname>PING_GROUP_SZ</varname><indexterm significance="normal">
|
||
<primary><varname>PING_GROUP_SZ</varname></primary></indexterm>
|
||
в <filename moreinfo="none">nmap.h</filename><indexterm significance="normal"><primary><filename moreinfo="none">nmap.h</filename></primary></indexterm>
|
||
и перекомпилируйте программу. Альтернативным решением является генерация списка целевых IP адресов
|
||
(<option>-sL -n -oN <replaceable>имя_файла</replaceable></option>), обработка его с помощью Perl скрипта и
|
||
затем передача его Nmap в качестве параметра опции
|
||
<option>-iL</option>.<indexterm significance="normal"><primary><option>-iL</option></primary><secondary>randomizing hosts with</secondary></indexterm>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--spoof-mac <replaceable>MAC адрес, префикс или название производителя</replaceable></option>
|
||
(Задать собственный MAC адрес)
|
||
<indexterm significance="preferred"><primary><option>--spoof-mac</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>spoofing MAC address</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap использовать заданный MAC адрес
|
||
<indexterm significance="normal"><primary>MAC address</primary></indexterm>
|
||
для всех отсылаемых сырых ethernet фреймов. Эта опция подразумевает использование,
|
||
<option>--send-eth</option><indexterm significance="normal"><primary><option>--send-eth</option></primary><secondary>implied by <option>--spoof-mac</option></secondary></indexterm>
|
||
чтобы быть уверенным, что Nmap действительно использует пакеты уровня ethernet. MAC адрес может быть задан в
|
||
нескольких форматах. Если это просто число <literal moreinfo="none">0</literal>, то Nmap выбирает польностью
|
||
произвольный MAC адрес для сессии. Если задается строка в виде простого набора шестнадцатиричных цифр (можно
|
||
разделять пары двоеточиями), то Nmap будет использовать эту строку в качестве MAC адреса. Если задано менее 12-ти
|
||
шестнадцатиричных цифр, то Nmap заполняет остаток из 6 байтов произвольными значениями. Если в качестве аргумента
|
||
не передается ни 0, ни шестнадцатиричная строка, то Nmap просматривает
|
||
<filename moreinfo="none">nmap-mac-prefixes</filename> в поисках названия производителя, содержащего данную строку
|
||
(нечувствительна к регистру). Если найдено совпадение, то Nmap использует OUI производителя (3-байтный префикс),
|
||
<indexterm significance="normal"><primary>organizationally unique identifier (OUI)</primary><seealso><filename moreinfo="none">nmap-mac-prefixes</filename></seealso></indexterm>
|
||
а оставшиеся 3 байта заполняет произвольно. Примеры аргументов опции <option>--spoof-mac</option>:
|
||
<literal moreinfo="none">Apple</literal>, <literal moreinfo="none">0</literal>,
|
||
<literal moreinfo="none">01:02:03:04:05:06</literal>, <literal moreinfo="none">deadbeefcafe</literal>,
|
||
<literal moreinfo="none">0020F2</literal> и <literal moreinfo="none">Cisco</literal>. Эта опция оказывает влияние
|
||
только на сканирования с использованием сырых пакетов, такие как SYN сканирование или определение ОС, а также
|
||
не ориентированные на соединение функции, такие как определение версии или Nmap Scripting Engine (NSE).</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--badsum</option> (Посылать пакеты с фиктивными TCP/UDP контрольными суммами)
|
||
<indexterm significance="normal"><primary><option>--badsum</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>TCP checksum</primary></indexterm>
|
||
<indexterm significance="normal"><primary>checksums</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Указывает Nmap использовать неправильные TCP или UDP контрольные суммы для пакетов, отправляемых на
|
||
целевой хост. Т.к. практически все реализации стека IP просто не обрабатывают такие пакеты, то любые ответы
|
||
скорее всего приходят от брандмауэров или IDS, которые не обременяеют себя проверкой контрольной суммы. Более
|
||
детальное описание этой техники смотрите на <ulink url="https://nmap.org/p60-12.html"/></para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
|
||
<indexterm class="endofrange" startref="man-bypass-ids-indexterm" significance="normal"/>
|
||
<indexterm class="endofrange" startref="man-bypass-filewalls-indexterm" significance="normal"/>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-output">
|
||
<title>Вывод результатов</title>
|
||
<indexterm class="startofrange" id="man-output-indexterm" significance="normal"><primary>output formats</primary></indexterm>
|
||
|
||
<para>Любая утилита безопасности полезна ровно настолько, насколько полезны выдаваемые ею результаты. Различные
|
||
сложные тесты и алгоритмы имеют мало пользы, если они не представлены в хорошо организованной и удобной для
|
||
понимания форме. Предоставляя разлиные способы вывода результатов Nmap используется людьми и программным
|
||
обеспечением, т.к. нет такого формата, который подходил бы всем. Поэтому Nmap предлагает несколько форматов,
|
||
включая интерактивный режим для чтения людьми и XML для удобного анализа программным обеспечением.</para>
|
||
|
||
<para>В дополнении к предоставлению различных форматов вывода, Nmap предлагает опции для упрваления уровнем вербальности
|
||
выходных данных и отладочных сообщений. Результаты могут быть направлены на стандартный вывод или в файлы, причем Nmap
|
||
может как добавлять в конец файлов, так и создавать новые. Выходные файлы также могут быть использованы для
|
||
продолжения остановленного сканирования.</para>
|
||
|
||
<para>Nmap предоставляет пять различных выходных форматов. Формат по умолчанию называется
|
||
<firstterm>интерактивный вывод</firstterm>,<indexterm significance="normal"><primary>interactive output</primary></indexterm>, результаты передаются на стандартный вывод (stdout).<indexterm significance="normal"><primary>stdout</primary></indexterm><indexterm significance="normal"><primary>standard output</primary></indexterm>
|
||
Есть также
|
||
<firstterm>нормальный вывод</firstterm>,<indexterm significance="normal"><primary>normal output</primary></indexterm>,
|
||
который подобен интерактивному, за исключением того, что в процессе работы выводится меньше информации и предупреждений,
|
||
т.к. предполагатеся, что эти результаты будут анализироваться после завершения сканирования, а не интерактивно.</para>
|
||
|
||
<para><firstterm>XML вывод</firstterm><indexterm significance="normal"><primary>XML output</primary></indexterm>
|
||
это один из наиболее важных выходных форматов, т.к. он может быть конвертирован в HTML, лего анализируется программами
|
||
типа графического пользовательского интерфейса Nmap или может быть экспортирован в базу данных.</para>
|
||
|
||
<para>Оставшимися двумя форматами являются
|
||
<firstterm>grepable формат</firstterm><indexterm significance="normal"><primary>grepable output</primary></indexterm>,
|
||
который содержит большую часть о целевом хосте в одной строке, и
|
||
<firstterm>sCRiPt KiDDi3 0utPUt</firstterm><indexterm significance="normal"><primary sortas="script kiddie output">scR1pT kIddI3 вывод</primary></indexterm>
|
||
для пользователей, которые считают себя |<-r4d.</para>
|
||
|
||
<para>В то время как интерактивный вывод устанавливается по умолчанию и не имеет связанных с ним опций командой строки,
|
||
опции остальных четырех форматов вывода имеют похожий синтаксис. В качестве аргумента они принимают имя файла, где
|
||
должны храниться результаты. Возможно испльзование нескольких форматов, но каждый из них должен быть задан только один
|
||
раз. Например, вы хотите сохранить результаты предоставляемые форматом нормального вывода для себя, и в то же время
|
||
сохранить в формате XML результаты того же сканирования для анализа программами. Вы можете сделать это с помощью опции
|
||
<option>-oX myscan.xml -oN myscan.nmap</option>. Для краткости здесь используются простые имена типа
|
||
<literal moreinfo="none">myscan.xml</literal>, но рекомендуется использовать более описательные имена. Каждый
|
||
выбирает имена по своему; я обычно использую длинные имена, содержащие дату сканирования и пару слов описания, и
|
||
помещаю эти файлы в директории с именем компании, которую я сканирую.</para>
|
||
|
||
<para>Хотя с помощью этих опций информация сохраняется в файлы, Nmap по-прежнему выводит интерактивную информацию на
|
||
стандартный вывод. Например, с помощью опции <command moreinfo="none">nmap -oX myscan.xml target</command> XML
|
||
сохраняется в файл <filename moreinfo="none">myscan.xml</filename>, а стандартный вывод заполняется информацией, как
|
||
если бы опция <option>-oX</option> вообще не была задана. Вы можете изменить это поведение передав в качестве
|
||
аргумента к одному из форматов вывода символ дефиса. Это деактивирует интерактивный вывод, а на стандартный вывод
|
||
будет пересылаться информация в заданном вами формате. Поэтому с помощью команды
|
||
<command moreinfo="none">nmap -oX - target</command> на стандартный вывод будет пересылаться только XML.<indexterm significance="normal"><primary>output</primary><secondary>to stdout with <literal moreinfo="none">-</literal></secondary></indexterm>
|
||
Серьезный ошибки могут выводиться в стандартный поток ошибок, stderr.<indexterm significance="normal"><primary>standard error</primary></indexterm><indexterm significance="normal"><primary>stderr</primary></indexterm>
|
||
</para>
|
||
|
||
<para>В отличии от некоторых аргументов Nmap, пробел между флагом формата файла (например, <option>-oX</option>) и
|
||
именем файла или дефисом здесь обязателен. Если вы опустите флаги и зададите аргументы типа <option>-oG-</option> или
|
||
<option>-oXscan.xml</option>, из-за функции обратной совместимости Nmap будут созданы файлы
|
||
<emphasis>нормального формата</emphasis> с именами <filename moreinfo="none">G-</filename> и
|
||
<filename moreinfo="none">Xscan.xml</filename> соответственно.</para>
|
||
|
||
<para>Все эти аргументы поддерживают <function moreinfo="none">strftime</function><indexterm significance="normal"><primary><function moreinfo="none">strftime</function> conversions in the filename</primary></indexterm>
|
||
перобразования в именах файлов. <literal moreinfo="none">%H</literal>, <literal moreinfo="none">%M</literal>,
|
||
<literal moreinfo="none">%S</literal>, <literal moreinfo="none">%m</literal>, <literal moreinfo="none">%d</literal>,
|
||
<literal moreinfo="none">%y</literal> и <literal moreinfo="none">%Y</literal> это то же самое что и в
|
||
<function moreinfo="none">strftime</function>. <literal moreinfo="none">%T</literal> то же самое что и
|
||
<literal moreinfo="none">%H%M%S</literal>, <literal moreinfo="none">%R</literal> то же самое что и
|
||
<literal moreinfo="none">%H%M</literal> и <literal moreinfo="none">%D</literal> то же самое что и
|
||
<literal moreinfo="none">%m%d%y</literal>. Знак <literal moreinfo="none">%</literal>, после которого следует любой
|
||
символ просто даст этот символ (<literal moreinfo="none">%%</literal> даст вам символ процента). Поэтому опция
|
||
<option>-oX 'scan-%T-%D.xml'</option> будет использовать XML файл в формате
|
||
<filename moreinfo="none">scan-144840-121307.xml</filename>.</para>
|
||
|
||
<para>Nmap также предоставляет опции для управления вербальностью сканирования, а также для добавления в конец файлов
|
||
вместо их перезаписи. Все эти опции описаны ниже.</para>
|
||
|
||
<variablelist><title>Форматы вывода Nmap</title>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-oN <replaceable>имя_файла</replaceable></option> (Нормальный вывод)
|
||
<indexterm significance="normal"><primary><option>-oN</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>normal output</primary></indexterm></term>
|
||
<listitem>
|
||
|
||
<para>Перенаправляет <literal moreinfo="none">нормальный вывод</literal> в заданный файл. Как отмечалось выше,
|
||
немного отличается от <literal moreinfo="none">интерактивного вывода</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-oX <replaceable>имя_файла</replaceable></option> (XML вывод)
|
||
<indexterm significance="normal"><primary><option>-oX</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>XML output</primary></indexterm></term>
|
||
<listitem>
|
||
|
||
|
||
<para>Перенаправляет <literal moreinfo="none">XML вывод</literal> в заданный файл. Nmap включает определение
|
||
типа документа (DTD), что позволяет XML парсерам использовать XML вывод Nmap. Изначально это предназначалось
|
||
для программного использования, хотя это также позволяет людям интерпретировать XML вывод Nmap. DTD
|
||
определяет возможные элементы, а также перечисляет атрибуты и значения, которые они могут принимать. Последняя
|
||
версия всегда доступна на <ulink url="https://nmap.org/data/nmap.dtd"/>.</para>
|
||
|
||
<para>XML предоставляет формат, который легко обрабатывается программным обеспечением. Бесплатные XML парсеры,
|
||
доступны для всех основных языков программирования, включая C/C++, Perl, Python и Java. Люди даже написали
|
||
привязки для большинства из этих языков для обработки выходных данных Nmap.
|
||
Примерами являются <ulink url="http://sourceforge.net/projects/nmap-scanner/">Nmap::Scanner</ulink>
|
||
<indexterm significance="normal"><primary>Nmap::Scanner</primary></indexterm>
|
||
и <ulink url="http://nmapparser.wordpress.com/">Nmap::Parser</ulink>
|
||
<indexterm significance="normal"><primary>Nmap::Parser</primary></indexterm>
|
||
на Perl CPAN. В большинстве случаев взаимодействия какого-либо приложения и Nmap, XML является
|
||
предпочитаемым форматом.</para>
|
||
|
||
<para>XML вывод связывается с XSL таблицей стилей, которая используется для форматирования результатов как
|
||
HTML. Самым легким способом использования этой возможности является загрузка XML вывода в браузер типа
|
||
Firefox или IE. По умолчанию это будет работать только на машине, на которой установлена Nmap (или
|
||
настроенной аналогично) из-за жесткой привязки полного пути файла
|
||
<filename moreinfo="none">nmap.xsl</filename>. Используйте опции <option>--webxml</option> или
|
||
<option>--stylesheet</option> для создания XML файлов отображаемых как HTML только на подключенной к
|
||
интернету машине.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-oS <replaceable>имя_файла</replaceable></option> (ScRipT KIdd|3 oUTpuT)
|
||
<indexterm significance="normal"><primary><option>-oS</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary sortas="script kiddie output">scR1pT kIddI3 output</primary></indexterm></term>
|
||
<listitem>
|
||
|
||
<para>Script kiddie формат практически такой же как и интерактивный, за тем исключением, что после окончания
|
||
сканирования он перерабатывается, чтобы больше подходит l33t HaXXorZ, который смотрит свысока на Nmap из-за
|
||
постоянного использования заглавных букв и правовисания. Лишенные чувства юмора люди должны иметь ввиду, что эта
|
||
опция высмеивает script kiddies, перед тем как ругать меня за то, что я якобы <quote>помогаю им</quote>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-oG <replaceable>имя_файла</replaceable></option> (grepable вывод)
|
||
<indexterm significance="normal"><primary><option>-oG</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>grepable output</primary></indexterm></term>
|
||
<listitem>
|
||
|
||
|
||
<para>Это формат обсуждается последним, т.к. он нежелетален для использования. Формат вывода XML намного мощенее, а
|
||
также особенно удобен для опытных пользователей. XML это стандарт, для которого доступны дюжины отличных парсеров, в
|
||
то время как grepable вывод всего лишь мое простое изобретение. XML достаточно гибок для поодержания новых функций Nmap
|
||
по мере их выхода, тогда как мне частенько приходится опускать некоторые возможности grepable вывода из-за недостатка
|
||
места.</para>
|
||
|
||
<para>Тем не менее, этот формат вывода все еще довольно популярен. Это простой формат, который просто описывает
|
||
каждый хост в одну строку и может быть легко обработан стандартными Unix утилитами как grep, awk, cut, sed, diff и Perl.
|
||
Даже я иногда использую этот формат вывода. Поиск хостов, на которых открыт SSH порт или работает Solaris сводится
|
||
к простой передаче результатов утилите grep, а затем утилитам типа awk или cut для вывода желаемой информации.</para>
|
||
|
||
<para>Grepable вывод состоит из комментариев (линий начинающихся с #)<indexterm significance="normal"><primary>grepable output</primary><secondary>comments in</secondary></indexterm> и строк описывающих цели. Каждая строка включает
|
||
комбинацию из 6 помеченных полей, разделенных знаками табуляции и оканчивающихся двоеточием.
|
||
Поля следующие: <literal moreinfo="none">Хост</literal>, <literal moreinfo="none">Порты</literal>,
|
||
<literal moreinfo="none">Протоколы</literal>, <literal moreinfo="none">Ignored State</literal>,
|
||
<literal moreinfo="none">ОС</literal>, <literal moreinfo="none">Seq Index</literal>,
|
||
<literal moreinfo="none">IP ID</literal> и <literal moreinfo="none">Статус</literal>.</para>
|
||
|
||
<para>Наиболее важным из этих полей обычно является <literal moreinfo="none">Порты</literal>, где дается описание
|
||
каждого интересного порта. Это поле представляет собой разделенный запятыми список портов. Каждый элемент этого списка
|
||
описывает один интересный порт и состоит из семи подполей, разделенных знаком косой черты (/). Подполя следующие:
|
||
<literal moreinfo="none">Номер порта</literal>, <literal moreinfo="none">Состояние</literal>, <literal moreinfo="none">Протокол</literal>, <literal moreinfo="none">Владелец</literal>, <literal moreinfo="none">Служба</literal>, <literal moreinfo="none">SunRPC информация</literal> и <literal moreinfo="none">Информация о версии</literal>.</para>
|
||
|
||
<para>Как и в случае с XML выводом, это руководство не позволяет полностью описать формат. Более подробное описание
|
||
этого формата доступно <man>с <ulink url="https://nmap.org/book/output-formats-grepable-output.html"/>.</man>
|
||
<notman>на <xref linkend="output-formats-grepable-output"/>.</notman>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-oA <replaceable>базовое_имя_файла</replaceable></option> (Использовать все форматы вывода)
|
||
<indexterm significance="preferred"><primary><option>-oA</option></primary></indexterm></term>
|
||
<listitem><para>
|
||
|
||
Для удобства вы можете задать опцию <option>-oA <replaceable>базовове_имя_файла</replaceable></option>,
|
||
чтобы сохранить результаты сканирования в обычном, XML и grepable форматах сразу. Они будут содержаться
|
||
в файлах
|
||
<filename moreinfo="none"><replaceable>базовове_имя_файла</replaceable>.nmap</filename>,
|
||
<filename moreinfo="none"><replaceable>базовове_имя_файла</replaceable>.xml</filename> и
|
||
<filename moreinfo="none"><replaceable>базовове_имя_файла</replaceable>.gnmap</filename> соответственно. Как
|
||
и с большинством программ вы можете предварять имя файла путем к директории, например,
|
||
<filename moreinfo="none">~/nmaplogs/foocorp/</filename> для Unix или
|
||
<filename moreinfo="none">c:\hacking\sco</filename> для Windows.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
|
||
<variablelist><title>Опции управления вербальностью и отладкой</title>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-v</option> (Увеличить уровень вербальности)
|
||
<indexterm significance="normal"><primary><option>-v</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>verbosity</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Увеличение уровня вербальности влечет за собой вывод большего количества информации во время
|
||
сканирования. Когда Nmap предполагает, что сканирование займет больше нескольких минут, будет выводиться
|
||
приблизительное время завершения работы и открытые порты по мере их обнаружения. Задайте эту опцию дважды
|
||
или более для увеличения количества выводимой информации.
|
||
<indexterm significance="normal"><primary><option>-v</option></primary><secondary>giving more than once</secondary></indexterm>
|
||
</para>
|
||
|
||
<para>Большинство изменений касаются только интерактивного режима; некоторые также нормального и
|
||
script kiddie режимов. Остальные форматы вывода предназначены для обработки машинами, поэтому вся
|
||
необходимая информация выдается Nmap по умолчанию. Тем не менее существуют несколько изменений в других
|
||
режимах, когда размер выходной информации может быть существенно сокращен путем отбрасывания некоторых
|
||
деталей. Например, линия комментариев в grepable формате, предоставляющая список всех просканированных портов,
|
||
выводится только в вербальном режиме, т.к. список может быть довольно длинный.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-d [уровень]</option> (Увеличить или установить уровень отладки)
|
||
<indexterm significance="normal"><primary><option>-d</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>debugging</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Когда даже вербальный режим не предоставляет вам достаточную информацию, вы можете использовать отладку! Отладка
|
||
активируется опцией командной строки (<option>-d</option>), и уровень отладочной информации может быть увеличен путем
|
||
задания этой опции несколько раз.<indexterm significance="normal"><primary><option>-d</option></primary><secondary>giving more than once</secondary></indexterm>
|
||
В качестве альтернативы, вы можете передать уровень отладки как аргумент опции <option>-d</option>. Например, опцией
|
||
<option>-d9</option> устанавливается девятый уровень. Это наивысший уровень, который будет предоставлять тысячи
|
||
строк, до тех пор пока вы не запустите очень простое сканирование небольшого количества целей.</para>
|
||
|
||
<para>Отладка полезна, если вы предполагаете, что в Nmap есть баг, или если вы просто озадачены тем, что делает Nmap и
|
||
почему. Т.к. эта функция по большому счету предназначена для разработчиков, то выходная информация не всегда понятна.
|
||
Вы можете получить что-то типа: <computeroutput moreinfo="none">Timeout
|
||
vals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987
|
||
rttvar: 14987 to: 100000</computeroutput>. Если вы не понимаете, что это означает, вы можете проигнорировать эту
|
||
информацию, посмотреть в исходному коде или попросить помощи у разработчиков (<citetitle>nmap-dev</citetitle>).<indexterm significance="normal"><primary><citetitle>nmap-dev</citetitle> mailing list</primary></indexterm>
|
||
Некоторые линии довольно понятны, но сообщения становятся более неясными с увеличением уровня отладки.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--packet-trace</option> (Отслеживание принятых и переданных пакетов и данных)
|
||
<indexterm significance="normal"><primary><option>--packet-trace</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap выводить краткую информацию о каждом принятом и отправленном пакете. Обычно используется
|
||
для отладки, но также может быть полезна новичкам для понимания того, что же действительно делает Nmap. Чтобы
|
||
избежать вывода тысяч строк, вы можете ограничить количество портов для сканирования, например опцией
|
||
<option>-p20-30</option>. Если вас интересует только то, что происходит при процессе определения версии, то
|
||
вместо этой опции используйте <option>--version-trace</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--open</option> (Показывать только открытые (или возможно открытые) порты)
|
||
<indexterm significance="normal"><primary><option>--open</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
|
||
<para>Иногда вас интересуют только порты, к которым вы фактически можете подключиться
|
||
(а именно <literal moreinfo="none">открытые</literal>), и вам не нужны результаты о
|
||
<literal moreinfo="none">закрытых</literal>, <literal moreinfo="none">фильтруемых</literal> и
|
||
<literal moreinfo="none">закрытых|фильтруемых</literal> портах. Обработка выходной информации может быть легко
|
||
произведена с помощью таких утилит как
|
||
<application moreinfo="none">grep</application>, <application moreinfo="none">awk</application> и
|
||
<application moreinfo="none">Perl</application>, но по многочисленным просьбам эта функция была добавлена в Nmap.
|
||
Задайте опцию <option>--open</option>, чтобы видеть информацию только об
|
||
<literal moreinfo="none">открытых</literal>, <literal moreinfo="none">открытых|фильтруемых</literal> и
|
||
<literal moreinfo="none">не фильтруемых</literal> портах. Эти три типа портов расцениваются как обычно, что означает,
|
||
что <literal moreinfo="none">открытые|фильтруемые</literal> и <literal moreinfo="none">нефильтруемые</literal> порты
|
||
могут быть приняты во внимание, если их набралось большое количество.
|
||
</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--iflist</option> (Вывести список интерфейсов и роутеров)
|
||
<indexterm significance="normal"><primary><option>--iflist</option></primary></indexterm>
|
||
</term><listitem>
|
||
<para>Выводит список интерфейсов и системных роутеров, обнаруженных Nmap. Это полезно для отладки проблем с
|
||
роутерами и неправильного описания устройств (когда, например, Nmap рассматривает PPP соединение как ethernet).
|
||
</para> </listitem> </varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--log-errors</option> (Записывать ошибки/предупреждения в выходной файл нормального режима)
|
||
<indexterm significance="preferred"><primary><option>--log-errors</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Обычно предупреждения и ошибки выводятся Nmap только на экран (интерактивный вывод), и не сохраняются
|
||
в файлах нормального режима вывода (заданных опцией <option>-oN</option>). Если вы хотите записывать эти
|
||
сообщения в заданные вами файлы, то используйте эту. Это может быть полезно, если вы не просматриваете
|
||
интерактивный вывод или хотите сохранить все ошибки во время отладки какой-либо проблемы. Сообщения об
|
||
ошибках и предупреждениях по-прежнему будут выводится в интерактивном режиме. Это не будет работать для
|
||
большинства ошибок, вызванных неправильным заданием аргументов командой строки, т.к. Nmap может не успеть
|
||
проинициализировать выходные файлы этих команд. В дополнении ко всему, некоторые предупреждения и ошибки
|
||
Nmap используют другую систему, которая еще не поддерживает данную опцию.</para>
|
||
|
||
<para>Альтернативой опции <option>--log-errors</option> может служить перенаправление интерактивного вывода
|
||
(включая стандартный поток ошибок) в файл. Большинство командных оболочек Unix легко справится с этим, но
|
||
это может быть проблематично на Windows.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
|
||
<variablelist><title>Различные опции вывода</title>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--append-output</option> (Добавлять в конец, а не перезаписывать выходные файлы)
|
||
<indexterm significance="normal"><primary><option>--append-output</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Когда вы передаете в качестве аргумента какому-либо флагу формата вывода (например,
|
||
<option>-oX</option> или <option>-oN</option>) имя файла, то по умолчанию этот файл перезаписывается. Если вы
|
||
хотите оставить текущее содержание файла, а новые результаты добавлять в конец, используйте опцию
|
||
<option>--append-output</option>. В результате все указанные файлы вывода не будут перезаписываться, а
|
||
новое содержимое будем добавляться в конец. Существуют некоторые сложности с XML выводом
|
||
(<option>-oX</option>), т.к. результирующий файл в этом случае обычно не сможет быть правильно
|
||
проанализирован программами, пока не вы подправите его вручную.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--resume <replaceable>имя_файла</replaceable></option> (Продолжить прерванное сканирование)
|
||
<indexterm significance="normal"><primary><option>--resume</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>resuming scans</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Некоторые всесторонние варианты сканирования Nmap могут занимать очень продолжительное время - порядка
|
||
нескольких дней. И они не всегда работают до завершения. Различные ограничения могут не позволить Nmap
|
||
сканировать в течении рабочих часов, сеть может перестать работать, машина, на которой запущена Nmap может
|
||
быть перезагружена, или сама Nmap может вылететь. Администратор, использующий Nmap, может отменить
|
||
сканирование по каким-то другим причинам, просто нажав <keycap moreinfo="none">ctrl-C</keycap>. Запуск целого
|
||
сканирования с самого начала может быть нежелателен. К счастью, если были сохранены логи нормального
|
||
(<option>-oN</option>) или grepable формата (<option>-oG</option>), пользователь может продолжить
|
||
сканирование с того места, на котором оно было остановлено. Просто задайте опцию
|
||
<option>--resume</option> и передайте в качестве аргумента имя выходного файла обычного или grepable формата.
|
||
Никакие другие опции использовать не разрешается, т.к. Nmap будет продолжать сканирование с заданными ранее
|
||
опциями. Просто запустите Nmap командой
|
||
<command moreinfo="none">nmap --resume<replaceable>имя_лог_файла</replaceable></command>. Nmap будет
|
||
добавлять новые результаты к выходным файлам, определенным при предыдущем запуске. Выходные файлы формата
|
||
XML не поддерживаются функцией возобновления работы, т.к. комбинирование результатов двух сканирований в один
|
||
правильный XML файл является сложной задачей.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--stylesheet <replaceable>путь или URL</replaceable></option> (Устанавливает XSL таблицу стилей для
|
||
преобразования XML вывода)
|
||
<indexterm significance="preferred"><primary><option>--stylesheet</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Nmap использует XSL
|
||
<indexterm significance="normal"><primary>XSL</primary></indexterm>
|
||
таблицу стилей
|
||
<indexterm significance="normal"><primary>stylesheet</primary></indexterm>
|
||
<filename moreinfo="none">nmap.xsl</filename>
|
||
<indexterm significance="normal"><primary><filename moreinfo="none">nmap.xsl</filename></primary></indexterm>
|
||
для просмотра или перевода XML вывода в HTML.
|
||
<indexterm significance="normal"><primary>HTML from XML output</primary></indexterm>
|
||
XML вывод включает директиву <literal moreinfo="none">xml-stylesheet</literal>,
|
||
которая указывает на файл <filename moreinfo="none">nmap.xml</filename>,
|
||
туда, где он был размещен Nmap при установке (или на текущую рабочую директорию в Windows). Просто
|
||
загрузите XML вывод Nmap в любой современный веб браузер, и он самостоятельно найдет файл
|
||
<filename moreinfo="none">nmap.xsl</filename> для отображения результатов. Если вы хотите использовать
|
||
другой файл таблицы стилей, то передайте имя этого файла в качестве аргумента опции
|
||
<option>--stylesheet</option>. Вы должны использовать полный путь к файлу или URL. Один из примеров:
|
||
<option>--stylesheet https://nmap.org/data/nmap.xsl</option>. Эта опция указывает браузеру загружать
|
||
последнюю версию таблицы стилей с Nmap.Org. Опция <option>--webxml</option> делает то же самое, но без
|
||
лишнего набора на клавиатуре и запоминания. Загрузка XSL с Nmap.Org облегчает просмотр результатов на машине,
|
||
на которой не установленна Nmap (и поэтому нет файла <filename moreinfo="none">nmap.xsl</filename>). Поэтому
|
||
URL часто бывает более полезен, но локальный файл <filename moreinfo="none">nmap.xsl</filename> используется
|
||
по умолчанию из соображений приватности.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--webxml</option> (Загружает таблицу стилей с Nmap.Org)
|
||
<indexterm significance="preferred"><primary><option>--webxml</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Эта опция является просто псевдонимом
|
||
<option significance="preferred">--stylesheet https://nmap.org/data/nmap.xsl</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option significance="preferred">--no-stylesheet</option> (Убрать объявление XSL таблицы стилей из XML)
|
||
<indexterm significance="preferred"><primary><option>--no-stylesheet</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Задайте эту опцию, чтобы не ассоциировать какую-либо XSL таблицу стилей с XML выводом. В этом случае
|
||
директива <literal moreinfo="none">xml-stylesheet</literal> опускается.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
|
||
|
||
</variablelist>
|
||
<indexterm class="endofrange" startref="man-output-indexterm" significance="normal"/>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-misc-options">
|
||
<title>Различные опции</title>
|
||
<para>В этой секции описываются некоторые важные (и не очень важные) опции, которые не подходят к другим
|
||
категориям.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<option>-6</option> (Включает IPv6 сканирование)
|
||
<indexterm significance="preferred"><primary><option>-6</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>IPv6</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Начиная с 2002 года Nmap имеет поддержку протокола IPv6 для своих наиболее используемых функций.
|
||
В частности, пинг сканирование (только TCP), выявление возможности установки соединения и определение
|
||
версии имеют поддержку протокола IPv6. Синтаксис команд такой же как и обычный за исключением того, что
|
||
вы добавляете опцию <option>-6</option>. Конечно же, вы должны использовать синтаксис IPv6, если вы
|
||
указываете адрес, а не имя хоста. Адрес может выглядеть как
|
||
<literal moreinfo="none">3ffe:7501:4819:2000:210:f3ff:fe03:14d0</literal>, поэтому лучше использовать
|
||
имена хостов. Вывод выглядит так же как и обычный, только на линии <quote>интересных портов</quote> будет
|
||
IPv6 адрес.</para>
|
||
|
||
<para>Хотя протокол IPv6 еще не завоевал весь мир, в некоторых (обычно Азиатских) странах он используется
|
||
интенсивно, и большинство современных операционных систем поддерживают его. Чтобы использовать Nmap с
|
||
протоколом IPv6, и источник и цель сканирования должны быть настроены на работу с ним. Если ваш ISP
|
||
(как большинство из них) не предоставляет вам IPv6 адрес, вы можете использовать широко распространенный
|
||
и работающий с Nmap сервис Tunnel Brokers. Я использую бесплатный сервис
|
||
<indexterm significance="normal"><primary>IPv6 tunnel broker</primary></indexterm>
|
||
на <ulink url="http://www.tunnelbroker.net"/>. Другие подобные сервисы
|
||
<ulink url="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">перечислены на Wikipedia</ulink>.</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-A</option> (Опции агрессивного сканирования)
|
||
<indexterm significance="preferred"><primary><option>-A</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Этой опцией активируется набор агрессивных опций сканирования. Я еще не решил до конца, какие же
|
||
опции будут использоваться. Сейчас этот набор включает определение ОС (<option>-O</option>),
|
||
сканирование с целью определения версии (<option>-sV</option>), сканирование с использованием скриптов
|
||
(<option>-sC</option>) и трассировку (<option>--traceroute</option>).
|
||
<indexterm significance="normal"><primary><option>-A</option></primary><secondary>features enabled by</secondary></indexterm>
|
||
Возможно в будущем будут добавлены другие функции. Целью является создание всестороннего набора опций
|
||
сканирования, чтобы людям не надо было запоминать большое количество флагов. Тем не менее, т.к. сканирование
|
||
с использованием скриптов с настройками по умолчанию расценивается как "назойливое", вам не следует
|
||
использовать опцию <option>-A</option> для сканирования целевых сетей без разрешения. Эта опция активирует
|
||
только возможности, но не устанавливает опции времени (timing) (такие как <option>-T4</option>) или опции
|
||
вербального вывода (<option>-v</option>), которые вы, возможно, хотели бы использовать.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--datadir <replaceable>имя_директории</replaceable></option> (Определяет место расположения файлов
|
||
Nmap)
|
||
<indexterm significance="preferred"><primary><option>--datadir</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Во время работы Nmap получает некоторые данные из файлов
|
||
<filename moreinfo="none">nmap-service-probes</filename>,
|
||
<filename moreinfo="none">nmap-services</filename>,
|
||
<filename moreinfo="none">nmap-protocols</filename>,
|
||
<filename moreinfo="none">nmap-rpc</filename>,
|
||
<filename moreinfo="none">nmap-mac-prefixes</filename> и
|
||
<filename moreinfo="none">nmap-os-db</filename>. Если место расположение какого-либо из этих файлов было
|
||
задано конкретно (используя опции <option>--servicedb</option> или <option>--versiondb</option>), то оно
|
||
используется для этого файла. Далее Nmap ищет эти файлы в директории, заданной опцией
|
||
<option>--datadir</option> (если задана). Если файлы не были найдены там, то Nmap ищет их в директории,
|
||
определенной переменной окружения NMAPDIR <indexterm significance="normal"><primary><envar>NMAPDIR</envar> environment variable</primary></indexterm>.
|
||
Далее идут
|
||
<filename moreinfo="none">~/.nmap</filename><indexterm significance="normal"><primary sortas="nmap directory"><filename moreinfo="none">.nmap</filename> directory</primary></indexterm>
|
||
для реальных и действующих в данный момент UIDs (только POSIX системы) или расположение исполняемого файла
|
||
Nmpa (только Win32), и далее <filename moreinfo="none">/usr/local/share/nmap</filename> или
|
||
<filename moreinfo="none">/usr/share/nmap</filename>. В последнюю очередь Nmap будет искать эти файлы в
|
||
текущей директории.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--servicedb <replaceable>файл_служб</replaceable></option> (Задает определенный файл служб)
|
||
<indexterm significance="preferred"><primary><option>--servicedb</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap использовать заданный файл служб вместо файла
|
||
<filename moreinfo="none">nmap-services</filename>, который поставляется вместе с Nmap. Использование этой
|
||
опции также подразумевает использование опции быстрого сканирования (<option>-F</option>). Смотрите описание
|
||
<option>--datadir</option> для более подробной информации о файлах данных Nmap.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--versiondb <replaceable>файл_запросов_служб</replaceable></option>
|
||
(Задает определенный файл запросов для служб)
|
||
<indexterm significance="preferred"><primary><option>--versiondb</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap использовать заданный файл запросов для служб вместо файла
|
||
<filename moreinfo="none">nmap-service-probes</filename>, который поставляется вместе с Nmap. Смотрите описание
|
||
<option>--datadir</option> для более подробной информации о файлах данных Nmap.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--send-eth</option> (Использовать сырой уровень ethernet)
|
||
<indexterm significance="preferred"><primary><option>--send-eth</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap посылать пакеты с использование более низкого сырого уровня ethernet, а не с
|
||
использованием более высокого уровня IP (сетевого). По умолчанию Nmap выбирает тот способ, который
|
||
больше подоходит для используемой платформы. Сырые сокеты (уровень IP)
|
||
<indexterm significance="normal"><primary>raw sockets</primary></indexterm> в общем случае более эффективны
|
||
для Unix машин, в то время как использование ethernet фреймов необходимо для операционных систем Windows, т.к.
|
||
Microsoft отключила в них поддержку сырых сокетов. Nmap по-прежнему использует сырые IP пакеты на Unix не
|
||
смотря на эту опцию, когда нет другого выбора (как в случае с не-ethernet соединениями).</para>
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--send-ip</option> (Использовать сырой уровень IP)
|
||
<indexterm significance="preferred"><primary><option>--send-ip</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap посылать пакеты с использование сырых IP сокетов, а не с использованием более низкого
|
||
уровня ethernet фреймов. Это дополнение к опции <option>--send-eth</option> описанной выше.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--privileged</option> (Подразумевать, что у пользователя есть все привилегии)
|
||
<indexterm significance="preferred"><primary><option>--privileged</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Указывает Nmap, что у нее есть необходимые привилегии для использования сырых сокетов,
|
||
пакетного сниффинга и сходных операций, которые обычно требуют привилегий пользователя root на Unix системах.
|
||
<indexterm significance="normal"><primary>privileged users</primary>
|
||
</indexterm><indexterm significance="normal">
|
||
<primary>authorized users</primary><see>privileged users</see></indexterm> По умолчанию Nmap завершает
|
||
работу, если были запрошены такие опреации, но <function moreinfo="none">geteuid</function> не нуль.
|
||
Опцию <option>--privileged</option> хорошо использовать на системах с возможностями ядра Linux или подобных,
|
||
которые могут быть сконфигурированы так, что непривилегированные пользовтели смогут осуществлять сканирование
|
||
с использованием сырых сокетов. Удостоверьтесь, что эта опция указана перед любымими опциями требующими
|
||
привилегий (сканирование SYN, определение ОС и т.д.). Переменная окурежния
|
||
<envar>NMAP_PRIVILEGED</envar><indexterm significance="normal">
|
||
<primary><envar>NMAP_PRIVILEGED</envar> environment variable</primary></indexterm>
|
||
может быть установлена как равнозначная альтернатива опции <option>--privileged</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--unprivileged</option> (Подразумевать, что у пользователя нет привилегий для использования сырых
|
||
сокетов)
|
||
<indexterm significance="preferred"><primary><option>--unprivileged</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary>unprivileged users</primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
|
||
<para>Эта опция противоположна <option>--privileged</option>. Указывает Nmap, что у пользователя нет
|
||
привилегий для использования сырых сокетов и сниффинга. Полезна для тестирования, отладки или когда по
|
||
какой-то причине на вашей системе не работае механизм сырых сокетов. Переменная окружения
|
||
<envar>NMAP_UNPRIVILEGED</envar><indexterm significance="normal"><primary><envar>NMAP_UNPRIVILEGED</envar> environment variable</primary></indexterm>
|
||
может быть установлена как равнозначная альтернатива опции <option>--unprivileged</option>.</para>
|
||
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--release-memory</option> (Освободить память перед завершением работы)
|
||
<indexterm significance="normal"><primary><option>--release-memory</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
|
||
<para>Эта опция полезна только во время отладки утечки памяти. Заставляет Nmap освободить занянутю память
|
||
перед завершением работы, что облегчает задачу обнаружения действительной утечки памяти. В обычном режиме
|
||
работы Nmap пропускает этот шаг, так ОС делает это самостоятельно при закрытии процесса.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-V</option>; <option>--version</option> (Вывести номер версии)
|
||
<indexterm significance="normal"><primary><option>-V</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--version</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Выводит номер версии Nmap и завершает работу.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>-h</option>; <option>--help</option> (Вывести страницу помощи)
|
||
<indexterm significance="normal"><primary><option>-h</option></primary></indexterm>
|
||
<indexterm significance="normal"><primary><option>--help</option></primary></indexterm>
|
||
</term>
|
||
<listitem>
|
||
<para>Выводит небольшую страницу помощи с наиболее часто используемыми командами и опциями. Запуск Nmap без
|
||
аргументов приводит к такому же результату.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-runtime-interaction">
|
||
<title>Взаимодействие во время выполнения<indexterm significance="normal"><primary>runtime interaction</primary></indexterm></title>
|
||
|
||
<para>Во время работы Nmap, все нажатые клавиши фиксируются. Это позволяет вам взаимодействовать с программой
|
||
не прерывая и не перезапуская ее. С помощью некоторых клавиш можно изменить опции сканирования, при
|
||
использовании же других будут выведены сообщения о текущем статусе сканирования. Существует договоренность, что
|
||
<emphasis>строчные буквы увеличивают</emphasis> количество выводимой информации, а
|
||
<emphasis>прописные буквы уменьшают</emphasis>. Для справки можно нажать ‘<emphasis>?</emphasis>’.</para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<option>v</option> / <option>V</option>
|
||
</term>
|
||
<listitem>
|
||
<para>Увеличить / уменьшить уровень вербальности</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<option>d</option> / <option>D</option>
|
||
</term>
|
||
<listitem>
|
||
<para>Увеличить / уменьшить отладочный уровень</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<option>p</option> / <option>P</option>
|
||
</term>
|
||
<listitem>
|
||
<para>Включить / выключить отслеживание пакетов</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<option>?</option>
|
||
</term>
|
||
<listitem>
|
||
<para>Вывести справку о взаимодействии во время выполнения</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
Что-либо другое
|
||
</term>
|
||
<listitem>
|
||
<para>Выведет сообщение типа:</para>
|
||
<para>Stats: 0:00:08 elapsed; 111 hosts completed (5 up),
|
||
5 undergoing Service Scan</para>
|
||
<para>Service scan Timing: About 28.00% done; ETC: 16:18
|
||
(0:00:15 remaining)</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-examples">
|
||
<title>Примеры</title>
|
||
<para>Здесь приведены несколько примеров использования Nmap, от самых простых до более изощренных. Некоторые
|
||
реально существующие IP адреса и доменные имена использованны для того, чтобы сделать примеры более конкретными.
|
||
На их место вы должны подставить адреса/имена из <emphasis>вашей собственной сети.</emphasis>. В то время как
|
||
сканирование портов некоторой сети не является незаконным, некоторым администраторам сетей может не понравиться
|
||
своевольное сканирование их сетей и они могут пожаловаться. Для начала постарайтесь получить разрешение.</para>
|
||
|
||
<para>В целях тестирования у вас есть разрешение сканировать <literal moreinfo="none">scanme.nmap.org</literal>.
|
||
Вы можете использовать сканирование с помощью Nmap, но не тестировать эксплоиты или производить атаки отказа в
|
||
обслуживании. Для того чтобы не перегружать канал, пожалуйста, не производите более дюжины сканирований этого
|
||
хоста в день. В случае злоупотребления этим свободным для сканирования хостом, он будет отключен и Nmap выдаст
|
||
<computeroutput moreinfo="none">Failed to resolve given hostname/IP:
|
||
scanme.nmap.org</computeroutput> (не могу разрешить данное имя/IP: scanme.nmap.org). Все выше сказанное также
|
||
относится и к хостам <literal moreinfo="none">scanme2.nmap.org</literal>,
|
||
<literal moreinfo="none">scanme3.nmap.org</literal>, и так далее, несмотря на то, что эти хосты еще не
|
||
существуют.</para>
|
||
|
||
<para>
|
||
<indexterm significance="normal"><primary><option>-v</option></primary><secondary>example of</secondary></indexterm>
|
||
<command moreinfo="none">nmap -v scanme.nmap.org</command>
|
||
</para>
|
||
<para>Этой командой будут просканированы все TCP порты машины
|
||
<literal moreinfo="none">scanme.nmap.org</literal> . Опция <option>-v</option>
|
||
активирует вербальный режим.</para>
|
||
<para>
|
||
<indexterm significance="normal"><primary><option>-sS</option></primary><secondary>example of</secondary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-O</option></primary><secondary>example of</secondary></indexterm>
|
||
<command moreinfo="none">nmap -sS -O scanme.nmap.org/24</command>
|
||
</para>
|
||
<para>Этой командой будет произведено скрытное SYN сканирование всех 255 машин сети <quote>класса C</quote>, в
|
||
которой расположена машина Scanme. Также будет произведена попытка определения операционной системы на каждом
|
||
работающем хосте. Из-за SYN сканирования и опции определения ОС данная команда требует привилегий
|
||
суперпользователя (root).</para>
|
||
<para>
|
||
<indexterm significance="normal"><primary><option>-p</option></primary><secondary>example of</secondary></indexterm>
|
||
<command moreinfo="none">nmap -sV -p 22,53,110,143,4564
|
||
198.116.0-255.1-127</command>
|
||
</para>
|
||
|
||
<para>Запускает перебор хостов и TCP сканирование первой половины всех (из доступных 255) 8 битных подсетей
|
||
адресного пространства 198.116 класса B. Также проверяет запущены ли SSH, DNS, POP3 или IMAP с использованием их
|
||
стандартных портов, а также использует ли какое-нибудь приложение порт 4564. Если какой-нибудь из этих портов
|
||
открыт, то будет произведена попытка определения работающего с этим портом приложения.</para>
|
||
|
||
<para>
|
||
<indexterm significance="normal"><primary><option>-iR</option></primary><secondary>example of</secondary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-PN</option></primary><secondary>example of</secondary></indexterm>
|
||
<command moreinfo="none">nmap -v -iR 100000 -PN -p 80</command>
|
||
</para>
|
||
|
||
<para>Указывает Nmap выбрать случайным образом 100,000 хостов и просканировать их на наличие запущенных на них
|
||
веб-серверов (порт 80). Перебор хостов отключен опцией <option>-PN</option>, т.к. посылка пары предварительных
|
||
запросов с целью определения доступности хоста является нецелесообразной, когда вас интересует всего один порт на
|
||
каждом хосте.</para>
|
||
|
||
<para>
|
||
<indexterm significance="normal"><primary><option>-oX</option></primary><secondary>example of</secondary></indexterm>
|
||
<indexterm significance="normal"><primary><option>-oG</option></primary><secondary>example of</secondary></indexterm>
|
||
<command moreinfo="none">nmap -PN -p80 -oX logs/pb-port80scan.xml -oG
|
||
logs/pb-port80scan.gnmap 216.163.128.20/20</command>
|
||
</para>
|
||
<para>Этой командой будут просканированы 4096 IP адресов (без предварительного пингования), а выходные данные
|
||
будут сохранены в фомате XML и формате, удобном для просмотра утилитой grep (grepable формат).</para>
|
||
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-bugs">
|
||
<title>Ошибки</title>
|
||
<indexterm significance="normal"><primary>bugs, reporting</primary></indexterm>
|
||
|
||
<para>Как и ее автор, Nmap не идеальна. Но вы можете сделать ее лучше посылая нам отчеты об ошибках или даже
|
||
написав патч. Если Nmap ведет себя не так, как вы ожидаете, то для начала обновитесь до последней версии с
|
||
<ulink url="https://nmap.org"/>. Если проблема останется, то выясните, не была ли эта проблема уже обнаружена кем-то.
|
||
Попробуйте поискать сообщения об ошибках на нашей странице поиска <ulink url="https://insecure.org/search.html"/>
|
||
или в Google. Также попробуйте просмотреть <citetitle>nmap-dev</citetitle> архивы на <ulink url="https://seclists.org/"/>.<indexterm significance="normal"><primary><citetitle>nmap-dev</citetitle> mailing list</primary></indexterm>
|
||
Также прочитайте полностью страницу руководства. Если ничего не помогло, отправьте сообщение об ошибке на
|
||
<email>dev@nmap.org</email>. Пожалуйста, включите всю известную вам информацию об ошибке, какую версию
|
||
Nmap вы используете, и на какой операционной системы вы запускаете Nmap. Сообщения о проблемах и вопросы по
|
||
использованию Nmap отправленные на <email>dev@nmap.org</email> имеют больше шансов на ответ, чем если бы
|
||
вы послали их непосредственно Fyodor'у. Если вы подпишитесь на рассылку nmap-dev перед отправкой сообщения,
|
||
то ваше сообщение будет обработано быстрее. Подпишитесь на рассылку на <ulink url="https://nmap.org/mailman/listinfo/dev"/>.</para>
|
||
|
||
<para>Патчи для исправления ошибок даже лучше просто сообщений об ошибках. Базовые инструкции по созданию патчей
|
||
доступны по адресу <ulink url="https://nmap.org/data/HACKING"/>. Созданные вами патчи можно отправить на
|
||
<citetitle>nmap-dev</citetitle> (рекомендуется) или непосредственно Fyodor'у.</para>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-author">
|
||
<title>Автор</title>
|
||
<para>Fyodor
|
||
<email>fyodor@nmap.org</email>
|
||
(<ulink url="https://insecure.org"/>)
|
||
</para>
|
||
|
||
<para>На протяжении многих лет сотни людей внесли ценный вклад в разработку Nmap. Все изменения и улучшения
|
||
подробно описаны в файле
|
||
<filename moreinfo="none">CHANGELOG</filename><indexterm significance="normal"><primary>changelog</primary></indexterm>, который распространяется вместе с Nmap, а также доступен на
|
||
<ulink url="https://nmap.org/changelog.html"/>.</para>
|
||
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-legal">
|
||
<title>Юридические уведомления</title>
|
||
|
||
<refsect2 id="translation-disclaimer">
|
||
<title>Unofficial Translation Disclaimer / Отречение неофициального перевода</title>
|
||
|
||
<para>This is an unnofficial translation of the <ulink url="https://nmap.org/book/man-legal.html">Nmap
|
||
license details</ulink> into Russian. It was not written by Insecure.Com LLC, and does not legally state the
|
||
distribution terms for Nmap -- only the original English text does that. However, we hope that this translation
|
||
helps Russian speakers understand the Nmap license better.</para>
|
||
|
||
<para>Это неофициальный перевод <ulink url="https://nmap.org/book/man-legal.html">лицензии Nmap</ulink> на
|
||
русский язык. Он не был осуществлен Insecure.Com LLC, и не определяет с юридической точки зрения условия
|
||
распространения Nmap -- это делает только оригинальный английский вариант. Тем не менее, мы надеемся, что этот
|
||
перевод поможет русскоязычным пользователям лучше понять лицензию Nmap.</para>
|
||
|
||
</refsect2>
|
||
|
||
<refsect2 id="nmap-copyright">
|
||
<title>Авторское право и лицензия Nmap</title>
|
||
<indexterm significance="normal"><primary>copyright</primary></indexterm>
|
||
<indexterm significance="normal"><primary>GNU General Public License</primary></indexterm>
|
||
|
||
<para>Nmap Security Scanner (C) 1996-2008 Insecure.Com LLC. Nmap также является зарегистрированным товарным знаком
|
||
Insecure.Com LLC. Эта программа является свободным программным обеспечением; вы можете распространять и / или
|
||
модифицировать его в соответствии с условиями GNU General Public License, опубликованной Free Software Foundation;
|
||
Версия 2 с уточнениями и исключениями, описанными ниже. Лицензия гарантирует ваше право использовать, модифицировать и
|
||
распространять данное программное обеспечение на определенных условиях. Если вы хотите встроить Nmap технологии в
|
||
собственное программное обеспечение, мы продаем альтернативные лицензии (обращаться <email>sales@insecure.com</email>).
|
||
Десятки поставщиков программного обеспечения, уже имеют лицензии на использование Nmap технологий, таких, как
|
||
обнаружение хостов, сканирование портов, определение OS и определение версии.</para>
|
||
|
||
|
||
<para>Имейте ввиду, что GPL накладывает важные ограничения на <quote>производные приложения</quote>, хотя и не дает
|
||
четкого определения этого термина. Чтобы избежать недоразумений, мы считаем, что приложение является
|
||
<quote>производным</quote>, если в нем реализованы любые из следующих пунктов:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>Используется исходный код Nmap</para></listitem>
|
||
<listitem><para>Используются авторские файлы данных Nmap, такие, как
|
||
<filename moreinfo="none">nmap-os-db</filename> или
|
||
<filename moreinfo="none">nmap-service-probes</filename>.</para></listitem>
|
||
<listitem><para>Запускается Nmap, и анализируются результаты работы (в противовес обычным командным оболочкам, которые
|
||
просто отображают необработанные выходные данные Nmap и поэтому не являются производными приложениями.)</para></listitem>
|
||
<listitem><para>Nmap интегрируется/включается/агрегируется в собственный исполняемый инсталлятор, как предоставляемые,
|
||
например, с помощью InstallShield.</para></listitem>
|
||
<listitem><para>Используется ссылка на библиотеку или запускается программа, в которой реализованы любые из
|
||
перечисленных пунктов.</para></listitem>
|
||
</itemizedlist>
|
||
|
||
<para>В термин <quote>Nmap</quote> следует также включать любые части Nmap или производные от нее приложения. Это
|
||
список не является полным, мы просто хотим сделать ясным наше понимание производных приложений с помощью некоторых
|
||
общих примеров. Эти ограничения имеют силу, только когда вы действительно распростаняете Nmap. Например, ничего
|
||
не мешает вам написать и продавать свой собственный пользовательский интерфейс для Nmap. Распространяйте его
|
||
самостоятельно, а для скачивания Nmap направляйте людей на <ulink url="https://nmap.org"/>.</para>
|
||
|
||
<para>Мы не считаем, что данные ограничения должны быть добавлены к лицензии GPL, мы просто приводим наше понимание
|
||
<quote>производных приложений</quote> по отношению к нашему продукту с GPL лицензией. Это похоже на то, как Линус
|
||
Торвальдс (Linus Torvalds) опубликовал свое понимание <quote>производных приложений</quote> применимо к модулям ядра
|
||
Linux. Наше трактовка относится только к Nmap, мы не говорим ни о каких других GPL продуктах.</para>
|
||
|
||
<para>Если у вас есть какие-либо вопросы о GPL ограничениях по использованию Nmap в не-GPL продуктах, мы с радостью
|
||
вам поможем. Как уже упоминалось выше, мы предоставляем альтернативную лицензию для интегрирования Nmap в собственные
|
||
программные продукты. Эти контракты были проданы многим производителям программного обеспечения и обычно они включают:
|
||
бессрочную лицензию, предоставление приоритетной поддержки и обновлений, а также содействие спонсированию
|
||
продолжающейся разработки Nmap технологии. Для дальнейшей информации пишите на <email>sales@insecure.com</email>.</para>
|
||
|
||
<para>В качестве исключения из GPL соглашений, Insecure.Com LLC предоставляет право связывать исходный код этой
|
||
программы с любой версией OpenSSL библиотеки, которая распространяется по лицензии приведенной в файле
|
||
<filename moreinfo="none">COPYING.OpenSSL</filename>, а также распространять эту комбинацию.<indexterm significance="normal"><primary>OpenSSL</primary><secondary>linking exception</secondary></indexterm>
|
||
Вы должны удовлетворять условиям лицензии GNU GPL во всем, что касается кода не использующего OpenSSL. Если вы
|
||
модифицируете этот файл, вы можете расширить это исключение на вашу версию файла, но вы не обязаны это делать.</para>
|
||
|
||
<para>Если вы получаете эти файлы в лицензионным соглашением или контрактом, где указаны отличные от этих условий, то
|
||
альтернативные условия лицензионного соглашения имеют преимущество над этими комментариями.</para>
|
||
</refsect2>
|
||
|
||
<refsect2 id="man-copyright">
|
||
<title>Creative Commons License для этого справочного руководства Nmap</title>
|
||
<para><citetitle>Справочно Руководство Nmap</citetitle> это (C) 2005-2008 Insecure.Com LLC. Оно распространяется
|
||
под лицензией <ulink url="http://creativecommons.org/licenses/by/2.5/">Creative Commons
|
||
Attribution License</ulink> версии 2.5. Это позволяет вам распространять и модифицировать его по вашему усмотрению,
|
||
до тех пор пока вы считаетесь с исходным источником. В качестве альтернативы вы можете считать, что этот документ
|
||
распространяется по той же лицензии, что и сама Nmap (описывается выше).</para>
|
||
</refsect2>
|
||
|
||
<refsect2 id="source-contrib">
|
||
<title>Доступность исходного кода и общественные вклады</title>
|
||
|
||
<para>Мы предоставляем исходный код, потому что верим, что пользователи должны иметь право знать, что именно программа
|
||
будет делать до того, как запустят ее. Это также позволяет вам проверять программное обеспечение на наличие дыр в
|
||
безопасности (пока не было найдено ни одной).</para>
|
||
|
||
<para>Исходный код также позволяет вам портировать Nmap на новые платформы, исправлять баги и добавлять новые
|
||
возможности. Всячески поощряется посылка своих изменений на <email>fyodor@nmap.org</email> для возможного
|
||
их включения в основной дистрибутив. Отправляют эти изменения Fyodor'у или разработчикам на Insecure.Org,
|
||
пердполагается, что вы предоставляете Fyodor'у и Insecure.Com LLC безграничное, не эксклюзивное право на повторное
|
||
использование, модификацию и изменение лицензии кода. Nmap всегда будет доступна как
|
||
Open Source продукт,<indexterm significance="normal"><primary>open source</primary></indexterm>
|
||
это важно, т.к. невозможность изменения лицензии на кода уже повлекла за собой большие проблемы для других
|
||
Free Software проектов (как, например, KDE и NASM). Вы также порой позволяем третьим сторонам изменять лицензию, как
|
||
описывалось выше. Если вы хотите использовать собственные лицензионные условия для ваших изменений, сообщите об этом,
|
||
когда будете их отсылать.</para>
|
||
</refsect2>
|
||
|
||
<refsect2 id="no-warranty"><title>Отсутствие гарантии<indexterm significance="normal"><primary>warranty (lack of)</primary></indexterm></title>
|
||
|
||
<para>Эта программа распространяется в надежде на то, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без
|
||
какой-либо подразумеваемой ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КАКОЙ-ЛИБО ОПРЕДЕЛЕННОЙ ЗАДАЧИ. Смотрите GNU
|
||
General Public License v2.0 для подробностей <ulink url="http://www.gnu.org/licenses/gpl-2.0.html"/>, или в файле
|
||
<filename moreinfo="none">COPYING</filename>, который распространяется с Nmap.</para>
|
||
|
||
<para>Также следует принять во внимание, что время от времени Nmap вызывает крах плохо написанных приложений, TCP/IP
|
||
стеков и даже операционных систем.<indexterm significance="normal"><primary>crashing targets</primary></indexterm>
|
||
Хотя такие случаи и чрезвычайно редки, не следует о них забывать. <emphasis>Nmap никогда не следует использовать для
|
||
сканирования критичных систем</emphasis>, пока вы не готовы мириться в временем простоя. Мы признаем, что Nmap может
|
||
вызвать крах ваших систем или сетей, и отрицаем всякую ответственность за проблемы или ущерб, нанесенные Nmap.</para>
|
||
</refsect2>
|
||
|
||
<refsect2 id="inappropriate-usage"><title>Несоответствующее использование</title>
|
||
<para>Из-за возможного риска краха и из-за того, что некоторые личности используют Nmap для предварительного
|
||
исследования систем перед их атакой, некоторые администраторы могут быть недовольны тем, что их система была
|
||
просканирована. Поэтому, перед тем как сканировать сеть, разумно получить на это разрешение.</para>
|
||
|
||
<para>Nmap не следует устанавливать с особыми привилегиями (например, suid root) из соображений безопасности.<indexterm significance="normal"><primary>setuid, why Nmap shouldn't be</primary></indexterm>
|
||
</para>
|
||
</refsect2>
|
||
|
||
<refsect2 id="third-party-soft"><title>Стороннее программное обеспечение</title>
|
||
|
||
<para>Этот продукт содержит программное обеспечение разработанное
|
||
<ulink role="hidepdf" url="http://www.apache.org">Apache Software Foundation</ulink>. Модифицированная версия библиотеки
|
||
<ulink role="hidepdf" url="http://www.tcpdump.org">Libpcap portable packet capture library</ulink><indexterm significance="normal"><primary>libpcap</primary></indexterm>
|
||
распространяется вместе с Nmap. Windows версия Nmap использует вместо Libpcap производную от нее библиотеку
|
||
<ulink role="hidepdf" url="http://www.winpcap.org">WinPcap library</ulink><indexterm significance="normal"><primary>WinPcap</primary></indexterm>.
|
||
Поддержка регулярных выражений предоставляется библиотекой
|
||
<ulink role="hidepdf" url="http://www.pcre.org">PCRE library</ulink>,<indexterm significance="normal"><primary>Perl Compatible Regular Expressions (PCRE)</primary></indexterm>,
|
||
которая является программным обеспечением с открытым исходным кодом, написана Филипом Хазелом (Philip Hazel).<indexterm significance="normal"><primary>Hazel, Philip</primary></indexterm>
|
||
Некоторые функции по работе с сырыми сокетами используют сетевую библиотеку
|
||
<ulink role="hidepdf" url="http://libdnet.sourceforge.net">Libdnet</ulink><indexterm significance="normal"><primary>libdnet</primary></indexterm>, написанную Дагом Сонгом (Dug Song).<indexterm significance="normal"><primary>Song, Dug</primary></indexterm>
|
||
Модифицированная версия распространяется вместе с Nmap. Nmap может быть связана с
|
||
<ulink role="hidepdf" url="http://www.openssl.org">OpenSSL
|
||
cryptography toolkit</ulink><indexterm significance="normal"><primary>OpenSSL</primary></indexterm>
|
||
поддержки SSL определения версии. Скриптовый движок Nmap (Nmap Scripting Engine) использует встроенную версию
|
||
<ulink role="hidepdf" url="http://www.lua.org">языка программирования Lua</ulink>.<indexterm significance="normal"><primary>Lua programming language</primary></indexterm>
|
||
Все описанное здесь стороннее проограммное обеспечение бесплатно распространяется на основе лицензии в стиле BSD.</para>
|
||
|
||
</refsect2>
|
||
|
||
<refsect2 id="us-export"><title>Классификация по контролю экспорта Соединенных Штатов<indexterm significance="normal"><primary>export control</primary></indexterm></title>
|
||
|
||
<para>U.S. Export Control: Insecure.Com LLC указывает, что Nmap попадает под U.S. ECCN (число в классификации по
|
||
контролю экспорта) 5D992. Эта категория называется <quote>Программное обеспечение информационной безопасности не
|
||
контролируемое 5D002</quote>. Единственным ограничем в этой категории является AT (анти-терроризм), под который
|
||
попадают почти все товары, что запрещает экспорт в горстку не стран типа Ирана и Северной Кореи. Поэтому экспорт Nmap
|
||
не требует какой-либо специальной лицензии, разрешения или других санкций со стороны государства.</para>
|
||
</refsect2>
|
||
|
||
</refsect1>
|
||
</refentry>
|
||
<indexterm class="endofrange" startref="man-nmap1-indexterm" significance="normal"/>
|
||
|
||
</article>
|