Метасплоит
Тестирование на проникновение позволяет ответить на вопрос, как кто-то со злым умыслом может вмешаться в вашу сеть. Используя инструменты пентеста, «белые хакеры» и профессионалы в области безопасности могут на любом этапе разработки или развертывания исследовать сети и приложения на предмет недостатков и уязвимостей путем взлома системы.
Одним из таких средств пентеста является проект Metasploit. Этот фреймворк с открытым исходным кодом, созданный на Ruby, позволяет проводить тестирование с помощью командной строки или графического интерфейса. Его можно расширить, создавая собственные надстройки с поддержкой нескольких языков.
Рассмотрим следующие этапы тестирования защищенности, присутствующие в практически любом проекте по тестированию на проникновение:
- Постановка задачи
- Сбор информации и поиск целей
- Поиск уязвимостей
- Эксплуатация и проведение атак
- Расширение зоны влияния и эскалация привилегий
- Разработка отчета
Этап 1. Постановка задачи
Тестирование защищенности любой ИТ-инфраструктуры начинается с постановки задачи. В нашем случае мы ограничимся поиском максимального количества реальных уязвимостей, которые могут быть проэксплуатированы потенциальными злоумышленниками, имеющими физический доступ к компьютерной сети организации.
Для демонстрации работы некоторых модулей в статье будут приводиться результаты их запуска против такой учебной цели, как Metasploitable 2. Metasploitable 2 представляет собой виртуальную Linux-машину, содержащую массу уязвимых сервисов. Является стандартом де-факто для обучения начинающих специалистов по тестированию защищенности.
Этап 2. Сбор информации и поиск целей
Для проведения тестирования защищенности специалистам предоставляют доступ в сеть предприятия. В ходе предварительного сбора проводится сканирование узлов, определяются имена компьютеров, обнаруживаются общедоступные сетевые папки, критичные ресурсы.
Сканирование портов
Сканирование портов можно провести с помощью команды db_nmap – утилиты-«обертки» для nmap в Metasploit Framework, которая позволяет сохранять результаты сканирования в базу данных.
Необходимо помнить, что если мы явно не задаем диапазон портов, то будет просканировано 1000 самых распространенных портов, если укажем ключ -F, то 100, а если -p-, то все 65535.
Из результатов сканирования портов мы можем узнать не только какие сетевые порты открыты, но и версии служб, если использовали ключ -sV, а также предположительную версию операционной систем (ключ -О).
После завершения сканирования сети имеет смысл выгрузить данные из базы Metasploit с помощью команды db_export и импортировать получившийся xml-файл в MS Excel или LibreOffice Calc. В дальнейшем данный файл можно использовать для поиска узлов с определенными портами и вести рабочие заметки с результатами тестирования каждого узла.
Поиск общедоступных сетевых папок
Как мы уже рассмотрели выше, в общедоступных сетевых папках может быть масса полезной для злоумышленника информации. Имеет смысл искать данные папки как с анонимной учетной записью (пустой логин/пустой пароль), так и с учетной записью обычного пользователя.
Для поиска SMB-ресурсов необходимо воспользоваться модулем auxiliary/scanner/smb/smb_enumshares, а для NFS: auxiliary/scanner/nfs/nfsmount.
Поиск СУБД
Для поиска СУБД MS SQL имеет смысл использовать модуль auxiliary/scanner/mssql/mssql_ping, так как он позволяет не только обнаружить серверы СУБД по открытому UDP порту 1434, но и определить TCP-порт, по которому база данных ждет подключения.
Определение имен NetBIOS
Зачастую полезно определить имена NetBIOS, так как в них тоже может содержаться полезная информация (например, к какой системе относится тот или иной узел). Для этого можно воспользоваться модулем auxiliary/scanner/netbios/nbname.
Этап 3. Поиск уязвимостей
Сначала рассмотрим основные методы выявления уязвимостей, которые представлены в следующей таблице:
№МетодТип уязвимостейПримеры1Определение уязвимостей по версии продуктаОпубликованныеОпределение версии продукта по баннеру сетевого сервиса и поиск информации об известных для данного продукта уязвимостях в интернет-поисковике2Попытка эксплуатацииОшибки конфигурации, опубликованные уязвимостиПопытка подключения к Windows системе посредством нулевой сессии и выгрузки перечня учетных записей пользователей.
Запуск эксплойта против сетевого сервиса без предварительного анализа его соответствия данной службе.
Попытка перехвата трафика с помощью arp-poisoning
3Анализ конфигурацииОшибки конфигурации,
опубликованные уязвимости
Анализ содержимого реестра Windows4Реверс-инжинирингУязвимости нулевого дняДизассемблирование исполняемого файла с целью изучения логики исполнения программы и работы с данными5Анализ исходного кодаУязвимости нулевого дняПоиск в php-коде фрагментов, связанных с фильтрацией данных, вводимых пользователем с целью обхода правил фильтрации и внедрения JavaScript-кода6ФаззингУязвимости нулевого дняВвод в web-форму различных вариантов SQL-запросов и анализ получаемых сообщений об ошибках
Из данного перечня в Metasploit Framework имеются модули для реализации методов «Попытка эксплуатации», «Фаззинг» и частично «Определение уязвимостей по версии продукта».
«Определение уязвимостей по версии продукта» полноценно не реализовано в Metasploit Framework, так как для автоматизированного выявления потенциальных уязвимостей в первую очередь используются сканеры уязвимостей. Тем не менее стоит отметить, что некоторые модули эксплуатации в Metasploit Framework поддерживают метод check, который можно использовать для определения наличия уязвимости до ее эксплуатации.
В случае, если под рукой нет сканера уязвимостей наподобие того, что есть в составе «Сканер-ВС», который может за десятки минут прогнать около 60 тыс. проверок, в том числе и для отечественных решений и средств защиты информации, то придется проводить анализ вручную.
Для ручного анализа уязвимостей подойдут данные о версиях сетевых сервисов, полученные на предыдущем этапе в ходе сканирования портов. Специалист по тестированию защищенности, формируя поисковые запросы Google вида «сервис версия» +vulnerability +exploit, находит страницы с описанием уязвимостей и эксплойтов.
Известные базы данных уязвимостей:
Отдельно необходимо отметить, что ФСТЭК России ведет регулярно пополняемый банк данных угроз безопасности информации.
Например, проведя анализ результаты сканирования портов Metasploitable 2, мы можем обнаружить, что на 21-м порту ждет подключений Very Secure FTP Daemon (VSFTPD) версии 2.3.4. Простой поиск в Google информации о наличии уязвимостей в данной версии FTP-сервера приведет к тому, что мы узнаем, что какой-то весельчак внедрил закладку, получившую название «smiley face backdoor». Принцип использования программной закладки прост: в ходе авторизации в имени пользователя нужно использовать смайлик ":)", после чего на удаленной машине откроется порт 6200 с командной оболочкой с правами администратора. Вводимые имя пользователя и пароль могут быть любыми.
В составе Metasploit Framework есть набор модулей для фаззинга реализаций таких протоколов как dns, ftp, http, smb, smtp, ssh и др. Данные модули доступны по адресу: auxiliary/fuzzers/.
Необходимо отметить, что так как проекты по тестированию защищенности обычно ограничены сроком в 2-3 недели, специалисты ограничиваются автоматизированным и ручным поисками уязвимостей по версиям, а также попытками эксплуатации.
Этап 4. Эксплуатация и проведение атак
Для эксплуатации уязвимостей в сетевых сервисах и прикладном ПО используются эксплойты из раздела exploit Metasploit Framework. На текущий момент в Metasploit Framework количество готовых к использованию эксплойтов уже приближается к двум тысячам.
Подходящие эксплойты можно найти с помощью команды search по коду CVE, названию или версии сервиса (например, search vsftpd).
При эксплуатации уязвимости задается так называемая полезная нагрузка (payload). Полезной нагрузкой называется код, который запускается на скомпрометированной машине. В Metasploit Framework имеются различные полезные нагрузки: удаленная командная строка, создание учетной записи, загрузка системы удаленного администрирования и т.п. Зачастую удобнее всего пользоваться именно командной строкой. Причем в Metasploit Framework имеется динамически расширяемая полезная нагрузка – Meterpreter, но она заслуживает отдельной статьи.
Продолжая разбор примера с vsftpd, запустим найденный эксплойт и получим удаленный доступ к командной строке с правами администратора.
Для данного эксплойта только один вариант полезной нагрузки, который и используется по умолчанию:
Запуск эксплойта:
Подбор паролей
Самой опасной атакой на протяжении десятилетий остается подбор паролей. Metasploit Framework содержит множество модулей, предназначенных для проведения подобных атак. В следующей таблице представлены модули, с которыми чаще всего приходится сталкиваться в ходе тестирования защищенности.
№Протокол/приложениеПуть к модулю1smbauxiliary/scanner/smb/smb_login2ftpauxiliary/scanner/ftp/anonymous (проверка возможности анонимного входа)
auxiliary/scanner/ftp/ftp_login
3sshauxiliary/scanner/ssh/ssh_login4telnetauxiliary/scanner/telnet/telnet_login5postgresqlauxiliary/scanner/postgres/postgres_login6mysqlauxiliary/scanner/mysql/mysql_login7oracleauxiliary/admin/oracle/oracle_login8tomcatauxiliary/scanner/http/tomcat_mgr_login
Полный список аналогичных модулей Metasploit Framework можно получить, набрав команду search login.
Необходимо отметить, что большинство модулей требует задания списка учетных записей и проверяемых паролей, но некоторые уже содержат готовые списки значений по умолчанию, которыми целесообразно воспользоваться.
Давайте подберем пароли по умолчанию к СУБД PostgreSQL и сервер приложений Apache Tomcat, установленным на Metasploitable 2:
В Metasploit Framework имеются модули для проведения специфических компьютерных атак. В настоящей статье ограничимся рассмотрением нескольких самых распространенных.
ARP-poisoning
В ходе данной атаки злоумышленник пытается «испортить» (to poison — отравить) ARP-таблицы двух узлов, трафик между которыми он хочет перехватывать. Зачастую атака проводится против рабочей станции определенного пользователя (системного администратора, главного бухгалтера и т.п.) и контроллера домена или маршрутизатора. После «порчи» ARP-таблиц оба узла-жертвы направляют сетевые пакеты друг другу через компьютер злоумышленника. Злоумышленник, запустив сниффер, перехватывает интересующие его данные, например, сессии аутентификации с хешами паролей.
Для осуществления атаки arp-poisoning в Metasploit Framework можно воспользоваться модулем:
auxiliary/spoof/arp/arp_poisoning.
Pass-the-hash
Особенностью реализации протокола NTLM является то, что для успешной авторизации не требуется знать пароль, а достаточно лишь иметь хеш пароля и имя учетной записи. Данной уязвимости может быть подвержена любая операционная система, в которой используется протокол NTLM.
Атаку pass-the-hash можно провести с помощью модуля exploit/windows/smb/psexec.
В результате данной фазы тестирования защищенности мы имеем перечень уязвимостей, которые реально могут быть проэксплуатированы злоумышленниками, причем удаленно. В качестве результата запуска эксплойтов и проведения атак у нас имеется доступ к различным системам, а также информация о скомпрометированных учетных записях.
Важное примечание.
Запуск эксплойтов легко может привести к недоступности сервиса или целого сетевого узла. Для минимизации негативных последствий подобных тестов специалисты по тестированию защищенности:
- проводят тестирование в нерабочее время;
- проводят тестирование на идентичных тестовых серверах;
- согласовывают выбор целей с заказчиком (например, выбираются рабочие станции некритичных сотрудников);
- запускают опасные проверки, предупредив ответственных администраторов.
В качестве доказательств успешного проникновения специалисты по тестированию защищенности собирают скриншоты, подтверждающие наличие доступа.
Этап 5. Расширение зоны влияния и эскалация привилегий
Зачастую наличие доступа к какой-либо системе позволяет расширить его на другие системы. Иногда возможна и эскалация привилегий, позволяющая обычному пользователю стать администратором.
Рассмотрим две типовые ситуации, знание которых облегчает проведение тестирования защищенности.
Пользователи, использующие одинаковые пароли
Пользователи любят использовать одинаковые пароли в различных системах, поэтому целесообразно проверять однажды подобранные пары логин: пароль во всех доступных системах.
ИТ-специалисты, забывающие удалить из тестовой среды критичные данные
В крупных организациях у серьезных систем, как правило, имеется тестовая среда, на которой отрабатываются изменения, обучаются пользователи и т.п. Тестовые среды очень часто создаются путем восстановления из резервных копий боевых сред, при этом, так как они являются тестовыми, то не всегда уделяется должное внимание вопросам информационной безопасности. Так, например, могут создать учетную запись администратора с легко угадываемым паролем либо не установить критичные обновления операционной системы. Специалисты по тестированию защищенности, получив доступ к тестовой среде, выгружают данные пользователей (логины/хеши паролей), которые в основной своей массе соответствуют тем, что используются в боевой системе.
Модули постэксплуатации в Metasploit Framework
В Metasploit Framework имеется набор так называемых постэксплуатационных модулей, позволяющих решать следующие задачи для расширения доступа и повышения привилегий:
- поиск подходящих локальных эксплойтов (post/multi/recon/local_exploit_suggester);
- запуск кейлоггера (post/windows/capture/keylog_recorder);
- сбор учетных записей и хешей (post/windows/gather/credentials/credential_collector) и др.
В результате после выполнения данного шага специалисты по тестированию защищенности получают максимальный доступ, а также выявляют реальные локальные уязвимости.
Этап 6. Разработка отчета
Если результаты тестирования защищенности интересуют не только самого системного администратора, то имеет смысл подготовить качественный отчет.
Основной составляющей отчета является информация об уязвимостях, которая, как правило, представляется в следующем структурированном виде:
- обнаружение – информация о названии уязвимости, ее кодах, перечень узлов, подверженных ей.
- эксплуатация – скриншоты и журналы, демонстрирующие эксплуатацию уязвимости;
- риск – к чему может привести эксплуатация уязвимости;
- рекомендации – рекомендации технического и организационного характера по устранению уязвимости.
В Metasploit Framework отсутствует функционал по генерации отчетов по тестированию защищенности, и отчет придется разрабатывать самостоятельно.
Заключение
Мы рассмотрели применение Metasploit Framework для возможности самостоятельного применения администраторами для тестирования защищенности и убедились в доступности и эффективности данного инструмента. Большинство «болевых точек» могут быть с легкостью проверены благодаря широкому набору модулей данного фреймворка. Единственной проблемной областью применения для тестирования защищенности исключительно Metasploit Framework является необходимость проводить трудоемкий ручной поиск уязвимостей, но данная проблема может быть устранена применением сканера уязвимостей.
Спасибо за внимание!