LXF162:Оболочки NMap
|
|
|
Безопасность сети Прежде чем довериться хосту, неплохо было бы его проверить
Содержание |
Сканеры: hping3, Zenmap и Umit
В развитие темы сетевого сканера, затронутой в прошлом номере, Игорь Штомпель рассматривает его графические оболочки. [[Файл: |left |100px |thumb|Наш эксперт.Игорь Штомпель каждый день открывает в Linux что-то новое и использует его где только возможно. А Unity ему в этом ничуть не мешает.]] На прошлом уроке мы занимались важным инструментом обеспечения сетевой безопасности – Nmap. Но это инструмент командной строки, в которой далеко не все чувствуют себя комфортно. И, конечно же, разработчики не обошли вниманием создание графических интерфейсов для Nmap. О них мы сегодня и поговорим.
hping3: обзаведемся
Hping3 (http://www.hping.org/) – это сканер портов, ориентированный на использование в командной строке. Программа позволяет генерировать различные пакеты (TCP, UDP, ICMP и др.). Общее назначение hping3 – отправка на сканируемый хост TCP/IP-пакетов, заголовки которых могут модифицироваться с помощью ключей соответствующей команды (о них мы поговорим ниже). Благодаря гибкой реализации этой функциональности возможно осуществление разнообразных видов сетевого сканирования.
Автором hping3 является Сальваторе Санфилиппо [Salvatore Sanfilippo], который выдал ее в свободный доступ на условиях GNU GPLv2 (отдельные компоненты – на условиях лицензии BSD, см. файл copyright в каталоге /usr/share/doc/hping3). Hping3, как и Nmap, является кросс-платформенным решением, но доступным для меньшего количества операционных систем по сравнению с Nmap: это Linux, семейства Unix, Mac OS X, Windows.
В Ubuntu 12.04 hping3 устанавливается следующим образом:
$ sudo apt-get install hping3
Для этих целей можно также воспользоваться Synaptic (недоступен в Ubuntu 12.04 по умолчанию) или Центром приложений Ubuntu.
hping3 имеет ряд ключей, которые позволяют повлиять на тип сканирования (специфицировать соответствующие флаги – управляющие биты). Среди них:
» -S (или --syn) – флаг SYN (информирует о начале TCP-соединения); » -P (--push) – флаг PUSH (передать данные из TCP-пакета в соответствующее прикладное программное обеспечение); » -R (--rst) – флаг RST (запрос на установление нового соединения (вместо неудавшегося), сам флаг устанавливает в ответ на получение неверного TCP-пакета); » -F (--fin) – флаг FIN (запрос на закрытие соединения, признак конца потока данных, необходимо подтверждение от принимающей стороны); » -U (--urg) – флаг URG (TCP-пакет содержит важные данные); » -A (--ack) – флаг ACK (предыдущий пакет был получен). Рассмотрим примеры сканирования с использованием некоторых из приведенных выше ключей. Дадим следующую команду:
$ sudo hping3 -I eth0 -F scanme.nmap.org -p 80
Вот что в ней происходит:
» -I eth0 – мы специфицируем интерфейс с помощью которого будет осуществляться сканирование; » -F – ключ hping3 (специфицирует флаг FIN генерируемых TCP-пакетов); » scanme.nmap.org – цель сканирования; » -p 80 – порт назначения (доступность которого исследуется). Как показано на рис. 1, в выводе, среди прочего, мы видим, что flags имеет значение “SA”. Это означает, что порт открыт (в противном случае значение было бы “RA”). В данном случае, S говорит о флаге SYN, а A – о флаге ACK, т. е. что отправленный пакет был получен. Более подробную информацию о формате вывода hping3 для TCP можно получить с помощью страниц руководства (см. раздел “TCP OUTPUT FORMAT”):
$ man hping3
Изменим номер сканируемого порта, например, на 81:
$ sudo hping3 -I eth0 -F scanme.nmap.org -p 81
Теперь в выводе hping3 мы увидим, что значение flags стало равно “RA”, что означает: порт закрыт. Кроме flags, обратите внимание и на sport. Последнее говорит нам о том, какой порт сканировался. Данное значение нам пригодится на следующем шаге.
Запустим сканирование с помощью hping3, при котором будет отправляться по одному пакету на каждый порт, начиная с 80, увеличиваясь с шагом 1 (т. е. отправили пакет на 80, следующий пакет – на 81 и т. д.):
$ sudo hping3 -S -p ++80 scanme.nmap.org
Как видно в выводе этой команды, значение sport каждый раз увеличивается на один, а значение flags говорит нам о том, закрыт или открыт тот или иной порт.
С помощью ключа -c (--count) можно специфицировать количество получаемых пакетов:
$ sudo hping3 -S -c 4 -p ++80 scanme.nmap.org
В данном случае, после получения четырех ответных пакетов выполнение команды будет прекращено.
По умолчанию hping3 использует протокол TCP. Другие протоколы можно указать с помощью специальных ключей:
» -0 (--rawip) – работать в режиме RAW IP; » -1 (--icmp) – работать в режиме ICMP; » -2 (--udp) – работать в режиме UDP; » -8 (--scan) – работать в режиме сканирования (необходимо указать диапазон портов и тип сканирования); » -9 (--listen) – работать в режиме прослушивания (необходимо указать сигнатуру, на предмет которой будет осуществляться прослушивание). Работа в первых трех режимах, думаю, затруднений не вызовет. Приведем пример:
$ sudo hping3 -I eth0 -1 -c 10 scanme.nmap.org
Здесь мы задействуем протокол ICMP и получаем десять соответствующих пакетов.
А вот использование двух последних режимов представляет больший интерес. Начнем с режима сканирования:
$ sudo hping3 -I eth0 -8 80-85 -S scanme.nmap.org
В данном случае мы осуществляем SYN-сканирование (ключ -S) портов с 80 по 85 на scanme.nmap.org. В выводе этой команды, как показано на рис. 2, мы видим таблицу, в которой отображаются номер порта, название сервиса, флаги (открыт/закрыт порт) и т. д. Из вывода нам становится понятно, что из шести просканированных портов открыт только 80.
Допускается указывать порты для сканирования не только с помощью диапазона, но и через перечисление. Скажем, так:
$ sudo hping3 -I eth0 -8 22,80,9929 -S scanme.nmap.org
Режим прослушивания позволяет отслеживать приходящие пакеты на предмет наличия в них указанной сигнатуры. Например, отследим наличие в пакетах Nmap:
$ sudo hping3 -I eth0 -9 nmap scanme.nmap.org
Дайте эту команду, затем запустите браузер и откройте сайт scanme.nmap.org. В выводе команды вы увидите все, что соответствует указанной вами сигнатуре.
Итак, знакомство с утилитой hping3 состоялось; перейдем к рассмотрению работы с официальным графическим интерфейсом для Nmap – Zenmap.
Оболочка Zenmap
Zenmap – это официальный графический интерфейс для Nmap, который написан на языке программирования Python и доступен на условиях GNU GPL.
В Ubuntu 12.04 Zenmap можно найти здесь: Интернет > Zenmap. Обратите внимание, что доступны две возможности запуска Zenmap: с правами текущего пользователя – Zenmap и с правами суперпользователя – Zenmap (as root). При выборе первого варианта часть возможностей Nmap не будет доступна. Запустите Nmap с правами суперпользователя.
После успешного запуска Zenmap вы увидите главное окно программы. Интерфейс ее интуитивно понятен.
Для примера, осуществим сканирование с помощью Zenmap. В поле Цель введите
scanme.nmap.org
Поле Профиль пусть пока останется пустым. Далее отредактируйте поле Команда, чтобы у вас получилось следующее:
nmap -sP scanme.nmap.org
Именно с этой команды мы начинали рассмотрение работы с Nmap в консоли. Затем для запуска сканирования нажмите кнопку Сканирование. Мы получили тот же вывод, что и при аналогичном сканировании в консоли с помощью Nmap.
Для сохранения отчета о сканировании можно воспользоваться меню (Сканирование > Сохранить отчет о сканировании, или Ctrl + S).
Обратите внимание, что в левой части окна есть две вкладки: Хосты, где будут отображаться цели наших сканирований (кстати, там появился хост scanme.nmap.org – 74.207.244.221), и Сервисы, где будут отображаться сервисы, обнаруженные на целях сканирования.
Теперь повторим сканирование, позволяющее определить версии сервисов на сканируемом хосте, но уже в Zenmap. Для этого отредактируйте значение в поле Команда, чтобы оно приняло уже знакомый нам вид:
nmap -sV scanme.nmap.org
Как вы поняли, вывод Zenmap не отличается от вывода аналогичной команды в консоли при использовании Nmap, но в данном случае нас интересует другое. Нажмите кнопку Сервисы. Вы увидите все сервисы, которые удалось обнаружить Zenmap. Далее, в перечне Сервисы выберите какой-нибудь из них – и в правой части окна программы на вкладке Порты / Хосты отобразиться информация о нем.
Zenmap позволяет наглядно представить топологию, связывающую сканирующий и сканируемые хосты. Для просмотра топологии после завершения сканирования достаточно будет перейти на вкладку Топология в правой части окна Zenmap (см. рис. 3).
Обратите внимание, что вы можете управлять отображением топологии с помощью кнопок вкладки Топология: Рыбий глаз и Элементы управления, а также просмотреть подробную и наглядную информацию по хостам, которые сканировались с помощью кнопки Просмотр хостов.
Вкладка Детали хоста предоставляет информацию о статусе хоста (состояние, открытые порты, отфильтрованные порты и др.), адресах (IPv4, IPv6, MAC), имени хоста.
Последняя вкладка, Сканирование, позволяет перейти к результатам любого сканирования, осуществленного в рамках текущей сессии Zenmap.
Но, на наш взгляд, одной из важнейших возможностей Zenmap является поддержка работы с профилями, о которых мы вскользь упоминали ранее. Чтобы отредактировать текущий или создать новый профиль, необходимо воспользоваться меню Профиль > Новый профиль или команда, или Редактировать выбранный профиль. Можно воспользоваться горячими клавишами – Ctrl + P или Ctrl + E соответственно.
Для примера, создадим новый профиль. Появиться окно Редактор профиля, которое, к сожалению, не полностью переведено на русский язык. В окне имеется несколько вкладок (Профиль, Сканирование, Ping и т. д.). Начнем со ввода имени профиля в соответствующем поле:
Myprof
Далее перейдем на вкладку Сканирование. Здесь доступно для выбора большое количество опций. Выбор какой-либо из этих опций приводит к изменению команды в поле в вверху окна.
В правой части окна Редактор профиля имеется поле, которое называется Помощь. В этом поле при наведении на него курсора мыши отображаются описания той или иной опции. Для опций, доступных в выпадающих списках, эта возможность Zenmap не актуальна.
Завершим создание нашего профиля. На вкладке Сканирование мы выбрали
Version detection (-sV)
а на вкладке Ping (SYN-пингование) –
SYN ping (-PS)
В итоге у нас получилась следующая команда:
nmap -sV -PS scanme.nmap.org
Для сохранения профиля необходимо нажать кнопку Сохранить изменения. Окно редактирования профиля закроется. Теперь в главном окне Zenmap в поле Профиль выберите из выпадающего списка Myprof и нажмите кнопку Сканирование, после чего увидите соответствующий вывод.
Кроме того, использовать окно редактирования профиля можно для изучения Nmap. Например, можно получить краткое описание опций сканирования для ознакомления с ними, поэкспериментировать с их выбором (как правило, если опции не могут быть использованы совместно, при выборе «конфликтующей» опции изменение команды происходить не будет). Далее, на вкладке Scripting вы сможете ознакомиться со скриптами Nmap. При установлении курсора на тот или иной скрипт в середине вкладки вы получите о нем подробную информацию – в том числе, как скрипт влияет на вывод Nmap. При выборе скрипта происходит изменение команды, что важно для первоначального ознакомления с использованием скриптов. В нижней части середины окна доступна информация об аргументах скрипта – выбрав какой-либо из них в правой части вкладки (Помощь), вы получите его краткое описание.
Zenmap — не единственный графический интерфейс Nmap.
Еще один интерфейс — Umit
Umit (http://www.umitproject.org) – это графический интерфейс для сетевого сканера Nmap, доступный на условиях GNU GPLv2 (ряд файлов доступен на условиях других лицензий – см. файл copyright в каталоге /usr/share/doc/umit).
Установить Umit в Ubuntu 12.04 можно с помощью следующей команды:
$ sudo apt-get install umit
После этого программа запускается просто-напросто командой
$ umit
При каждом старте программа проверяет: запущена она с правами суперпользователя или нет. Если нет, то выводится соответствующее окно, в котором предлагается осуществить запуск «как Root» или продолжить работу с текущими правами. Если вы выберете первое, необходимо будет ввести соответствующий пароль.
Права суперпользователя нужны Nmap для осуществления некоторых видов сканирования – например, с целью определения операционной системы на удаленном хосте. Чтобы запустить Umit сразу с правами суперпользователя, достаточно дать команду
$ sudo umit
После успешного запуска Umit вы увидите главное окно программы (см. рис. 4). Сразу, к сожалению, становится понятно, что Umit не имеет русской локализации.
Разберемся с интерфейсом программы. В окне, доступном после запуска, пользователь обнаружит меню и панель инструментов, а под ними, ниже – рабочее поле, где отображаются вкладки.
Вкладка состоит из трех основных частей. В верхней части доступны несколько полей, которые позволяют специфицировать параметры осуществляемого сканирования. Например, здесь доступны такие поля:
» Target – поле для указания цели сканирования (и в цифровом формате – IP-адрес, и в символьном – типа scanme.nmap.org); » Profile – поле позволяет выбрать один из нескольких доступных и ранее подготовленных профилей сканирования (например, Quick Scan – быстрое сканирование); » Command – поле, в котором можно редактировать текущую команду сканирования. Часть окна, расположенная ниже, ориентирована на отображение результатов сканирования и имеет две составляющие. Первая, левая, включает две кнопки: Hosts – отображает просканированные хосты и Service – отображает запущенные на этих хостах и обнаруженные сервисы. Вторая, справа, содержит несколько вкладок:
» Ports / Hosts – предоставляет информацию об открытых портах и сервисах выбранного хоста; » Nmap Output – отображает вывод Nmap; » Host Details – подробная информация о просканированном хосте; » Scan Details – прочие детали сканирования. Для примера, в поле Target введем следующее:
scanme.nmap.org
В поле Profile выберем Operating System Detection, после чего значение в поле Command изменится на
nmap -O -v scanme.nmap.org
После этого нажмем кнопку Scan и запустим сканирование. По завершении сканирования исследуйте вкладки и кнопки нижней части окна Umit, о которых мы говорили выше.
Давайте снова осуществим сканирования, с которых мы начинали работу с Nmap и Zenmap. Начнем с пинг-сканирования (здесь и далее – редактируем поле Command, а затем нажимаем кнопку Scan):
nmap --sP scanme.nmap.org
Вывод будет аналогичен тем, которые мы уже наблюдали при работе с Nmap и Zenmap.
Теперь воспользуемся типом сканирования, которое позволяло нам при работе с Nmap и Zenmap определять версии запущенных сервисов:
nmap -sV scanme.nmap.org
Вывод опять-таки будет аналогичен виденным при работе с Nmap и Zenmap.
Umit, как и Zenmap, позволяет сохранять результат сканирования (Scan > Save Scan, или Ctrl + S). Кроме того, Umit, как и Zenmap, позволяет работать с профилями сканирования (пункт меню Profile), доступен даже специальный пошаговый помошник (Tools > Command Wizard).
Пожалуй, этого достаточно для успешной работы с Umit.
Что дальше?
Скажем несколько слов о том, где можно получить дополнительную информацию о рассмотренных приложениях. На нашем уроке мы дали общее представление о возможностях рассматриваемых программ и не претендуем на полных охват всех аспектов их использования. Поэтому предлагаем ряд ссылок, которые помогут продолжить изучение.
Для hping3 доступно руководство, позволяющее начать работу с программой, под названием “Getting started with hping3 [Начинаем работать с hping3]”: http://wiki.hping.org/94. Есть и сторонние учебники и статьи о работе с hping3 – ссылки на них собраны на специальной странице: http://wiki.hping.org/33.
Что касается Zenmap, то официальный сайт, посвященный Nmap, предоставляет специальное Руководство по работе с Zenmap (“Zenmap GUI Users’ Guide”) – http://nmap.org/book/zenmap.html, которое является составной частью онлайн-версии полезной книги “Nmap Network Scanning [Сетевое сканирование с Nmap]”.
На официальном сайте Umit документация отсутствует. Правда, если в пункте меню Help выбрать Help, в браузере откроется справка, в которой достаточно подробно рассматривается редактор профилей сканирования (создание профилей, удаление и т. п.). Значительное внимание уделено осуществлению процесса сканирования.
Еще один полезный источник – курс «Инструментальные средства обеспечения безопасности», который доступен на портале Интернет-Университета информационных технологий: http://www.intuit.ru/department/security/issec/. Шестая лекция курса называется «Сканеры портов». В ней дается достаточно подробная вводная информация по использованию программы.
Заключение
hping3, Zenmap и Umit – инструменты, способные облегчить процесс исследования сети. При этом hping3 позволяет осуществлять все операции в консоли, а Zenmap (официальный графический интерфейс для Nmap) и Umit – c помощью графического интерфейса. Все три инструмента обеспечения сетевой безопасности доступны из репозиториев операционной системы Ubuntu 12.04 (которую мы использовали при работе с ними), что упрощает процесс их установки.
Все три программы обладают гибкими возможностями, а графические интерфейсы для Nmap позволяет сделать его использование более удобным для начинающих работать с этим сетевым сканером безопасности. В тоже время, Umit уступает по своим возможностям Zenmap. Так, например, Umit не позволяет отображать топологию просканированной сети. Кроме того, при вводе команды Zenmap автоматически определяет цель сканирования и «заполняет» соответствующее поле, а вот Umit этого делать не может.
И еще раз напомним, что настоятельно рекомендуется использовать Nmap и рассмотренные в статье программы исключительно в исследовательских или рабочих целях, согласовав использование программы со всеми заинтересованными лицами, а также исключительно в рамках действующего законодательства. Дело в том, что, например, многие провайдеры явно запрещают производить сканирование сети, указывая это в соответствующих документах. |