Основы работы с фреймворком Viper. Когда ты независимый аналитик или сотрудник небольшой компании, то возникает проблема содержания базы различных вредоносных семплов в порядке. Кто- то использует для этого собственный приватный или локальный сервер с каким- нибудь Wiki- движком или самописной оберткой для базы данных. Но когда у тебя большое количество вроде бы однотипных семплов, то иногда хочется сделать небольшую заметку на будущее при поверхностном анализе для интересных файлов, а автоматический анализ, увы, не всегда справляется. Intro. Сегодня речь пойдет о Viper. ![]() Ее бывший одноклассник Джаред установил на ноутбук Кассиди вирус Blackshades RAT, чтобы следить за ней через веб-камеру. Скачали файл? Информация от магнет-торренте. Программы на заказ! Скачать можно тут: http://ltybcrf.com. Последняя версия! DarkComet Многим известный бекдор троян-кейлогер К сожалению это последняя версия т.к. Теперь наконец-то можно скачать исходники и самого фреймворка. Под таким коротким названием скрывается модульный фреймворк для организации бинарных файлов и их анализа. Viper ориентирован на вирусных аналитиков и эксплойт- разработчиков, но он также пригодится и для обычных реверсеров из- за интересных модулей, база которых постоянно пополняется. К тому же немаловажным плюсом является то, что он написан на Python, и это позволяет модифицировать его под себя на лету. Установка. Рассматривать установку мы будем на примере Debian- подобной системы. Для начала установим зависимости и сторонние программы, которые нам пригодятся для комфортной работы. Так как фреймворк написан на Python, то нам потребуется для начала установить менеджер пакетов/библиотек — pip (на OS X я дополнительно использовал easy. Скачиваем последнюю версию с официального сайта проекта: ~ $ tar - zxvf ssdeep- X. XX. tar. gz. ~ $ cd ssdeep- X. XX. ~ $ ./configure & & make. После этого уже можно переходить к установке самого фреймворка, но для полноты возможностей нужно установить две программы: YARA и androguard. Об этих утилитах мы уже писали, но повторюсь на всякий случай. Так же скачиваем последние версии с их официальных сайтов и собираем. YARA: ~ $ tar zxf v. Androguard: ~ $ tar zxf androguard- 1. Теперь наконец- то можно скачать исходники и самого фреймворка. Можно взять архив с самого сайта, но там до сих пор указана версия 1. И теперь уже устанавливаем собственно сам фреймворк: $ cd viper. Первый запуск фреймворка Viper. Все описанные шаги без проблем воспроизводятся в рамках OS X. Лично я для этого использовал macports. Единственная ошибка, с которой я столкнулся, была в невозможности отобразить цвета консоли (пример ошибки представлен на скриншоте), вместо этого выводился набор лишних символов. Эта проблема решилась установкой пакета: $ sudo easy. До выхода версии 1. Ошибка оказалась в том, что до изменения этот файл был папкой с файлами. В таком случае поможет или ручное удаление, или клонирование фреймворка в другое место с переносом базы. Android- вирусы. Начнем изучение функционала фреймворка на примере Android- вирусов. Для этого мы и устанавливали androguard (без него команда apk просто не будет работать). Загрузим первый семпл в фреймворк: viper > open - f ~/samples/malware. И первая команда, которая будет использоваться для любых файлов, — info. Вывод информации о файле. Теперь мы точно знаем, что это Java- архив и, возможно, Android, поэтому выведем общую информацию о файле через аргумент - i, используя установленный ранее androguard: viper malware. Компоненты Android- приложения. Здесь мы узнаем о названии приложения и его компонентах: Activity, Receivers, Broadcasts. Это в основном пригодится после декомпиляции. Далее мы можем узнать о требуемых правах доступа: viper malware. Первым делом ищем различные READ. В моем случае приложение требует не просто чтение внешней карты памяти, а ее монтирование android. MOUNT. Здесь все как по учебнику, приложение хочет читать и отправлять SMS, звонить, доступ к микрофону и прочее. Вывод информации о вирусе Dendroid. Но вернемся к нашему первому трояну. Этот семпл я часто даю в качестве примера тем, кто только начинает анализировать вредоносные программы для ОС Android. Здесь мы видим, что приложение не требует доступа к SMS или звонкам, что обычно и смущает немного продвинутого пользователя. И последняя, самая нужная функция — декомпиляция приложения: viper malware. Откроем наш декомпилированный код: viper malware. Был найден код, в котором изменялось расширение png на sh, выставлялись права на выполнение и запускались через командную строку.. И надо отдать вирмейкерам должное — они изменили некоторые строчки, но не стали удалять копирайты : ). Помимо Android- программ, заодно немного затронем модуль для анализа Java- файлов jar. У него не так много функций: список файлов внутри JAR- архива, возможность вытянуть его содержимое и информация из файла manifest. Сделаем дамп одного из Java- эксплойтов: viper out. Дамп вредоносного JAR- архива. Как видишь, это одна из разновидностей эксплойтов, которую просто как анализировать, так и создавать. Внутрь архива мы можем вставить, используя стандартные средства, любой exe- файл и без манипуляций с Java. Вредоносные документы. Перед тем как перейти к модулям, ответственным за работу с офисными документами, разберем несколько общих модулей. Для начала возьмем команду shellcode. Она ищет по своей базе шаблоны шелл- кодов и выводит смещения, по которым они могут быть найдены. Помимо поиска шелл- кодов внутри файла, тебе может потребоваться поиск XOR- ключей. Хоть и XOR- шифрование считается довольно слабым, его все равно продолжают использовать. Поэтому был добавлен модуль, который брутит файл с помощью XOR- метода и ищет определенные строки. По умолчанию взяты самые распространенные: This Program. Get. System. Directory. Create. File. Is. Bad. Read. Ptr. Is. Bad. Write. Ptr. Get. Proc. Address. Load. Library. Win. Exec. Create. File. Shell. Execute. Close. Handle. Url. Download. To. File. Get. Temp. Path. Read. File. Write. File. Set. File. Pointer. Get. Proc. Addr. Virtual. Allochttp. Также можешь задать и сам вручную через аргумент - s: viper malware > xor - s www. Начнем с офисных документов формата doc/docx. Для работы с такими файлами создан модуль office. Downloads/document. Для начала узнаем метаданные файла (шаблон, время создания и прочее): viper. Метаданные офисного документа. Часть из этих данных мы можем узнать также через команду info. Теперь узнаем, что за OLE- объекты присутствуют в файле: viper document. И если честно, я еще не встречал «хорошего» Word- документа с видео внутри. Также ты можешь увидеть OLE- структуры doc- файла: viper document. Теперь вытащим все объекты из документа, в том числе и SWF- файл: viper document. Дамп файлов из Word- документа. Теперь все объекты находятся внутри раздела с названием documentdoc. Для нас интерес представляют: Saved Decompressed Flash File to /tmp/documentdoc/Object. Pool- . Правда, пока что весь его функционал заключается в распаковке Flash- ролика и автоматическом открытии в фреймворке с выводом дампа в шестнадцатеричном виде на экран: viper document. Object. Pool- . Воспользуемся на примере этого файла: viper ce. H. - adobe. com. Если последние три — системные домены, то первая — это ссылка на сервис по сокращению URL- адресов, которая ведет на загрузку и запуск exe- файла. Саму же ссылку можно увидеть в hex- дампе или при выводе всех строчек из файла: viper ce. По аналогии с офисными документами в фреймворке есть возможность работать с файлами в формате PDF. Информация о файле: viper. Объекты в PDF- документе: viper. Которые можно сдампить и при желании сразу открыть внутри фреймворка: viper. Как видишь, эти модули довольно просты и при анализе эксплойтов таких форматов требуют дополнительные программы. Например, утилита от Adobe для анализа SWF- файлов SWF Investigator или комплект SWFTools. Но при желании и наличии времени все это можно добавить в виде модулей, что облегчит и увеличит скорость анализа. Анализ PE- файлов. Ну и наконец- то рассмотрим функционал для анализа вредоносных программ для ОС Windows. Для этого мы будем использовать модуль pe. В качестве подопытного я нашел семпл Dark. Comet. Первое, что нам пригодится, — это экспортные и импортные функции: viper rat. Вывод полезной информации из семпла Dark. Comet. Вывод секций файла: viper rat. Автором и одним из контрибьюторов кода выложено большое количество готовых модулей для вытаскивания полезной информации из вирусов такого типа. Для этого используется модуль с одноименным названием rat, и на данный момент, как видишь, уже поддерживается порядка 2. Достаточно вывести список текущих и выбрать номер желаемого. По умолчанию все редактирования ведутся из редактора nano: viper rat. Немного ниже я распишу подробнее работу с большим количеством семплов, а пока что рассмотрим некоторый массовый функционал модуля pe. Для примера я взял набор семплов по трояну Spy. Eye. У большинства команд для модуля pe есть возможность сравнить текущий открытый файл с другими, используя аргумент - -scan. Я приведу некоторые из них: viper malware. На скриншоте ты можешь видеть, что помимо анализируемого файла еще три из примерно 3. В подтверждение к этому мы также видим, что схоже не только время, но и ресурсы приложения. Также ты можешь найти свежий материал для исследования, воспользовавшись различными трекерами вредоносных (как изначально, так и вследствие взлома) сайтов. К примеру: Фреймворк позволяет загружать файлы и работать с ними не только локально, но и по URL- адресу: viper > open - u http: //site. Аргумент - t позволяет скачать файл не напрямую, а через Tor (зачем лишний раз палить IP- адрес аналитиков?). Для этого нужно поставить сам Tor и Python- библиотеку для него: sudo apt- get python- socksipy privoxy tor. Файл загружается во временную папку /tmp и со случайным именем, которое будет указано после в командной строке viper. После манипуляций с семплом или сразу после загрузки можно сохранить файл на диск с помощью команды store (она также автоматически добавит его в текущий проект, о котором мы поговорим позже): viper tmprv. Gr. Yl > store. По умолчанию они сохраняются в раздел binaries фреймворка. Сохранение загруженного файла на диск. Массовый анализ. Во время исследования часто приходится сталкиваться с анализом большого количества семплов. А как уже было упомянуто в начале статьи, фреймворк создан не только для анализа, но и для организации своей базы данных семплов. В этом нам помогает простая система проектов. Новые проекты создаются через аргумент - p или - -project name. Если проект с таким именем есть в базе, то он будет загружен, если нет, то будет создан. После запуска фреймворка ты можешь вывести список всех проектов и изменить на нужный в данный момент: viper > projects - l. Все проекты хранятся в разделе projects фреймворка, и удалить проект можно только локально из него. Управление проектами внутри фреймворка. Возможно, все твои подопытные хранились в одном месте, например в разделе «Загрузки», или был получен архив с большим количеством различных семплов. В этом случае ты можешь создать отдельный проект и загрузить как все файлы из папки, так и соответствующие какому- то критерию: -- file- size (- s) — по размеру (возможный максимум); -- file- type (- y) — по типу файла; -- file- name (- n) — по шаблону имен; -- tags (- t) — по тегам. Разберем на примере самого нужного критерия при большом количестве семплов — типа файла. Для этого воспользуемся уже упомянутой командой store, но с другими аргументами. Загрузка всех файлов: viper > store - -folder /home/dukebarman/samples. Загрузка exe- файлов: viper > store - -folder /home/dukebarman/samples - -file- type PE3. Загрузка Java- файлов: viper > store - -folder /home/dukebarman/samples - -file- type Java. Если не уверен в типе файла, то его можно посмотреть в разделе Type, если откроешь нужный файл и введешь команду info. Помимо этого, поддерживается команда find. После загрузки всех файлов в проект ты можешь осуществить поиск по нужным параметрам: all, latest, name, type, mime, md. К примеру, найдем все APK- файлы: viper > find name *. Или просто выведем все семплы из текущего проекта: viper > find all. После чего мы можем открыть нужный файл через его номер. Например, под номером 3: viper > open - l 3. Поиск Android- приложений в базе с помощью команды find. Следующая полезная команда — fuzzy. Позволяет сравнить открытый файл с другими семплами в проекте и найти похожие. По умолчанию выводит те, у кого схожесть выше 5. Но если задать параметр - v, то он выведет процент схожести для каждого файла. Пример работы представлен на скриншоте. Далее можно проверить все добавленные семплы с помощью YARA (если в данный момент не открыт какой- либо файл), и при желании она автоматически добавит теги к семплам: viper project > yara scan - -tag. Проверка всех семплов проекта с помощью YARAПомимо проектов, ты можешь использовать сессии для одновременной работы с несколькими файлами. Аргументы идентичны тем, которые есть в системе проектов: viper > sessions - -list. Команда close используется для завершения работы с текущей сессией, но не с самим фреймворком. Outro. Несколько возможностей мы с тобой не успели рассмотреть, поэтому распишу вкратце: работа с песочницами (см. Поэтому приглашаю задавать свои вопросы на канале ###viper IRC- сервера irc. Также ты можешь их написать или сообщить об ошибке в раздел issues Git. Hub- репозитория. Лично я в данный момент использую этот фреймворк для приведения в порядок своей базы с различным вредоносными эксплойтами (SWF, docx, Java и так далее), найденными на просторах интернета. Ну а пока что на этом все, остается лишь пожелать тебе удачи в исследовании серпентария темной стороны.
0 Comentarios
Deja una respuesta. |
Authorabilityusa Archives
Abril 2018
Categories |