Сегодняшняя статья посвящена эксплойтам и их видам. Ведь чтобы правильно уничтожить врага его надо знать в лицо.
Эксплойты - это подвид вредоносных программ. Они содержат данные или исполняемый код, способный воспользоваться одной или несколькими уязвимостями в программном обеспечении на локальном или удаленном компьютере.
Например, у вас есть браузер, и есть уязвимость в нем, которая позволяет исполнить «произвольный код», то есть установить и запустить некую вредоносную программу на вашей системе без вашего ведома или спровоцировать какое-либо иное не ожидаемое вами поведение системы.
Эксплойт может распространяться в виде исходных текстов, исполняемых модулей или словесного описания использования уязвимости. Он может быть написан на любом языке программирования (наиболее часто использующиеся: C/C++, Perl, Python, PHP, HTML+JavaScript).
Как происходит заражение
Существует два способа заразится эксплойтом. Во-первых, при посещении сайта, содержащего вредоносный код эксплойта. Во-вторых, при открытии пользователем безобидного на вид файла со скрытым вредоносным кодом. Для доставки таких файлов, как правило, используют спам или фишинговые письма.
После того как он получает доступ посредством уязвимости, эксплойт загружает дополнительные вредоносные программы с сервера преступников, осуществляющие подрывную деятельность, такую как кража личных данных, использование компьютера в качестве элемента ботнета для рассылки спама или выполнения DDoS-атак.
Виды эксплойтов
- Удалённый эксплойт – работает через сеть и использует уязвимость в защите без какого-либо предварительного доступа к атакуемой системе;
- Локальный эксплойт – требует предварительный доступ к взламываемой системе и обычно повышает привилегии для лица, запускающего эксплойт над уровнем, который был предоставлен системным администратором (т.е. реально дает возможность полностью управлять компьютером, его настройками и процессами без ограничений, с учетной записью администратора);
- Эксплойт “подставного сервера” – подвергает риску машину конечного пользователя в том случае, когда к нему был совершён доступ с помощью уязвимого клиентского приложения. Эксплойт против клиентского приложения может также требовать некоторого взаимодействия с пользователем уязвимого приложения и может быть использован в связке с методами социальной инженерии т.е. несанкционированного доступа к информации без использования технических средств.
Примеры нескольких наиболее известных наборов эксплойтов:
Angler - один из самых сложных наборов на черном рынке. Этот набор эксплойтов своим появлением изменил правила игры, после того как начал обнаруживать антивирусы и виртуальные машины (часто используемые экспертами по безопасности как приманки) и задействовать шифрованные файлы для затруднения исследования. Это один из тех наборов эксплойтов, которые быстрее всего включают в свой арсенал недавно открытые уязвимости нулевого дня, а его вредоносные программы работают в памяти, без записи на жестких дисках жертв.
Neutrino - набор от русскоязычных разработчиков, содержащий несколько эксплойтов Java. Neutrino прославился в связи с тем, что владелец выставил его на продажу по очень скромной цене - $34 тыс.
Blackhole Kit - наиболее распространенная веб-угроза в 2012 году, нацеленная на уязвимости в старых версиях браузеров Firefox, Chrome, Internet Explorer и Safari, а также многих популярных плагинов, таких как Adobe Flash, Adobe Acrobat и Java. После того как жертву заманили или перенаправили на страницу подсадки, запутанный JavaScript определяет содержимое машины жертвы и загружает те эксплойты, для которых данный компьютер уязвим.
Для защиты от эксплойтов существует множество специальных программ, которые помогут Вам защитить компьютер. Также рекомендуется не открывать незнакомые файлы, письма и заходить на незнакомые сайты.
У многих начинающих специалистов в области информационной безопасности встает множество вопросов по поводу эксплойтов: Что такое эксплойты? Кто пишет эксплойты? Как пользоваться эксплойтами? В этой статей вы найдете ответы на эти вопросы!
Что такое эксплойт?
Эксплойт (exploit)
- это компьютерная программа, фрагмент программного кода или последовательность команд, использующие уязвимости в программном обеспечении и применяемые для проведения атаки на вычислительную систему. Целью атаки может быть как захват контроля над системой (повышение привилегий), так и нарушение её функционирования (DoS-атака). ...
По сути своей экслопйт является небольшим примером того как можно эксплуатировать данную уязвимость, в руках же опытного хакера эксплойт это мощное оружие позволяющее скомпрометировать целевую систему.
Кто пишет эксплойты?
Эксплойты пишут тысячи энтузиастов увлеченные изучением информационной безопасности, они публикуют их на множестве известных сайтов подобных SecurityFocus . Делают они это не ради славы и не на радость скрипт-киддисов, делают они это для оповещения системных администраторов и других специалистов в области ИБ о существовании данной уязвимости. Ведь имея на руках реализацию конкретной уязвимости можно легко написать «заплатку».
Как пользоваться эксплойтами?
Не смотря на то, что многих новичков вбивают в ступор огромные базы с эксплойтами пользоваться ими довольно легко!
К примеру, возьмем уязвимость найденную одном из многочисленных компонентов Joomla. Описание эксплойта вы найдете, пройдя по ссылке Joomla Component com_camp SQL Injection Vulnerability .
В первую очередь вы должны посмотреть приложение и версию приложения для которого существует уязвимость. Если вы нашли то, что нужно приступайте к изучению описания эксплойта. В описании обычно пишут, где именно найдена уязвимость в нашем случае это компонент com_camp, как вы видите уязвимость сушествует из за недостатка фильтрации в переменной cid:
Http://127.0.0.1/index.php?option=com_camp&task=show&cid=
Зайдя сайт с данной уязвимостью и подставив в переменную cid кавычку вы скорей всего обнаружите ошибку на странице что свидетельствует о присутствие sql injection.
Что делать далее? Была бы фантазия, а сделать то можно многое! Тут то мы и подходим к самому эксплойту. На странице описания эксплойта обычно выкладывают файл с самим эксплойтом или строчку программного кода который нужно либо скомпилировать, либо каким то образом «скормить» уязвимому приложению. В нашем случае мы видим строчку sql кода, которую нужно вставить в переменную cid:
1/**/UNION/**/SELECT/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14--
Так же в нашем случае мы видим пример реализации данной уязвимости:
Http://127.0.0.1/index.php?option=com_camp&task=show&cid=-1/**/UNION/**/SELECT/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14--
Обладая этими данными и знаю структуру БД Joomla вы с легкостью сможете получить все необходимые данные, включая логины и хеши паролей пользователей в том числе и администратора.
Какие еще бывают эксплойты?
В зависимости от метода получения доступа к уязвимому программному обеспечению, эксплойты подразделяются на удалённые (англ. remote) и локальные (англ. local).
Эксплойты предназначены для выполнения сторонних действий на уязвимой системе и могут быть разделены между собой следующим образом:
Вообще же искать по конкретному сайту вам поможет GoogleHack & «Расширенный поиск» например site: http:securityfocus.com joomla sql injection выведет вам множество эксплойтов позволяющих провести sql injection в joomla.
Может ли эксплойтами пользоваться каждый дурак?
Нет, нет и нет. Для использования эксплойтов как минимум требуется общие знания в программировании (многие эксплойты специально пишут с ошибками и не наделяют большими возможностями ведь это всего то «презентация» уязвимости), так же не обходимо изучить систему, которая подвергается атаке и собрать достаточно информации для ее проведения. Опыт показывает что многие люди которые хотят «легкой наживы» просто напросто не обладают комплексом нужных знаний.
Вывод:
С каждым днем находят все больше и больше уязвимостей, а следовательно пишут все больше и больше эксплойтов. Я не призываю вас становится скрипт-киддисами и ни в коем случае не буду говорить, что бы вы не использовали эту информацию в противозаконных целях!
Ядерная энергия может нести свет, а может принести и вечную тьму, каждый сам решает, как ему жить…
Эксплойт, эксплоит (exploit, эксплуатировать) – программа, фрагмент программного кода или последовательность определенных команд, использующих уязвимости в ПО и применяемые для атак на вычислительную систему. Целью атаки может быть желание получить контроль над системой или нарушить ее функциональность.
Эксплойты подразделяются на удаленные и локальные
- Удаленный эксплойт работает через сеть, используя уязвимость в защите без какого-либо предварительного доступа к уязвимой системе
- Локальны напротив запускается в уязвимой стороне и требует предварительного доступа к системе. Используется в основном для получения прав суперюзера.
Атака может быть нацелена на разные компоненты системы, будь то серверные или клиентские приложения, модули ОС. Чтобы использовать серверную уязвимость, эксплойту нужно лишь сформировать и послать на сервер запрос, который содержит вредоносный код. Сложнее обстоит дело с использованием уязвимости клиента. Для этого требуется убедить пользователя в необходимости подключиться к поддельному серверу. Пример: если клиент является браузером, что подключение будет непосредственно сам переход по ссылке.
Виды эксплойтов
- Эксплойты для ОС
- Эксплойты для прикладного ПО (медиаплейеры, офисные программы)
- Эксплойты для браузеров
- Эксплойты для интернет-продуктов (WordPress, phpBB, VBulletin)
- Эксплойты для сайтов
- Прочие эксплойты.
Информация для тех, кто не совсем понимает что такое эксплойт.
Что такое эксплойт?
«Официальное» определение можно прочитать в компьютерных энциклопедиях. Мне нравится такое: «В зависимости от назначения - программа, кусок кода или скрипт, которые позволяют получить выгоду от использования существующей уязвимости в программном обеспечении для чего угодно, что программно управляется». В каком-то смысле молоток против смартфона тоже является техническим эксплойтом, действующим с примитивной целью - уничтожить устройство. Рассмотрим сущность, принцип применения и роль эксплойта во взломе системы. Рассмотрен вопрос где эксплойт взять, есть ли смысл его скачивать или покупать, и почему подтверждённый эксплойт может не сработать.
- Что такое эксплойты
- Какие эксплойты бывают
- Немного про уязвимости
- Роль эксплойта в атаке на систему
- Пример успешного эксплойта
- Базы данных эксплойтов
- Проблемы с эксплойтом
Самое простое объяснение - «взаимоотношения» человека и вируса. Биологического. В нашем организме всё продумано до мелочей, однако, столкнувшись с микрокодом извне, он выходит из строя на время или навсегда. Уязвимость - это просто неспособность механизма (в том числе и программного) адекватно реагировать на некое действие со стороны, сохраняя при этом заложенные в него (механизм) характеристики и функционал . И эксплойт называется эксплойтом только если позволяет получить от уязвимости выгоду. Не сочтите за белетристику, это важно понять сразу.
Немного об уязвимостях.
Модули Metasploit, содержащие эксплойты, и направлены на уязвимости. У пентестеров принято формализовывать методы, по которым эти уязвимости группируются. Таким образом был создан постоянно расширяющийся словарь Common Vulnerabilities and Exposures (CVE ) - Общепринятых Уязвимостей и Обнаружений. Так что запоминайте: с аббревиатурой CVE вы не раз столкнётесь . Общепринятый вид записывается в таком формате:
CVE - ГОД_ВЫПУСКА - ПРИСВОЕННЫЙ_ИДЕНТИФИКАТОР
например
CVE 2008-4250
Если вы хотите прямо сейчас взглянуть на полный список бюллетеня, прошу сюда:
На самом деле уязвимостей, которые способны раскрыть секреты хозяина, гораздо больше, чем официальный список этого бюллетеня. Да, чтобы попасть в этот словарь, уязвимости нужно место «заслужить». И конкретной организации, которая официально этим занимается, конечно нет. Всё зависит от того, на что будет направлен будущий эксплойт - уязвимости без эксплойта не существует. Но в любом случае почти все дороги ведут на Exploit Database и указанный выше ресурс.
Отдельной строкой идут проблемы безопасности для продуктов от Майкрософт. Они формируются отдельным списком под названием Бюллетень Безопасности Майкрософт. Их уязвимости принято группировать подобным образом:
MSYY-XXX
где, YY - год обнаружения, ХХХ - присвоенный ID.
Вернёмся к хакерам. Какие эксплойты бывают?
Условно их все можно раскидать по трём кучкам:
- эксплойт сервиса
- эксплойт клиента
- эксплойт привилегий
Эксплойт клиента - он же клиентский эксплойт - сфокусирован на атаке клиентского приложения, которое получает некий контент от компьютера-сервера. Основан на том, что жертва будет проводить какие-то действия, а программа-клиент должна активно с этим контентом работать. Проще говоря, моя задача как хакера заставить вас щёлкнуть по ссылке, открыть некий документ, попасть на вредоносный сайт.
Эксплойт привилегий . Его задача - добиться усиления уже имеющихся в системе прав. Например, получить права администратора из гостевой УЗ. А там и до SYSTEM недалеко… К примеру, в Windows XP есть такая уязвимость, когда нехитрыми движениями можно . Причём уязвимость лежала на поверхности. Не поленитесь и взгляните на статью - объяснения станут излишними.
Процесс эксплойта и его роль в атаке на компьютер.
Постепенно мы подбираемся к принципу, как работает компрометация системы. Каждый из этих этапов - это очень сложный процесс, требующий многотомного руководства. Но схематично это можно отобразить так:
- потенциально уязвимая система сканируется на предмет открытых портов и запущенных сервисов
- вычленяются точки, по которым можно нанести удар
- на удалённый компьютер в эту или эти точки отправляется эксплойт известной уязвимости
- к эксплойту приклеивается пэйлоуд (он позволит контролировать систему жертвы)
- если эксплойт сработал (именно он первым и запускается) и система жертвы откликнулась, запускается пэйлоуд; по результатам исполнения кода пэйлоуда хакер получает доступ к компьютеру жертвы
Для примера используем ОС Кали Линукс в качестве хозяйской и Windows XP (эксплойт древний, начиная с уже с Windows XP SP2 он уже делает это менее охотно) в качестве гостевой в VirtualBox. Нам, конечно, известно, какие характеристики имеются у гостевой машины в сети (в нашем случае виртуальной), но пусть сканер Nmap сделает своё дело. Наведём «официальную справку» о жертве:
- nmap -v -n 192.168.0.162
- - v позволяет получить подробный отчёт об адресе
- - n отключает реверсивные преобразования DNS
Мы видим, какие открыты порты с запущенными через них службами.
Посканируем систему ещё с целью более детальной информации на предмет операционной системы и версии службы. Команда примет вид (расположение флагов по команде произвольное):
nmap -T4 -A -v 192.168.0.162
Информации предостаточно. Выбираем место нанесения удара.
Открыта целая куча портов
, которые являются потенциальными лазейками в систему противника.
Пусть это будет один из открытых портов 135
с запущенной службой mcrpc
(она же Microsoft Windows RPC
- ссистемная служба удаленного вызова процедур). Нам остаётся подобрать под конкретный процесс подходящий эксплойт.
База данных эксплойтов. Пару секунд на теорию.
Если вы сейчас сидите в Кали, она, база, у вас под рукой. Нужно лишь соединение с сетью и запущенный msfconsole
(он же набор инструментов Metasploit)
. Постоянно пополняемая база эксплойтов, которые вы можете увидеть прямо сейчас, запустив консоль msfconsole
и набрав команду show exploits
,
отобразит список эксплойтов:
Отображение на экране списка вам пока ничего не скажет. Они представлены в алфавитном порядке с датой публикации, присвоенным рангом по применению и надёжности работы, а также коротким пояснением на что нацелен.
Своеобразным зеркалом базы
является знаменитый ресурс
Он целиком посвящён эксплойтам в том числе. И здесь можно (вооружившись словарём) подробнее познакомиться с историей эксплойта, скачать его напрямую (если захотите скомпоновать собственный эксплойт - об это потом), познакомиться с информацией по эксплойту. Вобщем, весь смак располагается здесь. Но есть ещё кое-что.
Неплохой ресурс
, на котором можно найти интересное, это:
ru.0day.today/
Многоязычный ресурс, который предлагает не только общеизвестные (читай - давно прикрытые) эксплойты, но и собственные варианты участников. За деньги. Посетите и ознакомьтесь: русский язык там тоже поддерживается.
Продолжаем. Ищем подходящий эксплойт.
Metasploit
напрямую связан с базой данных эксплойтов, так что шаги, которые вы увидите, можно не запоминать: Metasploit тем и хорош, что шаги его автоматизированы (что, впрочем, не всегда хорошо). Статья про эксплойт, и мы будем использовать только его, т.е. вручную. Найдём, скачаем, загрузим. Зачем вручную? Об этом в абзаце Проблемы эксплойта.
Как найти интересующий эксплойт?
Если вас интересует эксплойт, который можно применить против конкретной платформы или программы, можно не шерстить список из более чем полутора тысяч эксплойтов вручную, отображаемых командой
show exploits
Вместо этого вы можете набрать в открытой сессии Metasploit команду на манер:
search name:smb type:exploit platform:windows
Metasploit отобразит только те эксплойты, которые работают в ОС Windows
. Далее, если интересуют эксплойты браузеров в ОС Windows, разбавьте команду именем. Смотрите:
msf > search name:browser type:exploit platform:windows
Кроме того, в Кали Линукс доступен прямой поиск эксплойтов прямо из терминала без запущенной сессии Metasploit. Наберите команду на поиск эксплойта в формате:
searchsploit internet explorer
Терминал вам вернёт все имеющиеся эксплойты в базе, которая обновляется еженедельно.
Продолжим…
Итак, службу знаем, тип ОС видим. Так в базе данных и набираем: Search
-кнопка после ввода запроса:
windows rpc
Пройдём перед поиском верификацию на робота и знакомимся с результатами:
Вот и наш. Щёлкаем по ссылке, переходим по следующей ссылке Download, и он на нашем компьютере в
в виде файла 66.с.
ПОВТОРЮСЬ
.
Всё, что проделано выше, можно проделать быстрее. В запущенном Metasploit наберите команду на поиск эксплойта из вашей Кали:
Однако ситуация, когда подходящего эксплойта в базе Metasploit может и не найтись - не редкость. Так что, когда вы познакомитесь с работой эксплойтов поближе, можно себе позволить посвятить больше времени на поиск и компоновку нужного эксплойта. И в нашем случае мы подготовим скачанный эксплойт к инжектированию вручную. В терминале преобразуем его в бинарный файл (я предварительно перетащил 66.с из Загрузок в Рабочий стол ):
gcc 66.c -o 66
Теперь их два:
И запихиваю бинарник эксплойта прямиком в жертву XP:
./66 6 192.168.0.162
Система отозвалась. По-научному это называется Успешным результатом компрометации системы. Фактически этот компьютер уже в руках хакера. Хакер видит его, словно бы сидит за компьютером - он может управлять системой с помощью команд консоли. А теперь посмотрим, как используется эксплойт под управлением Metasploit. Порты жертвы мы уже «прозвонили»с помощью Nmap
. И как вы заметили, в числе прочих открыт ещё и 445
под управлением службы
Microsoft-ds
. В окне Metasploit
выберем подходящий эксплойт:
exploit/windows/smb/ms08_067_netapi
exploit
Компьютер владельцу уже не принадлежит.
Проблемы эксплойта или абзац для любителей «на всё готовое».
Эта часть заслуживает отдельной темы. Но хватит и лишь абзаца. Что подстерегает пентестера на пути применения эксплойта? Объясняю на пальцах (да простят профессионалы):
- первая проблема - старение уязвимости, на которую разработчики почти сразу устанавливают заплатку. Да, абсолютное большинство эксплойтов в том виде, как они существуют, не заслуживают вашего внимания. Они бесполезны - обновления систем безопасности их прикрывают. Так что выходов немного: пользуем 0day эксплойты (зеро-дэй ) - если сможете найти и применить; либо включаем голову и работаем над своими; это проблема номер один - нам приходится учиться на операционных системах и программах предыдущих поколений: причина проста - разработчики «забили» на поддержку (Windows XP типичный тому пример) и не реагируют на появляющиеся уязвимости даже при официальном уведомлении (не забывая, однако, проверять не проявится ли эта уязвимость в рабочих версиях программ или ОС-ей).
- вторая проблема (вытекает из первой) - если уязвимость опубликована, и существует для неё эксплойт, десятки специалистов уже работают над тем, чтобы уязвимость осталась в прошлом. Им платят. И люди, которые ищут уязвимости тоже хотят, чтобы платили им также. Так что не надейтесь на искатанную вдоль и поперёк уязвимость: прелесть кроется там, где тропинка не хожена. Если появилось то, что нужно, а ума или опыта нет - за это нужно порой платить (с риском остаться без результата и без денег). И не всегда тому виной будет пионер уязвимости и писатель эксплойта. Хотя бы потому, что есть проблема третья…
- технические моменты применения эксплойта заключаются в том, что ТО, ЧТО ПРОКАТИЛО на английской локали Windows СКОРЕЕ ВСЕГО НЕ ПРОКАТИТ на русской. Эксплойт, написанный для американской версии Windows оправданно не сработает для русской системы. Результат применения может стать неожиданным: до безмолвной ошибки с Metasploit типа Exploit seems to be failed до отказа службы на стороне системы жертвы, что заставит её насторожиться.