Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #87, МАРТ 2006 г.

Побег из VM Ware

крис касперски ака мыщъх

Хакер, номер #087, стр. 087-072-4


прочие способы

Для обмена мелкими порциями данных между виртуальной машиной и основной системой удобно использовать старый добрый гибкий диск. Просто даем эмулятору физический доступ к устройству А: (B:)и все! В смысле кранты! Если вирус внедрит в boot-сектор зловредный код, то дискета окажется забытой в дисководе и этот дисковод будет первым загрузочным устройством в BIOS Setup, когда-нибудь зловредный код получит управление и сможет поразить жесткий диск основной системы.

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

что же дальше?

Эмулятор — это очень удобная вещь, однако от разведения вирусов в недрах виртуальной машины я советую воздержаться: «скорлупа», отделяющая гостевую систему от реального мира, слишком тонка, и против грамотно спланированной атаки ей не устоять. Можно, конечно, запустить эмулятор в эмуляторе (например, BOCHS внутри VM Ware), только это все равно не решит всех проблем, а вот производительность упадет колоссально!

Отельный жесткий диск в этом плане намного надежнее, да и удобнее. Кстати говоря, отключать основной диск необходимо чисто физически — путем отрубания кабеля. Диски, перечисленные в основном разделе BIOS, актуальны только на стадии первичной загрузки, а дальше весь обмен идет через драйвер защищенного режима, работающий напрямую с контроллером. Отключение каналов интегрированного контролера через BIOS Setup, как правило, делает диски невидимыми, да и штатными средствами Windows до них не дотянуться, однако зловредный код при большом желании со своей стороны, может перенастроить контроллер на ходу, подцепив все каналы. Естественно, это системно-зависимая операция и все контроллеры программируются по-разному, но поддержать пару-тройку самых распространенных чипсетов вполне реально!

Короче говоря, «дедовские» способы — самые надежные, но неудобные. Виртуальные машины — удобные, но ненадежные. Вот и выбирай!

программа, определяющая версию VMWare

#include <windows.h>

// строковые константны

#define VM "vmware"

#define VM_DETECTED "detected"

#define VM_NOT_DETECTED "not detected"

#define VM_NOT_RECOGNZD "detected, but not recognized"

// под vm-ware функция возвращает версию vm-ware в регистре eax

// (нуль — это не vm-ware или версия неопознана),

Назад на стр. 087-072-3  Содержание  Вперед на стр. 087-072-5