You are here: Home » Обратная инженерия » YARA

YARA

Описание YARA

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

rule silent_banker : banker
{
    meta:
        description = "This is just an example"
        threat_level = 3
        in_the_wild = true

    strings:
        $a = {6A 40 68 00 30 00 00 6A 14 8D 91}
        $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
        $c = "UVODFRYSIHLNWPEJXQZAKCBGMT"

    condition:
        $a or $b or $c
}

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

YARA является многоплатформенной, работает на Windows, Linux и Mac OS X и может использоваться как из её интерфейся командной строки, так и из ваших собственных скриптов Python через расширение yara-python.

Если вы планируете использовать YARA для сканирования сжатых файлов (.zip, .tar и т. д.), то обратите внимание на yextend, очень полезное расширение для YARA с открытым исходным кодом.

Домашняя страница: https://github.com/VirusTotal/yara/

Автор: Google Inc., Victor M. Alvarez и другие авторы

Лицензия: BSD-3-Clause

Справка по YARA

Использование:

yara [ОПЦИИ]... ФАЙЛ_С_ПРАВИЛАМИ ФАЙЛ | ДИРЕКТОРИЯ | PID

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

  -t,  --tag=TAG                   печатать только правила с тэгом TAG
  -i,  --identifier=ИДЕНТИФИКАТОР     печатать только правила названные ИДЕНТИФИКАТОР
  -n,  --negate                    печатать только не удовлетворяющие правила (отрицание)
  -D,  --print-module-data         напечатать данные модуля
  -g,  --print-tags                напечатать тэги
  -m,  --print-meta                напечатать метаданные
  -s,  --print-strings             напечатать совпадающие строки
  -L,  --print-string-length       напечатать длину совпадающих строк
  -e,  --print-namespace           напечатать пространства имён правил
  -p,  --threads=ЧИСЛО            использовать указанное ЧИСЛО потоков для сканирования директории
  -l,  --max-rules=ЧИСЛО          прервать сканирования после соответствия ЧИСЛУ правил
  -d ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ                     определить внешнюю величину
  -x МОДУЛЬ=ФАЙЛ                   передать содержимое ФАЙЛА как дополнительные данные в МОДУЛЬ
  -a,  --timeout=СЕКУНДЫ           прервать сканирование после заданного числа СЕКУНД
  -k,  --stack-size=СЛОТЫ          установить максимальный размер стека (по умолчанию=16384)
  -r,  --recursive                 рекурсивно искать по директориям
  -f,  --fast-scan                 режим быстрого соответствия
  -w,  --no-warnings               отключить предупреждения
       --fail-on-warnings          сбой при предупреждении
  -v,  --version                   показать информацию о версии
  -h,  --help                      показать справку и выйти

Руководство по YARA

ИМЯ

yara — ищет файлы, соответствующие образцам и правилам, написанном на языке специального назначения.

СИНОПСИС

yara [ОПЦИИ]... ФАЙЛ_С_ПРАВИЛАМИ ФАЙЛ | ДИРЕКТОРИЯ | PID

ОПИСАНИЕ

yara сканирует заданный ФАЙЛ, все файлы, содержащиеся в директории ДИРЕКТОРИЯ или процессы по их PID, ища соответствия образцам и правилам, предоставленным на специальном языке. Эти правила считываются из ФАЙЛА_С_ПРАВИЛАМИ.

Опции yara следующие

-t tag --tag=tag

Напечатать правила отмеченные как tag и игнорировать остальные. Эта опция может использоваться множество раз.

-i identifier --identifier=identifier

Напечатать правила, названные identifier и игнорировать остальные. Эту опцию можно использовать множество раз.

-n --negate

Напечатать правила, которые не совпали (отрицание).

-D --print-module-data

Напечатать данные о модуле.

-g --print-tags

Напечатать тэги, ассоциированные с этим правилом.

-m --print-meta

Напечатать методанные, ассоциированные с этим правилом.

-s --print-strings

Напечатать строки, найденные в файле.

-L --print-string-length

Напечатать длину строк, найденных в файле.

-p number --threads=число

Использовать указанное количество потоков для сканирования директории.

-l number --max-rules=количество

Прервать сканирования после этого количество совпавших правил.

-a seconds --timeout=секунды

Прервать сканирование после этого количество прошедших секунд.

-k slots --stack-size=slots

Установить максимальный размер стека на указанное количество слотов.

-d identifier=value

Задать внешнюю переменную. Эту опцию можно использовать несколько раз.

-x модуль=файл

Передать содержимое файла как дополнительные данные модулю. Эту опцию можно использовать несколько раз.

-r --recursive

Рекурсивно сканировать файлы в директории.

-f --fast-scan

Ускорение сканирования путём поиска только первого вхождения каждого образца.

-w --no-warnings

Отключить предупреждения.

--fail-on-warnings

Расценивать предупреждения как ошибки. Опция не имеет эффекта если используется с --no-warnings.

-v --version

Показать информацию о версии.

Примеры запуска YARA

Применить правило из /foo/bar/rules ко всем файлам в текущей директории. Поддиректории не сканируются:

yara /foo/bar/rules .

Применить правило из /foo/bar/rules к bazfile. Сообщить только о правилах помеченных как Packer или Compiler:

yara -t Packer -t Compiler /foo/bar/rules bazfile

Сканировать все файлы в директории /foo directory и её поддиректориях:

yara -r /foo

Задать три внешних переменных mybool, myint и mystring:

yara -d mybool=true -d myint=5 -d mystring="my string" /foo/bar/rules bazfile

Применить правила из /foo/bar/rules к bazfile при этом передовая содержимое cuckoo_json_report в модуль cuckoo:

yara -x cuckoo=cuckoo_json_report /foo/bar/rules bazfile

Установка YARA

Программа предустановлена в Kali Linux.

Установка в BlackArch

Программа предустановлена в BlackArch.

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты YARA

Это утилита командной строки.

Инструкции по YARA

Ссылки на инструкции будут добавлены позже.

Рекомендуемые статьи: