Что такое эксплойт ?

В статье описывается сущность, принцип применения и роль эксплойта во взломе системы. Рассмотрен вопрос где эксплойт взять, есть ли смысл его скачивать или покупать, и почему подтверждённый эксплойт может не сработать.

Что такое эксплойт ?

«Официальное» определение можно прочитать в компьютерных энциклопедиях. Мне нравится такое: «В зависимости от назначения — программа, кусок кода или скрипт, которые позволяют получить выгоду от использования существующей уязвимости в программном обеспечении для чего угодно, что программно управляется». В каком-то смысле молоток против смартфона тоже является техническим эксплойтом, действующим с примитивной целью — уничтожить устройство. Сладкие конфеты против зубной эмали действуют также.

Откуда появляется эксплойт? Любители конкретики — пропускайте часть.

Где известна уязвимость, там, вероятно, может появиться и эксплойт. Уязвимость же можно толковать также по-разному. Википедия, как мне кажется, даёт немного неверное определение. Уязвимость — это не всегда ошибка или недостаток. Ахиллесова пята есть у любого механизма. Ну нельзя назвать ошибкой тот факт, что двигатель работает от топлива. Ведь, если он будет работать на воздухе, это также сразу станет его недостатком. Как и металл, из которого он собран; человек, который им управляет… Недостатки есть у всего, и профессионалам они также видны во всём.

Самое простое объяснение такой мысли — «взаимоотношения» человека и вируса. Биологического. В нашем организме всё продумано до мелочей, однако, столкнувшись с микрокодом извне, он выходит из строя на время или навсегда. Уязвимость — это просто неспособность механизма (в том числе и программного) адекватно реагировать на некое действие со стороны, сохраняя при этом заложенные в него (механизм) характеристики и функционал. И эксплойт называется эксплойтом только если позволяет получить от уязвимости выгоду. Не сочтите за белетристику, это важно понять сразу.

Немного об уязвимостях.

Модули Метаса, содержащие эксплойты, и направлены на уязвимости. У пентестеров принято формализовывать методы, по которым эти уязвимости группируются. Таким образом был создан постоянно расширяющийся словарь Common Vulnerabilities and Exposures (CVE) — Общепринятых Уязвимостей и Обнаружений. Так что запоминайте: с аббревиатурой CVE вы не раз столкнётесь. Его цель: немецкие и китайские хакеры должны быть уверены, что говорят об одной и той же дыре в безопасности. И все они видят такие уязвимости в формате:

CVE — ГОД_ВЫПУСКА — ПРИСВОЕННЫЙ_ИДЕНТИФИКАТОР

например

CVE 2008-4250

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

https://cve.mitre.org/

На самом деле уязвимостей, которые способны раскрыть секреты хозяина, гораздо больше, чем официальный список этого бюллетеня. Да, чтобы попасть в этот словарь, уязвимости нужно место «заслужить». И конкретной организации, которая официально этим занимается, конечно нет. Всё зависит от того, на что будет направлен будущий эксплойт — уязвимости без эксплойта не существует. Но в любом случае почти все дороги ведут на Exploit Database и указанный веше ресурс.

Отдельной строкой идут проблемы безопасности для продуктов от Майкрософт. Они формируются отдельным списком под названием Бюллетень Безопасности Майкрософт. Их уязвимости принято группировать таким макаром:

MSYY-XXX

где, YY — год обнаружения, ХХХ — присвоенный ID.

Вернёмся к хакерам. Какие эксплойты бывают?

Условно их все можно раскидать по трём кучкам:

  • эксплойт сервиса
  • эксплойт клиента
  • эксплойт привилегий

Эксплойт сервиса атакует некую службу, которая, например, слушает сетевые соединения. Служба занимается тем, что собирает сетевые пакеты и ждёт, когда пользователь инициирует соединение с сетью (запускает браузер). А так может поступить и хакер, создав свои пакеты для этого сервиса и вызвать полноценный запуск службы, которая (без ведома пользователя) полезет в сеть.

Эксплойт клиента — он же клиентский эксплойт — сфокусирован на атаке клиентского приложения, которое получает некий контент от компьютера-сервера. Основан на том, что жертва будет проводить какие-то действия, а программа-клиент должна активно с этим контентом работать. Проще говоря, моя задача как хакера заставить вас щёлкнуть по ссылке, открыть некий документ, попасть на вредоносный сайт.

Эксплойт привилегий. Его задача — добиться усиления уже имеющихся в системе прав. Например, получить права администратора из гостевой УЗ. А там и до SYSTEM недалеко… К примеру, в Windows XP есть такая уязвимость, когда нехитрыми движениями можно получить наивысшие права в системе. Причём уязвимость лежала на поверхности. Не поленитесь и взгляните на статью — объяснения станут излишними.

Процесс эксплойта и его роль в атаке на компьютер.

эксплойт

Постепенно мы подбираемся к принципу, как работает компрометация системы. Каждый из этих этапов — это очень сложный процесс, требующий многотомного руководства. Но схематично это можно отобразить так:

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

Как это выглядит воочию или как работать с эксплойтом?

Для примера используем ОС Кали Линукс в качестве хозяйской и Windows XP (эксплойт древний, начиная с уже с Windows XP SP2 он уже делает это менее охотно) в качестве гостевой в VirtualBox. Нам, конечно, известно, какие характеристики имеются у гостевой машины в сети (в нашем случае виртуальной), но пусть сканер Nmap сделает своё дело. Наведём «официальную справку» о жертве:

nmap -v -n 192.168.0.162

где 192.168.0.162 — ip адрес жертвы. Если вы знакомы с основными командами Nmap, то поняли, что флаги:

  • — v позволяет получить подробный отчёт об адресе
  • — n отключает реверсивные преобразования DNS

простое сканирование nmap

Мы видим, какие открыты порты с запущенными через них службами. Посканируем систему ещё с целью более детальной информации на предмет операционной системы и версии службы. Команда примет вид (расположение флагов по команде произвольное):

nmap -T4 -A -v 192.168.0.162

вторая команда nmap

Информации предостаточно. Выбираем место нанесения удара. Открыта целая куча портов, которые являются потенциальными лазейками в систему противника. Пусть это будет один из открытых портов 135 с запущенной службой mcrpc (она же Microsoft Windows RPC — ссистемная служба удаленного вызова процедур). Нам остаётся подобрать под конкретный процесс подходящий эксплойт.

База данных эксплойтов. Пару секунд на теорию.

Если вы сейчас сидите в Кали, она, база, у вас под рукой. Нужно лишь соединение с сетью и запущенный msfconsole (он же набор инструментов Metasploit). Постоянно пополняемая база эксплойтов, которые вы можете увидеть прямо сейчас, запустив консоль msfconsole и набрав команду show exploits, отобразит список эксплойтов:

список эксплойтов

Отображение на экране списка вам пока ничего не скажет. Они представлены в алфавитном порядке с датой публикации, присвоенным рангом по применению и надёжности работы, а также коротким пояснением на что нацелен.

Своеобразным зеркалом базы является знаменитый ресурс

https://www.exploit-db.com/

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

Неплохой ресурс, на котором можно найти интересное, это:

ru.0day.today/

Многоязычный ресурс, который предлагает не только общеизвестные (читай — давно прикрытые) эксплойты, но и собственные варианты участников. За деньги. Посетите и ознакомьтесь: русский язык там тоже поддерживается.

Продолжаем. Ищем подходящий эксплойт.

Metasploit напрямую связан с базой данных эксплойтов, так что шаги, которые вы увидите, можно не запоминать: Метас тем и хорош, что шаги его автоматизированы (что, впрочем, не всегда хорошо). Статья про эксплойт, и мы будем использовать только его, т.е. вручную. Найдём, скачаем, загрузим. Зачем вручную? Об этом в абзаце Проблемы эксплойта.

Как найти интересующий эксплойт?

Если вас интересует эксплойт, который можно применить против конкретной платформы или программы, можно не шерстить список из более чем полутора тысяч эксплойтов вручную, отображаемых командой

show exploits

Вместо этого вы можете набрать в открытой сессии Метаса команду на манер:

search name:smb type:exploit platform:windows

Метас отобразит только те эксплойты, которые работают в ОС Windows. Далее, если интересуют эксплойты браузеров в ОС Windows, разбавьте команду именем. Смотрите:

msf > search name:browser type:exploit platform:windows

как найти нужный эксплойт в базе метасплойт

Кроме того, в Кали Линукс доступен прямой поиск эксплойтов прямо из терминала без запущенной сессии Метаса. Наберите команду на поиск эксплойта в формате:

searchsploit internet explorer

Терминал вам вернёт все имеющиеся эксплойты в базе, которая обновляется еженедельно.

Продолжим…

Итак, службу знаем, тип ОС видим. Так в базе данных и набираем: Search-кнопка после ввода запроса:

windows rpc

Пройдём перед поиском верификацию на робота и знакомимся с результатами:

нужный эксплойт в базе данных

Вот и наш. Щёлкаем по ссылке, переходим по следующей ссылке Download, и он на нашем компьютере в Загрузках в виде файла 66.с.

файл эксплойта

ПОВТОРЮСЬ. Всё, что проделано выше, можно проделать быстрее. В запущенном Метасе наберите команду на поиск эксплойта из вашей Кали:

эксплойт в метасплойте

Однако ситуация, когда подходящего эксплойта в базе Метаса может и не найтись — не редкость. Так что, когда вы познакомитесь с работой эксплойтов поближе, можно себе позволить посвятить больше времени на поиск и компоновку нужного эксплойта. И в нашем случае мы подготовим скачанный эксплойт к инжектированию вручную. В терминале преобразуем его в бинарный файл (я предварительно  перетащил 66.с из Загрузок в Рабочий стол):

gcc 66.c -o 66

Теперь их два:

преобразование в бинарный файл

И запихиваю бинарник эксплойта прямиком в жертву XP:

./66 6 192.168.0.162

подсовываем эксплойт жертве

Система отозвалась. По-научному это называется Успешным результатом компрометации системы. Фактически этот компьютер уже в руках хакера. Хакер видит его, словно бы сидит за компьютером — он может управлять системой с помощью команд консоли. А теперь посмотрим, как используется эксплойт под управлением Метаса. Порты жертвы мы уже «прозвонили»с помощью Nmap. И как вы заметили, в числе прочих открыт ещё и 445 под управлением службы Microsoft-ds. В окне Metasploit выберем подходящий эксплойт:

exploit/windows/smb/ms08_067_netapi

Возьмём его на вооружение:

use exploit/windows/smb/ms08_067_netapi

Проверим, что нужно для его успешной реализации командой:

show options

Строка с адресом удалённого хоста RHOST пуста. Заполним её IP адресом жертвы:

установка ip адреса

Погнали:

exploit

удачный эксплойт

Компьютер владельцу уже не принадлежит.

Проблемы эксплойта или абзац для любителей «на всё готовое».

Эта часть статьи заслуживает отдельной темы. Но пока отведу ей лишь абзац. Что подстерегает пентестера на пути применения эксплойта? Объясняю на пальцах (да простят профессионалы):

  • первая проблема — старение уязвимости, на которую разработчики почти сразу устанавливают заплатку. Да, абсолютное большинство эксплойтов в том виде, как они существуют, не заслуживают вашего внимания. Они бесполезны — обновления систем безопасности их прикрывают. Так что выходов немного: пользуем 0day эксплойты (зеро-дэй) — если сможете найти и применить; либо включаем голову и работаем над своими; это проблема номер один — нам приходится учиться на операционных системах и программах предыдущих поколений: причина проста — разработчики «забили» на поддержку (Windows XP типичный тому пример) и не реагируют на появляющиеся уязвимости даже при официальном уведомлении (не забывая, однако, проверять не проявится ли эта уязвимость в рабочих версиях программ или ОС-ей).
  • вторая проблема (вытекает из первой) — если уязвимость опубликована, и существует для неё эксплойт, десятки специалистов уже работают над тем, чтобы уязвимость осталась в прошлом. Им платят. И люди, которые ищут уязвимости тоже хотят, чтобы платили им также. Так что не надейтесь на искатанную вдоль и поперёк уязвимость: прелесть кроется там, где тропинка не хожена. Если появилось то, что нужно, а ума или опыта нет — за это нужно порой платить (с риском остаться без результата и без денег). И не всегда тому виной будет пионер уязвимости и писатель эксплойта. Хотя бы потому, что есть проблема третья…
  • технические моменты применения эксплойта заключаются в том, что ТО, ЧТО ПРОКАТИЛО на английской локали Windows СКОРЕЕ ВСЕГО НЕ ПРОКАТИТ на русской. Эксплойт, написанный для американской версии Windows оправданно не сработает для русской системы. Результат применения может стать неожиданным: до безмолвной ошибки с Метасе типа Exploit seems to be failed до отказа службы на стороне системы жертвы, что заставит её насторожиться. Тему развернём потом.

Пока всё. Итак длинно получилось. Успехов нам.

Запись опубликована в рубрике Linux, Чтобы знать. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

пятнадцать − 4 =