пятница, августа 03, 2007

Код New Blue Pill доступен для скачивания

История с Blue Pill имеет продолжение.
Invisible Things Lab написала New Blue Pill, на страничке Blue Pill Project выложены исходники и слайды. И есть еще пост Джоанны в блоге.
Чего пишут. Рассказывают, что методы обнаружения, предложенные ранее, работать не будут и вот почему. Обнаружение состоит из двух этапов.
1. Понять, что используется виртуализация.
2. Понять, что виртуализация используется злонамеренно, ну в данном случае, что это Blue Pill работает.

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

Это я все подчерпнула из слайдов, там есть примеры кода, схемы, куски дизассемблированного кода, вообще слайды здоровые. Там подробоно расписывается какие способы детектирования Blue Pill были предложены на данный момент и почему ни один из них работать не будет.

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

Самое интересное. Чего там с их Challenge'ем-то.
Джоанна пишет, что вопрос, почему она поставила свое условие с одной секундой остается как упражнение читателю. Я так понимаю, это нужно для работы Blue Chicken.
Говорит, что Challenge они выиграет легко, просто на части компьютеров запустит виртуальную машину с чем-нибудь безобидным и отличить это от Blue Pill будет невозможно. То есть подстрахуется, на случай, если Blue Chicken не справиться.
Про тонну денег, которую она хочет - ни слова. А пока она от этого требования не откажется, ничего не будет.

Updated 05.08.2007:
Пташек написал пост у себя и сказал, что они отлично смогут распознать как минимум неожиданную виртуализацию (unexpected virtualization). Подробности тут: Joanna’s Response To Our Talk.
Updated 07.08.2007:
Пташек выложил ссылку на их слайды.

6 коммент.:

Axxie комментирует...

Invisible Things Lab считает, что для операционных систем общего назначения на основе микроядра, вообще невозможно построить эффективную защиту ядра.

Только, как раз, не "на основе микроядра", а "на монолитном ядре". У нее даже в той записи написано:
The message of the first part was that we don’t believe it’s possible to implement effective kernel protection on any general purpose OS based on monolithic kernel design.

Дело в том, что ОС семейства NT, как, собственно, и две другие главные настольные ОС (Linux и FreeBSD/MacOS) построены по концепции монолитного ядра, а не микроядра. Виста в этом плане не исключение.

А то, что MS использует термин microkernel по отношению к своему ядру - это просто маркетинговый bullshit, и не более того.

Возможно микроядро было бы легче защитить от таких атак.

Алёна комментирует...

Только, как раз, не "на основе микроядра", а "на монолитном ядре". У нее даже в той записи написано:

Хм, хм... Я из слайдов брала. Там так написано:
We believe its not possible to implement effective kernel protection on General Purpose OSes based on a microkernel architecture
Это один из последних слайдов. Где-то они гонят, похоже.

А то, что MS использует термин microkernel по отношению к своему ядру - это просто маркетинговый bullshit, и не более того.

Я вот не знаю какое у них ядро, но поиском нашла три варианта ответа на этот вопрос: микроядро, монолитное и гибридное. Каждый раз вокруг этого вопроса разгарался хвостатый флейм. :-)

Dmitry комментирует...

А какая разница в том, какое ядро, монолитное или микро?

axxie комментирует...

Алёна
Я вот не знаю какое у них ядро, но поиском нашла три варианта ответа на этот вопрос: микроядро, монолитное и гибридное. Каждый раз вокруг этого вопроса разгарался хвостатый флейм. :-)

Ну и мы флейм разводить не будем.
Интересно, кстати, что Microsoft также разрабатывает систему на микроядре - Singularity. Видимо, то микроядро, которое входит в Windows, недостаточно "микро".

Dmitry
А какая разница в том, какое ядро, монолитное или микро?

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

Анонимный комментирует...

Ядро NT: оно гибридное на современном уровне определений. Монолитным оно просто не могло получиться по причине бэкграунда разрабатывавшей его команды. До этого эта команда работала в DEC и, я надеюсь, вы сможете вспомнить VMS, Open VMS, OSF/1. Ну а про микроядро можно сказать что в этом не были заинтересованы маркетологи MS (вы только посмотрите на то разнообразие продуктов от MS которые используют одно и то-же ядро, и на то каких трудов стоит внутренним командам используя одну базу построить чуть (хорошо, не совсем чуть :)) разные продукты). В итоге получилось то, что получилось... С одной стороны великолепные инженерные решения, с другой уступки маркетёрам приводящие к идиотизму в проектировании (и всё это в одном ядре :))

Prokrust комментирует...

На практике это вообще неважно, т.к. нет настольных ОС на микроядре.
QNX, но он дорогой для применения в качестве настольной системы.
С одной стороны великолепные инженерные решения, с другой уступки маркетёрам приводящие к идиотизму в проектировании (и всё это в одном ядре :)
Хорошо сказано :)
Токмо после сравнения QNX и Windows NT я осознал, какую же лажу создали очень умные челы из MS