Рубрика:
Безопасность /
#10 лет назад
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ПАВЕЛ ТРОИЦКИЙ
Исследование уязвимостей с помощью Metasploit Framework
Учиться никогда не поздно, а учить других – приятное занятие... Из этой статьи вы сможете узнать о том, как просто и наглядно можно продемонстрировать работу большинства уязвимостей с помощью Metasploit Framework
Все что ни случается в жизни – к лучшему... В одно субботнее утро мне пришлось отважно поработать. Согласитесь, не самое приятное занятие, особенно в свой законный выходной день. Но на ситуацию можно посмотреть и с другой стороны.
Через несколько часов утренней работы, когда я освободился и пребывал в состоянии сна на ходу, меня уже не тянуло домой. Я плыл по коридору, где стояла убаюкивающая тишина по сравнению с шумными буднями. Не помню как, наверное, сработало любопытство, услышав издалека характерные непрекращающиеся звуки быстрого нажатия клавиш на клавиатуре, я на автопилоте изменил курс и пришвартовался в соседнем отделе.
Люблю наблюдать за увлеченно работающими людьми. Оказалось, мой тезка и коллега сидит за двумя своими мониторами и что-то решает. Я мягко приземлился в одно из пустующих кресел, включил чайник и стал ждать.
Пашок вернулся к жизни и заметил меня лишь только когда чайник закипел и громко щелкнул своим термовыключателем на всю комнату. Видимо, сработало то, что чайник он не ставил.
Увидев меня, он быстро заварил себе кофе, сел обратно на свое место и явно обрадовался тому, что сможет излить мне свою душу во время чаепития и найти понимание. Так и оказалось. Он решал одну интересную задачу, которую ему поставил шеф, с микроконтроллерами, при этом думая и о другом задании, на которое времени не хватало.
Второе задание было более интересным, чем первое, я постараюсь описать его вам, а далее предложить придуманное нами решение.
Закрытый код – враг народа?
Не секрет, что технический отдел с его руководством косо посматривают на тех, кто использует программы с закрытым кодом, к тому же содержащие много уязвимостей. Когда руководство компании понимает проблему, это хорошо. Техническому отделу дается зеленый свет, и вся организация переходит на более правильные и безопасные для фирмы решения.
Но бывают и другие случаи, когда руководство, опираясь на мнение друзей и знакомых, делает вид, что разбирается, а на самом деле это не так.
Например, не все оценивают преимущества новых версий Linux, OpenOffice или браузера Mozilla Firefox (по сравнению с их закрытыми и не всегда стабильно работающими аналогами: Windows, MSOffice или IE).
Люди инертны, привыкли к чему-то и менять ничего не хотят. Рыба гниет с головы – бывают случаи, когда руководство не допускает технический отдел к своим компьютерам (особенно ноутбукам), являясь не только источником нарушений безопасности, но и первой целью для происков конкурентов.
Цель задания состояла в том, чтобы вернуть авторитет техническому отделу, прочитать ознакомительную лекцию для персонала и провести в жизнь решения по установке и переходу на более безопасные Open Source аналоги, мотивируя это не своим желанием, а приказом руководства, стоящего над техническим отделом.
Задача, кажется, ясна, если у вас есть многолетний опыт, наверняка вы смогли в ней увидеть что-то пересекающееся из своей жизни или похожее.
Давайте рассмотрим случай решения, когда хитрость идет на пользу общему делу. Если у вас есть более интересные решения – пишите на форум журнала, обсудим!
Решение
Как действовать? Так как Глобальной сетью пользуются практически все, а она представляет немалую угрозу любому подразделению, то поставим цель – отучить пользователей использовать IE.
Если обратиться к классике, то существует не так много различных подходов к решению проблем [1, стр. 88]:
- если сделать проверку на используемый браузер и отключить обращения IE в сеть на прокси-сервере, то это будет не самое лучшее решение, а администратора можно будет классифицировать как «маньяка»;
- если удалить всем пользователям IE, то это будет администратор-«идиот», и проблема также не решится;
- если пытаться пакостить пользователям, запускающим IE, это будет администратор-«фашист» – успеха он тоже не добьется, так как будет все силы тратить на борьбу со следствием.
Наиболее правильно – это пойти на хитрость и бороться с причиной. Представьте, если все пользователи осознанно откажутся от какого-то решения, то какой будет смысл в мире бизнеса производителю продвигать это решение?
Наиболее удачно для нашей задумки подходит тип администратора «технический бандит».
Мы изучим различные нюансы работы браузеров и существующие в них уязвимости, поставим специальные программы, демонстрирующие скрытые возможности, возникающие из-за ошибок, и тем самым заставим руководство принять правильное решение.
Проверь систему на уязвимость
Очевиден факт, что в любой большой программе есть ошибки. Это практически все понимают, и начальство в том числе. Поэтому для проверки сетей и отдельных хостов давно придумали различные сканеры. Но не все понимают специфику их работы.
Если Nessus, Shadow Security Scanner, nmap, XSpider и другие в какой-то мере удобны и успели себя хорошо зарекомендовать, то опираться на их результаты следует с пониманием происходящего.
Например, как быть со случаем, когда исполнение какого-либо кода (содержащего уязвимость) происходит со стороны пользователя, а не инициируется внешним сканером? Не секрет, что многие, просканировав свой компьютер (или сервер) и не обнаружив открытых портов и уязвимых сервисов, ошибочно думают, что их системы в полном порядке.
Мы попытаемся доказать эту ошибку на примере браузера IE с помощью программы Metasploit Framework.
План действий. Немного теории
Получая различные рассылки по вопросам безопасности или посещая сайты по подобной тематике, периодически встречаешь информацию о различных уязвимостях. Такая-то уязвимость позволяет передать клиенту и выполнить на его стороне какой-либо код, такая-то просто завершает приложение.
В теории получается следующее: вы заходите на сайт XXX, а у вас вместо этого открывается окно терминала, где запускается команда «format с:».
Пример утрирован, но, если вам в это сложно поверить, к концу статьи вы сможете провести аналогичный эксперимент у себя.
The Metasploit Project
Это проект [2], созданный фирмой Metasploit LLC, содержащий полезную информацию для людей, занимающихся пополнением баз данных для СОА (систем обнаружения атак), а также исследованием уязвимостей и того, как они работают.
Цель ресурса – собрать различную информацию об известных эксплоитах и уязвимостях вместе с реализующими их кодами, чтобы эта информация была доступна администраторам безопасности и разработчикам.
На сайте содержится несколько разделов, содержащих полезную информацию.
Нам понадобится раздел Framework (см. рис. 1), посвященный платформе, на которой можно реализовать наш план.
Рисунок 1. Раздел Framework и ссылка для скачивания
Ищем Download внизу и скачиваем framework-3.2.tar.gz.
Установка Metasploit Framework
Ранее программа была доступна только через CLI (интерфейс командной строки), в связи с чем была известна только в узких кругах.
Недавно появилась поддержка GUI (графического интерфейса), что сделало программу более привлекательной для менее опытных пользователей (особенно наличие версии программы под Windows). Хорошо это или плохо, сказать сложно. Мы выберем версию под Linux и GUI-интерфейс.
В качестве операционной системы была взята недавно вышедшая Fedora 10. Конечно, она не без проблем. Скорее всего, через полгода – год мелкие проблемы будут решены, и она станет рабочей платформой для многих администраторов, а пока она очень подходит для наших экспериментов.
Если взять более ранние версии (Fedora 8, 9), то принципиальных различий в установке быть не должно.
Для работы графического интерфейса необходима установка языка Ruby и библиотек:
- ruby-1.8.6.287-2.fc10.i386.rpm;
- ruby-libs-1.8.6.287-2.fc10.i386.rpm;
- ruby-gtk2-0.18.0-2.fc10.i386.rpm;
- ruby-libglade2-0.18.0-2.fc10.i386.rpm;
- ruby-atk-0.18.0-2.fc10.i386.rpm;
- ruby-cairo-1.8.0-1.fc10.i386.rpm;
- ruby-gdkpixbuf2-0.18.0-2.fc10.i386.rpm;
- ruby-glib2-0.18.0-2.fc10.i386.rpm;
- ruby-gnome2-0.18.0-2.fc10.i386.rpm;
- ruby-gnomecanvas2-0.18.0-2.fc10.i386.rpm;
- ruby-libart2-0.18.0-2.fc10.i386.rpm;
- ruby-pango-0.18.0-2.fc10.i386.rpm.
Сделать это можно либо вручную через команды:
rpm -ihv *.rpm
либо через:
yum install ...
тогда достаточно указать лишь первые четыре пакета, все остальные будут определены как зависимые и установятся сами.
Следующим этапом надо распаковать скачанный архив framework-3.2.tar.gz в какую-либо директорию, зайти в нее и с правами администратора запустить файл msfgui.
Права администратора (root) нужны для того, чтобы программа могла открывать сокеты на прослушивание на любом порту (например, на 80-м, протокол TCP).
Запуск программы
Загрузка длится около минуты (см. рис. 2), и на это время появятся логотип программы (см. рис. 3) и графическая среда (см. рис. 4). Программа готова к работе.
Рисунок 2. Запуск программы Metasploit Framework
Рисунок 3. Логотип программы Metasploit Framework, показываемый во время запуска
Рисунок 4. GUI программы Metasploit Framework
Теперь, выбирая уязвимости (в базе Metasploit Framework их немало), мы можем попытаться реализовать сервер, который сформирует код, который будет передан клиенту, для выполнения на его стороне. А далее выполним проверку клиента на уязвимость. В качестве уязвимой машины была выбрана первая находившаяся под рукой, а именно с Windows 2003 и IE 6.0 (cм. рис. 5). Кстати, некоторые администраторы, не утруждая себя, часто ищут что-то в Сети по интересующим их вопросам прямо из консоли сервера, при этом ставить альтернативные браузеры они не собираются, мотивируя это тем, что подобные выходы в интернет «наколенке из серверной» у них редки. Замечу, чтобы скомпрометировать сервер, достаточно одного случая!
Рисунок 5. Версии ПО уязвимой машины: а) версия ОС; б) версия браузера
А далее ситуация проста: главная задача – заманить жертву или всезнающего шефа на наш компьютер. В интернете подобное решается социальным способом, то есть обходным путем. Например, с помощью размещения различных баннеров либо переадресацией с помощью popup-окошек с уже зараженных сайтов. Такое часто встречается на сомнительных сайтах (бесплатное скачивание коммерческих программ, порносайты и пр.), предлагающих кликнуть на какой-нибудь баннер.
В локальной сети, будучи ее администраторами, мы можем завернуть обращение на шлюзе куда нам надо, а после показать шефу, что любой вполне безобидный сайт может творить чудеса с его компьютером (запускать другие приложения, копировать его документы и пр.), при условии что у него даже может быть запущен антивирус.
Конечно, все это многообразие действий зависит от вашей фантазии, а цель статьи лишь показать направление и что такое возможно. Поэтому мы ограничимся лишь одной уязвимостью в качестве примера и запустим какую-нибудь безобидную программу на компьютере жертвы, например «Калькулятор». Не секрет, что для написания статьи, чтобы никого не обманывать, в течение получаса пришлось перебирать уязвимости, чтобы найти работающую в данной конфигурации.
В качестве уязвимости была выбрана описанная в Microsoft Security Bulletin MS06-067 [3] – выбираем эту уязвимость в базе программы (см. рис. 6).
Рисунок 6. Настройка эксплоита под уязвимость MS06-067
Далее жмем forward и в следующем окне выбираем действие windows/exec, (см. рис. 7), также жмем forward и попадаем в настройки.
Рисунок 7. Выбираем windows/exec
Прописываем порт 8081 и команду для запуска на машине с уязвимым бараузером «c:\windows\system32\calc.exe» (см. рис. 8).
Рисунок 8. Настройка порта и ввод команды для запуска на удалённой машине
Замечание: если вы хотите прописать 80-й порт, а у вас работает httpd-сервер, то не забудьте его остановить, например, командой:
# service httpd stop
или:
# /etc/rc.d/init.d/httpd stop
иначе будет непонятно, какая из двух программ должна прослушивать порт на входящие соединения. С этой целью в примере был взят порт 8081, который заведомо будет свободен.
После подтверждаем настройки (см. рис. 9) и в списке висящих заданий (jobs) у нас появляется новая задача (см. рис. 10).
Рисунок 9. Окно подтверждения настроек задания
Рисунок 10. Запущена новая задача
Далее мы можем посмотреть в логи – вкладка Output и попытаться обратиться с машины жертвы на наш сервер. Предварительно следует не забыть прописать разрешающие правила для пакетного фильтра, например:
# iptables -I INPUT -i eth0 -p tcp –sport 1024:65535 –dport 8081 -j ACCEPT
# iptables -I OUTPUT-o eth0 -p tcp –dport 1024:65535 –sport 8081 -j ACCEPT
Логи:
12:28:08 - Initialized the Metasploit Framework GUI.
12:45:38 - ms06_067_keyframe [*] Launching exploit windows/browser/ms06_067_keyframe...
12:45:39 - ms06_067_keyframe [*] Using URL: http://0.0.0.0:8081/
12:45:39 - ms06_067_keyframe [*] Local IP: http://127.0.0.1:8081/
12:45:39 - ms06_067_keyframe [*] Server started.
12:46:04 - ms06_067_keyframe [*] Sending Internet Explorer Daxctle.OCX KeyFrame Method Heap Buffer Overflow Vulnerability to 192.168.0.3:1603...
12:46:28 - [*] Stopping exploit: windows/browser/ms06_067_keyframe
12:46:28 - ms06_067_keyframe [*] Server stopped.
Окно машины жертвы (см. рис. 11).
Рисунок 11. Окно уязвимой машины, на которой при обращении к серверу попутно запустилась сторонняя программа – калькулятор
Заключение
Конечно, данный пример тривиален, и для того чтобы поразить окружающих или вашего шефа, лучше его модифицировать, учитывая специфику. Мы так устроены, что какое-либо действие (изменения) привлекают нас больше, поэтому для людей, не очень понимающих, как осуществляется переполнение буфера, лучше вместо калькулятора запустить архиватор с ключами, чтобы в окошке была анимация, например «бежало» число процентов сжатых файлов из папки «Мои документы/конфиденциально». Тогда и сказать, что этот сайт нацелен на сбор информации с компьютера вашего шефа, будет проще и ваши аргументы будут весомее. Раз сайт запустил архиватор, а не какой-нибудь калькулятор, то проблема намного серьезнее. Хотя надеюсь, что большинство читателей, читая эти строчки, улыбнутся лишний раз.
Также эту статью и пример можно использовать в образовательных целях. Чем не пособие для преподавателей на курсах по безопасности или в вузах по проведению демонстраций или лабораторных работ? Выполнять такую лабораторную работу студентам будет куда интереснее, чем обсчитывать не всегда понятные результаты.
Если вы задумались, а не пора ли вам обновить/сменить систему или браузер, значит, вы находитесь на верном пути!
- Робачевский А. М. Операционная система UNIX. – СПб.: БХВ-Петербург, 2002, ISBN 5-8206-0030-4.
- Сайт проекта The Metasploit Project, содержащего информацию и эксплоиты по различным уязвимостям, – http://metasploit.com.
- Уязвимость Microsoft Security Bulletin MS06-067 – http://www.microsoft.com/technet/security/Bulletin/MS06-067.mspx.
Ключевые слова: Metasploit Project, уязвимость, эксплоит.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|