Анализ: насколько опасны вирусы, использующие аппаратную поддержку виртуализации.

Статья полугодовой давности: CPU Virtualization Extensions: Analysis of Rootkit Issues. Анализируется степень опасности, которую могут представлять вирусы и прочее вредоносное программное обеспечение, использующие аппаратную поддержку виртуализации, как средство контроля над операционной системой. Интересны выводы:


A hypervisor-based rootkit cannot be run unless the attacker is already executing kernel-mode code.

Такой rootkit не может быть запущен если только хакер не может выполнять произвольный код в режиме ядра. (Т.е. без “дырки в заборе” всё же не обойтись).

A hypervisor-based rootkit gives an attacker no new access to user data that the attacker would not already have through a traditional kernel-mode rootkit.

Такой rootkit не даёт хакеру больший доступ к данным, чем тот который он уже имеет, используя обычный rootkit, работающий в режиме ядра. (Однако возможно, что доступ к данным станет удобнее).

A hypervisor-based rootkit must implement complex mechanisms and utilize secure hardware in order to protect itself from the operating system, and it must also do so in ways that avoid detection.

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

В двух словах это можно просуммировать как: играть в прятки, виртуализируя всё и вся, красиво, но не практично.

, ,

  1. Guffy
    July 3rd, 2007 at 02:26 | #1

    С первым не согласен полностью. Вспомним хотя бы старые добрые бут-вирусы. Можно быть терпеливым и стартовать при следующей загрузке.

    Со вторым не согласен частично.
    “Однако возможно, что доступ к данным станет удобнее”
    Ну не знаю, может кому собственный парсер, к примеру, NTFS - удобнее чем готовый драйвер ОС. ;)

    На третье могу только предположить. На авторитетное мнение квалификации не хватает ;) Не думаю, что хуканье системных ф-й ядра прямо в коде с отступом от начала функции (вместо банального хуканья SSDT) на лету в обычном, но “продвинутом” рутките будет сильно проще.
    Может ли ОС определить, что она живет в виртуальной среде по поведению процессора (учитывая, что и команду таймера в проце вроде как можно эмулировать) - тут не знаю. А просто подменять содержимое нескольких секторов диска - тут, имхо, гипервизор справится.

  2. July 3rd, 2007 at 09:34 | #2

     

    С первым не согласен полностью. Вспомним хотя бы старые добрые бут-вирусы. Можно быть терпеливым и стартовать при следующей загрузке.

    Здесь имеется в виду, что hypervisor-based rookit не имеет преимуществ по сравнению с обычным rootkit. Методы заражения одинаковы.

    Ну не знаю, может кому собственный парсер, к примеру, NTFS - удобнее чем готовый драйвер ОС. ;)

    :-)

    Может ли ОС определить, что она живет в виртуальной среде по поведению процессора (учитывая, что и команду таймера в проце вроде как можно эмулировать) - тут не знаю.

    Таймер - далеко не единственный метод. Где-то по ссылкам про команду Пташека я видел упонимание про метод детектирования, основанный на анализе поведения TLB. Идея тут, на сколько я понимаю, заключается в том, что процессорный TLB очень ограничен по количеству записей, а вот виртуальный - нет.

  3. Guffy
    July 4th, 2007 at 02:43 | #3

    > Здесь имеется в виду, что hypervisor-based rookit не имеет преимуществ по сравнению с обычным rootkit. Методы заражения одинаковы.

    Ну, дык, инфекция, передающаяся половым путем - передается половым путем ;)
    Просто их утверждение в первую очередь сожно понять именно так как я его понял.

    > Где-то по ссылкам про команду Пташека я видел упонимание про метод детектирования, основанный на анализе поведения TLB. Идея тут, на сколько я понимаю, заключается в том, что процессорный TLB очень ограничен по количеству записей, а вот виртуальный - нет.

    Разве это сложно сэмулировать?

  4. July 4th, 2007 at 19:55 | #4

     

    Разве это сложно сэмулировать?

    Не знаю, откровенно говоря. Я нашел ту самую ссылку: http://x86vmm.blogspot.com/2007/07/bluepill-detection-in-two-easy-steps.html. Фактически предлагается набить TLB под завязку своими страницами, выполнить CPUID и проверить изменились ли записи в TLB. Если изменились, значит по CPUID вызвался гипервизор.

  5. July 6th, 2007 at 00:03 | #5

     

    A hypervisor-based rootkit must implement complex mechanisms and utilize secure hardware in order to protect itself from the operating system, and it must also do so in ways that avoid detection.

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

    Использовать возможности аппаратного обеспечения… utilize SECURE hardware… Но это так.. Моя придирка как переводчика… А в целом интересная тема! Кстати, вот в тему витруализации)))) Прикол с bash.org)))

    Картинка: http://mordaha.com/sc2l.jpg
    Это старкон2, запущенный в DosBox, под иксами в Дебиане, который запущен в VMWare, которая в WinXP
    Куда мне вопрос о неработающем звуке задавать? )))))

  1. July 2nd, 2007 at 11:24 | #1