Nmap network security scanner man page (Russian translation)
NMAP(1) NMAP(1)
НАЗВАНИЕ
nmap - Утилита для сканирования и исследования
безопасности сети.
ИСПОЛЬЗОВАНИЕ
nmap [Метод(ы) сканирования] [Опции] <Хост или сеть
#1,[#N]>
ОПИСАНИЕ
Nmap предназначен для сканирования сетей с любым
количеством объектов, определения состояния объектов
сканируемой сети а также портов и соответствующих им
служб. Для этого nmap использует много различных методов
сканирования, таких, как UDP, TCP connect(), TCP SYN
(полуоткрытое), FTP proxy (прорыв через ftp), Reverse-
ident, ICMP (ping), FIN, ACK, Xmas tree, SYN и
NULL-сканирование. Более подробное их описание приведено
в разделе Опции выбора методов сканирования. Nmap также
поддерживает большой набор дополнительных возможностей, а
именно: определение операционной системы (далее - ОС)
удаленного хоста с использованием отпечатков стека TCP/IP,
"невидимое" сканирование, динамическое вычисление времени
задержки и повтор передачи пакетов, параллельное
сканирование, определение неактивных хостов методом
параллельного ping-опроса, сканирование с использованием
ложных хостов, определение наличия пакетных фильтров,
прямое (без использования portmapper) RPC-сканирование,
сканирование с использованием IP-фрагментации а также
произвольное указание IP-адресов и номеров портов
сканируемых сетей.
Результатом работы Nmap является список отсканированных
портов удаленной машины с указанием номера и состояния
порта, типа используемого протокола а также названия
службы, закрепленной за этим портом. Порт характеризуется
тремя возможными состояниями: "открыт", "фильтруемый" и
"нефильтруемый". Состояние "открыт" означает, что
удаленная машина прослушивает данный порт. Состояние
"фильтруемый" означает, что фаирволл, пакетный фильтр или
другое устройство блокирует доступ к этому порту и Nmap не
смог определить его состояние. "Нефильтруемый" означает,
что по результатам сканирования Nmap воспринял данный порт
как закрытый, при этом средства защиты не помешали Nmap
определить его состояние. Это состояние Nmap определяет в
любом случае (даже если большинство сканируемых портов
хоста фильтруются).
В зависимости от указанных опций, Nmap также может
определить следующие характеристики сканируемого хоста:
метод генерации TCP ISN, имя пользователя (username)
владельца процесса, зарезервировавшего сканируемый порт,
символьные имена, соответствующие сканируемым IP-адресам и
т.д.
OPTIONS
Большинство опций могут комбинироваться друг с другом.
Одни опции предназначены для выбора определенного метода
сканирования, другие указывают на использование
дополнительных возможностей или служат для настройки
различных параметров сканирования. nmap предупреждает
пользователя о недопустимом сочетании указанных им опций.
Те, кто хотят немедленно начать работу с программой, могут
пропустить этот раздел и перейти к изучению примеров
вызова Nmap в конце данного руководства. Вы можете также
запустить nmap -h для получения краткой справки по всем
опциям.
Опции выбора методов сканирования.
-sT Использовать метод TCP connect(). Наиболее общий
метод сканирования TCP-портов. Функция connect(),
присутствующая в любой ОС, позволяет создать
соединение с любым портом удаленной машины. Если
указанный в качестве аргумента порт открыт и
прослушивается сканируемой машиной, то результат
выполнения connect() будет успешным (т.е.
соединение будет установлено), в противном случае
указанный порт является закрытым, либо доступ к
нему заблокирован средствами защиты.
Для того, чтобы использовать данный метод,
пользователь может не иметь никаких привилегий на
сканирующем хосте. Этот метод сканирования легко
обнаруживается целевым (т.е. сканируемым) хостом,
поскольку его log-файл будет содержать
запротоколированные многочисленные попытки
соединения и ошибки выполнения данной операции.
Службы, обрабатывающие подключения, немедленно
заблокируют доступ адресу, вызвавшему эти ошибки.
-sS использовать метод TCP SYN. Этот метод часто
называют "полуоткрытым" сканированием, поскольку
при этом полное TCP-соединение с портом сканируемой
машины не устанавливается. Nmap посылает SYN-пакет,
как бы намереваясь открыть настоящее соединение, и
ожидает ответ. Наличие флагов SYN|ACK в ответе
указывает на то, что порт удаленной машины открыт и
прослушивается. Флаг RST в ответе означает
обратное. Если Nmap принял пакет SYN|ACK, то в
ответ немедленно отправляет RST-пакет для сброса
еще не установленного соединения (реально эту
операцию выполняет сама ОС). Очень немного сайтов
способны обнаружить такое сканирование.
Пользователь должен иметь статус root для
формирования поддельного SYN-пакета.
Для ускорения процесса опроса портов при
сканировании больших сетей совместно с опцией -sS
вы можете использовать режим, позволяющий опросить
какой-либо порт на всех активных объектах
сканируемой вами сети намного быстрее, чем при
использовании одной опции -p. Это можно сделать с
помощью опции -PS <порт>.
-sF -sX -sN
"Невидимое" FIN, Xmas Tree и NULL-сканирование. Эти
методы используются в случае, если SYN-сканирование
по каким-либо причинам оказалось неработоспособным.
Так, некоторые фаирволлы и пакетные фильтры
"ожидают" поддельные SYN-пакеты на защищенные ими
порты, и программы типа Synlogger или Courtney
способны отследить SYN-сканирование.
Идея заключается в следующем. В FIN-сканировании в
качестве запроса используется FIN-пакет. В Xmas
Tree используется пакет с набором флагов
FIN|URG|PSH, а NULL-сканирование использует пакет
без флагов. Согласно рекомендации RFC 973 п. 64,
ОС сканируемого хоста должна ответить на такой
пакет, прибывший на закрытый порт, пакетом RST, в
то время как открытый порт должен игнорировать эти
пакеты. Разработчики Microsoft Windows, как
обычно, решили полностью игнорировать все
общепринятые стандарты и пойти своим путем.
Поэтому любая ОС семейства Windows не посылает в
ответ RST-пакет, и данные методы не будут работать
с этими ОС. Однако во всем есть свои плюсы, и в
Nmap этот признак является основным для различения
операционных систем, обладающих таким свойством.
Если в результате FIN-сканирования вы получили
список открытых портов, то это не Windows. Если же
все эти методы выдали результат, что все порты
закрыты, а SYN-сканирование обнаружило открытые
порты, то вы скорей всего имеете дело с ОС Windows.
К сожалению, Windows не единственная ОС, обладающая
этим недостатком. К таким ОС относятся также
Cisco, BSDI, IRIX, HP/UX и MVS. Все эти ОС не
отправляют RST-пакеты.
-sP Ping-"сканирование". Иногда вам необходимо лишь
узнать адреса активных хостов в сканируемой сети.
Nmap может сделать это, послав ICMP-сообщение
"запрос эха" на каждый IP-адрес, указанный вами.
Хост, отправивший ответ на эхо, является активным.
Некоторые сайты (например microsoft.com) блокируют
эхо-пакеты. По этой причине Nmap также посылает
TCP ACK-пакет на 80-й порт сканируемого хоста (по
умолчанию). Если в ответ вы получили RST-пакет,
хост активен. Третий метод использует SYN-пакет и
ожидает в ответ RST либо SYN|ACK. Для
пользователей, не обладающих статусом root,
используется метод connect().
Для root-пользователей Nmap по умолчанию использует
параллельно оба метода - ICMP и ACK. Вы можете
изменить это, используя опцию -P описанную ниже.
Заметим, что ping-сканирование по умолчанию
выполняется в любом случае и только активные хосты
подвергаются сканированию. Используйте эту опцию
только в случае, если вы хотите выполнить только
ping-опрос, не производя сканирования портов.
-sU Сканировать UDP-порты. Этот метод используется для
определения, какие UDP-порты (RFC 768) на
сканируемом хосте являются открытыми. На каждый
порт сканируемой машины отправляется UDP-пакет без
данных. Если в ответ было получено ICMP-сообщение
"порт недоступен", это означает, что порт закрыт. В
противном случае предполагается, что сканируемый
порт открыт.
Некоторые считают сканирование UDP-портов
бесполезным занятием. Мы в этом случае напоминаем
о известной "дыре" в демоне rpcbind ОС Solaris. Он
может быть обнаружен на любом из
недокументированных UDP-портов с номером, больше
32770. Если вы обнаружите его, то будет уже не
важно, блокируется ли 111-й порт фаирволлом или
нет.
К сожалению, сканирование UDP-портов проходит очень
медленно, поскольку практически все ОС следуют
рекомендации RFC 1812 (раздел 4.3.2.8) по
ограничению скорости генерирования ICMP-сообщений
"порт недоступен". Например, ядро Linux (каталог
net/ipv4/icmp.h) ограничивает генерирование таких
сообщений до 80 за 4 секунды с простоем 0,25
секунды, если это ограничение было превышено. У ОС
Solaris еще более жесткое ограничение (2 сообщения
в секунду), и поэтому сканирование Solaris проходит
еще более медленно. nmap определяет параметры
этого ограничения, и соответственно уменьшает
количество генерируемых запросов, предотвращая тем
самым затопление сети ненужными пакетами, которые
игнорируются целевой машиной.
Как обычно, Microsoft снова все проигнорировала, и
не использует
в своих ОС никаких ограничений. Поэтому вы очень
быстро можете
просканировать все 65535 UDP-портов хоста,
работающего под управлением
ОС Windows.
-sO Сканирование протоколов IP. Данный метод
используется для определения IP-протоколов,
поддерживаемых сканируемым хостом. Метод
заключается в передаче хосту IP-пакетов без
какого-либо заголовка для каждого протокола
сканируемого хоста. Если получено сообщение
"Протокол недоступен", то данный протокол хостом не
используется. В противном случае Nmap предполагает,
что протокол поддерживается хостом.
Некоторые ОС (AIX, HP-UX, Digital UNIX) и фаирволлы
могут блокировать передачу сообщений "Протокол
недоступен". По этой причине все сканируемые
протоколы будут "открыты" (т.е. поддерживаются).
Поскольку описанная техника схожа с методом
сканирования UDP-портов, ограничение скорости
генерации ICMP-сообщений также будет иметь место.
Однако поле "тип протокола" IP-заголовка состоит
всего лишь из 8 бит, поэтому 256 протоколов будут
отсканированы за приемлемое время.
-sI <zombie_хост[:порт]>
Сканирование "вхолостую". Позволяет произвести
абсолютно невидимое сканирование портов. Атакующий
может просканировать цель, не посылая при этом
пакетов от своего IP-адреса. Вместо этого
используется метод IdleScan, позволяющий
просканировать жертву через так называемый
хост-"зомби". Кроме абсолютной невидимости, этот
тип сканирования позволяет определить политику
доверия между машинами на уровне протокола IP.
Листинг результатов показывает открытые порты со
стороны хоста-"зомби".
Таким образом, можно просканировать цель с
использованием нескольких "зомби", которым цель
может "доверять", в обход фаирволлов и пакетных
фильтров. Такого рода информация может быть самой
важной при выборе целей "первого удара". Вы можете
указать конкретный порт для проверки изменения IPID
на хосте-"зомби". В противном случае Nmap будет
использовать номер порта по умолчанию для "tcp
ping".
Мы подготовили статью с описанием этого метода, Вы
можете ознакомиться с ней по адресу
http://www.cherepovets-city.ru/insecure/runmap/run╜
map-idlescan.htm.
-sA Использовать ACK-сканирование. Этот дополнительный
метод используется для определения набора правил
(ruleset) фаирволла. В частности, он помогает
определит, защищен ли сканируемый хост фаирволлом
или просто пакетным фильтром, блокирующим входящие
SYN-пакеты.
В этом методе на сканируемый порт хоста
отправляется ACK-пакет (со случайными значениями
полей acknowledgement number и sequence number).
Если в ответ пришел RST-пакет, порт
классифицируется как "нефильтруемый". Если ответа
не последовало (или пришло ICMP-сообщение о
недоступности порта), порт классифицируется как
"фильтруемый". Заметим, что nmap не выдает
"нефильтруемые" порты в результатах, поэтому если
вы не обнаружите ни одного открытого порта при
использовании этого типа сканирования, это будет
означать, что все порты просканированы и являются
нефильтруемыми. Обращаем ваше внимание, что этот
метод никогда не покажет состояние порта "открыт" в
результатах сканирования.
-sW Использовать метод TCP Window. Этот метод похож на
ACK-сканирование, за исключением того, что иногда с
его помощью можно определять открытые порты точно
так же, как и фильтруемые/нефильтруемые. Это можно
сделать, проверив значение поля Initial Window
TCP-пакета, возвращаемого хостом в ответ на
посланный ему запрос, ввиду наличия определенных
особенностей обработки данного поля у некоторых ОС.
Список уязвимых операционных систем включает в себя
по крайней мере несколько версий AIX, Amiga, BeOS,
BSDI, Cray, Tru64 UNIX, DG/UX, OpenVMS, Digital
UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD,
OpenBSD, OpenStep, QNX, Rhapsody, SunOS 4.X,
Ultrix, VAX и VxWorks. Для более подробной
информации смотрите архив nmap-hackers.
-sR использовать RPC-сканирование. Этот метод
используется совместно с другими методами
сканирования и позволяет определить программу,
которая обслуживает RPC-порт, и номер ее версии.
Для этого все открытые TCP/UDP-порты хоста
затопляются NULL-командами оболочки SunRPC, после
чего определяются RPC-порты и закрепленные за ними
программы. Таким образом, вы легко получаете
информацию, которую могли бы получить с помощью
команды 'rpcinfo -p', даже если portmapper
сканируемого хоста закрыт фаирволлом или TCP-wrap╜
per'ом.
-sL Получить список сканируемых адресов. Эта опция
позволяет вам получить список адресов хостов,
которые БУДУТ просканированы Nmap, до начала
процесса сканирования. По умолчанию определяются
имена хостов, однако это можно запретить, используя
опцию -n. Опция может использоваться в случае,
когда вам необходимо определить имена большого
количества хостов по их адресам и т.д.
-b <ftp relay host>
использовать атаку "Прорыв через FTP". Интересной
"возможностью" протокола FTP (RFC 959) является
поддержка "доверенных" (proxy) ftp-соединений.
Другими словами, с доверенного хоста source.com
можно соединиться с ftp-сервером target.com и
отправить файл, находящийся на нем, на любой адрес
Internet! Заметим, что данная возможность известна
с 1985 года (когда был написан этот RFC). Nmap
использует эту "дыру" для сканирования портов с
"доверенного" ftp-сервера. Итак, вы можете
подключиться к ftp-серверу "над" фаирволлом и затем
просканировать заблокированные им порты (например
139-й). Если ftp-сервер позволяет читать и
записывать данные в какой-либо каталог (например
/incoming), вы также можете отправить любые данные
на эти порты.
Аргумент, указываемый после '-b', представляет
собой URL сервера ftp, используемого в качестве
"доверенного". Формат URL следующий:
имя_пользователя:пароль@сервер:порт.
Адрес сервера нужно указать обязательно, остальное
можно не указывать.
Опции настройки и выбора дополнительных возможностей.
Эти опции не обязательные (т.е. возможна нормальная
работа Nmap и без их указания), однако все они
являются весьма полезными.
-P0 Не производить ping-опрос хостов перед их
непосредственным сканированием. Эта опция
позволяет просканировать сети, блокирующие
обработку ICMP-эха с помощью фаирволлов. Примером
такой сети является microsoft.com, и вы всегда
должны использовать опцию '-P0'или '-PT80'(см.
ниже), когда сканируете такую сеть.
-PT [список_портов]
использовать TCP "ping". Вместо посылки запроса
ICMP-эха, Nmap отправляет TCP ACK-пакет на
сканируемый хост и ожидаем ответ. Если хост
активен, то в ответ должен придти RST-пакет. Для
не-root пользователей используется функция con╜
nect(). Эта опция позволяет вам определить
состояние сканируемого хоста, даже если обработка
ICMP-эха запрещена фаирволлом. Для указания номера
порта сканируемого сервера, на который будет
отправляться ACK-пакет, используется опция
-PT<порт1>[,порт2][...]. По умолчанию используется
80-й порт, поскольку он практически никогда не
фильтруется.
-PS [список_портов]
Опция, также используемая для ping-опроса. При этом
вместо ACK-пакета TCP "ping" используется
SYN-пакет. Активные хосты посылают в ответ
RST-пакеты (реже - SYN|ACK).
-PU [список_портов]
Использовать UDP Ping. Nmap отправляет UDP-пакеты
на указанный хост и ожидает в ответ ICMP "port
unreachable" (или ответы от открытых портов UDP)
если хост активен. Поскольку большинство служб,
использующих UDP, не отвечают на запросы, Вам лучше
использовать порты, которые заведомо закрыты.
-PE Эта опция использует в качестве ping-запроса
нормальный ping-пакет (запрос ICMP-эха). Опция
применяется для поиска активных хостов а также
адресов сетей с возможностью широковещания. Такие
сети пересылают прибывший ICMP-пакет всем своим
объектам. Как правило, такие сети представляют
собой "живую мишень" для хакера.
-PP Использует пакет ICMP "timestamp request (code 13)"
для определения активных хостов.
-PM Схожа с опциями -PE и -PP за исключением того, что
используется пакет "netmask request" (ICMP code
17).
-PB режим ping-опроса по умолчанию. Использует
одновременно запросы типа ACK ( -PT ) и ICMP ( -PE
).
-O Эта опция позволяет определить операционную систему
сканируемого хоста с помощью метода отпечатков
стека TCP/IP. Другими словами, Nmap активизирует
мощный алгоритм, функционирующий на основе анализа
свойств сетевого программного обеспечения
установленной на нем ОС. В результате сканирования
получается формализованный "отпечаток", состоящий
из стандартных тестовых запросов и "ответов" хоста
на них. Затем полученный отпечаток сравнивается с
имеющейся базой стандартных ответов известных ОС,
хранящейся в файле nmap-os-fingerprinting, и на
основании этого принимается решение о типе и версии
ОС сканируемого хоста.
Этот метод требует наличия хотя бы одного закрытого
и одного открытого порта на целевом хосте. Если вы
обнаружите машину, у которой это условие
выполняется, но Nmap не смог определить версию ОС -
вышлите нам адрес этой машины. Если же, по
каким-либо причинам выслать адрес не представляется
возможным, запустите Nmap с опцией '-d' и вышлите
полученный отпечаток.
-6 Опция разрешает поддержку протокола IPv6. Все хосты
должны поддерживать IPv6 при использовании этой
опции, и могут быть указаны путем нормального имени
DNS (запись AAAA) или литеральным IP-адресом,
например 3ffe:501:4819:2000:210:f3ff:fe03:4d0. На
данный момент, поддерживаются только методы TCP
connect()-сканирование и TCP connect()
Ping-сканирование. Если Вам необходимо UDP или
другой тип сканирования, рекомендуем ссылку
http://nmap6.sourceforge.net/
-I Использовать reverse-ident сканирование. Протокол
Ident (RFC 1413) позволяет вскрыть имя пользователя
(username) процесса, использующего TCP, даже если
этот процесс не инициализировал соединение. Так,
например, вы можете подключиться к порту http и
затем использовать identd для поиска на сервере
пользователя root. Это может быть сделано только
при установлении "полного" TCP-соединения с портом
сканируемой машины (т.е. необходимо использовать
опцию '-sT'). Nmap опрашивает identd сканируемого
хоста параллельно с каждым открытым портом.
Естественно, этот метод не будет работать, если на
целевом хосте не запущен identd.
-f Эта опция используется совместно с SYN, FIN, Xmas
или NULL-сканировании и указывает на необходимость
использования IP-фрагментации с малым размером
фрагментов. Идея заключается в том, чтобы разбить
TCP-заголовок пакета на несколько фрагментов
(обычно два) на стороне источника. Сканируемый
хост "собирает" эти IP-фрагменты в один TCP-пакет.
Это значительно усложняет фильтрацию пакетов,
работу систем обнаружения и других подобных средств
защиты, и позволяет Nmap скрыть свои действия.
Будьте осторожны, используя эту опцию! Некоторые
программы "зависают" при попытке собрать такие
маленькие фрагменты. Так, например, весьма неплохой
"сниффер" завис сразу же при получении первого
36-байтного фрагмента. А следом за ним пришел
24-байтный фрагмент.
-v Использовать режим "подробного отчета". Эту опцию
рекомендуется использовать в любых случаях,
поскольку при этом Nmap подробно сообщает о ходе
выполнения текущей операции. Для получения лучшего
эффекта можно указать ее дважды. Ну а если вы
укажете еще опцию -d то от скроллинга экрана у вас
может закружиться голова.
-h Печатает справку по использованию Nmap с указанием
опций и краткого их описания, не запуская саму
программу.
-oN <имя_файла>
Записывает результаты сканирования в указанный файл
в удобной для пользователя форме.
-oX <имя_файла>
Записывает результаты сканирования в файл,
указанный в качестве аргумента, в формате XML Это
позволяет программам легче интерпретировать вывод
Nmap'а. Вы можете использовать аргумент '-' (без
кавычек) для вывода на stdout. Нормальный вывод в
этом случае будет подавлен. Document Type Defini╜
tion (DTD) расшифровывающий структуру результатов
Nmap в формате XML доступен здесь:
http://www.insecure.org/nmap/nmap.dtd .
-oG <имя_файла>
Записывает результаты сканирования в файл,
указанный в качестве аргумента, в формате, удобном
для команд типа grep. Это простой формат, при
котором все данные записываются в одну строку.
Формат пришел на смену опции -oM (см. ранние
версии) и использовался для взаимодействия с
другими программами. Сейчас мы рекомендуем
использовать XML. Также возможно использование
аргумента '-'.
-oA <база_имени_файла>
Записывает результаты во всех основных форматах
(нормальном, grep и XML). Вам необходимо указать
базу имени, и выходные файлы будут называться
base.nmap, base.gnmap и base.xml.
-oS <имя_файла>
Эту возможность мы предусмотрели для любителей
языка s|<ipT kiDd|3: thIs l0gz th3 r3suLtS of YouR
ScanZ iN a s|<ipT kiDd|3 f0rM iNto THe fiL3 U
sPecfy 4s an arGuMEnT! U kAn gIv3 the 4rgument '-'
(wItHOUt qUOteZ) to sh00t output iNT0 stDouT!@!!
--resume <имя_файла>
Если вы прервали сканирование сети нажатием
комбинации <Ctrl C>, то вы можете продолжить его,
используя эту опцию, если результаты сканирования
записывались в лог-файл с помощью опций '-oG' или
'-oN'. В этом случае запустите Nmap с указанием
этой опции и имени файла, в который производилась
запись предыдущего сеанса. При этом никаких других
опций указывать не нужно, поскольку при
возобновлении сканирования будут использоваться
опции, указанные в предыдущем сеансе. Nmap
продолжит сканирование с адреса, следующего за
последним "завершенным".
--append_output
Указывает Nmap дописать результаты сканирования в
файл, вместо того, чтобы заменить его.
-iL <имя_файла>
Считывает описание целевых хостов из текстового
файла. Файл должен содержать список имен хостов или
IP-адресов, разделенных пробелами, знаками
табуляции или комбинацией <CR><LF> (каждый хост - с
новой строки). Если вы хотите использовать StdIn в
качестве источника информации о хостах, укажите
вместо имени файла символ '-'. Более подробная
информация о форматах выражений приведены в разделе
"Способы задания целевого хоста".
-iR <число_хостов>
Если вы укажете эту опцию, Nmap будет сканировать
случайно выбранные им хосты, адреса которых
получены с помощью генератора случайных величин.
Этот процесс будет длиться, пока вы его не
остановите. Функция может пригодиться для
статистического исследования Internet.
-p <диапазон(ы)_портов>
Эта опция указывает Nmap, какие порты необходимо
просканировать. Например, '-p 23' означает
сканирование 23 порта на целевой машине. Если
указано выражение типа '-p 20-30,139,60000-' Nmap
будет сканировать порты с номерами с 20 по 30
включительно, 139 и от 60000 и выше (до 65535). По
умолчанию Nmap сканирует все порты в диапазоне
1-1024, поскольку все они перечислены в файле ser╜
vices.
-F Быстрое сканирование. Указывает Nmap на
необходимость сканирования портов только тех служб,
которые перечислены в файле services. Сканирование
проходит гораздо быстрее, чем если бы Nmap
сканировал все 65535 портов.
-D <ложный_хост1,[ложный_хост2],[,ME],...>
В этом режиме Nmap "создает" ложные хосты, адреса
которых задаются произвольно и указываются в
качестве аргументов. При этом на стороне
сканируемого хоста создается видимость, что
производится одновременное сканирование с различных
хостов (обладающих разными IP-адресами), что очень
затрудняет обнаружение вашего реального IP-адреса.
Адреса разделяются запятой. Вы также можете указать
свой IP-адрес
(аргумент 'ME') в качестве одного из хостов. Если
вы поместите аргумент 'ME' на шестой позиции или
дальше, некоторые распространенные скан-детекторы
(например, scanlogd авторства Solar Designer'а)
скорее всего не покажут ваш IP-адрес вообще. Если
вы явно не указали аргумент 'ME', Nmap поместит вас
на случайную позицию. Также вы можете указать имена
хостов вместо их IP-адресов. Заметим, что хосты,
указанные вами в качестве ложных, должны реально
существовать и функционировать, в противном случае
вы можете "затопить" сканируемый хост SYN-пакетами.
Это также может способствовать обнаружению вашего
хоста, потому что если ложные хосты не
функционируют, то единственным работающим хостом
окажется ваш.
Стоит заметить, что некоторые скан-детекторы
блокируют доступ хосту, осуществившему попытку
сканирования. Поэтому ложный хост может потерять
соединение со сканируемым хостом. Эта ситуация
может возникнуть даже в том случае, если вы указали
в качестве ложного хоста адрес шлюза или 'local╜
host'. Поэтому аккуратно используйте эту опцию.
Ложные хосты могут использоваться с любым методом
сканирования, а также при определении операционной
системы. Если вы указали много ложных хостов, это
замедлит процесс сканирования и сделает его менее
точным. Некоторые провайдеры могут отфильтровывать
ваши пакеты (но еще больше их не отфильтруют), и в
этом случае использование ложных хостов не даст вам
ожидаемого результата.
-S <IP-адрес>
Если Nmap не смог автоматически определить IP-адрес
вашего хоста (о чем вы получили соответствующее
сообщение), вам необходимо самостоятельно указать
IP-адрес, используя его в качестве аргумента данной
опции (т.е. адрес интерфейса, который вы хотите
использовать). Другое применение данной опции -
для создания видимости сканирования целевого хоста
кем-то другим. В этом случае вы не сможете получить
результат, однако на стороне сканируемого хоста
создается видимость сканирования с указанного вами
адреса. Для этого совместно с
-e <интерфейс>
указывает Nmap, какой интерфейс будет
использоваться для приема/передачи пакетов. Имя
интерфейса указывается в качестве аргумента опции.
Nmap обычно сам определяет интерфейс, однако выдаст
вам соответствующее сообщение, если по каким-либо
причинам он не смог этого сделать.
-g <номер_порта>
указывает номер порта на вашем компьютере, который
будет использоваться Nmap для осуществления
сканирования. Многие фаирволлы и пакетные фильтры
позволяют проходить пакетам DNS (порт 53) и FTP-
DATA (порт 20) к защищаемому ими хосту и установить
соединение. Этот момент является большой "дырой" в
безопасности фаирволлов, поэтому атакующему ничего
не стоит отправлять нужные ему пакеты через 53-й
или 20-й порт.
--data_length <число>
Обычно Nmap посылает пакет, содержащий только
заголовок. Таким образом, TCP-пакет имеет длину 40
байт, а ICMP "echo requests" - 28. Эта опция
добавляет к большинству пакетов (кроме пакетов для
определения ОС) указанное число нулевых байт.
Добавляет конспирации.
-n Никогда не преобразовывать адреса обнаруженных
хостов в DNS-адрес. Увеличивает скорость
сканирования.
-R Всегда преобразовывать адреса обнаруженных хостов в
DNS-адрес.
-r Не переставлять номера сканируемых портов случайным
образом.
-ttl <значение>
Записывает в поле TTL отправляемых пакетов IPv4
заданное значение.
--randomize_hosts
Указывает Nmap на необходимость случайной
перестановки каждой группы из 2048 хостов перед
непосредственным их сканированием. Эта опция
делает сканирование менее заметным для различных
систем сетевого мониторинга, особенно если вы
используете ее совместно с опцией настройки
времени, устанавливающей более медленное
сканирование.
-M <максимум_сокетов>
устанавливает максимальное количество сокетов,
используемых параллельно в методе TCP connect()
сканирования. Установка меньшего значения немного
замедляет процесс сканирования, но предотвращает
"завал" сканируемого хоста. Для последней цели
лучше всего использовать опцию '-sS', так как
SYN-сканирование гораздо легче "переносится"
операционными системами.
--packet_trace
Показывать все принимаемые и передаваемые пакеты в
формате TCPDump.
--datadir [каталог]
При запуске Nmap считывает данные из файлов nmap-
services, nmap-protocols, nmap-rpc, и nmap-os-fin╜
gerprints. Их местоположение Nmap берет из
переменной --nmapdir. Затем проверяется переменная
окружения NMAPDIR, после чего ~/nmap, а затем путь
наподобие /usr/share/nmap . А потом Nmap ищет их в
текущем каталоге. Этой опцией можно явно задать
положение этих файлов.
Опции настройки временных параметров
Обычно Nmap автоматически настраивает временные
параметры в соответствии с характеристиками
сканируемой сети. Настройки осуществляются,
во-первых, для проведения максимально быстрого
сканирования, и во-вторых, для уменьшения
вероятности появления ошибок. Если вас не
устраивает автоматическая настройка временных
параметров, вы можете настроить их самостоятельно,
используя эти опции.
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
эта опция устанавливает временной режим
сканирования. Требуемый режим указывается в
качестве аргумента. Режим Paranoid используется в
случае, когда очень велика вероятность
использования скан-детекторов. В этом режиме
сканирование проходит очень медленно. Параллельное
сканирование не используется. Вместо этого Nmap
проводит сканирование последовательно, с интервалом
по меньшей мере 5 минут между посылкой пакетов.
Режим Sneaky похож на режим Paranoid. Разница
заключается в том, что интервал между посылкой двух
пакетов составляет 15 секунд. Режим Polite
используется в случае, когда необходимо
минимизировать нагрузку на сеть и уменьшить
вероятность "завала" сканируемого хоста. В этом
режиме тесты проходят последовательно с интервалом
минимум 0,4 секунды. Режим Normal используется
Nmap по умолчанию. В этом режиме сканирование
производится с максимально возможной скоростью, и
по возможности без перегрузки сети и возникновения
ошибок. В режиме Aggressive устанавливается
ограничение на сканирование одного хоста, равное 5
минутам, и, кроме того, время ожидания ответа на
запрос не превышает 1,25 секунды. Режим Insane
применяется только при сканировании очень быстрых
сетей. Время сканирования одного хоста составляет
75 секунд, а ожидание ответа на запрос - 0,3
секунды.
Каждому режиму присвоен соответствующий номер, и вы
можете указать его вместо полного названия режима.
Так, опция '-T0' означает режим Paranoid, а '-T5' -
Insane. Нумерация соответствует порядку, в котором
они были перечислены выше. Заметим, что опция '-T'
осуществляет настройку Nmap на высоком уровне, и не
должна использоваться с опциями, приведенными ниже
(они обеспечивают низкоуровневую настройку).
--host_timeout <миллисекунд>
Устанавливает время, отводимое Nmap на полное
сканирование одного хоста, прежде чем он перейдет к
очередному IP-адресу. По умолчанию этот параметр
отсутствует, т.е. Nmap не переходит к очередному
адресу до окончания сканирования текущего.
--max_rtt_timeout <миллисекунд>
Устанавливает верхнюю границу временного интервала,
в течение которого Nmap ожидает ответ на посланный
запрос, прежде чем повторить запрос либо послать
новый. По умолчанию это значение установлено равным
9000 миллисекунд.
--min_rtt_timeout <миллисекунд>
Если сканируемый хост немедленно отвечает на
посланный запрос, Nmap сразу же передает следующий,
сэкономив тем самым очень много времени. Это
ускоряет сканирование, но может привести к потере
пакетов с ответами, пришедшими несколько позже, чем
обычно. Эта опция устанавливает нижнюю границу
времени ожидания ответа, т.е. Nmap в любом случае
будет ждать в течении указанного вами времени не
зависимо от того, пришел ответ или нет.
--initial_rtt_timeout <миллисекунд>
Устанавливает время, отводимое на начальный тест.
Эта опция используется в основном для сканирования
хостов, защищенных фаирволлом, совместно с опцией
'-P0'. Обычно Nmap автоматически выбирает
оптимальное значение этого параметра. Значение по
умолчанию составляет 6000 миллисекунд.
--max_parallelism <количество>
Устанавливает максимальное количество параллельных
процессов сканирования, используемых Nmap.
Установка этого параметра равным 1 означает, что
Nmap никогда не будет сканировать более одного
порта в один момент времени.
--min_parallelism <количество>
Устанавливает минимальное количество параллельных
процессов сканирования, используемых Nmap.
Увеличивает скорость прохождения пакетов через
фаирволлы.
--scan_delay <миллисекунд>
устанавливает минимальное время задержки между
тестами. Эта опция может использоваться для
снижения нагрузки на сеть и уменьшения вероятности
обнаружения сканирования.
СПОСОБЫ ЗАДАНИЯ ЦЕЛЕВОГО ХОСТА
Все, что не является опцией или ее аргументом, Nmap
воспринимает как адрес или имя целевого хоста (т.е.
хоста, подвергаемого сканированию). Простейший
способ задать сканируемый хост - указать его имя
или адрес в командной строке после указания опций и
аргументов. Если вы хотите просканировать подсеть
IP-адресов, вам необходимо указать параметр '/mask'
("маска") после имени или IP-адреса сканируемого
хоста. Маска может принимать следующие значения:
Nmap позволяет также гибко указать целевые
IP-адреса, используя списки и диапазоны для каждого
их элемента. Например, необходимо просканировать
подсеть класса B с адресом 128.210.*.*. Задать эту
сеть можно любым из следующих способов: 128.210.*.*
128.210.0-255.0-255
128.210.1-50,51-255.1,2,3,4,5-255 128.210.0.0/16
Все эти строки эквивалентны. Заметим, что если вы
используете "звездочку" ('*'), то в большинстве
оболочек вам понадобится отделить ее обратной
"косой чертой" либо апострофами. Приведем еще один
пример. Если вы указали в качестве целевого
IP-адреса строку '*.*.5.6-7', Nmap отсканирует все
IP-адреса, оканчивающиеся на 5.6 либо 5.7. Более
подробно примеры вызова программы Nmap приведены
ниже.
ПРИМЕРЫ
Приведем некоторые примеры использования Nmap и
соответствующие способы запуска программы с указанием
параметров в командной строке.
nmap -v target.example.com
Сканировать все зарезервированные TCP-порты на хосте tar╜
get.example.com. Опция '-v' означает включение режима
подробного отчета о ходе процесса сканирования.
nmap -sS -O target.example.com/24
Запускает SYN-сканирование всех 255 машин с адресами
класса C, одной из которых является target.example.com.
Кроме того, осуществляется определение ОС каждого из
сканируемых хостов. Для этого вам необходим статус root.
nmap -sX -p 22,53,110,143,4564 198.116.*.1-127
Осуществляет Xmas-сканирование первой половины адресов
(0-127) каждой из 255 подсетей класса B адресного
пространства 128.210.*.*. На этих хостах тестируется
присутствие sshd (22 порт), DNS (53), pop3d (110), imapd
(143) и состояние порта 4564. Обращаем внимание, что
Xmas-сканирование не будет работать с ОС Windows, CISCO,
IRIX, HP/UX и BSDI.
nmap -v --randomize_hosts -p 80 '*.*.2.3-5'
Nmap будет искать все машины, IP-адрес которых
оканчивается на .2.3, порты обнаруженных хостов, указав
опцию '-sS'. Вы найдете много интересных машин, адреса
которых начинаются на 127. Поэтому мы рекомендуем вместо
первой звездочки указать '127-222'. Попробуйте
обязательно!
host -l company.com | cut '-d ' -f 4 | ./nmap -v -iL -
Просканировать серверы DNS зоны и найти хосты в домене
company.com, передав затем в Nmap их адреса. Так выглядит
команда для GNU/Linux. Для других ОС она будет выглядеть
несколько иначе.
ВОЗМОЖНЫЕ ОШИБКИ
Если вы обнаружили какие-либо симптомы, говорящие о
неверной работе программы, или нашли место в коде,
приводящее к такому эффекту - немедленно отправьте нам эту
информацию. Не забывайте также отправлять нам отпечатки
ОС, чтобы пополнять базу данных Nmap. Программа выдаст вам
соответствующее сообщение и URL, где она обнаружила новый
отпечаток.
АВТОРЫ
Базовая версия: Nmap 3.ХХ release by Fyodor <fyodor@inse╜
cure.org>
Русская версия: RuNmap 3.ХХ, Алексей Волков <alex@chere╜
povets-city.ru>
РАСПРОСТРАНЕНИЕ
Новейшую версию Nmap и RuNmap вы можете получить по
адресам
http://www.cherepovets-city.ru/insecure
http://www.insecure.org/
nmap (C) 1995-2003 by Insecure.Com LLC
Эта программа бесплатна, Вы можете распространять и
вносить изменения в исходный код с соответствии с
требованиями GNU General Public License, опубликованной
Free Software Foundation; версия 2. Это дает Вам право
модифицировать и распространять программу с некоторыми
ограничениями. Если Вы не можете принять условия данной
лицензии, Вы можете обратиться к нам за приобретением
дополнительных лицензий (sales@insecure.com).
Если Вы получили программу с дополнительными лицензионными
требованиями, отличными от приведенных выше (GNU GPL), это
означает, что на полученную Вами программу
распространяется дополнительное соглашение, имеющее
преимущество перед приведенным выше.
Исходный код программы в полном объеме прилагается к
дистрибутиву поскольку пользователи должны иметь право
знать, что сделает программа прежде, чем она будет
запущена. Кроме того, наличие исходного кода позволяет
быстро устранить ошибки в программе.
Наличие исходного кода также позволит переносить Nmap на
другие платформы и добавлять новые возможности. Вы можете
отправить Ваши доработки на адрес alex@cherepovets-city.ru
и, возможно, они будут включены в следующие версии
программы. Высылая Ваши доработки нам, Вы тем самым
предоставляете Insecure.Org неограниченное право на
использование, модификацию и релицензирование кода на
свободное распространение согласно GNU GPL. Если Вы
желаете определить Ваши дополнительные условия, просто
вышлите их перед высылкой самого кода.
Программа распространяется с надеждой авторов на то, что
она будет полезной для тех, кто ее использует, но БЕЗ
ВСЯКИХ ГАРАНТИЙ; и без гарантии на то, что она находится В
СОСТОЯНИИ, ПРИГОДНОМ ДЛЯ ПРОДАЖИ. Смотрите GNU General
Public License (файл COPYING в дистрибутиве nmap ).
Также заметим, что работа Nmap иногда приводит к сбою
некоторых приложений, стеков TCP/IP, и даже операционных
систем. Авторы Nmap не несут ответственности за
последствия, которые могут быть вызваны запуском, работой
и (или) воздействием программы на любые вычислительные
системы, сети и хосты, равно как не возмещают ущерб,
причиненный действиями третьих лиц при использовании Nmap.
Ответственность за подобные действия возлагается на лиц,
их совершивших.
Из соображений безопасности программа Nmap не должна
запускаться с привилегиями (например suid root).
Библиотека Libpcap распространяется совместно с Nmap.
Владельцы авторского права: Van Jacobson, Craig Leres и
Steven McCanne, Национальная лаборатория Lawrence Berkley
Калифорнийского университета, Беркли, Калифорния. Версия,
распространяемая с Nmap, может быть модифицирована.
Исходный код библиотеки можно получить по адресу
http://www.tcpdump.org .
Вопросы и комментарии отправляйте по адресу: alex@chere╜
povets-city.ru
NMAP(1)
Man(1) output converted with
man2html