Неизменяемый образ для песочницы

Неизменяемый образ для песочницы

При организации обработки потока файлов (вредоносных и просто непонятных) никак не обойтись без автоматизированных решений. Ну разве что в вашем распоряжении окажется весь Китай и все можно будет исследовать вручную. В этой статье рассказано о том, как создать неизменяемый образ операционной системы в виртуальной машине, чтобы ускорить процесс анализа большого количества неизвестных объектов.

При организации обработки потока файлов (вредоносных и просто непонятных) никак не обойтись без автоматизированных решений. Ну разве что в вашем распоряжении окажется весь Китай и все можно будет исследовать вручную.

Какие действия обычно производит антивирусный аналитик перед тем, как лезть в файл дизассемблером? Начинать обычно нужно с попытки детектирования файла. Как в анекдоте "чистка автомата начинается с проверки номера, чтобы не почистить чужой автомат". Если вас интересует детект только одного антивируса, то можно просто установить его себе и сканировать файлы. Если нужна сводная информация, то лучше всего воспользоваться мультисканером. О работе с вирустотал я уже писал, так что не будем на этом задерживаться.

Начинающий аналитик скорее всего попробует запустить подозрительный файл в виртуальной машине и, используя FileMon, RegMon и снифер сети, получить предварительные данные о вредоносной активности.

Разумеется, такой подход плохо сработает, для сложных троянцев, работа которых требует определенных условий. Например, самое первое, что приходит в голову - троянец, срабатывающий только в определенный день месяца.

Но уже и такого беглого осмотра может оказаться вполне достаточно для составления предварительного мнения о проверяемом файле. Особенно, если файлов сотни, а аналитиков всего несколько человек. Сразу появляется желание получать файл для разбора с уже подготовленным отчетом от файлового, реестрового и сетевого мониторов. Так же неплохо иметь детект или сразу несколько.

Вырисовывается такое техзадание - запустить заведомо чистую виртуальную машину, запустить в ней мониторы, запустить в ней файл, сохранить логи, выключить виртуальную машину. Вся процедура не должна занимать больше 3-5 минут.

Сначала нужно побеспокоится о заведомо чистой виртуальной машине для каждого запуска. Можно использовать снапшоты и после каждого запуска откатывать изменения. Можно копировать чистый образ целиком, а использованный удалять. Но так как образ даже Windows XP будет занимать около 2 ГБ, то копирование и откат образов не подходит - фактически вы будете тратить больше времени на восстановление образа, чем на полезную работу песочницы.

Решение этой проблемы зависит от выбранной виртуальной среды. Приведу то, что можно сделать для VMWare и VirtualBox. И в той и другой системе виртуализации есть способ сделать образ диска неизменяемым. В таком случае с образа диска будет производится только чтение, а запись будет вестись в отдельный файл, который просто удалится при выключении виртуальной машины.

Для того, чтобы диск стал неизменяемым в VMWare нужно проделать следующее:

1) зайти в каталог с настройками виртуальной машины. Его внутренности выглядят примерно так:

Расположение рабочего каталога виртуальной машины можно увидеть в её настройках во вкладке "Options":

2) открыть текстовый файл с настройками виртуалки (он имеет расшитение. vmx) и найти в нем секцию дисков. Это можно сделать в блокноте, совершив поиск по ".vmdk":

Скорее всего это будет что-то вроде scsi0:0.fileName = "название. vmdk" или ide0:0.fileName = "название. vmdk"

3) установить для нужного устройства режим "independent-nonpersistent". Просто дописываем под строчкой с именем файла для диска строчку: scsi0:0.mode = "independent-nonpersistent" или ide0:0.mode = "independent-nonpersistent"

Вот и все. Теперь при выключении виртуальной машины все изменения будут автоматически удаляться. Обратите внимание - изменения теряются только при ВЫКЛЮЧЕНИИ. То есть если вы выберете "Перезагрузку" в меню "Пуск" виртуальной машины, то все останется.

Если потребуется внести в образ изменения, то выключите виртуалку, просто закомментируйте строку с independent-nonpersistent символом #, включите виртуалку, произведите необходимые изменения, выключите снова и раскомментируйте independent-nonpersistent.

Для VirtualBox все иначе.

Итак, у вас есть виртмашина. У неё есть диск с системой:

Кликаем правой кнопкой и отцепляем диск от виртуальной системы.

Теперь нужно сделать три вещи: снять диск с регистрации; зарегистрировать снова, но уже с опцией неизменяемости; снова прицепить к виртуальной машине.

По порядку:

1) Пишем в консоли VBoxManage unregisterimage disk путь_к_диску/имя_диска. vdi

2) Прямо следом пишем VBoxManage registerimage disk путь_к_диску/имя_диска. vdi - type immutable

Тут - type immutable выполняет ту же роль, что mode = "independent-nonpersistent" у VMWare.

3) Теперь просто добавляем вновь зарегистрированный диск обратно:

VirtualBox сразу хватает первый же диск из списка доступных, поэтому нужно выбрать именно тот, что нужно. Как видим теперь в свойствах появилась пометка immutable.

Если будете делать это в Windows, то учтите, что путь к VBoxManage тоже придется указвать полностью. Ну или выполнять команду перейдя в консоли в каталог, в который установлен VirtualBox.

Срабатывает тоже только при выключении. Если нужно будет внести изменения в образ, то все действия придется повторить: отцепить диск от виртуалки, снять с регистрации, зарегистрировать снова, но уже без - type immutable, прицепить к виртуалке, внести изменения и снова все повторить. Процесс довольно муторный, так что постарайтесь все сделать правильно сразу, или напишите пару скриптов, которые будут все это быстро делать за вас.

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

Логи мониторов лучше складывать в сетевую папку. Управляющие программы (которые будут запускать проверяемые файлы и штатно завершать работу мониторов, чтобы логи корректно сохранились) тоже лучше держать на сетевом диске - это позволит быстро вносить изменения, которые наверняка будут необходимы при отладке не пересоздавая постоянно образ диска.

Кроме того, песочница может здорово помочь в распаковке - очень часто вместо того, чтобы возиться с пакерами и анпакерами проще сдампить запущенный файл и тогда уже смотреть, что у него внутри. Дамп конечно запускаться не будет, но зато все расшифруется и можно будет легко получить, скажем ссылки, по которым вредонос качает своих друзей или команды от центра управления.

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

Если все настроить и оттестировать, то при обработке сампла в течении 3-5 минут + 2 минуты на перезагрузку одна виртуалка сможет пережевывать по 90-100 потенциальных вредоносов за ночь. Вам на утро останется только посмотреть логи и заняться тем, что сложнее банального "прописать себя в автозапуск, скачать файл по вот этой ссылке и запустить".


Карта сайта


Информационный сайт Webavtocat.ru