
🐍 Высокопроизводительный, многопоточный сканер YARA и IOC.

Переписывание Loki на Rust. Высокопроизводительный, многопоточный сканер YARA и IOC в одном бинарном файле.
Статус: Бета. Работает, но ещё в активной разработке.
Сканирование памяти процессов на macOS выполняется по мере возможности и обычно требует отладочных прав или повышенных привилегий. Без них Loki-RS будет сканировать файлы, но не сможет читать память большинства процессов. Используйте --no-procs, чтобы пропустить сканирование процессов, если это необходимо.
В Linux Loki-RS пропускает привязки процессов к устройствам и специальные отображения ядра перед чтением /proc/<pid>/mem. Это позволяет избежать известной нестабильности с некоторыми VMA, управляемыми драйверами, сохраняя при этом нормальное сканирование анонимной, кучи/стека и обычной файловой памяти. Если вы всё же столкнётесь с проблемами, специфичными для окружения, используйте --no-procs, чтобы отключить сканирование процессов.
Загрузите предварительно скомпилированный бинарный файл для вашей платформы со страницы релизов.
# Извлечение
tar -xzvf loki-linux-*.tar.gz
cd loki-linux-*
# Обновление сигнатур (рекомендуется)
./loki-util update
# Запуск
sudo ./loki --help
Сигнатуры поставляются вместе с релизом, но быстро устаревают. Выполните loki-util update, чтобы загрузить последние правила YARA-Forge Core.
Loki-RS использует YARA Forge в качестве источника сигнатур по умолчанию. Loki-RS поставляется и обновляется с набором правил Core (высокая точность, низкий уровень ложных срабатываний, оптимизирован для производительности). Если вам нужно более широкое покрытие, вы можете заменить наборы Extended или Full из YARA Forge.
Файлы IOC в папке signatures/iocs/ по-прежнему поддерживаются как опциональные локальные/пользовательские файлы.
# Базовое сканирование (TUI включён по умолчанию)
sudo ./loki
# Сканирование конкретной папки
sudo ./loki --folder /tmp
# Отключение TUI, стандартный вывод командной строки
sudo ./loki --no-tui
# Сканирование смонтированного образа (пропустить сканирование процессов, использовать все ядра)
sudo ./loki --no-procs --folder ~/image1 --threads 0
# Медленное и осторожное сканирование (ограничение CPU 60%, один поток)
sudo ./loki --cpu-limit 60 --threads 1
# Сканирование и отправка логов на удалённый syslog
sudo ./loki --remote syslog-host.internal:514 --remote-proto udp


| Параметр | По умолчанию | Описание |
|---|---|---|
-f, --folder <ПУТЬ> | / | Папка для сканирования. Заключайте пути с пробелами в кавычки, например, -f "J:\SteamLibrary\steamapps\common\SpaceCraft beta" |
| Параметр | По умолчанию | Описание |
|---|---|---|
--no-procs | false | Пропустить сканирование памяти процессов |
--no-fs | false | Пропустить сканирование файловой системы |
--no-archive | false | Пропустить сканирование внутри архивов (ZIP) |
--scan-all-drives | false | Сканировать все диски, включая смонтированные/сетевые/облачные |
--scan-all-files | false | Сканировать все файлы независимо от расширения/типа |
| Параметр | По умолчанию | Описание |
|---|---|---|
-l, --log <ФАЙЛ> | auto | Файл лога в обычном тексте |
--no-log | false | Отключить вывод лога в обычном тексте |
-j, --jsonl <ФАЙЛ> | auto | Выходной файл JSONL |
--no-jsonl | false | Отключить вывод JSONL |
--no-html | false | Отключить генерацию HTML-отчёта |
--no-tui | false | Отключить TUI, использовать стандартный вывод командной строки |
-r, --remote <ХОСТ:ПОРТ> | нет | Удалённое назначение syslog |
-p, --remote-proto <ПРОТОКОЛ> | udp | Протокол удалённой передачи (udp/tcp) |
--remote-format <ФОРМАТ> | syslog | Формат удалённой передачи (syslog/json) |
| Параметр | По умолчанию | Описание |
|---|---|---|
--alert-level <ОЦЕНКА> | 80 | Порог оценки для ALERT |
--warning-level <ОЦЕНКА> | 60 | Порог оценки для WARNING |
--notice-level <ОЦЕНКА> | 40 | Порог оценки для NOTICE |
--max-reasons <ЧИСЛО> | 2 | Максимальное количество отображаемых причин совпадения на одно обнаружение |
-m, --max-file-size <БАЙТЫ> | 64000000 | Максимальный размер файла для сканирования (64 МБ) |
--yara-timeout <СЕКУНДЫ> | 10 | Максимальное время сканирования YARA для каждого файла или буфера памяти процесса (минимум: 1 секунда) |
-c, --cpu-limit <ПРОЦЕНТ> | 100 | Ограничение использования CPU (1-100) |
--threads <ЧИСЛО> | -2 | Количество потоков (0=все, -1=все-1, -2=все-2) |
| Параметр | По умолчанию | Описание |
|---|---|---|
--version | - | Показать версию и выйти |
-d, --debug | false | Показать отладочный вывод |
--trace | false | Показать подробный вывод трассировки |
--show-access-errors | false | Показывать ошибки доступа к файлам/процессам |
Loki-RS предоставляет несколько механизмов для исключения файлов и папок из сканирования.
По умолчанию Loki-RS автоматически исключает:
Системные каталоги (Linux/macOS):
/proc, /dev, /sys/kernel/debug, /sys/kernel/slab, /sys/kernel/tracing, /sys/devices/run, /var/runКаталоги облачных хранилищ (если не используется --scan-all-drives):
Сетевые и смонтированные диски (если не используется --scan-all-drives):
/media, /volumesКаталог программы:
| Параметр | Описание |
|---|---|
--scan-all-drives | Включить смонтированные диски, сетевые диски и облачные хранилища |
--scan-all-files | Сканировать все файлы независимо от типа/расширения (по умолчанию сканируются только релевантные типы файлов) |
-m, --max-file-size <БАЙТЫ> | Пропускать файлы больше этого размера (по умолчанию: 64 МБ) |
--no-procs | Полностью пропустить сканирование памяти процессов |
--no-fs | Полностью пропустить сканирование файловой системы |
--no-archive | Пропустить сканирование внутри архивов (ZIP) |