У меня есть программа, которую я использую более года, но недавно я обнаружил, что она заражена вирусом. Я не хочу переформатировать весь компьютер в основном потому, что даже если бы я сделал резервную копию данных, я не смог бы определить, перенослю ли я вместе с собой файлы, зараженные вирусом.
Итак, если бы мне пришлось создать новую виртуальную машину, а затем запустить инфекционную программу, есть ли способ определить, какие файлы она заразила? (Например, запускаете различие в системе и видите, что изменилось?)
2-й вопрос:
ВМ полностью и полностью изолированы от внешней системы, верно?
Нет возможности запустить этот вирус на виртуальной машине и заразить основную систему? В моем случае внешняя система уже заражена, так что ничего страшного, но мне было интересно, можно ли теоретически написать вирус, который заразил бы хост-системы при запуске в виртуальной машине?
Я полностью поддерживаю эту методологию, если вы применяете ее в криминалистических целях и для получения дополнительных сведений о вирусе, а также, возможно, в качестве упражнения для определения способов исследования дельт в виртуальных машинах.
Если вы делаете это с точки зрения «Я хочу восстановить свой сервер от этого вируса без переустановки», то вам следует пересмотреть свою цель.
Я не знаю лучшего способа, поэтому я бы сделал это сложным путем, когда вы доводите систему до нужного состояния до того, как вирус будет введен. Затем вы загружаетесь с компакт-диска Linux и создаете образ файловой системы с помощью dd.
Затем запустите машину, введите вирус, снова выключите ее, перезагрузите с компакт-диска, снова выполните dd в другой образ, затем смонтируйте образы только для чтения с опцией монтирования noexec а затем напишите команду find, которая будет запускать diff между файловыми системами по одному файлу за раз и выходными файлами, которые отличаются.
Теперь несколько предостережений. Во-первых, из-за того, что этот метод такой плохой и медленный, должен быть лучший, но я не знаю, что это такое. Во-вторых, будут ложные срабатывания. Винда постоянно пишет в реестр, так что файлы реестра будут другие. То же самое произойдет с любыми измененными конфигурационными файлами, любыми обновлениями, которые начали загружаться самостоятельно и т. Д.
На самом деле может случиться так, что вы можете использовать find -mtime для получения тех же данных, а затем запустить diff для тех файлов, которые изменились. Поскольку вы работаете в Linux, clamav также может сэкономить вам время.
У вас было два вопроса, поэтому я выскажу ответы:
Итак, если бы мне пришлось создать новую виртуальную машину, а затем запустить инфекционную программу, есть ли способ определить, какие файлы она заразила?
Если вы выполняли такие действия, как обновления Windows или устанавливали новое программное обеспечение (например, веб-браузеры или обновления версий), эта задача может стать довольно сложной из-за количества измененных файлов. Однако, даже если вы сделали это, скопировали все файлы, которые, по вашему мнению, не были заражены, а затем построили новую систему, все, что вам нужно, это один зараженный файл, и вы облажались.
ВМ полностью и полностью изолированы от внешней системы, верно?
Только если они не находятся в сети и не обмениваются файлами каким-либо образом. Например, с помощью VMware Fusion вы можете настроить автоматический обмен файлами между хостом и гостем, тем самым позволяя гостю писать в каталог вашего профиля. Делает обмен документами намного проще, но также увеличивает вероятность передачи вирусов.
Кроме того, вы когда-нибудь отправляли себе файл по электронной почте с гостевой виртуальной машины на хост? Бум, вы облажались, если вирус был в этом файле.
Просто хотел добавить предупреждение: технически возможно, чтобы вирус покинул виртуальную машину! (Особенно, если вирус был написан для заражения виртуальных машин и их хостов.) Любое приложение может определить, работает ли оно на виртуальной машине, и, таким образом, можно добавить код для нестандартного выхода. Однако было бы редко обнаружить вирус, который таким образом заразил бы хосты виртуальных машин.
С другой стороны, виртуальная машина, скорее всего, использует сетевое соединение со своим хостом. Это создает второй способ заразиться. Если у вас есть несколько виртуальных машин, работающих на одном хосте, он может даже заразить эти другие виртуальные машины через сетевое соединение!
Конечно, может случиться так, что ваш хост был заражен и просто перенаправил вирус на вашу виртуальную машину.
Так что будьте осторожны: установите антивирусный сканер на свою виртуальную машину и убедитесь, что вы обновляете антивирусный сканер и саму ОС.
Не уверен, какая у вас платформа виртуальной машины, но VMware предлагает утилиту под названием mountvm.exe, которая позволяет вам монтировать файл VMDK в вашу файловую систему и просматривать содержимое виртуального диска. Затем вы можете использовать windiff (или что-то подобное) для сравнения файлов на подключенной виртуальной машине. Я уверен, что другие гипервизоры предлагают аналогичные инструменты
Что касается вашего второго вопроса, хотя я не знаю, были ли эксплойты, атакованные через гипервизор, я думаю, что есть некоторые PoC, показывающие, что это возможно (конечно, некоторые оспаривают это). Найдите "Синюю таблетку" и посмотрите, что вы найдете. Как уже упоминалось, копирование файлов между хостом и гостем, а также разрешение прямого сетевого подключения между хостом и гостем определенно увеличивают вероятность заражения одного от другого.