17 February 2011

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

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

Итак, ситуация: у нас есть странный файл с подозрением на вредоносность, при этом существующий мультисканеры типа VirusTotal не дают никакой информации. Что же делать?

ОНЛАЙН-ПЕСОЧНИЦЫ

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

ThreatExpert
Система ThreatExpert осуществляет сравнение снимков системы до и после запуска, а также перехват некоторых API в ходе выполнения кода. В результате, Вы получаете отчёт со следующей информацией:

• Какие новые процессы, файлы, ключи реестра и мутексы были созданы в ходе выполнения кода.
• C какими хостами и IP проводилось соединение, также приводятся шестнадцатеричные и ASCII-дампы данных обмена.
• Имеется ли детект популярных антивирусов на присланный файл и файлы, созданные в ходе выполнения.
• Какова возможная страна происхождения кода на основании языковых ресурсов и прочих следов, найденных в коде.
• Возможная категория угрозы (кейлоггер, бэкдор и т.д.) и её уровень.
• Скриншоты новых окон, если таковые были отображены в ходе выполнения.

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

CWSandbox — разработка University of Mannheim, которые продают эту систему. Однако, анализ можно провести в онлайн бесплатно.
Особенностью этой песочницы является то, что анализ выполняется в результате инжектирования библиотеки песочницы в исполняемый код и перехвата всех API-вызовов. Понятно, что если выполняется вызов нативных API либо работа в режиме ядра, песочница не работает. Тем не менее, благодаря тому, что проводится анализ реально работающего файла, CWSandbox иногда даёт большую информпцию, чем все остальные.

Бесплатная онлайн версия имеет ряд ограничений, по сравнению с коммерческой:

• Возможен анализ только РЕ-файлов. Платная версия позволяет анализировать BHO, zip-архивы, документы Microsoft Office.
• В бесплатной версии возможна только загрузка через веб-интерфейс. В платной возможен прим файлов на анализ по почте, через honeypot и др.
• В платной версии возможен выбор проведения анализ в виртуальной среде или на реальной системе.
• Коммерческая версия включает в себя анализ файлов, скачиваемых в ходе выполнения кода, созданный в системных папках или инжектированных в другие процессы.

Anubis
Anubis — один из самый распространённых вариантов песочницы, ставший популярный благодаря исчерпывающему содержанию отчётов и скорости ответа. Некоторые особенности этой системы:

• Возможность указания URL вместо самого вредоносного файла. В таком случае система загрузит указанный URL в Internet Explorer и проанализирует поведение системы.
• Вместе с исследуемым файлом можно загрузить дополнительные библиотеки (в zip-архиве без пароля или с паролем “infected”). Этот приём очень удобен для анализа вредоносных динамических библиотек (если єто так же интересно — отпишитесь в комментах, можно будет посвятить отдельную статью).
• Отчёт предоставляется в различных форматах — HTML, XML, plain text, PDF, также возможно скачивание полного сетевого дампа, полученного в ходе анализа.
• Возможна загрузка файлов в Anubis посредством SSL (удобно, если вас блокирует антивирус на проксе).

Joebox
И наконец — он. Joebox, Великий и Ужасный. Будучи результатом трудов Стэфана Бульманна, на мой взгляд Joebox — самая мощная система для анализа. Особенностью этой системы является то, что она единственная осуществляет перехваты SSDT и EAT ядра в ходе анализа файлов. С одной стороны, это приводит к потере небольшого количества информации вызовов верхнего уровня (например, создание новых процессов посредством ShellExecute или WinExec), однако с другой стороны позволяет изучать вредоносные файлы, работающие с нативными API или в режиме ядра. Кроме того, Joebox предоставляет следующие возможности в анализе:

• Joebox поддерживает загрузку и изучение поведения исполняемых файлов, DLL, драйверов ядра, документов Microsoft Word, PDF-файлов и др.
• Вы можете выбрать среду выполнения кода:Windows XP, Windows Vista, или Windows 7.
• Вы можете выбрать выполнение кода в виртуальной среде либо на реальной системе (в последнем случае реализуется решение на базе FOG)
• Возможно получение полного дампа сетевого трафика, накопленного в ходе анализа.
• Имеется поддержка модулей популярных песочниц amun и nepenthes для автоматической загрузки новых образцов из песочниц в Joebox.
• Имеется поддержка скриптов AutoIT19 для организации контролируемой среды выполнения вредоносных файлов в Joebox.

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

1. Предположим, вредоносный код проверяет путь, по которому расположен файл, и выполняется только в случае нахождения «там где надо». Решается простым скриптом:
Script
_JBSetSystem(“xp”)
; анализ будет проведён в Windows XP
_JBStartAnalysis()
; Начало анализа
_JBStartSniffer()
; Запуск сетевого сниффера
$NewFile = @SystemDir & “/” & “malware.exe”
FileCopy(“c:\malware.exe”, $NewFile, 1)
; копируем подозрительный файл в системную папку
FileDelete(“c:\malware.exe”)
; удаляем файл с исходного пути
Run($NewFile, @TempDir, @SW_HIDE)
; и выполняем его
Sleep(120)
; ждём 120 секунд
_JBStopSniffer()
; останавливаем сниффер
_JBStopAnalysis()
; и завершаем анализ
EndScript


2. В случае, если необходимо провести простейший анализ вредоносной библиотеки, можно воспользоваться следующим скриптом (в данном случае используется инжект в новый процесс Internet Explorer):
Script
#include <IE.au3>
; доступ к функциям IE
_JBSetSystem(“xp”)
_JBStartAnalysis()
_JBStartSniffer()
$NewFile = @SystemDir & “/” & “malware.dll”
FileCopy(“c:\malware.dll”, $NewFile, 1)
RegWrite(
“HKLM\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows”,
“AppInit_DLLs”, “REG_SZ”, “malware.dll”)
; добавляем новое значение AppInit_DLLs
$oIE = _IECreate(“http://www.sbrf.ru”)
; открываем сайт банка
Sleep(120)
; done with IE now
_IEQuit ($oIE)
_JBStopSniffer()
_JBStopAnalysis()
EndScript


Точно так же можно анализировать BHO — достаточно прописать нужные ключи в реестр. Однако часто возникает проблема: AppInit_DLLs справедлив только для вновь созданных процессов, как быть, если инжект нужно сделать в explorer.exe? Для этого подойдёт следующий скрипт:
Script
Func KillProcess($process)
Local $hproc
Local $pid = ProcessExists($process)
If $pid = 0 Then
Return
EndIf
$hproc = DllCall(
“kernel32.dll”, “hwnd”, “OpenProcess”,
“dword”, BitOR(0x0400,0x0004,0x0001),
“int”, 0, “dword”, $pid)
If UBound($hproc) > 0 Then
If $hproc[0] = 0 Then Return
Else
Return
EndIf
$hproc = $hproc[0]
Local $code = DllStructCreate(“dword”)
$ret = DllCall(
“kernel32.dll”, “int”, “TerminateProcess”,
“hwnd”, $hproc, “uint”, DllStructGetData($code,1))
Return
EndFunc
_JBSetSystem(“xp”)
_JBStartAnalysis()
_JBStartSniffer()
$NewFile = @SystemDir & “/” & “malware.dll”
FileCopy(“c:\malware.dll”, $NewFile, 1)
RegWrite(
“HKLM\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows”,
“AppInit_DLLs”, “REG_SZ”, “malware.dll”)
KillProcess(“explorer.exe”)
; убиваем процесс, который автоматически будет перезапущен winlogon.exe
Sleep(10000)
_JBStopSniffer()
_JBStopAnalysis()
EndScript


3. Если необходимо, чтобы обращение в сеть происходило из определённой страны, можно сконфигурировать прокси в выполняемой среде Joebox:
Script
_JBSetSystem(“xp”)
_JBStartAnalysis()
_JBStartSniffer()
$ProxyServer = “1.2.3.4:8080”
; определяем нашу проксю
RegWrite(
“HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings”,
“ProxyServer”, “REG_SZ”, $ProxyServer)
RegWrite(
“HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings”,
“ProxyEnable”, “REG_DWORD”, 1)
; и включаем её в настройках
_JBLoadProvidedBin()
Sleep(10000)
_JBStopSniffer()
_JBStopAnalysis()


Безусловно, наличие такой гибкости и богатства возможностей делает Joebox одним из самых востребованных песочниц — и в этом его худшая сторона. Мне приходилось ждать иногда по несколько дней, пока придёт результат анализа. Что же, авторы предлагают купить свою собственную копию этой замечательной песочницы, но довольно за дорого. Как же построить свою собственную систему для анализа файлов без особенных затрат — об этом будет в следующей статье, если, конечно, Хабраобщество одобрит этот опус и у меня окончательно не растает карма ;)

P.S. Примеры других онлайн-песочниц:

* BitBlaze
* Comodo Instant Malware Analysis
* Eureka
* Norman Sandbox

Спасибо ahtox74 за напоминание.

UPD: Joebox ввели обязательную регистрацию: если Вы хотите бесплатно пользоваться услугами этой онлайн-песочницы, то отправьте на адрес info@joebox.org электронное письмо со следующей информацией на английском языке:
1. Ваше имя
2. Цель регистрации и краткое описание, что Вы будете исследовать на Joebox
3. Электронная почта для отправки отчётов об исследовании (она впредь будет указываться в первом поле Вашего запроса).

После подачи заявки обещают, что откроют доступ для указанного ящика.

UPD-UPD: Вторая часть статьи тут.
Tags:sandboxmalwareанализвируспесочница
Hubs: Antivirus protection
+83
17.3k 183
Comments 20
Ads