Предлагаю вам перевод введения и первой части новой книги "Metasploit Penetration Testing Cookbook".
Дальнейший перевод книги будет зависеть только от ваших отзывов!
Введение
На сегодняшний день тестирование на проникновение (penetration testing) является одним из основных сценариев анализа защищенности. Пен-тестирование включает в себя полный анализ системы путем осуществления реальных тестов безопасности. Это помогает выявлять потенциально слабые места в основных компонентах системы: аппаратном или программном обеспечении.
Причина, которая делает тестирование на проникновение важным аспектом безопасности является то, что он помогает в определении угроз и слабых мест с точки зрения хакера. Лазейки могут быть использованы в режиме реального времени, чтобы выяснить воздействие уязвимости, а затем подходящим средством могут быть изучены для того, чтобы защитить систему от внешних атак и снижения факторов риска. Самым большим фактором, который определяет возможность проникновения — знание целевой системы. Есть несколько способов тестирования на проникновение:
- метод черного ящика — осуществляется при отсутствии предварительной информации о цели. Для осуществления атаки, пен-тестеру приходится по крупицам собирать информацию о целевой системе
- метод белого ящика — осуществляется, когда пен-тестер имеет достаточно полную информацию о цели
Промышленные специалисты определили некоторые ключевые шаги, которые необходимы практически во всех формах тестирования на проникновение, к ним относятся:
- определение цели — сбор основной информации без физического соединения
- выявление уязвимости — реализация различных методов обнаружения, таких как сканирование, удаленный вход (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 поближе:
Metasploit использует различные библиотеки, которые играют ключевую роль в функционировании системы. Эти библиотеки представляют собой набор заранее определенных задач, операций и функций, которые могут быть использованы различными модулями системы. Самая фундаментальная часть фреймфорка является Ruby Extension (Rex). Некоторые компоненты Rex включают подсистему сокетов (wrapper socket subsystem), реализацию клиентских и серверных протоколов, регистрацию подсистемы (ogging 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 является самым популярным дистрибутивом среди пен-тестеров и хакеров по двум причинам:
- содержит все популярные инструменты тестирования на проникновение => уменьшает время на установку
- это Linux дистрибутив =D
Установить BackTrack можно либо на сменный носитель (hdd, flash) или на виртуальную машину. Логон = root, пароль = toor.
После успешного входа можно остаться в CLI (Command Line Interface) или перейти в графический интерфейс, команда startx.
Запустить Metasploit Framework можно из Applications: Applications | BackTrack | Exploitation Tools | Network Exploitation Tools | Metasploit Framework, как показано на рисунке:
Чтобы запустить Metasploit из консоли, выполните след. команды:
root@bt:~# cd /pentest/exploits/framework3 root@bt:/pentest/exploits/framework3 ~# ./msfconsole
Создание пен-тест лаборатории
Идеальной настройкой считается создание физической среды, т.е. компьютеры должны физически существовать. Но если лишних машин нету, тогда нужно воспользоваться виртуализацией.
Мы будем использовать Virtual Box и создадим две виртуальные машины BackTrack 5 и Windows XP SP2. Хост система будет Windows 7.
Процесс установки достаточно прост, если есть желание почитать по Virtual Box, тогда можно воспользоваться ссылкой_1 и ссылкой_2.
Прежде чем приступить к работе, нужно настроить VB так, чтобы две виртуальные машины могли общаться между собой. Выбираем одну из виртуальных машин и переходим в Свойства (Settings). Далее выбираем Сетевые настройки (Network settings). Сетевой адаптер будет предустановлен в NAT, чтобы пользоваться Интернетом. В адаптере 2 (Adapter 2) выбрать 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:
Если все прошло нормально, тогда должно появиться следующее:
Таким образом потребление памяти снизиться примерно в два раза.
Создание базы данных в 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
Обратите внимание на значения по умолчанию: database, username, password, host, port, pool и 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 — команда покажет все хосты, которые имеются в БД:
Однако, вывод команды 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 — мощная команда, которая используется для автоматизации процесса «эксплуатации» (exploiting) целевых машин. Эта команда требует большего понимания процесса эксплуатации, поэтому мы будем анализировать/изучать эту команду позже.
Процесс анализа достаточно прост и может легко фильтроваться, чтобы получить желаемый результат. Мы уже поняли, как читать/просматривать базу данных и как использовать ее эффективно. Последние две команды vulns и db_autopwn являются post-exploitation. Их мы будем рассматривать в след. статьях/главах.
Ну вот и все. Это было введение и первая часть.
ссылка на оригинал статьи http://habrahabr.ru/post/165409/
Добавить комментарий