Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Использование Metasploit + Nessus в Ubuntu

Оригинал: Using Metasploit with Nessus Bridge on Ubuntu
Автор: David J. Dodd
Дата публикации: июль 2011 г.
Перевод: В. Семененко
Дата перевода: август 2011 г.

Nessus_Introduction

Введение

Задаетесь вопросом, как использовать autopwn в Metasploit в операционной системе Ubuntu Linux? Хотите запустить и использовать Nessus в составе Metasploit? Какую базу данных я использую - sqlite3 или postgres? В этой статье я собираюсь объяснить причины и преимущества всех этих вещей. Общие представления, которые будут здесь описаны, помогут вам выполнять различные задачи, используя nessus-сервер и сканер nmap из командной строки msf.

Как хорошо известно, Nmap является сканером для обнаружения уязвимостей. Программа абсолютно бесплатна для некоммерческого использования - к примеру, в качестве применения в домашних условиях. Но есть версия Nessus для коммерческих целей. В этой статье я буду описывать бесплатную версию этой программы, совместно с популярным Metasploit Framework. Для начала нам нужно получить последнюю версию программы Nessus под операционную систему Ubuntu - nessus-4.4.1-ubuntu1010_i386.deb и затем зарегистрировать ее на домашнем сайте программы. Регистрация нужна для получения кода активации, которая позволит в дальнейшем производить обновления базы данных эксплоитов.

Для установки и настройки Nessus в Ubuntu необходимо руководствоваться инструкцией, представленной здесь. После инсталляции активируем Nessus и переходим по ссылке http://www.nessus.org/products/nessus/nessus-plugins/obtain-an-activation-code, для того чтобы скачать сам плагин активации.

Запускаем плагин активации из командной строки:

$ sudo /opt/nessus/bin/nessus-fetch -register 'registration code from nessus'

Здесь registration code from nessus - это регистрационный ключ, полученный в электронном письме при активации продукта на сайте производителей.

Для успешной работы в программе Nessus необходимо создать и добавить нового пользователя в группу nessus с помощью скрипта:

$ sudo /opt/nessus/sbin/nessus-adduser

Затем создаем и устанавливаем сертификат в помощью еще одного скрипта:

$ sudo /opt/nessus/sbin/nessus-mkcert

Теперь нам осталось запустить демон программы Nessus:

$ sudo /etc/init.d/nessusd start

Открываем любой web-браузер, вводим в адресную строку https://localhost:8834 и заходим в саму программу Nessus. Необходимо настроить политики сканирования в программе. В данной статье я создам несколько политик на основе различных операционных систем, которые мы будем сканировать. Если вы собираетесь сканировать машины, на которых установлено Windows-окружение, то плагин для операционных систем Linux или BSD в вашем Nessus будет явно бесполезным. Вам также стоит проверить, включен ли у вас режим безопасной проверки, выбран ли порт для сканирования, прочтите рекомендации, выберите плагины и соответствующие настройки. После окончания всех этих процедур вы получите свою собственную политику (набор правил), которую можете обозначить под номером 1. Однако, если у вас будут иметься несколько политик, вам следует давать в качестве имен последних не числа, а имена (к примеру - для анализа Windows-окружения - "windows"). Это желательно делать во избежание путаницы. Теперь можете выйти из программы Nessus и закрыть web-браузер.

Следующим шагом открываем эмулятор терминала и в командной строке ищем, куда у нас был установлен metasploit. Нам, для начала, нужно его обновить:

Прежде чем мы перейдем дальше - к командной строке msfconsole фреймворка Metasploit, слегка отвлечемся от темы в сторону базы данных. В последнее время для работы с последними я использую sqlite3. Мною даже был создано небольшое руководство по работе с sqlite3, расположенное на моем сайте. Стоит заметить, что иногда sqlite3 работает прекрасно. Но иногда программа выдает ошибку: "Note that sqlite is not supported due to numerous issues. It may work, but don't count on it." Для работы с Metasploit рекомендуется использовать Postgres. Поэтому ставим базу данных postgres и все сопутствующие ей библиотеки.

Базы данных установлены. Для правильной работы фреймворка Metasploit необходимо запускать установленную базу данных до того, как будет запущен Metasploit:

$ sudo /etc/init.d/postgresql-8.4 start

Переходим под учетную запись пользователя базы данных Postgres:

Создаем новую учетную запись пользователя базы данных:

$ createuser <user account name> -P

Задаем пароль для созданного пользователя:

Теперь создаем саму базу данных:

$ createdb -owner=(user account name) msf_database

И только сейчас мы можем запустить фреймворк Metasploit:

: /opt/framework-3.6.0/msf3$ sudo ./msfconsole

Этой командой мы вошли в окружение Metasploit. Вводим следующие команды:

Выполненные выше шаги имели одну цель - теперь, используя sqlite3, создание и подключение базы данных выполняется очень легко. Запускаем Metasploit и набираем следующие команды:

Проверяем, подключилась ли база данных:

msf> db_hosts

Если все прошло нормально и никаких ошибок не появилось, можно использовать команду db_nmap. Но иногда случаются ошибки и происходит падение программы. Поэтому использование postgres является более обоснованным, чем sqlite3. Ниже я опишу, почему это еще и более полезно. Наконец, теперь можно активировать базу данных при старте, задав команду:

Теперь каждый раз, как вы запускаете Metasploit, созданная вами база данных автоматически также запускается и вы подключаетесь к ней. На всякий случай можно удостовериться в том, что Postgres запустились. Обычно я делаю это так - вручную запускаю postgres перед тем, как запустить Metasploit (см. скриншот Figure1):

Figure 1

Figure 1

Теперь, когда у нас есть postgres в качестве базы данных для Metasploit, давайте запустим Nessus. Открываем второй терминал и убеждаемся в том, что Nessus запущен. Если нет, то загружаем демон nessus:

msf > load nessus
Figure 2
Figure 2

Посмотрим, какие команды Nessus Bridge для Metasploit 1.1 мы можем использовать. Для этого набираем команду nessus_help (см. скриншот Figure 3).

msf > nessus_help
Figure 3
Figure 3

Все команды разбиты на различные секции, озаглавленные Generic, Reports, Scan, Plugin, User и Policy. Перед запуском процесса сканирования нам нужно подключить Nessus-server с помощью команды nessus_connect.

msf > nessus_connect (nessus username):(password)@localhost:8834 ok

Эта команда подключает и авторизовывает вас. В этом окружении вы можете производить сканирование, просмотр результатов, загружать результаты сканирования в базу данных и использовать надстройку autopwn. Вы также можете просматривать результаты и находить уязвимости в тех системах, которые вы сканируете. Можно запустить эксплоит и получить доступ к оболочке meterpreter. В зависимости от окружения можно анализировать вывод программы Nessus и находить соответствующие сплоиты для применения. Вместо того, чтобы производить шум, запуская autopwn.

Давайте запустим сканирование, выполнив команду nessus_scan по шаблону nessus_scan_new <policy id> (политика уже должна была быть настроена в установках Nessus Policy) <scan name> (generic) <target> (ip address):

msf > nessus_scan_new 1 winXP_home 192.168.1.124

Для того, чтобы удостовериться - Nessus запустился и производит сканирование, выполняем команду (как на скриншоте Figure 4):

msf > nessus_scan_status
Figure 4
Figure 4

После завершения сканирования смотрим результат командой:

msf > nessus_report_list

Давайте посмотрим список хостов из результата сканирования:

msf > nessus_report_hosts UID

Более подробная информация может быть получена командой:

msf > nessus_report_host_ports <ip address> UID

Вывод этих команд можно посмотреть на скриншоте Figure 5:

Figure 5
Figure 5

Для просмотра списка хостов в файле базы данных используем команду db_host. Если вам необходимо удалить какой-либо хост из базы файла данных db_hosts, выполняем команду db_del_host (как на скришоте Figure 6):

Figure 6

Figure 6

Загрузка результатов сканирования в базу данных выполняется командой:

msf > nessus+report_get UID

Теперь, когда основная работа выполнена - сканирование произведено и список хостов загружен в файл db_hosts базы данных, можно запустить утилиту autopwn или найти эксплоит, соответствующий для работы с выбранной машиной-жертвой. Более подробно я освещу этот вопрос несколько позже.

Теперь давайте рассмотрим вопрос использования программы nmap совместно с фреймворком Metasploit.

Использование nmap в составе Metasploit выполняется командой db_nmap. Запускается процесс сканирования целевых машин и результат сохраняется в базу данных. В дистрибутиве BackTrack я применяю несколько другие команды, например, такую:

db_nmap -sS -sV -T 3 -Po -O <ip address> -D RND --packet-trace

Здесь я применил опции: -sS TCP SYN для сканирования в режиме stealth; -sV - показ версии сканирования; -T 3 - нормальное сканирование; -O - обнаружение операционных систем; -D RND - использование приманки и генерирование случайного не зарезервированного IP-адреса; и, наконец, --packet-trace - отслеживание отправленных и полученных пакетов и данных. Я люблю применять опцию packet-trace при сканировании больших сетей, потому что, если что-то пошло не так, то вы всегда можете увидеть, что случилось. Эта опция просто великолепна, но к сожалению, я могу использовать ее только в окружении msfconsole. Находясь в операционной системе Unbuntu, я не могу ее использовать при подключении к базе данных postgres в качестве пользователя последней. Почему? Потому что я получаю ошибку, говорящую о том, что только суперпользователь root имеет возможность использовать эту опцию утилиты nmap (см. скриншот Figure 7).

Figure 7
Figure 7

Я не могу выполнить команду db_nmap -v -sV 192.168.15.0/24 --packet-trace, запустив тем самым сканирование и произведя вывод программы nmap. Так что я вынужден просматривать результаты следующими командами (см. скриншот Figure 8):

Figure 8

Figure 8

То есть, если я хочу произвести комплексное сканирование с помощью программы nmap, я должен выйти из окружения msfconsole, выйти из базы данных postgres, остановить последнюю, зайти под учетную запись, используя команду sudo и воспользоваться базой данных sqlite3. Теперь нужно запустить команду:

msf > db_nmap -sS -sV -T 4 -P0 -O 192.168.15.0/24 -D RND --packet-trace

Figure 9

Figure 9

Посмотрите на разницу результатов, полученную командами db_hosts и db_services -c port,state. Сравните различия на скриншотах Figure 10 и Figure 8.

Figure 10

Figure 10

Заключение

Данная статья является неплохим пособием в случае проверки целостности и отказоустойчивости сети, если вы работаете специалистом по компьютерной безопасности и имеете разрешение на выполнение подобных задач. Статья была написана именно с этой целью. Если вы выполняете подобные операции над сетями, доступ к которым вам запрещен, то ваши действия могут попасть под действие закона и соответствующих статей если не во всех, то в очень многих странах. Если вы хотите получить больше информации по интересующим вас вопросам компьютерной безопасности, можете посетить мой сайт по адресу http://pbnetworks.net, где имеются не только текстовые материалы, но и обучающее видео.

Ссылки по данной тематике в Интернете

Материал по установке и настройке базы данных Postgres:
http://dev.metasploit.com/redmine/projects/framework/wiki/Postgres_setup

Ссылка на обучающие видеоматериалы:
http://pbnetworks.net/?cmd=bbs