Что такое эксплоит и как его используют хакеры | Бабушкам PRO компьютер | Яндекс Дзен

Что такое эксплоит и как его используют хакеры

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

Для вводного ознакомления уясним, что эксплоиты, это часть компьютерного кода(или скомпилированная программа и не только ...), которая пользуется "уязвимостью жертвы" и далее цели разветвляются на: получение доступа;"подвешивания" сервера; нарушение работоспособности. Если читатель, сталкивался со словами "дос-атака", то знайте, что в 85%, хакеры использовали "эксплоиты". Собственно название, если перевести с английского, будет означать: "использование чего-либо". Или эксплуатирование, отсюда и корни слова "эксплоит".

Эти программы(будем зазывать эксплоиты программами, хоть это и не верно) разделяются по предназначениям: для виндовс, линукс и других операционок; для других программ и тд. И тп.

Думаю читателям хочется поскорее понять, как же выглядит эта волшебная программа, способная обрушить, подвешивать и предоставлять доступ "хозяину" на "чужой" сервер. Давайте сперва разберемся, почему договоренность называть эксплоит программой, не верно. Дело в том, что эксплоит не только скомпилированный файл, но и текстовый (даже блокнот с описанием того как взломать "систему" уже эксплоит). Понимаю легкое недопонимание читающего, но это так: если открыть блокнот и там в виде текста написать как "обрушить" какой-либо сервер, это так же будет эксплоитом. Но что бы хоть как то, разнообразить статью, давайте хоть иногда, писать слово: программа. Тем более такие эксплоиты попадаются и в виде программы на "любом" языке. Хакеры, это бывшие программисты которые в прошлом искали ошибки в программах, поэтому такие люди без труда владеют языками C/C++, Perl и тд. Задача таких программ сводится к переполнению буфера, записи sql, "липовых" запросов на сайт и тд.

Что такое эксплоит и как его используют хакеры

Случается использовать последовательность программ, на случай если задача предстоит "сложная".

Найти и скачать готовые эксплоиты в открытом интернете не законно. И конечно, автор не рекомендует искать такие программы в "даркнете".

Итак, теперь когда в голове отложилось понимание об эксплоитах, переходим к "виртуальной практике". Предположим ситуацию: в городе Воронеж, живёт мужчина, который регулярно летает в Москву и там "нашампуривает" замужнюю даму. Обманутый супруг, не в силах поймать любовника, решается на месть, но удаленно. Для этого мужу необходим доступ к компьютеру "негодяя". Не будем вдаваться в детали, но констатируем факт: стало известно каким браузером пользуется "коварный соперник". К счастью для продвинутого мужа, в этом браузере присутствует "уязвимость". Остается только заставить любовника "запустить код", который без ведома пользователя, подгрузит вредоносные программы "на стороне". Тогда муж пишет письмо, от имени жены и отправляет любовнику по почте. Далее результат понятен(открывает письмо, а код уже "в деле").

Знаменитые программы это: "Angler"(сложный набор (работает в ОЗУ));"Neutrino" (русское детище на джаве, стоимость 34 тысячи долларов);"Blackhole Kit"(бьёт по браузерам хром,"ослик", "фаерфокс").

Комментируйте("негативно\позитивно"). Подписывайтесь. Ставьте лайк. До свидания.

Привет, хабровчане. В преддверии старта курса «Administrator Linux. Professional» наш эксперт - Александр Колесников подготовил интересную статью, которой мы с радостью делимся с вами.Также приглашаем будущих студентов и всех желающих посетить открытый урок по теме «Методы и возможности отладки скриптов оболочки Bash».

Операционная система Linux доказала миру всю силу Open Source проектов — благодаря ей у нас сегодня есть возможность заглянуть в исходный код рабочей ОС и на его основе собрать свою собственную систему для решения тех или иных задач. По причине своей открытости Linux должна была стать самой безопасной операционной системой в мире, так как открытый исходный код позволяет развивать и улучшать подсистемы защиты от атак на ОС и совершенствовать саму операционную систему. Действительно, на данный момент существует большое количество созданных комьюнити защит: сегодня уже не так просто проэксплуатировать уязвимости типа переполнения буфера для получения повышенных привилегий так же, как 20 лет назад. Тем не менее, сегодня можно в открытом доступе встретить эксплойты, которые даже на последних версиях ядра могут повысить привилегии пользователя. Рассмотрим в этой статье, как это работает и почему так получается. Мы пройдемся по основным составляющим эксплойтов и рассмотрим, как работают некоторые из них.

Вся предоставленная информация была собрана исключительно в ознакомительных целях.

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

