Yara правила для чего
Инструменты Kali Linux
Список инструментов для тестирования на проникновение и их описание
Описание YARA
YARA — это инструмент направленный (но не ограничивающийся этим) на помощью исследователям вредоносного программного обеспечения для идентификации и классификации образцов зловредных программ. С YARA вы можете создать описания семей вредоносных программ (или чего-либо, что захотите описать) на основе текстовых или бинарных образцов. Каждое описание (ещё называемое «правило») состоит из набора строк и булевых выражений, которые определяют его логику. Взгляните на пример:
Вышеприведённое правило говорит YARA, что о файле, содержащем одну из трёх строк, нужно сообщить как о silent_banker. Это простой пример, более сложные и мощные правила можно создавать используя постановочные символы, чувствительные к регистру строки, регулярные выражения, специальные операторы и многие другие функции, описанные в документации YARA.
YARA является многоплатформенной, работает на Windows, Linux и Mac OS X и может использоваться как из её интерфейся командной строки, так и из ваших собственных скриптов Python через расширение yara-python.
Автор: Google Inc., Victor M. Alvarez и другие авторы
Справка по YARA
Обязательные аргументы для длинных опций также обязательны для коротких опций.
Руководство по YARA
yara — ищет файлы, соответствующие образцам и правилам, написанном на языке специального назначения.
СИНОПСИС
ОПИСАНИЕ
yara сканирует заданный ФАЙЛ, все файлы, содержащиеся в директории ДИРЕКТОРИЯ или процессы по их PID, ища соответствия образцам и правилам, предоставленным на специальном языке. Эти правила считываются из ФАЙЛА_С_ПРАВИЛАМИ.
Опции yara следующие
Напечатать правила отмеченные как tag и игнорировать остальные. Эта опция может использоваться множество раз.
Напечатать правила, названные identifier и игнорировать остальные. Эту опцию можно использовать множество раз.
Напечатать правила, которые не совпали (отрицание).
Напечатать данные о модуле.
Напечатать тэги, ассоциированные с этим правилом.
Напечатать методанные, ассоциированные с этим правилом.
Напечатать строки, найденные в файле.
Напечатать длину строк, найденных в файле.
Использовать указанное количество потоков для сканирования директории.
Прервать сканирования после этого количество совпавших правил.
Прервать сканирование после этого количество прошедших секунд.
Установить максимальный размер стека на указанное количество слотов.
-d identifier=value
Задать внешнюю переменную. Эту опцию можно использовать несколько раз.
-x модуль=файл
Передать содержимое файла как дополнительные данные модулю. Эту опцию можно использовать несколько раз.
Рекурсивно сканировать файлы в директории.
Ускорение сканирования путём поиска только первого вхождения каждого образца.
—fail-on-warnings
Показать информацию о версии.
Примеры запуска YARA
Применить правило из /foo/bar/rules ко всем файлам в текущей директории. Поддиректории не сканируются:
Применить правило из /foo/bar/rules к bazfile. Сообщить только о правилах помеченных как Packer или Compiler:
Сканировать все файлы в директории /foo directory и её поддиректориях:
Задать три внешних переменных mybool, myint и mystring:
Применить правила из /foo/bar/rules к bazfile при этом передовая содержимое cuckoo_json_report в модуль cuckoo:
Установка YARA
Программа предустановлена в Kali Linux.
Установка в BlackArch
Программа предустановлена в BlackArch.
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты YARA
Это утилита командной строки.
Инструкции по YARA
Ссылки на инструкции будут добавлены позже.
Yara. Пишем правила, чтобы искать малварь и не только
Содержание статьи
В нашей прошлой статье («Хеш четкий и хеш нечеткий») мы рассказали, как загружали заранее классифицированные объекты и при этом полностью уповали на знания рандомных аналитиков и верили (конечно, не до конца!), что там действительно находится малварь конкретного семейства. Такое часто происходит в реальном мире, вредоносное ПО настолько быстро появляется, что информацию о том, как идентифицировать угрозу и быстро реализовать правило детектирования, порой бывает почти что вопросом жизни или смерти.
YARA — это опенсорсный инструмент, который помогает исследователям искать и классифицировать вредоносные семплы и даже проводить Threat Hunting. Утилита выполняет сигнатурный анализ на основе формальных YARA-описаний (правил). В них содержатся индикаторы компрометации для разных типов вредоносного ПО.
Фишка в том, что делать правила легко и не занимает много времени. Именно поэтому YARA используют в AlienVault, Avast, ESET, FireEye, Group-IB, Kaspersky, Trend Micro, Virus Total, x64dbg. В общем, почти все, кто имеет дело с анализом вредоносного ПО.
YARA-правила могут обрабатывать не только исполняемые файлы, но и документы, библиотеки, драйверы — все что угодно. Ими же можно сканировать сетевой трафик, хранилища данных, дампы памяти. Эти правила можно включать в другие инструменты, такие как SIEM, антифишинг, IDS, песочницы.
Давай разберемся, как же выглядят эти правила и как их составлять.
Структура правил
Применяем YARA
Минимально необходимые секции — это название правила и его условия. Например, правилом ниже мы будем детектировать объекты только по их imphash (на тестовых объектах из предыдущей статьи):
Сохраним файл как AT. yar и запустим на директории с семплами Agent Tesla. Посмотрим на результат и убедимся, что правило отработало на всех представителях Agent Tesla.
Результат — все из всех.
Как ты мог заметить, правила YARA поддерживают импорт полезных модулей. Соответственно, можно написать свои модули. Вот несколько наиболее часто используемых:
Полный список ты всегда можешь глянуть в официальной документации по YARA.
Пишем правила
В опциональной секции определений можно юзать маски (wildcard, подобия регулярных выражений). Например, для шестнадцатеричных строк возможны такие маски:
Рассмотрим еще один пример с несколькими правилами и продемонстрируем тебе разнообразие возможностей детектирования YARA:
🔬 Повышаем свою защиту, используя инструмент с открытым исходным кодом YARA
YARA не заменит антивирусное программное обеспечение, но поможет вам обнаружить проблемы гораздо эффективнее!
Далее мы расскажем как установить YARA на Mac, Windows и Linux.
Существует множество различных инструментов для обнаружения угроз корпоративной сети.
Некоторые из этих средств обнаружения основаны на сетевых сигнатурах, другие – на файлах или поведении на конечных точках или серверах компании.
Большинство этих решений используют для обнаружения опасности существующие правила, которые, надеемся, часто обновляются.
Но что происходит, когда сотрудники службы безопасности хотят добавить пользовательские правила для обнаружения или самостоятельно реагировать на инциденты на конечных точках, используя определенные правила?
Именно здесь в игру вступает YARA.
Что такое YARA?
YARA – это бесплатный инструмент с открытым исходным кодом, призванный помочь сотрудникам службы безопасности обнаруживать и классифицировать вредоносное ПО, но не стоит ограничиваться только этой целью.
Правила YARA также могут помочь обнаружить определенные файлы или любое другое содержимое, которое вы захотите обнаружить.
YARA поставляется в виде бинарного файла, который можно запускать для аудита файла, принимая правила YARA в качестве аргументов.
Инструмент работает в операционных системах Windows, Linux и Mac.
Его также можно использовать в сриптах Python с помощью расширения YARA-python.
Правила YARA – это текстовые файлы, содержащие элементы и условия, при выполнении которых происходит обнаружение.
Эти правила могут быть запущены на один файла, папки, содержащей несколько файлов, или даже всей файловой системы.
Для чего можно использовать YARA?
Вот несколько способов использования YARA.
Обнаружение вредоносных программ
Основное применение YARA, для которого он был создан в 2008 году, – это обнаружение вредоносных программ.
Вы должны понимать, что он не работает как традиционное антивирусное программное обеспечение.
В то время как последние в основном обнаруживают статические сигнатуры из нескольких байтов в двоичных файлах или подозрительное поведение файлов, YARA может расширить возможности обнаружения, используя определенные комбинации компонентов.
Таким образом, можно создавать правила YARA для обнаружения целых семейств вредоносных программ, а не только одного варианта.
Возможность использовать логические условия для соответствия правилу делает его очень гибким инструментом для обнаружения вредоносных файлов.
Также следует отметить, что в данном контексте можно использовать правила YARA не только для файлов, но и для дампов памяти.
Обработка инцидентов
Во время инцидентов аналитикам безопасности и угроз иногда требуется быстро проверить, не спрятан ли где-то на конечной точке или даже во всей корпоративной сети один конкретный файл или контент.
Одним из решений для обнаружения файла независимо от того, где он находится, может быть создание и использование специальных правил YARA.
Быстрая классификация содержимого
Использование правил YARA может сделать реальную сортировку файлов, когда это необходимо.
Классификация вредоносных программ по семействам может быть оптимизирована с помощью правил YARA.
Однако правила должны быть очень точными, чтобы избежать ложных срабатываний.
Анализ входящих сетевых соединений
Можно использовать YARA в сетевом контексте для обнаружения вредоносного содержимого, которое отправляется в корпоративную сеть для защиты.
Правила YARA могут быть запущены на электронные письма и особенно на их вложенные файлы, или на другие части сети, например, HTTP-соединения на обратном прокси-сервере.
Конечно, его можно использовать в качестве дополнения к уже существующему аналитическому программному обеспечению.
Анализ исходящих сетевых коммуникаций
Исходящие коммуникации могут быть проанализированы с помощью правил YARA для обнаружения исходящих сообщений вредоносного ПО, а также для обнаружения утечки данных.
Использование специальных правил YARA на основе пользовательских правил, созданных для обнаружения легитимных документов компании, может работать как система предотвращения потери данных и обнаруживать возможную утечку внутренних данных.
Интеграция EDR
YARA является зрелым продуктом, поэтому несколько различных решений EDR (Endpoint Detection and Response) позволяют интегрировать в него персональные правила YARA, что упрощает запуск обнаружения на всех конечных точках одним щелчком мыши.
Как установить YARA?
YARA доступна для различных операционных систем: macOS, Windows и Linux.
Как установить YARA на macOS
YARA может быть установлена на macOS с помощью Homebrew.
Просто введите и выполните команду:
После этой операции YARA готова к использованию в командной строке.
Как установить YARA на Windows
YARA предлагает бинарники для Windows для простоты использования:
После загрузки zip-файла с сайта он может быть разархивирован в любую папку и содержит два файла: Yara64.exe и Yarac64.exe (или Yara32.exe и Yarac32.exe, если вы выбрали 32-битную версию файлов).
После этого инструмент готов к работе в командной строке.
Как установить YARA в системах Linux
YARA может быть установлена непосредственно из исходного кода.
Скачайте его здесь, нажав на ссылку исходного кода (tar.gz), затем распакуйте файлы и скомпилируйте его.
В качестве примера мы будем использовать версию 4.1.3 YARA, последнюю на момент написания статьи, на системе Ubuntu.
Обратите внимание, что несколько пакетов являются обязательными и должны быть установлены до установки YARA:
После этого запустите извлечение файлов и установку:
YARA легко установить – самое сложное – научиться писать эффективные правила YARA, о чем я расскажу в следующей статье.
Обзор правил YARA: изучение инструмента исследования вредоносного ПО
Правила YARA используются для классификации и идентификации образцов вредоносных программ путем создания описаний их семейств на основе текстовых или двоичных шаблонов.
Сегодня мы разберем:
Принцип действия правил YARA
Примеры использования правил YARA
Полезные факты о YARA
Создание правил YARA
В чем суть правил YARA?
Правила YARA напоминают язык программирования. Основная их задача — определять переменные в шаблонах, найденных в образце вредоносного ПО. При полном или частичном совпадении (в зависимости от конкретного правила) этот алгоритм может быть использован для успешной идентификации вредоносного ПО.
При анализе части вредоносного ПО аналитики идентифицируют уникальные шаблоны и цепочки внутри вредоносного ПО, что позволяет им определить, к какой группе угроз и семейству вредоносных программ относится данный образец. Правило YARA, созданное на основе нескольких образцов из одного семейства вредоносных программ, помогает идентифицировать несколько образцов, все из которых могут быть связаны с одной и той же кибератакой или злоумышленником.
Изучение вредоносного ПО дает аналитику возможность создать правило YARA для нового исследуемого образца. Затем это правило можно использовать для поиска аналогичных образцов в его личной базе данных вредоносных программ или в онлайн-хранилищах (например, VirusTotal).
Если специалист по анализу вредоносных программ работает в организации, которая для защиты от вредоносных программ использует IPS или другую платформу с поддержкой YARA, правила YARA можно применить как средство обнаружения вредоносных двоичных файлов внутри организации и реагирования на них.
Примеры использования
Технология YARA особенно популярна в сфере защиты информации благодаря следующим возможностям применения:
Обнаружение и классификация вредоносных программ;
Выявление новых образцов на основе характерных семейству свойств;
Специалисты по реагированию на инциденты могут использовать правила YARA для выявления образцов и взломанных устройств;
Упреждающая настройка правил YARA может повысить степень защиты организации.
Элементы YARA, о которых необходимо знать
Чтобы создать эффективное правило YARA, необходимо знать различные элементы, которые можно использовать для его кастомизации.
Метаданные
Метаданные не влияют на то, что будет искать правило YARA, зато они предоставляют полезную информацию о самом правиле:
Автор: имя, адрес электронной почты, идентификатор Twitter;
Дата: дата создания правила;
Версия: номер версии правила YARA для отслеживания изменений;
Ссылка: ссылка на статью или загрузку образца; используется для предоставления соответствующей информации об образце вредоносного ПО, которое правило должно обнаружить;
Описание: краткое изложение, для чего предназначено правило, а также описание характеристик вредоносного ПО, которое предполагается обнаружить;
Хеш: список образцов хешей, которые использовались для создания правила YARA.
Строки
В образце вредоносного ПО часто можно найти уникальные и важные строки, которые очень помогают при создании правила YARA. Чтобы определить строку в правиле, саму строку нужно обозначить как переменную.
$a=”string from malware sample”
Помимо обозначения строки, также можно добавлять модификаторы после нее для точной настройки поиска:
$a=”malwarestring” fullword: этот модификатор будет точно соответствовать определенному слову. Например, «www.malwarestring.com» вернет совпадение, а «www.abcmalwarestring.com» — нет;
$a=”malwarestring” wide – соответствует строкам Unicode, разделенным нулевыми байтами, например, «w.w.w…m.a.l.w.a.r.e.s.t.r.i.n.g…c.o.m»;
$a=”malwarestring” wide ascii: правило сможет искать соответствия по символам Unicode и ASCII;
$a=”MalwareString” nocase: правило будет искать соответствия в строке независимо от регистра.
На изображении ниже мы использовали шестнадцатеричный редактор HxD; в нем видны некоторые строки внутри инструмента:
Мы выделили строку ASCII «\photo.png«; а также соответствующее шестнадцатеричное выражение. Используя эту информацию, можно обозначить шестнадцатеричную строку в правиле YARA:
$a= : обратите внимание на использование фигурных скобок, а не кавычек;
$a=<5C 6 6F 74 6F 2E 70 6E 67>: в этом примере видно, что строка может начинаться со значения 5C, но перед тем, как совпадение с шаблоном повторится, возможны 2–10 случайных байтов;
$a= <5C(01 02 | 03 04) 6F 2E 70 6E 67>: в этом примере видно, что шестнадцатеричные значения на этом участке могут быть «01 02» или «03 04».
Приведенные ниже строки и уникальные идентификаторы очень помогают при создании правил YARA:
Мьютексы: уникальны для семейств вредоносных программ; проверка на наличие мьютекса позволяет вредоносному ПО определить, было ли устройство взломано ранее;
Редкие и необычные пользовательские агенты: обнаруживаются, когда вредоносное ПО связывается с его инфраструктурой C2;
Ключи реестра: часто создаются вредоносным ПО как механизм сохранения;
Пути PDB: сокращение от Program Database (базы данных программы). PDB содержит отладочную информацию о файле. У вас вряд ли будет PDB для вредоносного ПО, но путь PDB часто можно найти и использовать в правиле YARA; например c:\user\desktop\vc++ 6\6.2.20\scrollerctrl_demo\scrollertest\release\scrollertest.pdb.
Зашифрованные строки конфигурации: вредоносное ПО часто шифрует свою конфигурацию, которая содержит полезные идентификаторы компрометации (IOC), например IP-адреса и домены. Если у вас есть навыки реверс-инжиниринга для идентификации этих зашифрованных данных, их можно использовать в правиле YARA.
Условия
Раздел строк определяет критерии поиска, которые будут использоваться для правила YARA. Раздел условий определяет критерии, по которым правило будет искать совпадения. Ниже мы описали несколько возможных условий:
uint16 (0) == 0x5A4D: проверка заголовка файла — полезное условие, которое следует включить в правила YARA. Это условие предусматривает, что файл должен быть исполняемым файлом Windows, поскольку шестнадцатеричные значения 4D 5A всегда располагаются в начале заголовка исполняемого файла. В YARA ситуация обратная из-за порядка байтов.
uint32(0)==0x464c457f) or (uint32(0) == 0xfeedfacf) or (uint32(0) == 0xcffaedfe) or (uint32(0) == 0xfeedface) or (uint32(0) == 0xcefaedfe): используется для идентификации двоичных файлов Linux путем проверки заголовка файла.
(#a == 6): количество строк равно 6.
(#a> 6): количество строк больше 6
Указать условие размера файла можно по-разному:
(filesize>512)
(filesize
pe.exports (Botanist, Chechako, Originator” Repressions)
На изображении ниже показана интересная DLL, которая используется для HTTP-соединения, — winhttp.dll:
Мы также видим, что эта библиотека импортирует ряд полезных API, которые можно включить в правило.
pe.imports (winhttp.dll, WinHttpConnect)
pe.machine == pe.MACHINE_AMD64: используется для проверки типа устройства.
Imphash — это хеш таблицы адресов импорта (Import Address Table, IAT) вредоносного ПО, который мы определили на предыдущем изображении с помощью PEStudio. Одна и та же таблица IAT часто используется в семействе вредоносных программ, поэтому ее использование в правиле YARA должно обнаруживать похожие образцы.
pe.imphash() == “0E18F33408BE6E4CB217F0266066C51C”
Чтобы временная метка файлов использовалась в правиле YARA, она должна быть преобразована во временную метку эпохи Unix; на изображении ниже показано, когда было скомпилировано вредоносное ПО:
Использование синтаксиса «//» позволяет вносить комментарии в правило, поэтому ниже мы можем добавить комментарий с указанием временной метки эпохи.
pe.timestamp == 1616850469 // Tue Dec 08 17:58:56 2020
Раздел версии PEStudio показывает, что этот образец Lokibot имеет некоторые уникальные идентификаторы версии. Используя функцию pe.version_info, мы можем указать, какие свойства версии использовать (например, поле «CompanyName»).
pe.version_info [“CompanyName”] содержит AmAZon.cOm
pe.language(0x0804) // Китай: определенные языки можно использовать с указанием кода языка Microsoft.
На изображении ниже видно, что мы смогли идентифицировать ряд разделов вредоносного ПО, нетипичных для других исполняемых файлов Windows, которые были проанализированы. Используя эту информацию, можно указать конкретные названия разделов и их соответствующие номера.
Обратите внимание, что разделы имеют нулевой индекс, поэтому первый раздел будет иметь значение «0», второй — «1» и так далее. Итак, в приведенном ниже примере мы использовали раздел под названием «BSS», который является разделом номер два.
pe.sections[2].name == “BSS”
Создание правил Yara
На изображении ниже показан пример правила YARA, которое мы написали на основе образца вредоносного ПО Redline:
Начало правила
Правило YARA начинается с синтаксиса «rule», за которым следует имя правила. Затем к нему добавляется «<" c обозначением содержания правила YARA.
Чуть выше мы импортировали функцию PE, указав «import pe»; эта функция используется в разделе с условиями.
Метаданные
В это правило мы включили автора, тип файла вредоносного ПО, дату написания правила, его версию, ссылку на источник, из которого получен образец, а также хеш вредоносного ПО. Это дает некоторую контекстную информацию, которая будет полезна всем, кто будет пользоваться правилом, а возможно, и самому автору при обращении к нему через некоторое время.
Указание строк
Затем мы обозначили некоторые строки, которые были найдены в образце вредоносного ПО. Они определены как переменные в правиле и могут использоваться для поиска файлов с аналогичным содержимым.
Строки, которые мы использовали, были идентифицированы с помощью PEStudio и представляют собой набор интересных API Windows и строк, которые будут уникальными для этого семейства вредоносных программ.
Условия
В разделе с условиями указано, какие условия должны быть выполнены, чтобы правило YARA выявило совпадение. Первое сформулированное нами правило заключается в том, что заголовок файла должен быть исполняемым файлом Windows. Это делается путем указания шестнадцатеричных значений, найденных в заголовке исполняемого файла Windows. На изображении ниже вы можете увидеть, как это определяется с помощью шестнадцатеричного редактора.
Версия файла во вредоносной программе также показалась нам в какой-то мере уникальной, поэтому мы включили ее в правило “Versium Research 5 Installation”.
Мы также указали на необходимость присутствия трех импортов, которые инструмент PEStudio пометил как подозрительные:
Со временем вы сможете обнаруживать подозрительные разделы в образцах. Наиболее часто встречаются разделы «.data», «.reloc», and «.rsrc». В этом образце мы обнаружили несколько разделов, которые не соответствуют этому шаблону, поэтому наше правило YARA ищет разделы под названием «CODE» и «BSS».
Согласно другим условиям, должна присутствовать первая строка, помеченная как «$a1», ИЛИ три строки из «$b» или одна из строк «$c». Неизменным остается условие, по которому размер файла не должен превышать 50 000 байт.
Теперь это правило готово для использования, и мы можем начать поиск дополнительных образцов Redline.
Надеемся, это материал будет вам полезен, чтобы создавать собственные правила YARA для поиска новых образцов и их анализа или, в качестве альтернативы, для их активного обнаружения в своей организации.