Skip to content

Latest commit

 

History

History
103 lines (77 loc) · 8.94 KB

File metadata and controls

103 lines (77 loc) · 8.94 KB

Запуск YARA из командной строки

Для вызова YARA вам понадобятся две вещи: файл с правилами и цель для сканирования. Целью может быть файл, папка или процесс.

yara [ОПЦИИ] ФАЙЛ_ПРАВИЛ ЦЕЛЬ

В YARA 3.8 и ниже ФАЙЛ_ПРАВИЛ мог быть файлом с правилами как в исходном, так и в скомпилированном виде без различия. В YARA 3.9 необходимо явно указать, что ФАЙЛ_ПРАВИЛ содержит скомпилированные правила, используя флаг -C:

yara [ОПЦИИ] -C ФАЙЛ_ПРАВИЛ ЦЕЛЬ

Это мера безопасности для предотвращения непреднамеренного использования скомпилированных правил от третьих лиц. Использование скомпилированных правил из ненадёжных источников может привести к выполнению вредоносного кода на вашем компьютере.

Для предварительной компиляции правил можно использовать инструмент yarac. Это позволяет сэкономить время, поскольку YARA загружает скомпилированные правила быстрее, чем компилирует одни и те же правила снова и снова.

Вы также можете передать несколько исходных файлов в yara:

yara [ОПЦИИ] ФАЙЛ_ПРАВИЛ_1 ФАЙЛ_ПРАВИЛ_2 ФАЙЛ_ПРАВИЛ_3 ЦЕЛЬ

Обратите внимание, что это работает только для правил в исходном виде. При вызове YARA со скомпилированными правилами принимается только один файл.

В примере выше все правила находятся в одном пространстве имён «по умолчанию», что означает, что идентификаторы правил должны быть уникальными среди всех файлов. Однако вы можете задать пространство имён для отдельных файлов. Например:

yara [ОПЦИИ] namespace1:ФАЙЛ_ПРАВИЛ_1 ФАЙЛ_ПРАВИЛ_2 ФАЙЛ_ПРАВИЛ_3 ЦЕЛЬ

В этом случае ФАЙЛ_ПРАВИЛ_1 использует namespace1, а ФАЙЛ_ПРАВИЛ_2 и ФАЙЛ_ПРАВИЛ_3 используют пространство имён по умолчанию.

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

Доступные опции

Опция Описание
-C, --compiled-rules ФАЙЛ_ПРАВИЛ содержит правила, уже скомпилированные с помощью yarac.
-c, --count Выводить только количество совпадений.
-d <идентификатор>=<значение>, --define=<идентификатор>=<значение> Определить внешнюю переменную. Эту опцию можно использовать несколько раз.
-q, --disable-console-logs Отключить вывод сообщений журнала консоли.
--fail-on-warnings Считать предупреждения ошибками. Не действует при использовании с --no-warnings.
-f, --fast-scan Режим быстрого сканирования.
-h, --help Показать справку.
-i <идентификатор>, --identifier=<идентификатор> Выводить только правила с указанным именем, остальные игнорировать.
--max-process-memory-chunk=<размер> При сканировании памяти процесса читать данные блоками указанного размера.
-l <число>, --max-rules=<число> Прервать сканирование после совпадения указанного числа правил.
--max-strings-per-rule=<число> Задать максимальное количество строк на правило (по умолчанию: 10000). Если правило содержит больше указанного числа строк, произойдёт ошибка. (добавлено в 3.7.0)
-x <модуль>=<файл>, --module-data=<модуль>=<файл> Передать содержимое файла как данные для модуля. Пример: -x cuckoo=/cuckoo_report.json.
-n, --negate Выводить только правила, которые НЕ совпали (отрицание).
-N, --no-follow-symlinks Не следовать символическим ссылкам при сканировании.
-w, --no-warnings Отключить предупреждения.
-m, --print-meta Выводить метаданные.
-D, --print-module-data Выводить данные модулей.
-e, --print-namespace Выводить пространство имён правил.
-S, --print-stats Выводить статистику правил.
-s, --print-strings Выводить совпавшие строки.
-L, --print-string-length Выводить длину совпавших строк.
-g, --print-tags Выводить теги.
-r, --recursive Рекурсивный поиск по каталогам. Следует по символическим ссылкам.
--scan-list Сканировать файлы, перечисленные в FILE, по одному на строку.
--strict-escape Выводить предупреждения при использовании недопустимых escape-последовательностей в строках. (добавлено в 4.5.0)
-z <размер>, --skip-larger=<размер> Пропускать файлы размером больше указанного (в байтах) при сканировании каталога. (добавлено в 4.2.0)
-k <слоты>, --stack-size=<слоты> Выделить стек размером в указанное количество слотов. По умолчанию: 16384. Позволяет использовать более объёмные правила за счёт увеличения потребления памяти. (добавлено в 3.5.0)
-t <тег>, --tag=<тег> Выводить только правила с указанным тегом, остальные игнорировать.
-p <число>, --threads=<число> Использовать указанное количество потоков для сканирования каталога.
-a <секунды>, --timeout=<секунды> Прервать сканирование по истечении указанного числа секунд.
-v, --version Показать информацию о версии.

Примеры

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

    yara /foo/bar/rules .
    
  • Применить правила из /foo/bar/rules к файлу bazfile. Выводить только правила с тегами Packer или Compiler:

    yara -t Packer -t Compiler /foo/bar/rules bazfile
    
  • Сканировать все файлы в каталоге /foo и его подкаталогах:

    yara /foo/bar/rules -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