Metasploit Penetration Testing Cookbook – часть 1

metasploit

Введение

На сегодняшний день тестирование на проникновение (penetration testing) является одним из основных сценариев анализа защищенности. Пен-тестирование включает в себя полный анализ системы путем осуществления реальных тестов безопасности. Это помогает выявлять потенциально слабые места в основных компонентах системы: аппаратном или программном обеспечении.
Причина, которая делает тестирование на проникновение важным аспектом безопасности является то, что она помогает в определении угроз и слабых мест с точки зрения хакера. Лазейки могут быть использованы в режиме реального времени, чтобы выяснить воздействие уязвимости, а затем подходящим средством могут быть изучены для того, чтобы защитить систему от внешних атак и снижения факторов риска. Самым большим фактором, который определяет возможность проникновения — знание целевой системы. Есть несколько способов тестирования на проникновение:

  1. метод черного ящика — осуществляется при отсутствии предварительной информации о цели. Для осуществления атаки, пен-тестеру приходится по крупицам собирать информацию о целевой системе
  2. метод белого ящика — осуществляется, когда пен-тестер имеет достаточно полную информацию о цели

Промышленные специалисты определили некоторые ключевые шаги, которые необходимы практически во всех формах тестирования на проникновение, к ним относятся:

  • определение цели — сбор основной информации без физического соединения
  • выявление уязвимости — реализация различных методов обнаружения, таких как сканирование, удаленный вход (remote login) и сетевые сервисы, чтобы выяснить, какие службы и программное обеспечение, работают на целевой системе.
  • эксплуатация — использование уязвимостей (публичных или приватных) для атаки на службы, программы и т.п.
  • уровень доступа — атакующий может получить доступ на целевой системе после успешной атаки
  • отчет — подготовка отчета об уязвимости(ях) и меры противодействия

Этих шагов может показаться мало, но тестирование на проникновение систем высокого уровня (high-end system) с большим количеством служб может занять дни если не месяцы. Причина, по которой тестирование на проникновение выполняется так долго состоит в том, что применяется техника «проб и ошибок» (хотя к скрипт-кидингу это не относится в большей мере… там взял и применил). Уязвимости во многом зависят от настройки системы, поэтому мы не беремся утверждать, что рабочий эксплоит будет работать.

Глава 1. Metasploit – короткие советы

  • Настройка Metasploit в Ubuntu/Debian
  • Metasploit + BackTrack
  • Создание пен-тест лаборатории
  • Настройка Metasploit в BackTrack + SSH
  • Создание базы данных в Metasploit
  • Использование базы данных для хранения результатов тестирования
  • Анализ результатов из БД

В настоящее время Metasploit наиболее “встречающееся” (buzzing) слово в области информационной безопасности. Причина, по которой Metasploit настолько популярен — широкий спектр задач, которые он может выполнять. Metasploit доступен для всех популярных операционных систем. В этой (статье) книге мы будем в основном работать в BackTrack 5, который поставляется с уже предустановленными программами.

Введение

Для начала кратко ознакомимся с терминами:

  • Metasploit Framework – бесплатный (открытый исходный код) пен-тест framework созданный H. D. Moore в 2003 году, который в последствии был куплен Rapid7. Написан на языке Ruby. Metasploit обладает крупнейшими базами данных эксплоитов и принимает около миллиона загрузок каждый год. Он также является одним из самых сложных проектов на сегодняшний, написанных на Ruby.
  • Уязвимость (Vulnerability) – слабое место, которое позволяет злоумышленнику/пен-тестеру взламывать/скомпрометировать целевую систему. Уязвимость может существовать в операционных системах, программах, службах и т.д.
  • Эксплоит (Exploit) – код с помощью которого злоумышленник/пен-тестер может взломать систему, программу и т.п. Каждая уязвимость имеет свой собственный соответствующий эксплойт. Metasploit v4 имеет более чем 700 эксплоитов.
  • Payload – код, который выполняется после эксплоита. В основном используется для настройки связи между жертвой и атакующим. Metasploit v4 имеет более 250 payloads.
  • Модуль (Module) – это небольшие строительные блоки. Каждый модуль выполняет определенную задачу и система создается/строится путем объединения этих блоков в единое целое. Самым большим преимуществом такой архитектуры является то, что она легка для интеграции новых эксплоитов.

