- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Уроки по Nmap. Урок 1: Для чего нужен Nmap, что нового в версии 7, примеры опций
- Что такое Nmap и для чего он нужен?
- Улучшение в Nmap 7:
- Примеры опций для сканирования Nmap
- Как пользоваться Nmap для сканирования сети
- Как работает Nmap?
- Синтаксис Nmap
- Как пользоваться Nmap для сканирования портов в Linux
- Выводы
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Уроки по Nmap. Урок 1: Для чего нужен Nmap, что нового в версии 7, примеры опций
Что такое Nmap и для чего он нужен?
Nmap (“Network Mapper”) это утилита с открытым исходным кодом для исследования сети и проверки безопасности. Она была разработана для быстрого сканирования больших сетей, хотя прекрасно справляется и с единичными целями.
Nmap использует сырые IP пакеты оригинальными способами, чтобы определить какие хосты доступны в сети, какие службы (название приложения и версию) они предлагают, какие операционные системы (и версии ОС) они используют, какие типы пакетных фильтров/брандмауэров используются и еще дюжины других характеристик. В тот время как Nmap обычно используется для проверки безопасности, многие сетевые и системные администраторы находят ее полезной для обычных задач, таких как контролирование структуры сети, управление расписаниями запуска служб и учет времени работы хоста или службы.
Эта программа первоначально написал Gordon Lyon и она с лёгкостью может ответить на следующие вопросы:
- Что за компьютеры работают в вашей локальной сети?
- Какие IP используются в локальной сети?
- Какие порты открыты на удалённой машине?
- Какая операционная система у цели?
- Какие службы запущены на целевой машине, какая у них версия?
- Узнать, заражена ли система вредоносным кодом или вирусом.
- Поиск неавторизованных серверов или сетевых служб в вашей сети
- Поиск и удаление компьютеров, которые не соответствуют минимальному уровню безопасности организации.
Улучшение в Nmap 7:
Значительное расширение скриптового движка Nmap (Scripting Engine — NSE)
По мере созревания ядра Nmap, всё больше и больше функциональности вместо добавления в него разрабатывается как часть подсистемы NSE. После шестой версии в Nmap 7 был добавлен 171 новый скрипт и 20 библиотек. Примеры включают irewall-bypass, supermicro-ipmi-conf, oracle-brute-stealth и ssl-heartbleed. И NSE сейчас достаточно мощный, чтобы выполнять основные функции, такие как обнаружение хостов (dns-ip6-arpa-scan), сканирование версий (ike-version, snmp-info и т.д..) и шлифование RPC (rpc-grind).
Зрелая поддержка IPv6
Улучшение сканирования IPv6 было важным аспектом в шестом выпуске Nmap, но Nmap 7 превосходит всех с полной поддержкой IPv6 в указании диапазонов в стиле CIDR, «ленивом» (Idle) сканировании, параллельных обратных запросах DNS и большем покрытии NSE.
Обновление инфраструктуры
Проекту Nmap уже 18 лет, но это не значит, что он застрял в прошлом. Проект Nmap продолжает воспринимать новые технологии для улучшения процесса разработки и обслуживания разрастающейся пользовательской базы. Например, они перевели Nmap.Org на SSL для уменьшения риска от исполнимых троянов и вообще в целом уменьшения возможности перехвата. Они также используют систему контроля версия Git в качестве большей части рабочего процесса и имеют официальное зеркало репозитория исходников Nmap Subversion на Github и там же можно отправить своей код для проекта. Они также создали официальный баг трэкер, который тоже хостится на Github. Отслеживание ошибок и улучшение запросов уже приносит свои результаты.
Ускорение сканирований
На протяжении 18 лет Nmap постоянно раздвигает границы скорости синхронного сканирования сети и этот релиз не стал исключением. Новые движки Nsock дают увеличение производительности на системах Windows и BSD, переназначение задач предотвращает неприятные крайние случаи на многосетевых системах, а твики NSE ведут к убыстрению сканирований -sV.
Решение по сканированию SSL/TLS
Безопасность транспортного уровня (TLS), как и его предшественник SSL, являются фундаментом безопасности веба, поэтому когда обнаруживаются большие уязвимости вроде Heartbleed, POODLE и FREAK, Nmap отвечает скриптами NSE для обнаружения уязвимости. Скрипт ssl-enum-ciphers script был полностью переделан под выполнение быстрого анализа проблем с развёрнутыми TLS, и были подкручены зонды для сканирования версий в целях быстрого выявления самых новых версий рукопожатий TLS.
Улучшение в Ncat
Утилита Ncat (она входит в пакет Nmap) была принята семейством дистрибутивов Red Hat/Fedora в качестве пакета по умолчанию для команд “netcat” и “nc”. Авторы Nmap очень этому рады. Это сотрудничество позволило победить многие баги и улучшить совместимость с опциями Netcat. Также добавлен встроенный интерпретатор Lua для создания простых, кроссплатформенных демонов и фильтров трафика.
Экстремальная портативность
Nmap является кроссплатформенной программой, которая работает на самых разных необычных и древних системах. Но разработчики поставляют актуальные исполнимые файлы для популярных операционных систем. Nmap 7 чисто работает на Windows 10 и на всех промежуточных версиях вплоть до Windows Vista. По многочисленным просьбам разработчики даже собрали его под Windows XP, хотя этим пользователям рекомендуют обновить их системы. Mac OS X поддерживается с 10.8 Mountain Lion через 10.11 El Capitan. Плюс обновлена поддержка для Solaris и AIX. А у пользователей Linux, как всегда, всё просто.
Примеры опций для сканирования Nmap
Далее небольшая памятка по самым популярным функциям Nmap. Крайне рекомендуется справочный раздел по Nmap на сайте Kali.Tools. Там сделан перевод мануала для Nmap седьмой версии.
Сканирование единичного хоста или IP адреса (IPv4)
Сканировать единичный IP адрес
Сканировать хост по имени
Сканировать хост по имени в вербальном режиме (больше информации)
Сканировать множество IP адресов или подсеть (IPv4)
работа с однотипными подсетями, например 192.168.1.0/24
Вы также можете просканировать диапазон IP адресов:
Вы можете просканировать диапазон IP адресов используя подстановочный символ:
Наконец, вы можете просканировать всю подсеть:
Прочитать список хостов, сетей из файла (IPv4)
Опция -iL позволяет вам прочитать список системных целей используя текстовый файл. Это полезно при большом количестве хостов/сетей. Создайте текстовый файл:
Исключение хостов, сетей (IPv4)
При сканировании большого числа хостов, сетей, вы можете исключить хосты из сканирований:
Или исключите список, который взят из файла названного /tmp/exclude.txt
Составление списка работающих хостов без сканирования портов
Включить скрипт определения ОС и версии ПО (IPv4)
Узнать, защищён ли хост/сеть файерволом
Сканирование хоста при защите файерволом
Просканировать IPv6 хост/адрес
Опция -6 включает IPv6 сканирование. Синтаксис следующий:
Просканировать сеть и узнать, какие сервера и устройства работают
Обнаружение хостов или пинг сканирование (без выполнения сканирования портов — только определение, какие хосты онлайн):
Как выполнить быстрое сканирование?
Показать причину, по которой порт в конкретном состоянии
Показать интерфейсы и маршруты хоста
Как просканировать конкретный порт?
Просканировать 80й порт
Просканировать TCP порт 80
Просканировать UDP порт 53
Просканировать два порта
Просканировать диапазон портов
Скомбинировать все опции
Просканировать все порты
Просканировать порты с наивысшими рейтингами (самые распространённые), рейтинг указывается целым числом больше 1
Как узнать удалённую операционную систему?
Как узнать номер версии удалённых служб (сервер / демон)?
Самый быстрый способ сканирования всех устройств/компьютеров на открытые порты
Показать только открытые (или возможно открытые) порты
Показать все отправленные и полученные пакеты
Сканировать хост используя TCP ACK (PA) и TCP Syn (PS) пинг
Если файервол блокирует стандартные ICMP пинги, попробуйте следующие методы обнаружения хостов:
Просканировать хост используя пинг протоколов IP
Просканировать хост используя UDP пинг
Это сканирование обходит файерволы и фильтры, которые отражают только TCP:
Узнайте самые часто используемые порты TCP, используя сканирование TCP SYN
Сканирование по умолчанию (более быстрое и менее заметное)
Проверить самые популярные TCP порты используя сканирование TCP подключение (предупреждение: заметное и медленное)
Проверить на использование самых распространённых TCP портов используя TCP ACK сканирование
Проверить на использование самых распространённых TCP портов используя Window сканирование
Проверить на использование самых распространённых TCP портов используя TCP Maimon сканирование
Сканирование хоста на UDP службы (UDP сканирование)
Самые популярные службы в Интернете работают по TCP протоколу. DNS, SNMP и DHCP – это три самых популярных UDP службы. Используйте следующий синтаксис для определения UDP служб:
Сканирование IP протокола
Этот тип сканирования позволяет вам определить, какие IP протоколы (TCP, ICMP, IGMP и т.д.) поддерживаются на целевой машине:
Сканирование файервола на проблемы безопасности
Следующие типы сканирования используют тонкую лазейку в TCP и хороши для тестирования безопасности распространенных атак:
Сканирование TCP Null чтобы одурачить файервол на генерацию ответа
Не устанавливает какие-либо биты (TCP флаг заголовка 0)
Сканирование TCP Fin для проверки файервола
Устанавливает просто TCP FIN бит
Сканирование TCP Xmas для проверки файервола
Устанавливает флаги FIN, PSH и URG, разукрашивая пакеты как новогоднюю ёлку
Сканирование файервола фрагментами пакетов
Опция -f приводит к тому, что затребованное сканирование (включая пинг сканирование) использует фрагменты IP пакетов. Идея разделить TCP заголовок на несколько пакетов заключается в том, чтобы усложнить фильтрам, системам обнаружения вторжений и другим неприятностям выявить, чем вы занимаетесь.
Установите свой собственный размер смещения опцией —mtu
Маскировка сканирования с помощью фиктивных хостов
Производится сканирование с использованием фиктивных хостов; в этом случае цель сканирования считает, что заданные вами фиктивные хосты также производят ее сканирование. Хотя IDS цели может сообщить о том, что было произведено 5-10 сканирований портов с каждого IP адреса, система не сможет узнать, с какого из этих IP адресов действительно производилось сканирование, а какие были лишь безвредными ловушками:
Сканирование файервола с подменой MAC адреса
Подмена (спуфинг) MAC адреса
Добавьте другие опции
Используйте случайный MAC адрес
Номер 0 означает, nmap выберет совершенно произвольный MAC адрес
Как сохранить вывод в текстовый файл?
Как пользоваться Nmap для сканирования сети
Nmap — это очень популярный сканер сети с открытым исходным кодом, который может использоваться как в Windows, так и в Linux. Программа Nmap или Network Mapper была разработана Гордоном Луоном и на данный момент используется специалистами по безопасности и системными администраторами по всему миру.
Эта программа помогает системным администраторам очень быстро понять какие компьютеры подключены к сети, узнать их имена, а также посмотреть какое программное обеспечение на них установлено, какая операционная система и какие типы фильтров применяются. Функциональность программы может быть расширена за счет собственного скриптового языка, который позволяет администраторам автоматизировать много действий.
Например, с помощью скриптов можно автоматически обнаруживать новые уязвимости безопасности в вашей сети. Namp может использоваться с хорошими и плохими намерениями, будьте аккуратны, чтобы не использовать nmap против закона. В этой инструкции мы рассмотрим как пользоваться namp для сканирования портов в операционной системе Linux. Но сначала нужно попытаться понять как работает эта утилита.
Как работает Nmap?
В компьютерных сетях все подключенные устройства имеют свой ip адрес. Каждый компьютер поддерживает протокол ping, с помощью которого можно определить подключен ли он к сети. Мы просто отправляем ping запрос компьютеру, и если он отзывается, то считаем, что он подключен. Nmap использует немного иной подход. Компьютеры также определенным образом реагируют на те или иные сетевые пакеты, утилита просто отправляет нужные пакеты и смотрит какие хосты прислали ответ.
Но об этом вы, наверное, уже знаете. Более интересно то как Nmap узнает какие сервисы запущены на машине. Суть работы всех сетевых программ основана на портах. Чтобы получить сообщение из сети, программа должна открыть порт на вашем компьютере и ждать входящих соединений. А для отправки сообщения по сети нужно подключиться к уже другой программой (адресатом) порту. Затем программе необходимо будет открыть порт, на котором она будет ждать ответа.
Утилита nmap в процессе сканирования сети перебирает доступный диапазон портов и пытается подключиться к каждому из них. Если подключение удалось, в большинстве случаев, передав несколько пакетов программа может даже узнать версию программного обеспечения, которые ожидает подключений к этому порту. Теперь, после того, как мы рассмотрели основы, рассмотрим как пользоваться nmap для сканирования портов и сети.
Синтаксис Nmap
Команда запуска Nmap очень проста для этого достаточно передать ей в параметрах целевой IP адрес или сеть, а также указать опции при необходимости:
$ nmap опции адрес
Теперь давайте рассмотрим основные опции, которые понадобятся нам в этой статье.
- -sL — просто создать список работающих хостов, но не сканировать порты nmap;
- -sP — только проверять доступен ли хост с помощью ping;
- -PN — считать все хосты доступными, даже если они не отвечают на ping;
- -sS/sT/sA/sW/sM — TCP сканирование;
- -sU — UDP сканирование nmap;
- -sN/sF/sX — TCP NULL и FIN сканирование;
- -sC — запускать скрипт по умолчанию;
- -sI — ленивое Indle сканирование;
- -p — указать диапазон портов для проверки;
- -sV — детальное исследование портов для определения версий служб;
- -O — определять операционную систему;
- -T5 — скорость сканирования, чем больше, тем быстрее;
- -D — маскировать сканирование с помощью фиктивных IP;
- -S — изменить свой IP адрес на указанный;
- -e — использовать определенный интерфейс;
- —spoof-mac — установить свой MAC адрес;
- -A — определение операционной системы с помощью скриптов.
Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.
Как пользоваться Nmap для сканирования портов в Linux
Дальше рассмотрим примеры nmap. Сначала давайте рассмотрим как найти все подключенные к сети устройства, для этого достаточно использовать опцию -sL и указать маску нашей сети. в моем случае это 192.168.1.1/24. Маску вашей локальной сети вы можете найти, выполнив команду:
Из вывода для используемого интерфейса возьмите число после слеша, а до слэша укажите ip вашего роутера. Команда на сканирование сети nmap будет выглядеть вот так:
nmap -sL 192.168.1.1/24
Иногда это сканирование может не дать никаких результатов, потому что некоторые операционные системы имеют защиту от сканирования портов. Но это можно обойти, просто использовав для сканирования ping всех ip адресов сети, для этого есть опция -sn:
nmap -sn 192.168.1.1/24
Как видите, теперь программа обнаружила активные устройства в сети. Дальше мы можем сканировать порты nmap для нужного узла запустив утилиту без опций:
sudo nmap 192.168.1.1
Теперь мы можем видеть, что у нас открыто несколько портов, все они используются каким-либо сервисом на целевой машине. Каждый из них может быть потенциально уязвимым, поэтому иметь много открытых портов на машине небезопасно. Но это еще далеко не все, что вы можете сделать, дальше вы узнаете как пользоваться nmap.
Чтобы узнать более подробную информацию о машине и запущенных на ней сервисах вы можете использовать опцию -sV. Утилита подключится к каждому порту и определит всю доступную информацию:
sudo nmap -sV 192.168.1.1
На нашей машине запущен ftp, а поэтому мы можем попытаться рассмотреть эту службу подробнее с помощью стандартных скриптов nmap. Скрипты позволяют проверить порт более детально, найти возможные уязвимости. Для этого используйте опцию -sC и -p чтобы задать порт:
sudo nmap -sC 192.168.56.102 -p 21
Мы выполняли скрипт по умолчанию, но есть еще и другие скрипты, например, найти все скрипты для ftp вы можете командой:
sudo find /usr/share/nmap/scripts/ -name ‘*.nse’ | grep ftp
Затем попытаемся использовать один из них, для этого достаточно указать его с помощью опции —script. Но сначала вы можете посмотреть информацию о скрипте:
sudo nmap —script-help ftp-brute.nse
Этот скрипт будет пытаться определить логин и пароль от FTP на удаленном узле. Затем выполните скрипт:
sudo nmap —script ftp-brute.nse 192.168.1.1 -p 21
В результате скрипт подобрал логин и пароль, admin/admin. Вот поэтому не нужно использовать параметры входа по умолчанию.
Также можно запустить утилиту с опцией -A, она активирует более агрессивный режим работы утилиты, с помощью которого вы получите большую часть информации одной командой:
sudo nmap -A 192.168.1.1
Обратите внимание, что здесь есть почти вся информация, которую мы уже видели раньше. Ее можно использовать чтобы увеличить защиту этой машины.
Выводы
В этой статье мы рассмотрели как выполняется сканирование портов nmap, а также несколько простых примеров использования этой утилиты. Эти команды nmap могут быть полезными многим системным администраторам, чтобы улучшить безопасность их систем. Но это далеко не все возможности утилиты. Продолжайте экспериментировать с утилитой чтобы узнать больше только не в чужих сетях!