Приспосабливаем Sandboxie для анализа подозрительных файлов
Есть два основных способа безопасно запустить подозрительный исполняемый файл: под виртуальной машиной или в так называемой «песочнице» (sandbox). Причем последнюю можно с помощью изящного способа адаптировать для оперативного анализа файла, не прибегая к специализированным утилитам и онлайн-сервисам и не используя множество ресурсов, как в случае с виртуалкой. О нем я и хочу тебе рассказать.
WARNING
Неправильное использование описанной методики может нанести вред системе и привести к заражению! Будь внимателен и осторожен.
«Песочница» для анализа
Люди, которые занимаются компьютерной безопасностью, хорошо знакомы с концепцией «песочницы». Если вкратце, «песочница» — эта тестовая среда, в которой выполняется некая программа. При этом работа налажена таким образом, что все действия программы отслеживаются, все изменяемые файлы и настройки сохраняются, но в реальной системе ничего не происходит. В общем, можешь запускать любые файлы в полной уверенности, что на работоспособность системы это никак не повлияет. Такие инструменты можно использовать не только для обеспечения безопасности, но и для анализа тех действий зловреда, которые он выполняет после запуска. Еще бы, ведь если есть слепок системы до начала активных действий и картина того, что произошло в «песочнице», можно легко отследить все изменения.
Конечно, в Сети есть масса готовых онлайн-сервисов, которые предлагают анализ файлов: Anubis, CAMAS, ThreatExpert, ThreatTrack. Подобные сервисы используют разные подходы и имеют свои достоинства и недостатки, но можно выделить и общие основные минусы:
• Необходимо иметь доступ к интернету. • Необходимо ждать очереди в процессе обработки (в бесплатных версиях). • Как правило, файлы, создаваемые или изменяемые в ходе выполнения, не предоставляются. • Невозможно контролировать параметры выполнения (в бесплатных версиях). • Невозможно вмешиваться в процесс запуска (например, нажимать на кнопки появляющихся окон). • Как правило, невозможно предоставлять специфические библиотеки, необходимые для запуска (в бесплатных версиях). • Как правило, анализируются только исполняемые РЕ-файлы.
Такие сервисы чаще всего строятся на основе виртуальных машин с установленным инструментарием, вплоть до отладчиков ядра. Их можно организовать и дома. Однако эти системы достаточно требовательны к ресурсам и занимают большой объем на жестком диске, а анализ логов отладчика уходит много времени. Это значит, что они весьма эффективны при глубоком исследовании определенных образцов, но вряд ли смогут оказаться полезными в рутинной работе, когда нет возможности нагружать ресурсы системы и тратить время на анализ. Использование «песочницы» для анализа позволяет обойтись без огромных затрат ресурсов.
Пара предупреждений
Сегодня мы попробуем сделать свой собственный анализатор на основе «песочницы», а именно утилиты Sandboxie. Эта программа доступна как условно-бесплатная на сайте автора www.sandboxie.com. Для нашего исследования вполне подойдет ограниченная бесплатная версия. Программа запускает приложения в изолированной среде, так что они не производят вредоносных изменений в реальной системе. Но тут есть два нюанса:
- Sandboxie позволяет отслеживать только программы на уровне user mode. Вся деятельность вредоносного кода в режиме ядра не отслеживается. Поэтому максимум, что удастся узнать при изучении руткитов — это каким образом вредонос внедряется в систему. Проанализировать само поведение на уровне kernel mode, к сожалению, невозможно.
- В зависимости от настроек Sandboxie может блокировать выход в Сеть, разрешать полный доступ или доступ только для отдельных программ. Понятно, что, если для нормального запуска вредоносу нужен выход в интернет, необходимо его предоставить. С другой стороны, если у тебя на флешке валяется Pinch, который запускается, собирает все пароли в системе и отправляет их на ftp злоумышленнику, то Sandboxie с открытым доступом в интернет не защитит тебя от потери конфиденциальной информации! Это очень важно, и об этом следует помнить.
Первичная настройка Sandboxie
Sandboxie — великолепный инструмент с большим количеством настроек. Упомяну лишь те из них, которые необходимы для наших задач.
После установки Sandboxie автоматически создается одна «песочница». Ты можешь добавить еще несколько «песочниц» под разные задачи. Доступ к настройкам «песочницы» осуществляется через контекстное меню. Как правило, все параметры, которые можно изменять, снабжены достаточно подробным описанием на русском языке. Для нас особенно важны параметры, перечисленные в разделах «Восстановление», «Удаление» и «Ограничения». Итак:
- Необходимо убедиться, что в разделе «Восстановление» ничего не указано.
- В разделе «Удаление» не должны быть никаких проставлены галки и/или отмечены добавленные папки и программы. Если неправильно выставить параметры в разделах, указанных в пунктах 1 и 2, это может привести к тому, что вредоносный код заразит систему или все данные для анализа будут уничтожены.
- В разделе «Ограничения» необходимо выбрать настройки, соответствующие твоим задачам. Практически всегда необходимо ограничивать доступ низкого уровня и использование аппаратных средств для всех выполняемых программ, чтобы не допустить заражения системы руткитами. А вот ограничивать доступ на запуск и выполнение, а также забирать права, наоборот, не стоит, иначе подозрительный код будет выполняться в нестандартной среде. Впрочем, всё, в том числе и наличие доступа к интернету, зависит от задачи.
- Для наглядности и удобства в разделе «Поведение» рекомендуется включить опцию «Отображать границу вокруг окна» и выбрать цвет для выделения программ, выполняемых в ограниченной среде.
Подключаем плагины
В несколько кликов мы получили отличную изолированную среду для безопасного выполнения кода, но не инструмент для анализа его поведения. К счастью, автор Sandboxie предусмотрел возможность использования целого ряда плагинов для своей программы. Концепция довольно интересна. Аддоны представляют собой динамические библиотеки, внедряемые в выполняемый в «песочнице» процесс и определенным образом регистрирующие или модифицирующие его выполнение.
Нам понадобится несколько плагинов, которые перечислены ниже.
-
. . Этот плагин осуществляет перехват ряда функций для выполняемой в песочнице программы, чтобы блокировать следующие возможности:
- обзор исполняемых процессов и потоков;
- доступ к процессам вне пределов «песочницы»;
- вызов функции BlockInput (ввод с клавиатуры и мыши);
- считывание заголовков активных окон.
Как интегрировать их в «песочницу»? Поскольку это не предусмотрено средствами интерфейса Sandboxie, редактировать файл конфигурации придется вручную. Создаем папку Plugins и распаковываем в нее все подготовленные плагины. Теперь внимание: в состав Buster Sandbox Analyzer входит несколько библиотек с общим именем LOG_API*.dll, которые могут инжектироваться в процесс. Есть два типа библиотек: Verbose и Standard. Первый отображает практически полный список вызовов API, выполняемых программой, включая обращения к файлам и реестру, второй — сокращенный список. Сокращение позволяет ускорить работу и уменьшить журнал, который затем придется анализировать. Лично я не боюсь больших логов, зато опасаюсь того, что какая-нибудь нужная инфа будет заботливо «сокращена», поэтому выбираю Verbose. Именно эту библиотеку мы и будем инжектировать. Чтобы зловред не смог заметить инжект библиотеки по ее имени, применим простейшую меру предосторожности: сменим имя LOG_API_VERBOSE.dll на любое другое, например LAPD.dll.
Окна, программ запущенные в песочнице, теперь будут выделяться
Теперь в главном окне Sandboxie выбираем «Настроить -> Редактировать конфигурацию». Откроется текстовый конфиг со всеми настройками программы. Сразу обращаем внимание на следующие строки:
- Параметр FileRootPath в разделе [GlobalSettings] указывает общий путь к папке изолированной среды, то есть к папке, где будут находиться все файлы «песочницы». У меня этот параметр имеет вид FileRootPath=C:\Sandbox\%SANDBOX%, у тебя он может отличаться.
- Раздел [UserSettings_XXXXXXX] нас не интересует — его пропускаем и листаем дальше.
- Затем идет раздел, имя которого совпадает с названием «песочницы» (пусть это будет BSA). Сюда мы и будем добавлять плагины:[BSA]InjectDll=C:\Program Files\Sandboxie\Plugins\sbiextra.dll InjectDll=C:\Program Files\Sandboxie\ Plugins\antidel.dll InjectDll=C:\Program Files\Sandboxie\ Plugins\LAPD.dll OpenWinClass=TFormBSA Enabled=y ConfigLevel=7 BoxNameTitle=n BorderColor=#0000FF NotifyInternetAccessDenied=y Template=BlockPorts
Пути, конечно, могут отличаться. Но порядок инжектируемых библиотек обязательно должен быть именно таким! Это требование связано с тем, что перехват функций должен осуществляться именно в указанном порядке, иначе плагины работать не будут. Чтобы применить изменения, выбираем в главном окне Sandboxie: «Настроить -> Перезагрузить конфигурацию».
Теперь настроим сам плагин Buster Sandbox Analyzer.
- Запускаем плагин вручную, воспользовавшись файлом bsa.exe из папки Plugins.
- Выбираем «Options -> Analysis mode –> Manual» и далее «Options -> Program Options -> Windows Shell Integration -> Add right-click action "Run BSA"».
Теперь всё готово для работы: наша «песочница» интегрирована в систему.
Portable-версия «песочницы»
Безусловно, многим не понравится, что надо что-то устанавливать, настраивать и т. д. Так как меня всё это тоже не прельщает, я сделал портабельную версию инструмента, который можно запускать без установки и настройки, прямо с флешки. Скачать такую версию можно здесь: tools.safezone.cc/gjf/Sandboxie-portable.zip. Для запуска «песочницы» достаточно выполнить скрипт start.cmd, а по окончании работы не забыть выполнить скрипт stop.cmd, который полностью выгрузит драйвер и все компоненты из памяти, а также сохранит внесенные в ходе работы изменения в портабеле.
Настроек у самого портабелизатора совсем не много: его работа в основном основана на манипуляциях с файлом Sandboxie.ini.template, находящегося в папке Templates. По сути, этот файл представляет собой файл настроек Sandboxie, который должным образом обрабатывается и передается программе, а по окончании работы перезаписывается обратно в Templates. Если открыть этот файл «Блокнотом», то ты вряд ли найдешь что-то интересное. Нужно обязательно обратить внимание на шаблон $(InstallDrive), повторяющийся в ряде параметров пути. Особенно нас интересует параметр FileRootPath. Если он имеет следующий вид:
— то «песочницы» будут создаваться на диске, где находится портабельная Sandboxie. Если же параметр имеет, например, такой вид:
— иначе говоря в нем указан определенный системный диск, то «песочницы» будут создаваться на этом диске.
Лично я рекомендую всегда создавать песочницы на локальных дисках. Это ускоряет работу инструмента, а при запуске с флешки — ускоряет на порядки. Если же тебя настолько замучила паранойя, что хочется всё запускать и анализировать на любимом носителе, который ты носишь у сердца, то параметр можно поменять, но тогда хотя бы используй портабельные жесткие диски, чтобы всё безбожно не тормозило.
Практическое применение
Попробуем наш инструмент на реальной угрозе. Чтобы никто не упрекнул меня в подтасовке, я поступил просто: зашел на www.malwaredomainlist.com и скачал последнее, что там появилось на момент написания статьи. Это оказался премилый файл pp.exe с какого-то зараженного сайта. Одно только название внушает большие надежды, кроме того, на этот файл сразу заорал мой антивирус. К слову, все наши манипуляции лучше производить при отключенном антивирусе, иначе мы рискуем заблокировать/удалить что-нибудь из того, что исследуем. Как изучить поведения бинарника? Просто нажимаем правой кнопкой на этот файл и выбираем в выпавшем меню пункт Run BSA. Откроется окно Buster Sandbox Analyzer. Внимательно смотрим в строку Sandbox folder to check. Все параметры должны совпадать с теми, которые мы указали при настройке Sandboxie, то есть если песочница получила название BSA, а в качестве пути к папке был задан параметр FileRootPath=C:\Sandbox\%SANDBOX%, то вс,ёе должно быть как на скриншоте. Если же ты знаешь толк в извращениях и назвал песочницу по-другому или настроил параметр FileRootPath на другой диск или папку, его нужно изменить соответствующим образом. В противном случае Buster Sandbox Analyzer не будет знать, где искать новые файлы и изменения в реестре.
Скачиваем образец малвари для анализа
BSA включает в себя массу настроек по анализу и изучению процесса выполнения бинарника, вплоть до перехвата сетевых пакетов. Смело нажимай кнопку Start Analysis. Окно перейдет в режим анализа. Если песочница, выбранная для анализа, по каким-то причинам содержит результаты предыдущего исследования, утилита предложит предварительно ее очистить. Все готово к запуску исследуемого файла.
Готов? Тогда нажми на изучаемый файл правой кнопкой мыши и в открывшемся меню выбери «Запустить в песочнице», после чего укажи ту «песочницу», к которой мы прикрутили BSA.
Сразу после этого в окне анализатора побегут API-вызовы, которые будут фиксироваться в лог-файлах. Обрати внимание, что сам Buster Sandbox Analyzer не знает, когда завершится анализ процесса, фактически сигналом к окончанию служит именно твое жмакание на кнопку Finish Analysis. Как же узнать, что время уже наступило? Тут может быть два варианта.
- В окне Sandboxie не отображается ни один выполняемый процесс. Это означает, что выполнение программы явно завершилось.
- В списке API-вызовов долгое время не появляется ничего нового или, наоборот, одно и то же выводится в циклической последовательности. При этом в окне Sandboxie что-то еще выполняется. Такое бывает, если программа настроена на резидентное выполнение или попросту зависла. В этом случае ее необходимо вначале завершить вручную, нажав правой кнопкой в окне Sandboxie на соответствующую «песочницу» и выбрав «Завершить программы». Кстати, при анализе моего pp.exe произошла именно такая ситуация.
После этого можно смело выбирать Finish Analysis в окне Buster Sandbox Analyzer.
Чеклист подозрительного поведения приложения
Анализ поведения
Нажав на кнопку Malware Analyzer, мы сразу получим некоторую сводную информацию о результатах исследования. В моем случае вредоносность файла была совершенно очевидна: в ходе выполнения создавался и запускался файл C:\Documents and Settings\Администратор\Application Data\dplaysvr.exe, который добавлялся в автозагрузку (кстати, именно он не хотел завершаться сам), происходило соединение с 190.9.35.199 и модифицировался hosts-файл. Кстати, при этом на VirusTotal файл детектировали только пять антивирусных движков, что видно из логов, а также на сайте VirusTotal.
Отчет о проведенном анализе
Всю информацию о результатах анализа можно получить непосредственно в меню Viewer в окне Buster Sandbox Analyzer. Здесь же приютился и журнал API-вызовов, который, безусловно, будет полезен при подробном исследовании. Все результаты хранятся в виде текстовых файлов в подпапке Reports папки Buster Sandbox Analyzer. Особый интерес представляет отчет Report.txt (вызывается через View Report), в котором приводится расширенная информация по всем файлам. Именно оттуда мы узнаём, что временные файлы на самом деле были исполняемыми, соединение шло по адресу http://190.9.35.199/view.php?rnd=787714, вредонос создал специфический мутекс G4FGEXWkb1VANr и т. д. Можно не только просматривать отчеты, но и извлекать все файлы, созданные в ходе выполнения. Для этого в окне Sandboxie нажми правой кнопкой по «песочнице» и выбери «Просмотреть содержимое». Откроется окно проводника со всем содержимым нашей «песочницы»: в папке drive находятся файлы, создаваемые на физических дисках «песочницы», а в папке user — файлы, создаваемые в профиле активного пользователя (%userprofile%). Здесь я обнаружил dplaysvr.exe с библиотекой dplayx.dll, временные файлы tmp и измененный файл hosts. Кстати, оказалось, что в него добавлены следующие строки:
Учти, что в «песочнице» валяются зараженные файлы. Если их нечаянно запустить двойным кликом, ничего не будет (они запустятся в «песочнице»), но если ты их куда-то скопируешь, а потом выполнишь… хм, ну, ты понял. Здесь же, в папке, можно найти дамп реестра, измененного в ходе работы, в виде файла RegHive. Этот файл можно легко перевести в более читабельный reg-файл при помощи следующего командного скрипта:
Что умеет и не умеет инструмент
Полученный инструмент умеет:
- Отслеживать API-вызовы запущенного приложения.
- Отслеживать новые создаваемые файлы и параметры реестра.
- Перехватывать сетевой трафик при выполнении приложения.
- Проводить базовый анализ файлов и их поведения (встроенный поведенческий анализатор, анализ на VirusTotal по хешам, анализ с помощью PEiD, ExeInfo и ssdeep и т. д.).
- Получать некоторую дополнительную информацию за счет выполнения в «песочнице» вспомогательных программ (например, Process Monitor) вместе с анализируемой.
Этот инструмент не может:
- Анализировать зловреды, выполняющиеся в kernel mode (требующие установки драйвера). Тем не менее возможно выявить механизм установки драйвера (до его фактического внедрения в систему).
- Анализировать зловреды, отслеживающие выполнение в Sandboxie. Однако Buster Sandbox Analyzer включает в себя ряд механизмов, препятствующих такому отслеживанию.