
Анализатор YARA-правил для улучшения качества и производительности правил
Анализатор YARA-правил для повышения качества и производительности правил
YARA-правила могут быть синтаксически корректными, но всё равно нефункциональными. yaraQA пытается найти и сообщить об этих проблемах автору или сопровождающему набора YARA-правил.
Проблемы, которые пытается обнаружить yaraQA, например:
2 of them в условии)$ = "\\Debug\\" fullword)$ = "AA"; можно исключить из анализа с помощью --ignore-performance)Я планирую со временем расширять набор тестов. Каждая минорная версия будет включать новые функции или новые тесты.
pip install -r requirements.txt
usage: yaraQA.py [-h] [-f yara files [yara files ...]] [-d yara files [yara files ...]] [-o outfile] [-b baseline] [-l level]
[--ignore-performance] [--debug]
YARA RULE ANALYZER
optional arguments:
-h, --help show this help message and exit
-f yara files [yara files ...]
Path to input files (one or more YARA rules, separated by space)
-d yara files [yara files ...]
Path to input directory (YARA rules folders, separated by space)
-o outfile Output file that lists the issues (JSON, default: 'yaraQA-issues.json')
-b baseline Use a issues baseline (issues found and reviewed before) to filter issues
-l level Minium level to show (1=informational, 2=warning, 3=critical)
--ignore-performance Suppress performance-related rule issues
--debug Debug output
python3 yaraQA.py -d ./test/
Подавить все проблемы производительности и показывать только проблемы обнаружения/логики.
python3 yaraQA.py -d ./test/ --ignore-performance
Подавить все проблемы информационного характера
python3 yaraQA.py -d ./test/ -level 2
Используйте базовый уровень, чтобы видеть только новые проблемы (не те, которые вы уже просмотрели). Файл базового уровня — это старый JSON-вывод просмотренного состояния.
python3 yaraQA.py -d ./test/ -b yaraQA-reviewed-issues.json
Примеры правил с проблемами можно найти в папке ./test.
По умолчанию yaraQA записывает обнаруженные проблемы в файл с именем yaraQA-issues.json.
Ниже показан пример вывода, создаваемого yaraQA в формате JSON: