Как стать автором
Обновить

Оценка вредоносности файлов с помощью песочниц: Часть 2. Анализ в оффлайн

Время на прочтение8 мин
Количество просмотров20K
Итак, ранее мы познакомились с основными ресурсами, доступными в сети для анализа файлов.

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

— Доступ к интернет затруднителен
— Онлайн-песочницы в данный момент перегружены, а выполнение анализа критично по времени
— Выполнение в онлайн песочницах блокируется изучаемым файлом
— Необходима более тонкая настройка режима выполнения файла при анализе, например — увеличение времени задержки с момента запуска

В этом случае на помощь нам приходит оффлайн-решение проблемы.

Суть работы практически любой песочницы — это ограничение выполнения программы в контролируемой среде с виртуализацией вносимых изменений в систему. Безусловно, идеальным решением такой задачи будет выполнение кода на виртуальной машине с возможностью отката назад до снимка, либо на физической машине с полным посекторным бэкапом системы с возможностью такого же отката назад. И это абсолютно верно — так же работают аналитики во всём мире, так же работают уже рассмотренные нами онлайн-песочницы. Однако в таком случае необходимо вручную снимать и анализировать дампы памяти, изучать изменения в системе, реестре и т.д. Мы же рассмотрим несколько решений, выполняющих эту работу автоматически. Ну или почти автоматически :)

В нашем обзоре мы будем двигаться от простого к сложному, от доступного — к затруднительному и от автоматического — к ручному. Мне кажется, что с таким подходом люди, которым станет скучно, уйдут и не потеряют ничего важного :)

Комплекс Buster Sandbox Analyzer + SandboxIE

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

Одним из таких плагинов является Buster Sandbox Analyzer или BSA. Этот плагин работает во многом подобно уже обсуждённой CWSandbox — внедряет динамическую библиотеку в адресное пространство исследуемого процесса, позволяя отслеживать API-вызовы в ходе выполнения. Кроме того, программа позволяет отслеживать сетевую активность, производить анализ изменённых файлов и другие полезные вещи.

Чтобы оценить работу этой системы, вначале построим её. Дополнительно нужно будет скачать такие два аддона на SandboxIE: Block Process Access и Antidel. Эти плагины позволяют с одной стороны скрыть от анализируемого процесса наличие других процессов вне песочницы, а с другой — воспрепятствовать удалению файлов в ходе работы (полезно при анализе некоторых дропперов).

Далее:

1. Устанавливаем SandboxIE.

2. Создаём дополнительную песочницу через Песочница — Создать новую песочницу. Я её назвал BSA — пусть и у вас будет так же для простоты.

3. Правой кнопкой мыши щёлкаем на песочницу BSA в списке окна программы и выбираем Настройки песочницы.

4. Критично:
Поведение — Отображать границу вокруг окна — выбрать красный
Recovery. — Немедленное восстановление — убрать галку И вообще убедиться, что ни одной папки нет в восстановлении.
Delete — поснимать все галки про удаление.
Restrictions — Доступ в Internet — поудалять все программы, пока не появится надпись «Ни одна программа не сможет получить доступ в Internet». Запомните эту опцию — для некоторых зловредов доступ нужно будет открывать, но учтите, что в этом случае все пароли и информация с хостовой машины уйдут злоумышленнику.
Restrictions — Доступ на запуск и выполнение — разрешить всем.
Доступ низкого уровня и аппаратные средства — все галки поснимать. Это важно, иначе низкоуровневые вирусы типа TDSS, Mebratix, Mebroot пролезут из песочницы в систему.
Остальные опции оставить по умолчанию. В дальнейшем можно их настроить на свой вкус — там всё достаточно понятно.

5. В папке, куда установили SandboxIE, создаём папку Buster Sandbox Analyzer, куда распаковываем всё, что скачано выше.

6. Файл LOG_API.DLL переименовываем во что хотите. Я его назвал LAPI.DLL. Также переименовываем HideDriver.sys.

7. В главном окне SandboxIE выбираем Настроить — Редактировать конфигурацию. В открывшемся текстовом документе находим раздел BSA сразу под этими буквами добавляем строки:

InjectDll=C:\Program Files\SandboxIE\Buster Sandbox Analyzer\sbiextra.dll
InjectDll=C:\Program Files\SandboxIE\Buster Sandbox Analyzer\antidel.dll
InjectDll=C:\Program Files\SandboxIE\Buster Sandbox Analyzer\LAPI.dll
OpenWinClass=TFormBSA


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

Теперь обратите внимание на раздел GlobalSettings, а конкретно на параметр FileRootPath:

FileRootPath=C:\Sandbox\%SANDBOX%
(у вас может отличаться).

Запомните его значение.

8. Сохраняем текстовый файл по оригинальному пути. В главном окне SandboxIE выбираем Настроить — Перезагрузить конфигурацию.

9. В главном окне SandboxIE выбираем: Настроить — Интеграция в проводник Windows — Запустить управление SandboxIE — когда запускается программа в песочнице и Действия «запускать в песочнице» — добавить пункт контекстного меню «Запустить в песочнице» для файлов и папок.

10. Запускаем Buster Sandbox Analyzer (вручную, из одноимённой папки путём запуска bsa.exe.

11. Выбираем Options — Analysis mode — Manual и Options — Program Options — Windows Shell Intagration — Add right-click action «Run BSA».

Всё готово для работы.

Как это использовать?

1. Отключаем резидентный антивирус (если имеется).

2. Наводим мышкой на изучаемый процесс и жмём правой кнопкой Run BSA. Откроется окно BSA.

3. Убедитесь, что в строке Sandbox folder to check указана папка, которая совпадает со значением параметра FileRootPath SandboxIE (см. выше), только вместо %SANDBOX% в ней указано BSA. В моём случае при параметре

FileRootPath=C:\Sandbox\%SANDBOX%

в BSA должно стоять

C:\Sandbox\BSA

4. Нажмите Start Analysis.

5. Наводим мышкой на изучаемый процесс и жмём правой кнопкой Запустить в песочнице. В предлагаемом списке песочниц выбираем BSA.

Всё. Процесс пойдёт. Вы будете видеть лог API-вызовов в BSA и активные процессы в главном окне SandboxIE. Иногда процесс завершится, тогда в BSA жмите Finish Analysis, иногда — его нужно прибить в SandboxIE (например, для файловых инфекторов), выбрав на правой мышкой на активной песочнице BSA Завершить программы.

По окончании BSA выдаст детальный отчёт об изменениях в системе, можно также через Viewer ознакомиться с другими отчётами. Если поставите в систему WinPcap — сможете даже перехватывать пакеты из песочницы, хотя там это не очень здорово организовано, нет, например, персонализации UDP-пакетов. Но если очень хочется — то можно, но при этом на хостовой системе следует заглушить все сетевые приложения, особенно торренты.

После работы, кликнув на песочнице BSA правой мышкой можно выбрать Просмотреть содержимое и изучить все файлы, созданные или изменённые процессом в ходе работы.

Логи BSA и файлы песочницы хранятся до следующего запуска нового процесса на исследование.

Следует заметить, что возможен прямой анализ изменений, вносимых в систему изучаемым файлом. Учитывая то, что виртуализованный реестр хранится C:\Sandbox\%SANDBOX%\RegHive, то перевести его в «понятный» вид крайне просто вот таким командным скриптом:

REG LOAD HKLM\uuusandboxuuu C:\Sandbox\DefaultBox\RegHive
REG EXPORT HKLM\uuusandboxuuu C:\Sandbox\sandbox.reg
REG UNLOAD HKLM\uuusandboxuuu


Только учтите, что «DefaultBox» у каждого будет индивидуален — но об этом уже мы говорили выше.

Полученный файл sandbox.reg будет содержать все внесённые в реестр изменения, которые легко проанализировать.

Возможность SandboxIE инжектировать динамические библиотеки в процесс может быть эффективно использована зловредного кода, выполняемого не в виде PE-исполняемого файла, а виде библиотеки, инжектируемой в адресное пространство процессов или регистрируемой в качестве сервиса. Но об этом — совершенно другой и непростой разговор.

ZeroWine

Одним из наиболее распространённых приёмов автоматизации изучения зловредного кода является объединение выполнения ряда операций и утилит на Linux-системе с помощью скриптов Python. Именно так поступил Joxean Koret при создании своего проекта ZeroWine. ZeroWine — это образ виртуальной машины QEmu (который, однако, легко может быть конвертирован для других систем, в том числе VBox и VMWare), построенный на базе Debian. Вредоносный файл можно загрузить через веб-интерфейс, в результате чего он выполняется в среде wine, работа его контролируется рядом утилит, автоматизированных скриптом на Python. В результате, пользователь может получить информацию о вызываемых командах, дампы памяти процесса, перехват сетевых пакетов и др.

Другим «лицом» проекта ZeroWine является ZeroWine-tryouts? в котором внесено несколько дополнительных функций.

К сожалению, использование wine не позволяет полностью создать среду для вредоносов, которая бы соответствовала Windows. В результате этого выполнение кода может быть совершенно не таким, а иногда оно может просто не происходить. Сам автор указывает на ряд недочётов в своей программе, а также на лёгкий способ обнаружения выполнения в среде wine со стороны исследуемого процесса. Да и логи, представленные на скринах на сайте автора вряд ли могут помочь в понимании механизма заражения и планирования процесса лечения, скорее, они представят интерес для аналитика, строящего сигнатурную или поведенческую защиту от зловредов.

От себя хочу добавить, что хоть ZeroWine обновился в декабре прошлого года, мне лично больше понравился старый (с 2009 года) ZeroWine-tryout — может быть из-за более гибкой настройки и управления сканированием, а может быть — потому что он у меня запустился нормально, в отличие от новой версии :)