Рассмотрим архитектуру Metasploit’a поближе:

msf_arch

Metasploit использует различные библиотеки, которые играют ключевую роль в функционировании системы. Эти библиотеки представляют собой набор заранее определенных задач, операций и функций, которые могут быть использованы различными модулями системы. Самая фундаментальная часть фреймфорка является Ruby Extension (Rex). Некоторые компоненты Rex включают подсистему сокетов (wrapper socket subsystem), реализацию клиентских и серверных протоколов, регистрацию подсистемы (logging subsystem), exploitation utility classes, а также ряд других полезных классов.

Далее есть MSF Core библиотека, которая расширяет Rex. Core несет ответственность за выполнение всех необходимых интерфейсов (required interfaces), которые позволяют взаимодействовать с эксплоитами, модулями, сессиями и плагинами.

В Metasploit есть четыре так называемых пользовательских интерфейса: msfconsole, msfcli, msfgui и msfweb. Настоятельно рекомендуется изучить все 4 интерфейса. Однако в книге (статье) с основном будет использоваться msfconsole. Потому что msfconsole хорошо поддерживается во фреймворке и использует все функциональные возможности.

С теорией пока что покончено, переходим к практике.

Настройка Metasploit в Ubuntu/Debian

Скачайте Metasploit c офф сайта (http://www.metasploit.com/download).

У вас будет возможность выбрать либо минимальные настройки или полные. Выберите загрузку в соответствии с вашими потребностями. Полная установка будет включать в себя все зависимости, настройку БД, окружающей среды и т.д. В то время как минимальные настройки будут содержать только зависимости, без настройки БД.

Полная версия:

$ chmod +x framework-4.*-linux-full.run
$ sudo ./framework-4.*-linux-full.run

Минимальная версия:

$ chmod +x framework-4.*-linux-mini.run
$ sudo ./framework-4.*-linux-mini.run

Установка может закончиться с ошибкой по некоторым причинам. Некоторые версии Ubuntu могут содержать сломанные библиотеки языка Ruby. В этом случае можно установить зависимости отдельно.

Установка зависимостей Ruby:

$ sudo apt-get install ruby libopenssl-ruby libyaml-ruby libdl-ruby libiconv-ruby libreadline-ruby irb ri rubygems

Установка subversion:

$ sudo apt-get install subversion

Собственные расширения:

$ sudo apt-get install build-essential ruby-dev libpcap-dev

После установок выше, скачать архив Metasploit:

$ tar xf framework-4.X.tar.gz
$ sudo mkdir -p /opt/metasploit4
$ sudo cp -a msf4/ /opt/metasploit3/msf4
$ sudo chown root:root -R /opt/metasploit4/msf4
$ sudo ln -sf /opt/metasploit3/msf3/msf* /usr/local/bin/

Если все закончилось нормально, Metasploit будет работать.

Metasploit + BackTrack

BackTrack является самым популярным дистрибутивом среди пен-тестеров и хакеров по двум причинам:

  1. содержит все популярные инструменты тестирования на проникновение => уменьшает время на установку
  2. это Linux дистрибутив =D

Установить BackTrack можно либо на сменный носитель (hdd, flash) или на виртуальную машину. Логон = root, пароль =toor.

После успешного входа можно остаться в CLI (Command Line Interface) или перейти в графический интерфейс, командаstartx.

Запустить Metasploit Framework можно из Applications: Applications | BackTrack | Exploitation Tools | Network Exploitation Tools | Metasploit Framework, как показано на рисунке:

msf_applications

Чтобы запустить Metasploit из консоли, выполните след. команды:

root@bt:~# cd /pentest/exploits/framework3
root@bt:/pentest/exploits/framework3 ~# ./msfconsole

Создание пен-тест лаборатории

Идеальной настройкой считается создание физической среды, т.е. компьютеры должны физически существовать. Но если лишних машин нет, тогда нужно воспользоваться виртуализацией.

Мы будем использовать Virtual Box и создадим две виртуальные машины BackTrack 5 и Windows XP SP2. Хост система будет Windows 7.

Прежде чем приступить к работе, нужно настроить VB так, чтобы две виртуальные машины могли общаться между собой. Выбираем одну из виртуальных машин и переходим в Свойства (Settings). Далее выбираем Сетевые настройки (Network settings). Сетевой адаптер будет предустановлен в NAT, чтобы пользоваться Интернетом. В адаптере 2 (Adapter 2) выбрать Host only Adapter:

vb_host_only_adapter

Повторите этот действие на всех виртуальных машинах. Host-only adapter нужен для того, чтобы машины могли общаться друг с другом. Далее нужно проверить все ли пингуется (это переводить не стал, потому что и так все понятно, а кому не понятно… значит в комментарии).

Настройка Metasploit в BackTrack + SSH

Сейчас сосредоточимся на производительности. Может оказаться так, что ресурсов системы не хватит, тогда нужно исправить положение.

Нам понадобится SSH-клиент. Будем использовать PuTTY.

Загружаем BackTrack в CLI и выполняем след. команды:

root@bt:~# /etc/init.d/start ssh
root@bt:~# start ssh

Теперь смотрим ip-адрес:

root@bt:~# ifconfig

Запускаем PuTTY на главном хосте (Windows 7). Вводим ip-адрес и порт 22:

putty_connect

Если все прошло нормально, тогда должно появиться следующее:

backtrack_putty_connect

Таким образом потребление памяти снизиться примерно в два раза.

Создание базы данных в Metasploit

Важной особенностью в Metasploit является наличие БД, в которой можно хранить результаты тестирования. Любой пентест состоит из большого количества информации и может работать в течение нескольких дней, поэтому часто необходимо хранить промежуточные результаты в БД.

В качестве базы данных по умолчанию в Metasploit используется PostgreSQL. В BackTrack есть возможность использовать MySQL вместо PostgreSQL, но об этом чуть позже. Давайте для начала проверим настройки по умолчанию в PostgreSQL БД. Открываем файл database.yml расположенный в /opt/framework3/config. Чтобы это сделать, выполните след. команду:

root@bt:~# cd /opt/framework3/config
root@bt:/opt/framework3/config# cat database.yml
production: adapter: postgresql database: msf3 username: msf3 password: 8b826ac0 host: 127.0.0.1 port: 7175 pool: 75 timeout: 5

Обратите внимание на значения по умолчанию: databaseusernamepasswordhostportpool и timeout. Запишите эти значения, так как они будут необходимы в дальнейшем. Вы также можете изменить их в соответствии с вашим выбором.

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

msf > db_driver
[*]Active Driver: postgresql
[*]Available: postgresql, mysql

Убеждаемся, что PostgreSQL используется по умолчанию. Если хочется использовать MySQL, тогда нужно выполнить след. команду:

msf > db_driver mysql
[*]Active Driver: Mysql

Это приведет к изменению активного драйвера для MySQL.

Важно!
Обратите особое внимание на то, что Rapid7 прекратила поддержку MySQL в последней версии Metasploit (v4.6.0-dev). Поэтому команда db_driver уже не нужна. Теперь будет использоваться только PostgreSQL. И следовательно такие команды как: db_driver, db_connect не нужны. Но если пользуйтесь старой версией, тогда читайте дальше.

Для подключения к БД используется команда db_connect. Давайте посмотрим на ее синтаксис:

db_connect username:password@hostIP:port number/database_name

Чтобы подключиться к БД будем использовать значения из файла database.yml (см. выше):

msf > db_connect msf3:8b826ac0@127.0.0.1:7175/msf3

При успешном выполнении команды, база данных PostgreSQL будет полностью настроена.

Теперь давайте рассмотрим несколько важных моментов связанных с БД.

Получение ошибки при подключении базе данных

Есть некоторая вероятность, что при подключении к БД выведется ошибка. Поэтому нужно помнить о двух моментах:

  • проверьте команды db_driver и db_connect и убедитесь, что вы используете их правильно
  • перезапустите БД /etc/init.d, а затем попробуйте подключиться снова

Если ошибка по-прежнему выдается, тогда можно попробовать переустановить базу данных с помощью следующих команд::

msf > gem install postgres
msf > apt-get install libpq-dev

Удаление базы данных

В любой момент времени вы можете остановить/удалить созданную базу данных,  и начать все заново. Следующая команда используется для удаления БД:

msf > db_destroy msf3:8b826ac0@127.0.0.1:7175/msf3
Database "msf3" dropped.
msf >

Использование БД для хранения результатов тестирования

Теперь давайте посмотрим, как использовать БД для хранения результатов тестирования. Начнем с небольшого примера. Команда db_nmap сохраняет результаты сканирования портов непосредственно в БД, а также всю необходимую информацию. Запускаем простое nmap сканирование, чтобы проверить, как это работает:

msf > db_nmap 192.168.56.102
[*] Nmap: Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-04 20:03 IST
[*] Nmap: Nmap scan report for 192.168.56.102
[*] Nmap: Host is up (0.0012s latency)
[*] Nmap: Not shown: 997 closed ports
[*] Nmap: PORT STATE SERVICE
[*] Nmap: 135/tcp open msrpc
[*] Nmap: 139/tcp open netbios-ssn
[*] Nmap: 445/tcp open microsoft-ds
[*] Nmap: MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 1.94 seconds

Как видим, nmap выдала результаты сканирования. Nmap будет автоматически заполнять БД msf3.

Можно также воспользоваться опциями -oX в nmap, чтобы сохранить результат сканирования с формате XML. Это полезно делать, если в дальнейшем вы будите использовать сторонние программы, такие как Dradis Framework  для работы с результатами:

msf > nmap 192.168.56.102 -A -oX report
[*] exec: nmap 192.168.56.102 -A -oX report
Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-05 11:57 IST
Nmap scan report for 192.168.56.102
Host is up (0.0032s latency)
Not shown: 997 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)
Nmap done: 1 IP address (1 host up) scanned in 0.76 seconds

report — это файл, в котором будет храниться результат сканирования.

Команда db_nmap создает SQL запросы с различными столбцами таблицы, имеющие отношение к результатам проверки. После завершения сканирования, db_nmap сохраняет значения в базе данных. Сохранение результатов в виде таблиц упрощает обмен результатами локально, так и со сторонними инструментами.

После того, как сканирование завершено, наступает время анализа. Анализ данных даст нам более точное понимание целевой системы. Результаты в базе данных могут храниться либо в течении длительного времени, либо в течении короткого срока. Что захотите сделать, то и будет.

Анализ результатов сканирования из БД

Рассмотрим наиболее важные команды, чтобы иметь четкое представление о сохраненных результатах:

msf > hosts — команда покажет все хосты, которые имеются в БД:

msf_hosts

Однако, вывод команды hosts можно сделать более «чистым», так как отображается много столбцов в таблице. Таким образом, мы можем двигаться дальше, т.е. добавить фильтры и просматривать только те столбцы, которые нас интересуют:

msf > hosts -c address,os_name
 Hosts
 =====
 address          os_name
 -------          ------
 192.168.56.1
 192.168.56.101
 192.168.56.102   Microsoft Windows
 192.168.56.103   Linux

msf > services – еще одна интересная команда, которая  может дать полезную информацию о службах запущенных на целевой системе:

msf > services
Services
========
host             port  proto   name           state  info
----             ----  -----   ----           -----  ----
192.168.56.101   111   tcp     rpcbind        open
192.168.56.102   135   tcp     msrpc          open
192.168.56.102   139   tcp     netbios-ssn    open
192.168.56.102   445   tcp     microsoft-ds   open
192.168.56.102   135   tcp     msrpc          open   Microsoft Windows RPC

msf > vulns – эта команда выдает список уязвимостей присутствующих в БД.

msf > db_autopwn – мощная команда, которая используется для автоматизации процесса эксплуатации целевых машин. Эта команда требует большего понимания процесса эксплуатации, поэтому мы будем анализировать/изучать эту команду позже.

Процесс анализа достаточно прост и может легко фильтроваться, чтобы получить желаемый результат. Мы уже поняли, как читать/просматривать базу данных и как использовать ее эффективно. Последние две команды vulns и db_autopwn являются post-exploitation. Их мы будем рассматривать в след. статьях/главах.

Ну вот и все. Это были введение и первая часть.

Click to rate this post!
[Total: 7 Average: 4.3]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

8 comments On Metasploit Penetration Testing Cookbook – часть 1

Leave a reply:

Your email address will not be published.