Лекция
Привет, Вы узнаете о том , что такое бэкдор , Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое бэкдор , настоятельно рекомендую прочитать все из категории Криптоанализ, Виды уязвимости и защита Информации .
бэкдор , тайный вход (от англ. back door — «черный ход», буквально «задняя дверь») — дефект алгоритма, который намеренно встраивается в него разработчиком и позволяет получить несанкционированный доступ к данным или удаленному управлению операционной системой и компьютером в целом .
Основной целью бэкдора является скрытное и быстрое получение доступа к данным, в большинстве случаев — к зашифрованным и защищенным. Например, бэкдор может быть встроен в алгоритм шифрования для последующей прослушки защищенного канала злоумышленником.
Бэкдор является обычно скрытыми методами обхода аутентификации или шифрования в компьютерном , продукте, встроенное устройство (например, домашний маршрутизатора ), или его вариант осуществление (например , часть криптосистемы , алгоритм , набор микросхем , или даже «Homunculus компьютера» - крошечный компьютер внутри компьютера, такой как в технологии Intel AMT ). Бэкдоры чаще всего используются для защиты удаленного доступа к компьютеру или получения доступа к незашифрованному тексту в криптографических системах.. Оттуда его можно использовать для получения доступа к конфиденциальной информации, такой как пароли, повреждение или удаление данных на жестких дисках, а также для передачи информации в автоматических сетях.
Черный ход может иметь форму скрытой части программы, отдельная программа (например , Back Orifice может разрушить систему через руткит ), код в прошивке аппаратного обеспечения , или его части в операционной системе например Windows . Троянские кони могут использоваться для создания уязвимостей в устройстве. Троянский конь может показаться вполне законной программой, но при запуске он запускает действие, которое может установить бэкдор. Хотя некоторые из них устанавливаются тайно, другие бэкдоры являются преднамеренными и широко известны. Бэкдоры такого типа используются в «законных» целях, например, для предоставления производителю возможности восстановить пароли пользователей.
Многие системы, хранящие информацию в облаке, не могут обеспечить точные меры безопасности. Если в облаке подключено много систем, хакеры могут получить доступ ко всем другим платформам через наиболее уязвимую систему.
Пароли по умолчанию (или другие учетные данные по умолчанию) могут работать как бэкдоры, если они не изменяются пользователем. Некоторые функции отладки также могут действовать как бэкдоры, если они не удалены в версии выпуска. [10]
В 1993 году правительство Соединенных Штатов попыталось развернуть систему шифрования , чип Clipper , с явным бэкдором для доступа правоохранительных органов и национальной безопасности. Чип оказался неудачным.
Данный генератор был разработан в АНБ и стандартизован в качестве криптографически стойкого генератора псевдослучайных чисел национальным институтом стандартов и технологий США NIST в 2006 году. Однако уже в 2007 году независимыми исследователями было высказано предположение, что в этот алгоритм мог быть встроен бэкдор.
Иллюстрация работы алгоритма согласно спецификации АНБ:
Данный алгоритм использует эллиптические кривые. — генератор группы точек на эллиптической кривой, — точка на эллиптической кривой — константа, определенная стандартом, как она была выбрана неизвестно. Параметры самой кривой также заданы стандартом.
Принцип работы:
Уравнение кривой
можно переписать в виде и записать следующие выражения для работы алгоритма:
, ,
— внутреннее состояние генератора на текущем шаге
— внутреннее состояние генератора на следующем шаге
— выход генератора на текущем шаге
Предполагаемый бэкдор:
Так как — простое число, то существуют такое число , что . Нахождение — вычислительно сложная задача дискретного логарифмирования на эллиптической кривой, для решения которой на сегодняшний день не существует эффективных алгоритмов. Но если предположить, что злоумышленник знает , то получается следующая атака: Если — очередной выход генератора, и если существует такое , что , то точка , лежит на кривой и для нее выполняется следующее равенство: . Об этом говорит сайт https://intellect.icu . Зная число можно вычислить: . Таким образом, злоумышленник, знающий число , может не только вычислить следующий выход генератора, но и быстро перебрать все возможные внутренние состояния генератора и восстановить его начальное внутреннее состояние. Согласно независимым исследованиям , при знании достаточно всего 30 байт выходной последовательности генератора, чтобы простым перебором значений восстановить его начальное внутреннее состояние. По мнению исследователей, такая уязвимость может быть расценена как бэкдор.
Исследователями компании Яндекс была обнаружена уязвимость в реализации протокола TLS в одном из программных продуктов Apple . По их мнению, данная ошибка вполне может оказаться бэкдором, намеренно встроенным в алгоритм кем-то из разработчиков.
Участок кода с ошибкой:
static DSStatus SSLVerifySignedServerKeyExchnge(....)
{
DSStatus err;
....
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((SSHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
....
fail:
....
return err;
}
Как можно видеть, после первого оператора if стоят две строчки goto fail, и вторая строчка выполняется всегда, независимо от результата if. Таким образом процедура проверки сертификата проходит не полностью. Злоумышленник, знающий об этой уязвимости, может подделать сертификат и пройти проверку подлинности. Это позволит ему организовать атаку типа «Человек посередине», тем самым вмешаться в защищенное соединение между клиентом и сервером. Исследователи, обнаружившие данную ошибку в реализации, не могут точно сказать, намеренно она была сделана или случайно. Вполне возможно, что это бэкдор, встроенный в алгоритм кем-то из разработчиков.
Очень многие современные криптографические алгоритмы используют при своей работе определенный набор внутренних констант. Как правило, эти константы задаются стандартом и выбираются из соображений криптографической стойкости к известным на данный момент видам криптоанализа. Но выбор констант при стандартизации алгоритма теоретически может быть использован разработчиками и со злым умыслом: например, для создания определенных уязвимостей и бэкдоров в алгоритме.
В качестве такого примера использования констант можно привести недавние исследовательские работы на тему так называемого «вредоносного хеширования» , где авторам удалось построить коллизии для криптографической хеш-функции SHA1 путем модификации ее раундовых констант. Отметим, что предложенная авторами исследования атака не является атакой на саму хеш-функцию SHA1, она позволяет лишь находить коллизии при условии возможности изменения раундовых констант и только для определенных типов файлов.
Краткое описание SHA1:
SHA1 — современная раундовая хеш-функция. Алгоритм хеширования следующий:
Построение коллизий:
Целью рассматриваемой атаки является нахождение таких констант и таких сообщений и , что . Данная атака модифицирует только первые 512 бит (1-ый блок) сообщений для которых требуется построить коллизию. Алгоритм базируется на уже известной разностной атаке на SHA1, предложенной в 2005 году и имеющей сложность порядка операций, что делает ее трудноосуществимой на практике. Поэтому до настоящего времени ни одной реальной коллизии для SHA1 найдено не было.
Но в случае создания вредоносного варианта SHA1 злоумышленник может варьировать не только блоки сообщений и , но и раундовые константы . Согласно исследованиям , это сильно снижает сложность атаки до порядка операций и делает построение таких коллизий реальной задачей которую можно выполнить на нескольких компьютерах. Таким образом, авторам исследования удалось построить одноблоковые коллизии для многих известных типов файлов.
Одноблоковая коллизия:
и — первые блоки сообщений (512 бит), которые отличаются между собой, но дают одинаковую хеш-сумму
— остальное содержимое, которое одинаково для обоих файлов
С помощью описанной атаки были созданы два sh-скрипта, которые при выборе дают одинаковую хеш-сумму SHA1, но работают по-разному.
Как можно видеть, различие между этими двумя скриптами заключается только в первых блоках по 512 бит, которые представляют из себя закоментированный мусор. Но содержимое этих блоков затем используется в условии if , следовательно скрипты при запуске работают по-разному. Подобные файлы могут быть использованы создателем со злым умыслом.
Бэкдоры могут встраиваться не только в программное обеспечение, но и в аппаратуру. Подобные бэкдоры могут использоваться производителями аппаратной начинки для встраивания в нее вредоносных функций на этапе производства.
Аппаратные бэкдоры имеют ряд преимуществ над программными:
Примером аппаратного бэкдора может быть вредоносная прошивка BIOS. Согласно исследованиям[12], такая прошивка может быть построена на основе свободных прошивок Coreboot[13] и SeaBIOS. Coreboot не является полноценным BIOS: он отвечает только за обнаружение имеющегося на машине оборудования и передачу управления самой «начинке BIOS», в качестве которой может быть использован модифицированный злоумышленником под свои нужды SeaBIOS.
Принцип действия вредоносной прошивки кратко можно описать так: сразу после включения зараженного компьютера, еще до загрузки операционной системы, она производит попытку установить соединение с сервером злоумышленника через интернет. Если такая попытка удалась, то производится удаленная загрузка какого-нибудь буткита, который уже в свою очередь предоставляет злоумышленнику возможность производить с зараженным компьютером вредоносные действия: кражу данных или удаленное управление. Если же попытка соединения с интернетом не удалась, то происходит нормальная загрузка операционной системы. Несомненным плюсом для злоумышленника является то, что сама по себе модифицированная прошивка не содержит в себе никакого вредоносного кода, а буткиты трудно обнаруживаются.
Изощренная форма бэкдора черного ящика - бэкдор компилятора , где не только компилятор подрывается (чтобы вставить бэкдор в какую-то другую программу, например, программу входа в систему), но и дополнительно модифицируется, чтобы определять, когда он компилируется, а затем вставляет как код вставки бэкдора (нацеленный на другую программу), так и самокомпиляцию, изменяющую код, подобно механизму, посредством которого ретровирусы заражают свой хост. Это можно сделать, изменив исходный код, и полученный скомпрометированный компилятор (объектный код) может скомпилировать исходный (немодифицированный) исходный код и вставить себя: эксплойт был загружен.
Эта атака была первоначально представлена в Karger & Schell (1974 , стр. 52, раздел 3.4.5: «Вставка люка»), который представлял собой анализ безопасности Multics ВВС США , где описывалась такая атака на PL / Я составляю компилятор и называю это «ловушкой для компилятора»; они также упоминают вариант, в котором код инициализации системы модифицируется для вставки бэкдора во время загрузки , поскольку это сложно и плохо понимается, и называют его «лазейкой инициализации»; это теперь известно как вирус загрузочного сектора . [19]
Затем эта атака была фактически реализована и популяризирована Кеном Томпсоном в его речи на церемонии вручения премии Тьюринга в 1983 г. (опубликовано в 1984 г.) «Размышления о доверии» [18], в которой указывается, что доверие относительное, и единственное программное обеспечение, которое действительно может trust - это код, в котором проверяется каждый шаг начальной загрузки. Этот механизм бэкдора основан на том факте, что люди просматривают только исходный (написанный человеком) код, а не скомпилированный машинный код ( объектный код ). Программа называется компилятор используется для создания второго из первых, и компилятора обычно доверял делать честную работу.
В статье Томпсона описана модифицированная версия компилятора Unix C , которая:
Поскольку сам компилятор был скомпилированной программой, пользователи вряд ли заметят инструкции машинного кода, которые выполняли эти задачи. (Из-за второй задачи исходный код компилятора будет казаться «чистым».) Что еще хуже, в доказательстве реализации концепции Томпсона , испорченный компилятор также подорвал программу анализа ( дизассемблер ), так что любой, кто исследовал двоичные файлы в Обычный способ на самом деле не будет видеть реальный запущенный код, а вместо этого будет что-то другое.
Обновленный анализ исходного эксплойта дан в Karger & Schell (2002 , раздел 3.2.4: люки компилятора), а исторический обзор и обзор литературы дан в Wheeler (2009 , раздел 2: Предпосылки и связанные с ним работы ). .
Версия Томпсона официально никогда не выпускалась в свет. Однако считается, что версия была распространена на BBN и было зарегистрировано как минимум одно использование бэкдора. [23] Имеются разрозненные анекдотические сообщения о таких бэкдорах в последующие годы.
В августе 2009 года подобная атака была обнаружена лабораториями Sophos. Вирус W32 / Induc-A заразил компилятор программ для Delphi , языка программирования Windows. Вирус представил свой собственный код при компиляции новых программ на Delphi, что позволило ему заражать и распространяться на многие системы без ведома программиста. Особенно сложно обнаружить атаку, которая распространяется путем создания собственного троянского коня . Считается, что вирус Induc-A распространялся по крайней мере за год до того, как был обнаружен. [24]
После того, как система была взломана с помощью бэкдора или троянского коня, такого как компилятор Trusting Trust , «законному» пользователю очень трудно восстановить контроль над системой - обычно нужно перестроить чистую систему и передать данные (но не исполняемые файлы) над. Однако было предложено несколько практических недостатков схемы Trusting Trust . Например, достаточно мотивированный пользователь может тщательно просмотреть машинный код ненадежного компилятора перед его использованием. Как упоминалось выше, есть способы скрыть троянского коня, такие как подрыв дизассемблера; но есть способы противостоять и этой защите, например, написать собственный дизассемблер с нуля.
Общий метод противодействия атакам на доверительные отношения называется Diverse Double-Compiling (DDC). Для этого метода требуется другой компилятор и исходный код тестируемого компилятора. Этот источник, скомпилированный обоими компиляторами, приводит к созданию двух разных компиляторов стадии 1, которые, однако, должны иметь одинаковое поведение. Таким образом, один и тот же исходный код, скомпилированный обоими компиляторами стадии 1, должен затем привести к двум идентичным компиляторам стадии 2. Приводится формальное доказательство того, что последнее сравнение гарантирует соответствие предполагаемого исходного кода и исполняемого файла тестируемого компилятора при некоторых предположениях. Этот метод был применен его автором для проверки того, что компилятор C пакета GCC (v. 3.0.4) не содержит трояна, используя icc (v. 11.0) в качестве другого компилятора. [25]
На практике такие проверки не выполняются конечными пользователями, за исключением крайних случаев обнаружения и анализа вторжений из-за редкости таких сложных атак и потому, что программы обычно распространяются в двоичной форме. Удаление бэкдоров (включая бэкдоры компилятора) обычно выполняется путем простого восстановления чистой системы. Тем не менее, сложные проверки представляют интерес для поставщиков операционных систем, чтобы гарантировать, что они не распространяют скомпрометированную систему, и в настройках с высоким уровнем безопасности, где такие атаки являются реальной проблемой.
Исследование, описанное в статье про бэкдор , подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое бэкдор и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Криптоанализ, Виды уязвимости и защита Информации
Комментарии
Оставить комментарий
Криптоанализ, Виды уязвимости и защита Информации
Термины: Криптоанализ, Виды уязвимости и защита Информации