Автор: Киви Берд
Исторически сложилось так, что в майские дни — накануне летних сессий и отпусков — во всем мире проходит множество научных конференций, в том числе и по компьютерной безопасности. На сей раз май выдался необычно плодотворным на доклады по "хакерской" тематике. По-настоящему интересных, можно даже сказать, этапных работ опубликовано не меньше полудюжины. Мы расскажем лишь о трех из них: две были представлены на конференции IEEE по проблемам безопасности и приватности (IEEE Symposium on Security and Privacy), одна — на USENIX.
Команда из четырех человек, работающих в разных университетах США, разработала технологию автоматической генерации кода атаки на такую уязвимость в ПО, которая заранее неизвестна, а вычисляется путем сличения исходной и пропатченной версий программы [1].
Иначе говоря, инструкции для создания нового вредоносного кода предоставляет, по сути, сама программная заплатка, выпущенная с целью латания очередной дыры. Понятно, что в условиях открытых исходных кодов, где из дыр не делают тайны, а про всякий патч известно, что именно он латает, подобную разработку и приложить-то некуда. Но вот для платформ с закрытыми исходниками, вроде Windows, регулярно выпускать патчи, не объясняя, что они там лечат, — обычная и широко распространенная практика.
Разработанная ныне технология APEG (Automatic Patch-based Exploit Generation) позволяет за время от нескольких секунд до нескольких минут сгенерировать код атаки для большинства типов программных уязвимостей. По мнению разработчиков, это означает, что если корпорация Microsoft существенно не изменит способ распространения патчей среди клиентов, то последствия могут оказаться тяжелейшими. Ведь злоумышленники, заполучив в руки систему типа APEG, могут обнаружить уязвимость по свежевыпущенному патчу и провести атаку до того, как этот самый патч будет установлен на атакуемую машину.
Нельзя сказать, что APEG — принципиально новое слово в мире компьютерной безопасности — выявлением дыр по патчам, призванным их залатать, исследователи занимаются уже не первый год (см. врезку), но практически полностью автоматизировать этот процесс действительно удалось впервые.
Для этого разработчики весьма своеобразно применили математические техники автоматического доказательства теорем и подтверждения корректности логики системы.
Можно сказать, что алгоритм APEG работает как доказательство корректности системы, проводимое в обратную сторону. Сначала выявляются различия в исполняемых кодах программы до и после применения заплатки, а затем по ее коду анализируется, для чего она предназначена. Патчи безопасности обычно содержат тест, который определенным образом ограничивает допустимые значения на входе системы, но существует процедура из арсенала формального доказательства теорем, позволяющая пройти по коду и автоматически выявить набор входов, которые отлавливаются тестами нового патча. Когда это сделано, применяется специальный набор правил-эвристик для точной локализации места уязвимости, затем генерируется несколько вариантов кодов, потенциально способных эксплуатировать данную уязвимость, а тестовые испытания устанавливают, какой из кодов реально срабатывает.
Работоспособность APEG была проверена на пяти из недавних патчей Microsoft. После того как выявлялись различия в бинарных кодах исходной и пропатченной программ, системе требовалось от шести секунд до трех минут, чтобы сгенерировать вредоносный код, эксплуатирующий каждую из уязвимостей.
Строго говоря, нельзя утверждать, что APEG создает уже полностью готовые для реальной атаки средства. Не доказано и то, что технология универсальна, то есть может обнаруживать и использовать "в корыстных целях" любой тип уязвимостей. Тем не менее она показывает, что вредоносные коды на основе патчей действительно можно создавать очень быстро.
А это значит, что Microsoft не предпринимает адекватных шагов для затруднения подобных атак (которые, повторим, не столь уж и новы). В качестве возможных шагов для улучшения ситуации с защитой разработчики APEG предлагают Microsoft несколько решений:искусственное "затемнение" кода патча командамипустышками, шифрование патчей при рассылке с последующим распределением ключа для одновременной активации, использование пиринговых технологий для более быстрой повсеместной установки патчей.
Разумеется, ни одно из этих решений не устраняет проблему полностью, однако, по мнению ученых, делает ситуацию менее угрожающей.
В 2005 году, когда корпорация Microsoft в очередной раз выдала публике скупую информацию о латании критической уязвимости в браузере Internet Explorer, специалист по обратной инженерной разработке Халвар Флэйк (Halvar Flake) решил выяснить, в чем там дело. Компания Флэйка SABRE Security разработала на продажу специальный аналитический инструмент BinDiff для выявления различий в бинарных кодах программ, исследователь продемонстрировал эффективность нового инструмента на примере сравнения исходной и пропатченной версии браузера Microsoft.
Специфические отличия в версиях программ, указавшие на уязвимость в обработке графики формата PNG, были обнаружены и проанализированы меньше чем за двадцать минут. Конечно, столь впечатляющая скорость анализа не в последнюю очередь объясняется небольшими размерами PNG-патча, тем не менее демонстрация выглядела весьма эффектно и стала одним из первых наглядных примеров того, как код патча сам предоставляет информацию о скрытой в системе уязвимости.
После этой работы исследователи SABRE опубликовали еще несколько статей, где показали, как с помощью BinDiff по пакетам апдейтов Microsoft за несколько часов можно создавать вредоносные коды, эксплуатирующие разнообразные дыры в системе. Попутно выяснилось, что примерно тем же самым хакеры андеграунда занимались и прежде.
Теперь же инструменты вроде BinDiff или функционально похожей программы IDA Pro с их дружественным пользовательским интерфейсом существенно раздвинули границы как технологии, так и круга лиц, владеющих подобным инструментарием.
В каком-то смысле можно говорить, что публикация патчей-заплат в их традиционной форме все больше становится похожа на выпуск инструкций по поиску неизвестных уязвимостей в закрытой системе.
Следующая работа — с майской конференции семинара по крупномасштабным и новым компьютерным угрозам (USENIX workshop on Large-Scale Exploits and Emergent Threats [LEET]). Сотрудники Иллинойского университета (Урбана-Шампань) представили на удивление эффективный подход к добавлению аппаратных закладок в компьютеры общего назначения [2].
Исследователи показали, что внесения в схему процессора совсем небольшого (одна-две тысячи) числа элементов достаточно для обеспечения широкого спектра дистанционных атак, которые невозможно выявить или предотвратить с помощью традиционных софтверных подходов к безопасности. Правда, для проведения подобных атак требуется фундаментально скомпрометировать компьютеры на этапе их создания или сборки. Понятно, что злоумышленнику-одиночке это не по силам. Однако вполне по силам организованной преступности, не говоря уже о государственных спецслужбах.
Технически это выглядит так. Скрытые в процессоре вредоносные схемы обеспечивают атакующую сторону невидимым внутренним плацдармом для атак. Поскольку такие схемы занимают уровень, находящийся ниже стека программ, они способны обходить все традиционные техники защиты. Анализ подобных закладок только-только начинается, ограничиваясь случаями простейших троянцев. Более сложные схемы пока не исследованы, как и контрмеры, которые атакующая сторона может принимать для обхода предлагаемых форм защиты.
В работе [2] представлена общая конструкция и конкретные формы реализации так называемых IMPs (Illinois Malicious Processors, "иллинойских вредоносных процессоров"). Показано, что даже с учетом жестких ограничений по месту, его все равно достаточно для планирования разнообразных типов атак, а не одной узконаправленной. Такая гибкость схемы позволила разработчикам продемонстрировать две конкретные конструкции и реализовать их практически в конкретной системе FPGA-чипа, то есть процессора с перепрограммируемой логикой. Вот примеры, подтверждающие общую концепцию.
ЭСКАЛАЦИЯ ПРИВИЛЕГИЙ. Используя механизм доступа к памяти, реализован вредоносный сервис, поднимающий привилегии пользовательского процесса до высшего (root) уровня. При выполнении такой атаки программа эскалации привилегий использует аппаратную закладку в процессоре для отключения защиты привилегированных областей памяти. Для реализации механизма доступа к памяти требуется увеличить число гейтов логики в процессоре меньше, чем на 0,05%.
Он позволяет напрямую нарушать все предположения ОС относительно обеспечиваемой защиты памяти.
ВХОДНОЙ БЭКДОР. Используя специально разработанный механизм теневого режима, разработчики реализовали вредоносный сервис, служащий постоянным "черным ходом" в систему. Чтобы начать атаку захвата, злоумышленник посылает сетевой пакет в систему жертвы, где ОС первым делом инспектирует этот пакет, проверяя контрольную сумму UDP. Сам акт проверки пакета (необходимый для принятия решения о том, следует ли его отвергнуть) запускает троянскую закладку в железе, а вредоносная программа интерпретирует содержимое пакета как новый код прошивки, который невидимо загружается в процессор. Операционная же система тем временем отбрасывает непрошеный пакет и продолжает работу, не заметив атаки.
Код прошивки, реализующий теневой режим, отслеживает login-приложение для входа в систему. И когда некто пытается войти с особым, заранее известным закладке паролем, та подменяет значение функции проверки пароля на "правильный" и тем самым гарантирует доступ в систему любому, кто знает хитрость. Чтобы скрыть следы атаки, сразу после успешной попытки логина прошивка сама себя выгружает и отключает теневой режим, возвращая системе все ресурсы процессора. Таким образом, послав сетевой UDP-пакет и тут же войдя в систему, злоумышленник может сократить время работы теневого режима до минимума. Если же система жертвы не имеет выхода в сеть, то для включения закладки-бэкдора можно использовать похожий механизм на основе внешнего накопителя. Например, в USB-модуле флэш-памяти для этого подходит самый первый блок, необходимый для идентификации типа файловой системы. Механизм теневого режима увеличивает количество логических гейтов схемы всего на 0,08%, давая при этом неограниченный доступ к компьютеру без опоры на какиелибо программные уязвимости.
ПОХИЩЕНИЕ ПАРОЛЕЙ. С помощью того же механизма теневого режима можно реализовать сервис, ворующий пароли доступа у легитимных пользователей системы. Главная трудность здесь — отыскание паролей в гигантских массивах случайных данных. Но и эта задача вполне разрешима, коль скоро в символьных строках кода, относящегося к записи и считыванию паролей, присутствует слово Password. В развитие этой же темы исследователи продемонстрировали и два существенно разных способа для скрытного слива похищенных паролей в сеть — как на уровне ОС, так и на уровне прямой модификации пакетов.
Подводя итог, иллинойские исследователи без ложной скромности отмечают, что им удалось заложить фундаментальные основы конструирования процессоров с аппаратными закладками, способными обеспечивать весьма сложные и продвинутые атаки для тех, кто владеет секретами конструкции. Сделано же это, по словам разработчиков, дабы продемонстрировать, что при нынешней организации поставок микросхем заказчикам имеются все предпосылки для злоупотреблений.
То есть заинтересованные структуры, обладающие компетентными специалистами и надлежащими ресурсами, вполне способны разрабатывать и внедрять вредоносные микросхемы с аппаратными закладками.
Ученые наглядно продемонстрировали, что для закладок, несущих серьезную угрозу, требуется на удивление мало места в общей схеме, что чрезвычайно затрудняет их выявление. Для login-атаки, к примеру, потребовалось всего 1340 гейтов, а в результате злоумышленник получает полный высокоуровневый доступ к компьютеру. Причем та же самая аппаратная база способна поддерживать широкий спектр разных атак и достаточно гибка для динамических модификаций функциональности. В целом же, по мнению авторов работы, злонамеренные процессоры оказываются более практичны, гибки и более трудны для выявления, чем можно было предположить при начальном анализе проблемы. Иначе говоря, вредоносные аппаратные закладки явно заслуживают пристального внимания и тщательного изучения.
Группа исследователей из Саарландского университета (Саарбрюккен, Германия) представила работу [3], достойную увековечивания в каком-нибудь шпионском триллере. С помощью свободно доступного оборудования ученые продемонстрировали, что картинку с компьютерных дисплеев можно считывать по крошечным отражениям в столь обыденных предметах, как очки, чайники, ложки, пластиковые бутылки и даже по отражению в глазу человека. Единственное, по сути, что для этого требуется, — современный телескоп. Чем он мощнее и дороже, тем больше расстояние, с которого возможен столь экзотический метод шпионажа.
Как рассказывают участники проекта, эта идея родилась случайно, в один из погожих летних дней прошлого года, во время послеобеденной прогулки по университетскому кампусу. Кто-то обратил внимание, как много компьютеров работает за окнами окружающих домов и как было бы круто вот так, мимоходом, заглянуть в монитор каждого из них и посмотреть, кто чем занимается.
Начав исследование забавы ради, ученые обнаружили, что отражения, порождаемые окружающими дисплей предметами, могут давать на удивление четкую картинку. Для съемки же ее потребовался сравнительно дешевый, пятисотдолларовый телескоп с ПЗС матрицей, настроенный на регистрацию отражений.
С таким оборудованием, к примеру, на расстоянии около пяти метров по отражению на чайнике удалось получить вполне читаемое изображение текстового документа Word с размером шрифта 12 точек. При вдвое большем расстоянии размер все еще различимых букв составил 18 точек. Ну а когда через знакомых астрономов удалось раздобыть телескоп помощнее, модель Dobson за 27,5 тысячи долларов, то картинки-отражения вполне приличного для чтения качества стало возможным получать и при тридцатиметровом удалении.
С подобными результатами уже можно говорить о разработке нового метода добычи информации по компрометирующим оптическим излучениям. Так, находясь в соседнем здании, шпион в принципе способен скрытно считывать информацию с компьютера, дисплей которого стоит "спиной" к окну. По свидетельству разработчиков, они уже продемонстрировали свою технологию одной из германских спецслужб.
Что за этим последует, никто толком не знает, но результаты демонстрации специалисты признали вполне убедительными.
Впрочем, говоря о шпионских разработках "нового" канала утечки информации, надо подчеркнуть и его существенное отличие от других разновидностей компрометирующих побочных излучений. В данном случае прекрасно известны и легко осуществимы эффективные методы защиты от утечек. Ибо здесь достаточно лишь задернуть шторы или опустить жалюзи на окнах.
Побочные компрометирующие излучения в диапазоне видимого света можно именовать, по терминологии западных спецслужб, "оптическим темпестом" (словом "Tempest" в США и странах НАТО, начиная с 1950-х годов, стали называть утечки информации по побочным каналам). О том, применяются ли спецслужбами для шпионажа оптические темпест-устройства, сколь-нибудь достоверной информации нет (в отличие, скажем, от устройств электромагнитного радиодиапазона или особых акустических систем). Однако об открытых исследованиях академических институтов за последние годы опубликовано несколько весьма интересных работ, касающихся оптического темпеста.
Работающий в Кембридже немецкий ученый Маркус Кун в 2002 году показал, что имеется возможность с расстояния в несколько сотен метров восстанавливать картинку на экране телевизора или ЭЛТ-монитора по одному лишь мерцанию света в комнате. Куну для этого потребовались хорошая оптическая труба, качественный светочувствительный датчик и доскональное понимание тонкостей работы электроннолучевых трубок.
Примерно тогда же американский исследователь Джо Лоухри показал, что с помощью аналогичной техники — приличной оптики и светового сенсора — можно на расстоянии до полутора километров снимать данные с постоянно мигающих лампочекиндикаторов компьютерного оборудования. Например, в модемах, подключающих машину к сети, мигание светодиода соответствует битам проходящей через компьютер информации.
[1] "Automatic Patch-Based Exploit Generation" by David Brumley et al., www.cs.cmu.edu/~dbrumley/pubs/apeg.pdf.
[2] "Designing and Implementing Malicious Hardware" by Samuel T. King et al., www.usenix.org/event/leet08/tech/full_papers/king.
[3] "Compromising Reflections or How to Read LCD Monitors Around the Corner" by M. Backes et al., www.infsec.cs.uni-sb.de/~unruh/publications/reflections.pdf.