
простой YARA-сканер IOC
...простой, самодостаточный модульный сканер индикаторов компрометации на хосте
Spyre — это простой хостовый сканер индикаторов компрометации, построенный на основе движка сопоставления шаблонов YARA и других модулей сканирования. Основная цель этого проекта — упрощение операционализации правил YARA и других индикаторов компрометации.
Пользователям необходимо предоставлять свои собственные наборы правил. Репозиторий awesome-yara даёт хороший обзор бесплатных наборов правил YARA.
Spyre предназначен для использования в качестве средства расследования специалистами по реагированию на инциденты. Он не предназначен для превращения в какой-либо сервис защиты конечных точек.
Использовать Spyre просто:
Добавьте сигнатуры YARA. В конфигурации по умолчанию Spyre будет читать правила YARA для сканирования файлов и процессов из filescan.yar и procscan.yar соответственно. Существуют следующие варианты предоставления файлов правил Spyre (они будут опробованы в указанном порядке):
spyre или spyre.exe, используйте spyre.zip.Содержимое ZIP-файла может быть зашифровано с использованием пароля infected (отраслевой стандарт AV), чтобы предотвратить сканирование набора правил антивирусным ПО, классификацию его как вредоносного содержимого и блокировку сканирования.
Файлы правил YARA могут содержать операторы include.
Разверните, запустите сканер
Соберите отчёт и доказательства
Конфигурация времени выполнения выполняется через необязательный файл spyre.yaml.
Если ZIP-файл был добавлен в бинарный файл Spyre, конфигурация и другие файлы, такие как правила YARA, читаются только из этого ZIP-файла. В противном случае они читаются из каталога, в который помещён бинарный файл.
Смотрите подкаталог example-configuration/ для примера.
hostname / ключ командной строки --set-hostname: Явно задаёт имя хоста, которое будет использоваться в файле журнала и отчёте. Обычно это не требуется.
max-file-size / ключ командной строки --max-file-size: Максимальный размер файлов для сканирования с использованием ресурсоёмких модулей сканирования файлов, таких как YARA. По умолчанию: 32 МБ
proc-ignore-names / ключ командной строки --proc-ignore: Имена процессов, которые не будут сканироваться с помощью модулей сканирования памяти процессов.
paths / ключ командной строки --path: Пути для сканирования с помощью модулей сканирования файлов. По умолчанию: / (Unix) или все фиксированные диски (Windows).
report / ключ командной строки --report: Устанавливает одну или несколько целей отчёта. По умолчанию: spyre_${hostname}_${time}.log в текущем рабочем каталоге, в простом формате. Другой формат вывода можно указать, добавив .
В настоящее время существуют три области, для которых могут быть реализованы модули сканирования: проверки на уровне системы, сканирование файлов и сканирование процессов.
Ниже перечислены текущие реализованные модули и поддерживаемые параметры конфигурации.
system
eventobj (Windows)
iocsregistry (Windows)
iocswinkernelobj (Windows)
iocsconficker, boolean: Следует ли добавлять динамические (основанные на хосте/процессе) индикаторы компрометации Conficker в список IoC? (По умолчанию: false)findwindow (Windows)
iocsfile
yara
rule-filesПожалуйста, обратитесь к примеру конфигурационного файла example-spyre.yaml за подсказками по описанию индикаторов компрометации для каждого модуля.
YARA настроен с параметрами по умолчанию, плюс следующие явные флаги (ср. 3rdparty.mk):
--disable-magic--disable-cuckoo--enable-dotnet--enable-macho--enable-dexДля сканирования файлов определены следующие переменные:
filename,filepath,extension,filetype (в настоящее время не заполняется во время сканирования)Для сканирования процессов определены переменные pid и executable.
Метапеременная spyre_collect_limit может использоваться для ограничения количества записей, собираемых из совпадающих файлов, или для полного запрета сбора файлов. Это может быть полезно для ограничения размера пакетов доказательств и предотвращения сбора конфиденциальной информации.
Spyre может быть собран для 32-битных и 64-битных целей Linux и Windows.
В системе Debian/buster (или chroot) должны быть установлены следующие пакеты:
GOROOT.Это описывает среду сборки, которая регулярно проверяется через CI.
Та же сборка была успешно опробована на Fedora 30 со следующими установленными пакетами:
После установки всего просто введите make. Это должно загрузить архивы для musl-libc, openssl, yara, собрать их, а затем собрать spyre.
Готовые бинарные файлы spyre создаются в _build/<triplet>/.
Запуск make release создаёт ZIP-файл, содержащий эти бинарные файлы для всех поддерживаемых архитектур.
Совместимость с этими системами была удалена в Go 1.11, поэтому требуется цепочка инструментов Go 1.10. Поскольку Go 1.10 не поддерживает модули Go, сторонние зависимости Go необходимо включить в вендор: используйте более новую версию Go для этого (просто запустите go vendor) и установите GOROOT так, чтобы он указывал на цепочку инструментов Go 1.10 перед запуском make.
В настоящее время кросс-компиляция не поддерживается.
Системный make слишком стар, поскольку Apple решила проявить аллергию к GPLv3. gmake из Homebrew работает нормально.
См. HACKING.md
Copyright 2018-2020 DCSO Deutsche Cyber-Sicherheitsorganisation GmbH
Copyright 2020-2021 Spyre Project Authors (см.: AUTHORS.txt)
Эта программа является свободным программным обеспечением: вы можете распространять и/или изменять её в соответствии с условиями Стандартной общественной лицензии GNU Lesser, опубликованной Фондом свободного программного обеспечения, версии 3 или (по вашему выбору) любой более поздней версии.
Полный текст лицензии см. в файле LICENSE.
,format=FORMATВ настоящее время поддерживаются следующие форматы:
plain, по умолчанию, простой человекочитаемый текстовый форматtsjson, документ JSON, который может быть импортирован в TimesketchПеременные hostname и time раскрываются только в имени файла цели.
Примечание: Конфигурация целей отчётов, вероятно, изменится в одном из следующих релизов.
high-priority / ключ командной строки --high-priority: В конфигурации по умолчанию (с отключённой этой настройкой) Spyre указывает планировщику ОС снизить приоритеты операций, потребляющих процессорное время и ввод-вывод, чтобы избежать нарушения нормальной работы системы.
ключ командной строки --loglevel=LEVEL: Устанавливает уровень журналирования. Допустимые значения: trace, debug, info, notice, warn, error, quiet.
fail-on-warningsproc
yara
rule-filesfail-on-warnings