Картинка блога

Статья написана не мной, но кажется очень интересной, чтобы ее не потерять, сохранил на блоге. Возможно, кому-то она покажется тоже интересной.

Проект «Синяя таблетка».

Несколько лет назад, я столкнулся со странной штукой, каким-то образом Windows XP обрела измененный boot сектор.

Для начала расскажу историю.

Когда вы включаете компьютер, процессор начинает выполнение программы, которая должна находится в строго указанных адресах памяти. Обычно там находится ПЗУ (постоянное запоминающее устройство. («Привыкайте к сокращениям» (с) Трансформеры)) или проще говоря BIOS (Basic Input Output System или базовая система ввода вывода). Процессор может работать в 2х, а теперь уже в 3х режимах. Первый режим называется реальным и собственно представляет собой сверхпроизводительный процессор i8086 образца 1980 года, второй режим: защищенный, в нем реализован доступ ко всей доступной памяти до 4х гигабайт, сумасшедший объем для 1985 года и процессора i80386. В защищенном режиме был реализован режим виртуального i8086, для совместимости.

Как я говорил ранее i80386 и его клоны, позволяли уже тогда создавать виртуальную среду, в которой можно было эмулировать, в частности и сам i80386. Конечно, задача очень сложная в части обеспечения стабильности работы. А недавно для 64битной архитектуры появился и режим виртуального i80386. То есть 64 битная архитектура эмулирует 32 битную, а последняя 16 битную, образца 1980 года.

Вот такая матрешка. При этом, надо отметить, что технология виртулизации впервые появилась у AMD, но только для i80386, виртулизация i8086 пропала за ненадобностью, по крайней мере так посчитали в AMD, а Intel с опозданием, таки смогла обеспечить полный комплект виртуализаций. Но обе технологии отличаются друг от друга, поэтому придется писать два кода, чтобы использовать свой гипервизор на обоих технологиях.

Но я забежал вперед.

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

В 2006м году. Польский эксперт по безопасности, работающая в тайваньской компании COSEINC, а также основатель и директор компании Invisible Things Lab(http://invisiblethingslab.com/ ; http://invisiblethingslab.org/) Джоанна Рутковская, разработала прототип руткита, который теоретически невозможно было бы обнаружить. Проект был назван голубая таблетка «Bluepill» и представлял собой буткит с поддержкой виртуальной среды.

Совсем недавно, в 2009м году, проект получил свое развитие и теперь успешно торпедирует как windows xp x64, так и Vista всех сортов, о чем и было доложено Джоанной на конференции Confedence.

Идея состоит в эксплуатации виртуализации предоставляемой процессорами для загрузки операционной системы, которая считает, что она контролирует аппратную часть и… и все что запущено в ней, понятия не имеет, что исполняется в виртуальной среде. Более того, Джоанне удалось решить проблему вложенности гипервизоров. Да, Голубую Таблетку можно запускать из под Голубой Таблетки и когда надоест, запустить операционную систему, если к тому времени останутся ресурсы, так как любая виртуализация снижает производительность примерно на 10-15%. Таким образом ни сканнеры, ни антивирусные программы, никто никаким образом не поймет, что находится под наблюдением, при этом у гипервизора, есть абсолютно полный доступ ко всем ресурсам исполняемой под ним операционной системы, все процессы, память, все что угодно в его распоряжении. И для него не составит труда внедриться в процесс, так всеми любимый Internet Explorer или любой другой, который обычно является в списке доверенных и от его имени получать и принимать информацию, делать нужные манипуляции, подсовывать не зараженные версии секторов, файлов, областей памяти, в общем производить впечатление чистой не пораженной системы.

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

В том же 2006 году, компания Next Generation Security Software Ltd взорвала мир новостью о том, что существует возможность написания руткита, переживающего reset компьютера. Новость была опубликована в ноябре 2006 года. Несколько позже, та же компания опубликовала еще один способ заражения и выживания, более того практически, намертво вживления в систему, через перепрограммирование карт на шине PCI. Таким образом была концептуально скомпрометирована архитектура ACPI и вслед за ней PCI, для устройств с установленной EEPROM (Electrically Erasable Programmable Read Only Memory — электрически стираемой перезаписываемой памятью только для чтения) памятью, что встречается достаточно часто.

На сколько мне известно, рут(бут)китов использующих эти технологии нет, однако проект BluePill доступен в исходных кодах, при желании его можно скомпилировать, изменить и…

В 2008 году, летом, группа North Security Labs сообщила о возможности обнаружения среды виртуализации BluePill.

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

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

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

Однако не стоит забывать о факторе профессионализма.

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

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

Источник: SecurityLab

Метки:

3 комментария в “Виртуализация на уровне железа BluePill”

  1. надеюсь в новой винде такого не будет

  2. Чего толь не придумают жти учёние только бы денег заработать!

  3. Да, способ действительно интересный. Особенно это открывает дополнительные возможности, если в железках впаян EPROM. А скорее всего он там есть, раньше для этого использовались джампера, смею предположить, что теперь такая информация может сохранятся в энергонезависимых элемента типа SSD и EPROM.