![]() |
Введение
Еще в далекое время, с появлением первых компьютеров, люди начали сталкиваться с рядом проблем, которые настигали их раз за разом. Одна из таких ситуаций - это появление вирусов, основная цель которых нарушать работу ПК. Таким образом, было принято решение создать защиту против такой угрозы. Так появились первые антивирусы. Сегодня их существует огромное множество, но как же они отличают один вирус от другого? Именно решением этого вопроса мы займемся в статье. План работы Итак, прежде всего давай по этапам разберем план действий. Без каких-либо знаний в работе файла и его инициализации идти в бой нельзя, поэтому первым делом я расскажу тебе по каким параметрам известные антивирусы детектят малварь. Далее нас ждет увлекательное путешествие по работе с условным языком Yara. Я расскажу о его синтаксисе, особенностях установки и других мелких деталях. Ну а после этого мы попробуем создать собственное правило для одного типа вирусов из моей коллекции. С объяснениями я закончил, поэтому приступаем к работе. Как антивирусы находят вирусы? Прежде всего не стоит забывать, что каждый файл имеет собственный отпечаток, присущий только ему. По другому он называет сигнатура. Сигнатура - это особая последовательность байт в файле, которая имеет начало и конец. Цепочку, состоящую из одинаковых символов найти затруднительно. Обычно сигнатуру можно увидеть либо в кодировки ASCII, или же в шестнадцатеричной системе счисления. Антивирус, который основывается на таком понятии принято называть сигнатурным. В основном они ищут определенную последовательность байт в файле и после сравнивают ее со своей базой. Но если вирус был подвержен обфускации или криптованию, то программа будет искать похожую сигнатуру с определенной погрешностью в байтах. Допустим любой PE-файл будет иметь такой порядок байт в начале: Код:
4d 5a 90 00 03 00 00 00 04 00 00 00https://forum.antichat.xyz/attachmen...8e935e49d9.png https://forum.antichat.xyz/attachmen...6426a39852.png Начала файла абсолютно одинаковое и поэтому в HEX редакторе мы можем точно сказать, что они имеют EXE расширение. Теперь давай поговорим о PE-файлах и его составляющих. https://forum.antichat.xyz/attachmen...959c3d6a97.png По такой крайне понятной таблицы я коротко опишу как работает исполняемый файл. Загрузчик первым делом выгружает всю информацию на устройство. После она тут же распаковывается и приводится в действие. Но не всегда так просто, ведь вирьмейкеры используют все более и более изощренные методы сокрытия информации от системы. По мимо этого файл имеет таблицу импорта и экспорта. Хотя экспорт встречается не так часто, но все же про него не стоит забывать. По ней можно определить какие модули импортирует файл. Одна из самых известных библиотек, которую используют вирусы это user32.dll. На основе такой информации мы можем создавать определенные правила на языке Yara, чтобы с высокой точностью определять, что за зверь перед нашими глазами. Поэтому я предлагаю опробовать свои силы в бою. Знай своего врага в лицо Итак, для начала я расскажу тебе в какой среде мы будем работать. Так как Yara условный язык программирования, то и полноценной IDE для него не найти, поэтому для работы нам потребуется Visual Studio Code и дополнение к нему YARA. После установки создаем новый файл в любом удобном месте с именем malware.yar. Теперь открываем этот файл в VS и делаем наш каталог доверенным окном (при открытии тебе вылезет уведомление с таким требованием). Теперь все готово к работе и мы можем приступать к коду. Первым делом давай импортируем модуль для работы с PE файлами. Код: Код:
import "pe"Код: Код:
rule malware_Memz {https://forum.antichat.xyz/attachmen...3b5d125b8a.png Давай выделим сразу, что нам нужно, а что можно выбросить в помойку. Прежде всего это открытие вкладок в гугле. Арсенал любого ратника предполагает такую функцию как составление запросов в браузере, поэтому если мы внесем в правила запрос из Google вероятнее всего антивирус будет идентифицировать не тот файл. Искать нужно что-то особенное и необычное от других вирусов. Дам подсказку, это строка находится на 151 месте и носит название GetDestopWindow. Ее мы точно должны внести в список поскольку вирус напрямую взаимодействует с рабочим столом, меняя его в цветах. Также давай обратим внимания на 156 строчку BitBit. Я думаю мало кто додумается вставлять ее в свое творение. Далее идет работа с токенами и процессами, что крайне не характерно для многих малварей, поэтому давай добавим к нашей работе строчки с 159 до 163. Не стоит забывать про подозрительные библиотеки GDI32.dll, ADVAPI32.dll и PSAPI.DLL. Теперь нам нужно всю информацию превратить в правила, для этого воспользуемся функцией strings и запишем данные в таком виде: Код: Код:
rule malware_Memz {Для реализации всего нашего плана в правило следует добавить следующую часть кода: Код: Код:
condition:Код: Код:
yara64.exe -r malware.yar папка_с_вирусомТаким образом мы заставили Yara идентифицировать вирус Memz и теперь можно с легкостью найти его двойники. Но давай поробуем обнаружить что-нибудь другое. Для этого тебе не придется создавать новый файл, поскольку все правила можно хранить в одном месте. Итак, для этого создадим папку examples, переместим туда Memz и также попробуем закинуть какой-нибудь DOCX файл. По мимо этого я добавилKaspersky Cureit, TDSSKiller и картинку в формате JPEG. Выглядит все примерно так: https://forum.antichat.xyz/attachmen...c34c419a44.png Начнем создавать правила для Cureit. Для этого в нашем файле malware.yar записываем такие строки: Код: Код:
rule Kaspersky_Cureit {Код: Код:
rule Kaspersky_Cureit {Код: Код:
rule Kaspersky_Cureit {https://forum.antichat.xyz/attachmen...a4f8d51b6e.png Поэтому обновляем наш файл и записываем в него такие строчки: Код: Код:
rule Toolkit_TDSSKiller {Код: Код:
rule Toolkit_TDSSKiller {Код: Код:
rule Toolkit_TDSSKiller {Хорошо, с PE-файлами мы разобрались, как опознавать теперь остальные? Будем идти от самого простого. В самом начале я говорил про понятие сигнатуры для разных файлов. Для расширения JPEG и DOCX такой термин тоже применим. Поэтому давай создадим правило и посмотрим как все различается. Начнем с картинки. Первым делом открываем ее и закидываем в HxD для просмотра. Переведи свой взгляд на первые 2 байта информации. За это мы и будем цепляться. Любой файл в формате JPEG будет иметь такое название. В связи с этим запишем это дело в наше правило. Код: Код:
rule Image_JPEG {Код: Код:
strings:Далее я попробую создать правила для DOCX файла. Чтобы он не оказался пустой, я записал в нем некоторое количество символов. Приступим к созданию. Первым делом закинем наш файл в HEX редактор и посмотрим на первые 2 байта. Запишем их в обратном порядке для нашего правила. Мой вариант документа весит 645 КБ и поэтому я спокойно перевожу все в байты и записываю в условие. Часть работы будет выглядеть так: Код: Код:
rule Docx_format {Код: Код:
rule Docx_format {Подводим итоги В этой статье я показал как работает анализ файла при помощи Yara. Этот инструмент поможет тебе в дальнейшем идентифицировать вредоносное ПО по его особенностям, тем самым предотвращая заражание таким вирусом других систем. Также Yara адаптирована под язык Python и создавать правила можно теперь в нем. Узнать все подробности ты можешь из официальной документации. |
Спасибо большое за статью!
|
Видел бурп научили с yara работать, хорошая статья, автору респект.
Оставлю тут ссылку на репу с подборкой правил GitHub - InQuest/awesome-yara: A curated list of awesome YARA rules, tools, and people. +прикреплю cheetsheat |
По полочкам прям! Спасибо!
|
| Время: 09:22 |