Распределённые системы анализа

Это — наиболее серьёзные и сложные решения аналитического характера. Обычно, распределённые системы представляют собой Linux-систему, работающую как сервер, принимающую и обрабатывающую дампы и логи, получаемые с заражённой Windows-системы. Такой механизм может быть построен в рамке взаимодействия виртуальных машин, либо виртуального Windows-гостя с Linux-хостом. По последнему принципу построен MINIBIS — Вы можете свободно скачать всё необходимое для развёртывания такой системы, базирующейся на выполнении виртуальной Windows XP в среде Ubuntu. Ещё одним интересным подходом является использование гипервизора, как в проекте Ether.

Однако если уж Вы решили заняться данным вопросом серьёзно — наиболее правильным подходом является построение своей собственной системы на базе двух физических машин. При этом Linux-система обычно работает в роли эмулятора сетевого соединения и конечной станции обработки информации, а Windows — как исследуемая база, на которой выполняется зловредный код. В сети свободно распространяются как готовые решения — например Truman, так и примеры Linux-систем, например REMnux и SIFT Workstation.

Безусловно, Вы можете сами создать любую аналогичную систему на базе любимого дистрибутива Linux (настоятельно рекомендую Ubuntu, но не потому что являюсь её фанатом, а потому что к сожалению специализированный софт был заточен под Debian, а сейчас — почти всегда под Ubuntu), дополнив её необходимым софтом и скриптами по образу и подобию описанных выше или по собственному разумению. Однако описание создания таких систем чрезвычайно сложно и длительно, поэтому я приведу ряд ссылок на проекты, которые могут быть интересны и полезны в такой работе.

— Невидимый прокси-сервер для перехвата и анализа http/https-трафика, используемого для связи с C&C и скачивания модулей. Пример — Burp Suite.
— Симулятор интернета, например INetSim.
— Централизованная система восстановления образов, например FOG.
— Система анализа дампов памяти, лучшая имхо тут Volatality Framework.
Антивирусная система ClamAV для автоматизации классификации найденных зловредов. Я сознательно не пишу коммерческие антивирусы не по причине убеждённости, что ClamAV круче (что неверно), а по причине возможности добавления собственных сигнатур в ClamAV, чего нет в коммерческих вариантах. В крайнем случае можно использовать для тех же целей YARA.
— Утилиты для анализа и деобфускации JS, PDF, Flash, java-скриптов, парсинга файловой системы Windows, работы с сигнатурами файлов и распаковки — всё это есть в большом количестве в сети, описать всё невозможно и всегда является делом вкуса. В частности, ряд таких утилит упомянут на сайте проекта REMnux и входит в его состав.

На этой оптимистической ноте я заканчиваю (?) свой опус, если всё же возникнут вопросы — буду рад отписаться в комментах. Спасибо тем, кто дотерпел и дочитал это до конца :)
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 30: ↑28 и ↓2+26
Комментарии1

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань