Статья написана не мной, но кажется очень интересной, чтобы ее не потерять, сохранил на блоге. Возможно, кому-то она покажется тоже интересной.
Проект «Синяя таблетка».
Несколько лет назад, я столкнулся со странной штукой, каким-то образом 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. Более того, он труден в отладке, отладчик должен обладать свойствами гипервизора, при этом не забудьте, что все это должно вращаться в гостевой операционной системе, предоставляющей возможность отладки и разработки. И если вы себе этого представить не можете, то поверьте, это очень и очень не просто. И самое главное, подобные трудозатраты недоступны тем, кто занимается самоутверждением, а так же тем, кто хочет подработать денег на собственном ботнете.
Это профессионалы, которые должны иметь сильную мотивацию, много времени и финансового ресурса, который их будет обеспечивать во время разработки и отладки кода. Но технологии не стоят на месте и борьба щита и меча наверняка развернется на небесах виртаулизации, оставив операционную систему более слабым и более молодым хакерам.
- Hypersight RD 0.5.761 Beta
- Сильные и слабые стороны BluePill
- Введение в Bluepill
- Один из самых сильных руткит детекторов: GMER
- Статья 2006 года Джоанны корреспонденту eWeek Райану Нарайну (Ryan Naraine) озаглавленную просто: Антивирусное ПО неэффективно
- Превосходная статья с Джоанной Дмитрия Чеканова корреспондента Thg.Ru
Источник: SecurityLab
Метки:Виртуализация
Похожие статьи
- 16 ноября 2009 -- Тотальная виртуализация (5)
- 3 декабря 2010 -- Установка виртуального LAMP сервера на оcнове VirtualBox и Ubuntu (16)
- 4 января 2011 -- Bitnami Django stack и переброс портов в VirtualBox (3)
20 ноября, 2009 at 11:05
надеюсь в новой винде такого не будет
22 ноября, 2009 at 20:13
Чего толь не придумают жти учёние только бы денег заработать!
27 ноября, 2009 at 16:28
Да, способ действительно интересный. Особенно это открывает дополнительные возможности, если в железках впаян EPROM. А скорее всего он там есть, раньше для этого использовались джампера, смею предположить, что теперь такая информация может сохранятся в энергонезависимых элемента типа SSD и EPROM.