Хакеры взломали… Из-за новой уязвимости пострадали… Все данные пользователей слиты… Подобные заголовки уже давно стали обыденностью. И хотя большая часть таких инфоповодов, как в общем-то и всех «взломов», обусловлены не техническими уязвимостями, а человеческим фактором, — старая добрая эксплуатация уязвимостей все же существует и активно используется кибергопниками.
Эксплойт — это программа или даже просто фрагмент кода, необходимый для эксплуатации этих самых уязвимостей. О том, какими они бывают, как их создают, как от них защититься и почему они вообще существуют, мы и расскажем в сегодняшнем выпуске рубрики «Киберпаранойя». И, забегая вперед, помните: неуязвимых систем не существует.
Возможно, вам будет интересно:
Зачем нужны эксплойты
Как уже было написано выше, эксплойты создаются для эксплуатации уязвимостей. Однако какие именно возможности это дает — дело ситуативное. Так, например, с помощью эксплойта можно перехватить важную информацию, обойти ограничение разработчиков (например, получить root-права на системе Android) либо же и вовсе захватить полный контроль над железом — все очень ситуативно.
Для аналогии представьте, что эксплойт — это скиллы в области психологии. Что именно можно будет получить с их помощью, зависит лишь от вашей фантазии и возможностей «жертвы». В очень редких случаях эксплойты могут применяться с благими целями, для автоматизации при проведении пин-тестов, однако в 99,9% случаев их используют в «нехороших» целях.
Для 40% существующих уязвимостей есть общедоступные эксплойты, 35% из них сможет использовать 6-летний ребенок, умеющий читать и следовать инструкции. Такие дела :)
Виды эксплойтов
Мы уже знаем, что эксплойт — это программа или код для эксплуатации уязвимостей. Однако о каких именно уязвимостях идет речь? На самом деле о любых. Буквально — любых. Это может быть внедрение возможности интерпретации стороннего кода, выдача привилегий Администратора, или даже управление железом на низком уровне — когда злоумышленник буквально управляет железом, а не управляющей им программой.
Однако некоторая условная классификация эксплойтов все же есть. Прежде всего, эксплойты классифицируют по типу получения доступа:
Локальные — когда для получения контроля сначала требуется получить доступ к системе. Например, если вы откроете вредоносную ссылку или если вам вставят флешку с вирусом. Имеют меньший потенциал угрозы, так как от них можно защититься, соблюдая базовые меры предосторожности.
Удаленные — когда получение контроля не требует доступа к системе. Например, если ваш IP-адрес стал известен злоумышленнику (деанон/случайная атака) и ваc начали взламывать через сеть. Защититься от них, соблюдая базовые меры предосторожности, уже не получится.
Физические — когда для взлома используется воздействие на железо. Из самых простых примеров: речь может идти о снятии батарейки BIOS (сейчас не актуально) либо о подаче низкоуровневых сигналов на телефон с помощью специальных девайсов-программаторов. Защититься от подобного не смогут даже ИТ-гуру, так как для этого нужна еще и физическая защита уязвимости.
Кроме того, эксплойты могут классифицировать по типу их «жертвы», а именно:
Эксплойты для ОС — все то, что эксплуатирует уязвимости самой операционной системы.
Браузерные эксплойты — воздействие через недоработки браузеров.
Программные эксплойты — зловреды, проникающие с помощью уязвимости конкретных программ (например, через «дыры» в Zoom или WhatsApp).
Серверные эксплойты — код для захвата серверов.
CMS-эксплойты — код для эксплуатации уязвимостей систем управления контентом вроде Wordpress, Joomla и т. д.
Архитектурные — манипуляции с уязвимостями самой архитектуры. Например, переполнение буфера обмена или перегруз wi-fi-роутера «спамом», с целью заставить «клиента» транслировать хендшейки паролей в радиоэфире.
Протокольные — когда используются «дыры» конкретного протокола. Например, к таким можно отнести подделку запросов или перехват хендшейков wi-fi по радиосигналу.
Разветвленные — когда для воздействия используется совокупность нескольких «незначительных» уязвимостей.
Прочее — любые другие эксплойты.
Также эксплойты могут быть объединены в связки (а вы говорите «при чем тут арбитраж?!» :D) — когда код подобран под несколько версий «жертвы» сразу либо же под нескольких «жертв» конкретной уязвимости.
И все это может быть объединено в эксплойт-кит — набор связок для универсального решения задач кибергопника.
Эксплойты нулевого дня
Отдельного внимания заслуживают эксплойты нулевого дня — те, что уже созданы для эксплуатации конкретной уязвимости, но еще неизвестны общественности. Фактически таковыми можно считать сами уязвимости, при условии, что они известны кому-то, кроме разработчиков.
Почему вообще существуют уязвимости
Здесь все просто. Уязвимости могут появиться лишь в двух случаях: когда их создают случайно и когда их создают специально. Правда, последний случай корректнее называть бэкдором.
Что же касается случайного создания уязвимостей, это нужно просто принять. Да, какими бы умными ни казались нам программисты или инженеры — они тоже всего лишь люди и не могут учесть абсолютно все факторы.
Проще говоря, даже у антивирусных программ могут быть уязвимости, которые можно будет взломать с помощью соответствующего эксплойта. Правда, их нужно сначала найти.
Кроме того, есть еще такие факторы, как «взаимодействие» разного ПО/железа и банальная невнимательность разработчика. Нужно просто принять, что системы всегда будут уязвимы. Вы же спокойно относитесь к уязвимостям иммунитета?
Как создаются эксплойты
Что касается создания эксплойтов, на самом деле это не имеет никакого значения. Если уязвимость есть, найдена и использована во вред — жертве все равно, как именно создали эксплойт.
Однако для общего понимания темы все же приведем несколько методик создания эксплойтов:
Случайно — просто случайное обнаружение уязвимости, чтобы это ни значило.
Специально — здесь речь не про оставленные собственноручно бэкдоры, а про замалчивание уязвимости, найденной в созданном «коллегой» коде.
Реверс-инжиниринг —исследование устройств или программ с целью выявления возможностей, для которых они не создавались.
Fuzz-тестирование — стресс-нагрузка, призванная нарушить (выйти за границы) изначально заложенные рамки работы алгоритмов.
Дизассемблирование — изучение исполняемых процессором команд в пригодной для человеческого восприятия форме. Проще говоря, изучение программы «в том месте», где ее виртуальная часть преобразуется в реальную.
Нейросети — здесь будет крайне сложно что-то внятно объяснить, не превращая статью в 100500 томов БСЭ, поэтому — просто «использование нейросетей для создания эксплойтов».
Как защититься от эксплойтов
Ну и теперь наконец-то перейдем к самому важному — защите от эксплойтов. Забегая вперед, сразу ответим — никак. Буквально никак. Как так? А вот так :) Но на самом деле все не так плохо: многие эксплойты известны и «заплатки» все же существуют. Фразой «никак» мы лишь хотим подчеркнуть тот факт, что защита от конкретных эксплойтов не гарантирует вам абсолютную безопасность — ведь всегда могут быть найдены новые уязвимости.
В общем же случае советуем придерживаться следующих рекомендаций:
Регулярно обновлять ПО — в 2017-м с помощью эксплойта ms17_010_eternalblue злоумышленникам удалось получить доступ к такому количеству компьютеров, что Microsoft выкатил обновления даже для тех версий Windows, которые уже были официально «закрыты». Проще говоря, если у вас Windows 10 (Redstone 1 и выше), то с 95% вероятностью контроль над вашим ПК сможет получить любой умеющий читать школьник. Для этого ему нужно будет лишь знать ваш IP-адрес. Обновления для «списанных» Windows выкатили, но кто заморочился его установкой?
Юзать лицензию — вы же не думаете всерьез, что кто-то будет бесплатно что-то взламывать для вас по доброте душевной? Ну ладно, конкретно для вас, может, и будет — вы же наш дорогой читатель :) Но выкладывать в общий доступ — явно нет. А все эти «результаты сканирования на вирусы» — все равно что описание преимуществ китайской двери из 1 мм жестянки.
Изучать кибергоп-тренды — если вы осознали «всю глубину наших глубин» и задумались о том, как себя обезопасить, то следите за актуальными трендами. Любой эксплойт, ставший известным общественности, стараются максимально быстро пофиксить — просто гуглите новости и скачивайте официальные «заплатки».
Юзайте изолированную среду — существуют специальные «Песочницы», использование которых может немного снизить риск заражения. Впрочем, современный вредоносный код уже давно обучен понимать, не находится ли он в изолированной среде, а иногда умеет и «выходить за грани» Песочницы».
Изучать эксплойты — чтобы защититься, вам не обязательно покупать эксплойт у хакеров в даркнете, достаточно просто прочитать его описание в объявлении. Если какая-то новость обошла вас стороной — такой подход может помочь залатать дыры.
Изучайте тему — общая компетенция в области кибербезопасности позволит вам если не противодействовать эксплойтам, то хотя бы иметь представление о том, где могут быть ваши уязвимости, и не подставлять их под удар.
Не светите ценным — если у вас есть бабки или информация, шансы быть взломанным повышаются в разы. Если же вы еще и светите этим на публику — экспоненциально.
Никак — буквально. Выше мы уже использовали эту формулировку для акцента на том, что защита не является абсолютной, но в данном случае речь про эксплойты нулевого дня. Вам нужно принять, что уже есть уязвимости, которые будут использованы, но о которых еще ничего не известно — защититься от них можно, лишь отказавшись от гаджетов и интернета. Проще говоря, все критически важное не должно контактировать с сетью.
Подводя итоги
Надеемся, нам удалось «нагнать жути» и вызвать раздражение у вашего внутреннего киберпараноика — ведь теперь вы знаете немного больше об эксплойтах и том, насколько они опасны для рядового пользователя.
Помните, кибергопы никогда не спят, и вопрос безопасности — это вечная гонка, где обе стороны постоянно эволюционируют. Самая коварная уязвимость — это вера в неуязвимость. Изучайте тему — и пусть все зловреды обойдут вас стороной.