Сетевой сканер Nmap - выбор элиты

Итак приступим! NMAP - инструмент-утилита для исследования сети.(проще сканер). Появился на свет благодаря человеку, которого в сети знают под ником Fyodor. Расшифровывается как Network Mapper. Про нее: Утилита NMAP предназначена для сканирования машин и сетей с различным количеством компьютеров, определения состояния хостов сканируемой сети и к тому же портов и служб. NMAP является одним из самых быстрых сканеров портов. Для использования своих возможностей программа реализует различные методы сканирования,
UDP, TCP connect(), TCP SYN (полуоткрытое), FTP proxy (прорыв через ftp), Reverse-ident, ICMP (ping), ACK, Xmas tree,SYNиNULL,
сканирование. Одна из важных функций сканера - определение ОС, под которой работает нужная вам машина.
Следущий плюс NMAP - это функция с помощью которой создается запрос, который в 90%-м случае не оставит логов на сканируемой машине. Итак, если вы хотите быстро получить результат - эта утилита именно для вас окажется незаменимой.
Забегая вперед, о программе под Win-системы, скажу следущее: Называется Nmap, последняя доступная версия под Виндовс - 3.30, под Unix - также.
Поддерживаемые платформы:AIX, BSDI, FreeBSD, HP-UX, IRIX, Linux, NetBSD, OpenBSD, Solaris,
SunOS, Windows 98/Me/2000/XP.
Сканер Nmap имеет много опций методов сканирования, которые вам придеться выучить или
постоянно смотреть в эту инструкцию.
Поехали!
Использование: nmap {режим сканирования}{опция}{ip-адрес хоста или целая сеть}
Если говорить о *nix-системах, то лучше работать под root, так как некоторые методы сканирования
требуют прав суперпользователя.
-sT (scan TCP) - использовать метод TCP connect(). Наиболее общий метод сканирования TCP-портов.
Функция connect(), присутствующая в любой ОС, позволяет создать соединение с любым портом удаленной
машины. Если указанный в качестве аргумента порт открыт и прослушивается сканируемой машиной, то результат
выполнения connect() будет успешным (т.е. соединение будет установлено), в противном случае указанный порт
является закрытым, либо доступ к нему заблокирован средствами защиты.
Для того, чтобы использовать данный метод, пользователь может не иметь никаких привилегий на сканирующем
хосте. Этот метод сканирования легко обнаруживается целевым (т.е. сканируемым) хостом, поскольку его log-файл
будет содержать запротоколированные многочисленные попытки соединения и ошибки выполнения данной операции.
Службы, обрабатывающие подключения, немедленно заблокируют доступ адресу, вызвавшему эти ошибки.
-sS (scan SYN) - использовать метод TCP SYN. Этот метод часто называют "полуоткрытым" сканированием,
поскольку при этом полное TCP-соединение с портом сканируемой машины не устанавливается. NMAP посылает
SYN-пакет, как бы намереваясь открыть настоящее соединение, и ожидает ответ. Наличие флагов SYN|ACK в ответе указывает на то, что порт удаленной машины открыт и прослушивается. Флаг RST в ответе означает
обратное. Если Nmap принял пакет SYN|ACK, то в ответ немедленно отправляет RST-пакет для сброса еще не установленного соединения (реально эту операцию выполняет сама ОС). Очень немного сайтов способны обнаружить такое сканирование. Пользователь должен иметь статус root для формирования поддельного SYN-пакета.
Для ускорения процесса опроса портов при сканировании больших сетей совместно с опцией -sS вы можете использовать ярлык, позволяющий опросить какой-либо порт на всех активных объектах сканируемой вами
сети намного быстрее, чем при использовании одной опции -p. Это можно сделать с помощью ярлыка -PS .
Например, если будет обнаружена новая уязвимость в sendmail, вам может потребоваться за короткое время
обнаружить, на каких машинах sendmail установлен. Команда запуска Nmap будет выглядеть следующим образом
(пример):
nmap -n -sS -p25 -PS25 21.0.0.0/8
-sF,-sX,-sN (scan FIN, scan Xmas, scan NULL) - "невидимое" 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 (scan Ping) - 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 (scan UDP) - сканировать 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 (scan Open protocol) - сканирование протоколов IP. Данный метод используется для определения IP-протоколов,
поддерживаемых сканируемым хостом. Метод заключается в передаче хосту IP-пакетов без какого-либо заголовка
для каждого протокола сканируемого хоста. Если получено сообщение "Протокол недоступен", то данный протокол
хостом не используется. В противном случае Nmap предполагает, что протокол поддерживается хостом.
Некоторые ОС (AIX, HP-UX, Digital UNIX) и файрволлы могут блокировать передачу сообщений "Протокол недоступен". По этой причине все сканируемые протоколы будут "открыты" (т.е. поддерживаются).
Поскольку описанная техника схожа с методом сканирования UDP-портов, ограничение скорости генерации ICMP-сообщений также будет иметь место. Однако поле "тип протокола" IP-заголовка состоит всего лишь из
8 бит, поэтому 256 протоколов будут отсканированы за приемлемое время.
-sA (scan ACK) - использовать ACK-сканирование. Этот дополнительный метод используется для определения
набора правил (ruleset) файрволла. В частности, он помогает определит, защищен ли сканируемый хост файрволлом
или просто пакетным фильтром, блокирующим входящие SYN-пакеты.
В этом методе на сканируемый порт хоста отправляется ACK-пакет (со случайными значениями полей acknowledgement
number и sequence number). Если в ответ пришел RST-пакет, порт классифицируется как "нефильтруемый". Если ответа не последовало (или пришло ICMP-сообщение о недоступности порта), порт классифицируется как "фильтруемый". Заметим, что Nmap не выдает "нефильтруемые" порты в результатах, поэтому если вы не обнаружите ни одного открытого порта при использовании этого типа сканирования, это будет означать, что все порты просканированы
и являются нефильтруемыми. Обращаем ваше внимание, что этот метод никогда не покажет состояние порта "открыт" в результатах сканирования.
-sW (scan Window) - использовать метод 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.
-sR (scan RPC) - использовать RPC-сканирование. Этот метод используется совместно с другими методами
сканирования и позволяет определить программу, которая обслуживает RPC-порт, и номер ее версии. Для этого все открытые TCP/UDP-порты хоста затопляются NULL-командами оболочки SunRPC, после чего
определяются RPC-порты и закрепленные за ними программы. Таким образом, вы легко получаете информацию, которую могли бы получить с помощью команды 'rpcinfo -p', даже если portmapper сканируемого хоста закрыт
файрволлом или TCP-wrapper'ом.
-sL (scan List) - получить список сканируемых адресов. Эта опция позволяет вам получить список адресов хостов, которые будут просканированы NMAP, до начала процесса сканирования. По умолчанию определяются
имена хостов, однако это можно запретить, используя опцию -n. Опция может использоваться в случае, когда
вам необходимо определить имена большого количества хостов по их адресам и т.д.
-b (bounche scan) - использовать атаку "Прорыв через FTP". Интересной "возможностью" протокола FTP (RFC 959) является поддержка "доверенных" (proxy) ftp-соединений. Другими словами, с
доверенного хоста source.com можно соединиться с ftp-сервером target.com и отправить файл, находящийся на нем, на любой адрес Internet! Заметим, что данная возможность известна с 1985 года (когда был написан этот RFC). NMAP использует эту "уязвимость" для сканирования портов с "доверенного" ftp-сервера.
Итак, вы можете подключиться к ftp-серверу "над" файрволлом и затем просканировать заблокированные им
порты (например 139-й). Если ftp-сервер позволяет читать и записывать данные в какой-либо каталог (например /incoming), вы также можете отправить любые данные на эти порты. Аргумент, указываемый после
'-b', представляет собой URL сервера ftp, используемого в качестве "доверенного". Формат URL следующий:
имя_пользователя:пароль@сервер:порт. Адрес сервера нужно указать обязательно, остальное можно не указывать.
-РО - обозначает не пинговать хост перед сканированием, нужно в случаях с такими серверами, как microsoft.com, когда ICMP-запросы игнорируются сервером.
-O - Опция позволяет задействовать систему определния ОС на исследуемом хосте. Всегда в первую очередь необходимо знать под какой ОС-ю работает интересующий вас хост.
Еще один важный момент,все что не является опцией или аргументом сканер воспринимает, как адрес цели.
Примеры:
nmap -v 777.ru

Сканировать все зарезервированные TCP-порты на хосте Опция '-v' означает включение режима подробного
отчета о ходе процесса сканирования.
nmap -sS -O 777.ru/24
Запускает SYN-сканирование всех 255 машин с адресами класса C, одной из которых является 777.ru. Кроме того, осуществляется определение ОС каждого из сканируемых хостов. Для этого вам необходим, как я уже говорил выше статус суперпользователя.
nmap -sX -p 22,53,110,143,4564 128.210.*.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 -p80 *.*.2.3-5
Nmap будет искать все машины, IP-адрес которых оканчивается на .2.3, .2.4 и .2.5. Если ваш статус root, вы также можете просканировать порты обнаруженных хостов, указав опцию '-sS'. Вы найдете много интересных машин, адреса которых начинаются на 127. Поэтому рекомендуется вместо первой звездочки указать '127-222'.
Попробуйте.
host -l 777.ru |cut '-d' -f 4| ./nmap -v -iL
Просканировать серверы DNS зоны и найти хосты в домене 777.ru, передав затем в NMAP их адреса. Так выглядит команда для Linux.

Back to Top