Выберем общий термин, которым будем обозначать, что есть эксплойт — алгоритм, который нарушает нормальное функционирование операционной системы, а именно — механизмы разграничения доступа. Также введем понятие уязвимости — это несовершенство программного обеспечения, которое может быть использовано алгоритмом эксплойта. Без уязвимости существование эксплойта невозможно. 

Введем классификацию эксплойтов. Базовое разделение эксплойтов на подгруппы для любой операционной системы начинается на уровне архитектуры. Сегодня операционные системы включают в себя как минимум 2 уровня привилегий, которые используют для своей работы. Ниже приведен рисунок, который наглядно показывает разделение привилегий. Картинка взята отсюда.

Картинка очень наглядно показывает, что в операционной системе присутствует уровень Ядра (Kernel Space), обычно это самый привилегированный режим, именно здесь находится то, что мы называем операционной системой. И второй уровень — Пользовательский (User Space): здесь запускаются обычные приложения и сервисы, которые мы используем каждый день.

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

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

Эксплойты

Представим небольшую статистику по раскрытию уязвимостей для  ядра операционной системы Linux дистрибутивов Debian, SUSE, Ubuntu, Arch Linux последних 4-х лет.

Данные взяты отсюда. Картина не претендует на полноту, но показывает, что уязвимостей достаточно много, и даже сегодня есть из чего выбирать для построения эксплойта. Давайте попробуем описать, что из себя представляет эксплойт.

Любой эксплойт для любого уровня операционной системы сегодня состоит из частей, которые должны быть имплементированы в его коде:

  1. Подготовительные операции:

    1) Выставление необходимого отображения памяти

    2) Создание необходимых объектов в ОС

    3) Обход механизмов защиты ОС для используемой уязвимости

  2.  Вызов уязвимой части ПО.

  3. Выполняет полезную нагрузку:

    1) Для открытия доступа к ОС

    2) Для изменения конфигурации ОС

    3) Для вывода ОС из строя

При выполнении всех пунктов, которые указаны выше, можно написать работоспособный эксплойт. Возьмем для исследования несколько эксплойтов прошлых лет и попробуем выяснить, можно ли найти какие-то закономерности или заимствования, которые используются для нарушения разграничений доступа в операционной системе Linux. В качестве объектов исследования возьмем эксплойты, которые используют следующие уязвимости с CVE идентификаторами:

CVE-2020-8835

CVE-2020-27194

Разбор эксплойтов

CVE-2020-8835 распространяется на ядро ОС Linux от версии 5.5.0. Уязвимость находится в имплементации технологии ebpf. Технология  была разработана для того, чтобы пользователь мог создавать кастомные обработчики для фильтрации сетевого трафика. В качестве основной составляющей для выполнения фильтрации используется виртуальная машина с собственным набором команд. Код, который выполняется виртуальной машиной, живет в ядре: ошибка в этом коде приносит атакующему возможность работать с памятью с максимальными привилегиями. В случае описываемой уязвимости проблема заключалась в том, что операции обработки команд длины 32 бита недостаточно корректно обрабатывались, и виртуальная машина могла писать и читать данные в оперативной памяти ядра.

Как автор эксплойта использует данную уязвимость и какая выполняется полезная нагрузка, рассмотрим дальше.

Подготовительный этап

За этот этап отвечает следующая часть кода.

Строка 394 — создание объекта в памяти, который будет хранить данные о командах для ebpf. Строка 400 загружает в память код, который будет выполняться в виртуальной машине и позволит нарушить условия обработки 32 битных команд. Подготовка памяти окончена, следующие строки будут создавать объект сокета, который обеспечит вызов загруженных команд для bpf. После этого начнется этап вызова уязвимости.

Вызов уязвимого кода

Вызов уязвимого кода, а точнее — работа с командами виртуальной машины, осуществляется со строки 423 по 441. Основная задача этого кода — получить базовый адрес структуры, которая находится в памяти, в данном случае это куча (heap) процесса. Как только эти команды выполнятся, эксплойт сможет обнаружить в памяти данные, используемые операционной системой для контроля разграничения доступа. В операционной системе Linux эти данные хранятся в структуре taskstruct.

Полезная нагрузка

Полезная нагрузка данного эксплойта заключается в том, что после его выполнения можно запустить процесс с правами пользователя root. Для этого код эксплойта производит модификацию полей структуры ядра операционной системы Linux — cred это структура, которая входит в структуру taskstruct. Исходный код структуры cred можно найти здесь.

Действия по модификации полей struct cred можно увидеть на строках 472,473,474. То есть этим действием обнуляется значение uid, gid, sgid создаваемого процесса. С точки зрения ОС это установка значений идентификаторов, которые обычно использует root. Метод очень похож на тот, который применяется для атак на операционную систему Windows.

Обезопасить себя без обновления ОС можно, если внести следующие изменения в конфиг: sudo sysctl kernel.unprivileged_bpf_disabled=1

CVE-2020-27194 — снова уязвимость в ebpf. Существует для ядра версий 5.8.*. Создатели этой технологии шутят, что bpf — это JavaScript для ядра. На самом деле это суждение не далеко от истины. Виртуальная машина действительно проводит манипуляции над командами с помощью технологии JIT, что само собой несет все типичные уязвимости браузеров в ядро операционной системы, то есть сложно настроить подсистемы защиты для того чтобы обезопасить выполнение кода. Рассматриваемая уязвимость заключается в том, что из кода виртуальной машины можно провести модификацию любой области оперативной памяти. Возможно это из-за того, что виртуальная машина небезопасно работает с операциями 64 битной длины. Полностью аналогичная уязвимость той, которую мы рассматривали выше.

Эксплойт, который создан для того, чтобы использовать описанную уязвимость, выполняет те же операции, что и эксплойт CVE-2020-8835. Алгоритм эксплойта следующий:

  1.  Загрузить код с обработкой 64 битных операций в память

  2.  Создать сокет и отправить данные для вызова команд ebpf

    1.  Найти в памяти адрес структуры taskstruct за счет выполнения команд в виртуальной машине

  3.  Модифицировать значения uid,gid,sgid и запустить интерактивную оболочку.

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

Защита от этой уязвимости без использования обновления такая же: sudo sysctl kernel.unprivileged_bpf_disabled=1

Что в итоге?

На основании двух эксплойтов, который были рассмотрены в статье, можно предположить, что повышение привилегий в современной ОС Linux — это больше не темная магия программирования, а вполне отлаженный шаблонный процесс, который включает в себя переиспользование функций и объектов в оперативной памяти. При этом даже не нужно писать базонезависимый (shellcode) код, который будет выполнять большую часть действий. Достаточно просто изменить идентификаторы, которые используются для назначения привилегий для пользователей.

Узнать подробнее о курсе «Administrator Linux. Professional».

Зарегистрироваться на открытый урок «Методы и возможности отладки скриптов оболочки Bash».

Читать ещё:

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

На стадии разработки во все программы и сети встраиваются механизмы защиты от хакеров по типу замков, предупреждающих несанкционированные посягновения извне. Уязвимость же похожа на открытое окно, пробраться через которое не составит большого труда для злоумышленника. В случае с компьютером или сетью злоумышленники могут установить вредоносное ПО, воспользовавшись уязвимостью, с целью получить контроль или инфицировать систему в своих корыстных целях с соответствующими последствиями. Чаше всего все это происходит без ведома пользователя.

Эксплойты
Как возникают эксплойты?

Эксплойты вызываются ошибками в процессе разработки программного обеспечения, в результате которых в системе защиты программ оказываются уязвимости, которые успешно используются киберпреступниками для получения неограниченного доступа к самой программе, а через нее дальше - ко всему компьютеру. Эксплойты классифицируются в соответствии с типом уязвимости, которая используется хакером: нулевого дня, DoS, спуфинг или XXS. Разумеется, разработчики программ в скором времени выпустят обновления безопасности с целью устранения найденных дефектов, однако до этого момента программа является по-прежнему уязвимой для злоумышленников.

Как распознать эксплойт?

Так как эксплойты используют бреши в механизмах безопасности программ, у рядового пользователя практически нет шансов определить их наличие. Именно поэтому чрезвычайно важно поддерживать установленные программы обновленными, в особенности своевременно устанавливать обновления безопасности, выпускаемые разработчиками программ. В случае, если разработчик ПО выпустит обновление безопасности для устранения известной уязвимости в своем ПО, но пользователь не установит его, то, к сожалению, программа не получит необходимые самые последние вирусные определения.

Как устранить эксплойт?

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

Как пресечь попытки хакеров воспользоваться уязвимостями сторонних программ
  • Убедитесь, что вы установили самые свежие обновления безопасности и патчи для всех программ
  • Чтобы быть в безопасности онлайн и оставаться в курсе событий, устанавливайте все обновления сразу после их выпуска
  • Установите и используйте антивирус класса премиум, который способен автоматически обновлять установленные программы
Обезопасьте себя от эксплойтов

Полагайтесь на здравый смысл и следуйте базовым правилам безопасной работы в Интернете. Хакеры могут воспользоваться уязвимостью только в том случае, если им удастся получить доступ к вашему ПК. Не открывайте вложения в подозрительных сообщениях и не загружайте файлы из неизвестных источников. Поддерживайте установленные программы обновленными, а также своевременно устанавливайте обновления безопасности. Если хотите максимально упростить эту задачу, скачайте антивирус Avast, который не только обеспечит надежную защиту от всех типов вредоносного ПО, но и поможет с установкой самых свежих обновлений для сторонних программ.

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