Yara
Yara - Инструмент сигнатурного анализа файлов на предмет их соответствия предопределённым шаблонам.
Разрабатывается силами VirusTotal. GitHub проекта
Принцип работы заключается в анализе файлов на предмет наличия в них как двоичных так и текстовых паттернов. Исходя из того, что текстовые строки являются неотмлемой частью любой программы, они могут содержать в себе информацию (адреса С2 серверов, реквизиты bitcoin кошелька для выплаты и т.п.), которая может свидетельствовать о вредоносной активности такой программы.
Yara rules
Описание паттернов задаётся с помощью правил, которые описываются несложным синтаксисом. Принятое расширение файлов с правилами - .yar
.
Правила могут содержать следующие секции:
- Import - Импорт модулей для расширения функциональности yara.
- Имя правила - наименование правила, теги.
- Meta - Используется для Описания, информации об авторах.
- Strings - Описание шаблонов
- Conditions - Описание условий сработки правила, в том числе на основании данных из секции Strings
Каждое правило в обязательном порядке должно содержать имя и секцию condition. Однако, такое правило не будет сильно полезным без секции strings - которая собственно и содержит в себе описание необходимых шаблонов.
Исчерпывающая информация по созданию собственных правил размешена на страницах документации
Готовые Yara правила можно найти на:
Картинка с ключевыми концепциями Yara правил:
import "hash"
rule MyExe_RUFUS {
strings:
$my_HEX_string = { E0 38 D2 21 32 4D 1B C1 79 EC 00 70 76 F5 62 B6 }
condition:
$my_HEX_string and hash.md5(0, filesize) == "d35936d329ac21ac3b59c525e2054078"
}
rule MyExe_Hercules4 {
strings:
$my_HEX_string = { 59 (E9 D8|FF) 1A 00 00 5? E8 [4-6] 94 8F }
condition:
$my_HEX_string
}
rule MyURL_virusTotal {
strings:
$my_URL_string = "//https://virustotal.com"
condition:
$my_URL_string
}
rule MyRar_SFX {
strings:
$winrar1 = "WINRAR.SFX" nocase wide ascii
$winrar2 = ";The comment below contains SFX script commands" wide ascii
$winrar3 = "Silent=1" wide ascii
$winrar4 = { E8 65 64 00 00 E9 78 FE FF FF}
//$winrar4 = "sfx" nocase
condition:
1 of them
}
yara my_RULE.yar ~/CheckingDir/
Автоматизированное создание правил
Существуют различные генераторы yara правил, принцип работы которых, как правило, заключается в поиске уникальных строк во фрагментах вредоносных файлов. Стоит отметить, что качество генерации может быть не таким каким хотелось бы.
К таким генераторам можно отнести:
Модули
Для расширения функциональности, Yara поддерживает различные модули. Подробная информация в документации, а из наиболее используемых можно выделить:
-
pe — функции, нужные при работе с объектами Portable Executable, например контрольная сумма imphash, метка времени создания, расположение секций;
-
hash — расчет контрольных сумм и криптографических хешей;
-
math — математические подсчеты, например среднее арифметическое или энтропия.
Инструменты
Множество различных инструментов использующих Yara в своей работе представлены в репозитории GitHub/awesome-yara
Отдельно можно отметить следующие: