с вирусами приходилось держать на
Во времена MS-DOS/9x для экспериментов с вирусами приходилось держать на столе несколько компьютеров или переключаться на специальный жесткий диск, что было крайне неудобноутомительно. Народ с тоскою поглядывал в сторону NT, гибкая система безопасности которой позволяла творить чудеса, например, разрешала процессу изменять только специально подсаженные файлы-дрозофилы. Увы! Большинство вирусов не работало под NT! К тому же, подсистема защитыа
оказалась крайне ненадежной и хакеры научились ее обходить (например, эмулировать ввод с мыши/клавиатуры, посылая команды более привилегированному окну).
Рисунок 1 несколько компьютеров при работе с вирусами в эпоху ранней MS-DOS были не роскошью, а необходимостью
С появлением виртуальных машин (VM Ware, Virtual PC) появился и соблазн использовать их как "загон" для вирусов и червей, что очень удобно. Вместо возни с мониторами, корпусами, жесткими дисками и проводами, десяток "системных блоков" свободно размещается в нашей хакерской норе, к тому же некоторые эмуляторы (например, BOCHS) содержат встроенные отладчики, уверенно работающие там, где soft-ice и olly уже не справляются.
Рисунок 2 загон для вирусов по-американски
Весь вопрос в том — насколько это надежно. Гонять живого червя на эмуляторе. А вдруг он вырвется за его пределы? Анализ червей, выловленных в дикой природе, показывает, что многие из них уверенно распознают наличие эмулятора, отказываясь на нем запускаться, в результате чего червь имеет хорошие шансы пройти незамеченным. Но хакерская мысль не стоит на месте, пытаясь вырываться из-за стенок виртуальной машины.
Рисунок 3 особенности национальной охоты на вирусы или загон для вирусов II
Теоретически это вполне возможно. Эмуляторы (особенно динамические, т. е. такие, которые часть команд выполняют на "живом" процессоре) не свободны от ошибок. Привилегированные команды (типа обращения к портам ввода/вывода) отлавливаются эмуляторами достаточно надежно и никаких граблей здесь по обыкновению нет, но существует реальная угроза записи в адресное пространство процесса-эмулятора при выполнении "обычных" инструкций.
Конечно, модификации подвергается не код, а данные, но если среди этих данных окажется хотя бы один указатель (а он наверняка там окажется там наверняка), нашу хакерскую задачу можно считать решенной.
Рисунок 4 разработка вирусов требует глубоких познаний системы, вдумчивого подхода к делу и глубокой медитации
Единственная проблема в том, что такая дыра (даже если она действительно будет обнаружена), успеет заткнуться быстрее, прежде чем получит большое распространение, к тому же многообразие существующих эмуляторов значительно уменьшают шансы червя на успех.
Рисунок 5 червь, вырвавшийся из застенок виртуальной машины на свободу
Отбросим гипотетические дыры и сосредоточимся на универсальных методиках, работающих практически под любым эмуляторовм и эксплуатирующихэксплуатирующие уязвимости концептуального уровня, которые не так-то просто закрыть. Мыщъх предлагает три сценария атаки: а) проникновение через виртуальную сеть, б) back door-интерфейс эмулятора и в) внедрение в folder.htt в shared folders.
Рассмотрим эти механизмы поподробнее.
Рисунок 6 в центре вируса