Категория > Новости > YARA на максималках. Учимся составлять эффективные правила YARA на примерах - «Новости»
YARA на максималках. Учимся составлять эффективные правила YARA на примерах - «Новости»4-03-2023, 08:59. Автор: Марфа |
Yara. Пишем правила, чтобы искать малварь и не только».
Четырехтактный двигательКак писать быстрые правила? Давай заглянем под капот YARA и посмотрим, как работает сканер. Каждое сканирование можно разложить на последовательность из четырех тактов. В качестве примера возьмем следующее правило YARА:
Ну а теперь разберем каждый «такт» в деталях.
Такт 1. Пишем или берем из паблика правилоЭто действие аналитик выполняет самостоятельно, вручную. Для поиска подстрок YARA использует алгоритм Ахо — Корасик. Сами подстроки носят название «атомы» (atoms). Максимальная длина атома достигает четырех байт. Разберем атомы на примерах: /abc.*cde/ В этой регулярке есть два атома: /(one|two)three/ Тут доступны следующие атомы: Она возьмет самый уникальный атом { 00 00 00 00 [1-4] 01 02 03 04 } В этом случае YARA будет использовать атом { 01 02 [1-4] 01 02 03 04 } Атом Важно, чтобы строки содержали «хорошие» атомы. Ниже показаны «плохие» строки: они содержат либо слишком короткие, либо неуникальные атомы: {00 00 00 00 [1-2] FF FF [1-2] 00 00 00 00} {AB [1-2] 03 21 [1-2] 01 02} /a.*b/ /a(c|d)/ Худшие строки — это те, которые вообще не содержат атомов, например вот такие регулярки:
Использование регулярных выражений без явных атомов порождает плохие детектирующие правила, так как влечет за собой большие нагрузки на процессор при сканировании всей системы. Атомы из нашего правила:
Атомы извлекаются из строк в правиле, затем YARA ищет их в процессе сканирования файлов. Если атом найден, то проверяется полностью вся строка.
Такт 2. Алгоритм (автомат) Ахо — КорасикПри запуске правила происходит поиск подстроки. Такты 2–4 будут выполняться для всех файлов. YARA ищет в каждом файле четыре атома из нашего правила, используя дерево префиксов, называемое автоматом Ахо — Корасик. Тот же принцип используется в grep. Любые совпадения передаются дальше в движок байт‑кода.
Такт 3. Движок байт-кодаПредположим, что во время сканирования появилось совпадение с
Такт 4. УсловияПосле выполнения всех сравнений с образцом в дело вступают условия. За проверку условия отвечают вычисления по короткой схеме, также известные как вычисления Маккарти. Вычисления Маккарти — это принцип оптимизации вычислений, при котором второй логический оператор вычисляется только в том случае, если первого логического оператора недостаточно для определения значения выражения. Рассмотрим простой пример.
Перейти обратно к новости |