
Реагирование на инциденты — быстрый поиск подозрительных файлов

Легковесный инструмент реагирования на инциденты для охоты за угрозами и форензического триажа
FastFinder — это мощный, легковесный инструмент реагирования на инциденты, разработанный для специалистов по кибербезопасности, занимающихся охотой за угрозами, живой форензикой и триажем конечных точек. Созданный для платформ Windows и Linux, он превосходно справляется с быстрым обнаружением подозрительных файлов с использованием множества критериев обнаружения.
Базовый пользовательский интерфейс
Выбор конфигурации
Результаты сканирования и совпадения
⚠️ Примечание: Компиляция требует CGO и зависимостей YARA. Смотрите руководства для конкретных платформ:
Самый простой способ собрать FastFinder без установки каких-либо зависимостей:
# Сборка бинарных файлов для Linux и Windows
cd docker
make build-binaries
# Бинарные файлы будут в ./bin/
# - fastfinder-linux-amd64
# - fastfinder-windows-amd64.exe
Запустите FastFinder внутри привилегированного контейнера Docker для сканирования томов или смонтированных файловых систем:
# Сборка образа времени выполнения (включает FastFinder + YARA + редакторы)
.\docker-helper.ps1 build-runtime
# Запуск сканирования с указанием каталога конфигурации
.\docker-helper.ps1 run-runtime -ConfigPath "C:\path\to\config_folder" -ScanPath "C:\data\to\scan"
# Интерактивный режим оболочки (без сканирования, только доступ к оболочке)
.\docker-helper.ps1 run-runtime -Interactive
fastfinder [ОПЦИИ]
# Базовое сканирование с файлом конфигурации
./fastfinder -c config.yaml
# Режим непрерывного мониторинга
./fastfinder -c config.yaml -t
# Создание автономного исполняемого файла (только архитектура x64)
./fastfinder -c config.yaml -b standalone_scanner.exe
💡 Совет: FastFinder может работать с правами обычного пользователя, но административный доступ предоставляет доступ ко всем системным файлам.
Примеры конфигураций доступны здесь. Ниже приведен полный пустой шаблон конфигурации. Вам не нужно реализовывать каждый атрибут, если вы не используете всё.
input:
path: [] # сопоставление пути И/ИЛИ имени файла на основе простой строки
content:
grep: [] # поиск точного строкового значения в содержимом файла
yara: [] # использование правил YARA и указание путей к ним для более сложного поиска (подстановочные знаки / регулярные выражения / условия)
checksum: [] # поиск md5/sha1/sha256 в содержимом файла
options:
contentMatchDependsOnPathMatch: true # если true, пути являются предварительным фильтром только для поиска grep (строк). YARA и контрольные суммы всегда оцениваются.
findInHardDrives: true # перечислять содержимое жестких дисков
findInRemovableDrives: true # перечислять содержимое съемных дисков
findInNetworkDrives: true # перечислять содержимое сетевых дисков
findInCDRomDrives: true # перечислять содержимое физических CD-ROM и смонтированных iso/vhd...
findInMemory: true # проверять результаты в памяти процессов
output:
copyMatchingFiles: true # создавать копию каждого совпадающего файла
base64Files: true # преобразовывать совпавшее содержимое в base64 перед копированием
filesCopyPath: '' # пустое значение — копировать совпавшие файлы в папку fastfinder.exe
advancedparameters:
yaraRC4Key: '' # правила YARA могут быть (рас)шифрованы с помощью указанного ключа RC4
maxScanFilesize: 2048 # игнорировать файлы размером более maxScanFileSize Мб (по умолчанию: 2048)
cleanMemoryIfFileGreaterThanSize: 512 # очищать внутреннюю память fastfinder после сканирования тяжелых файлов (по умолчанию: 512 Мб)
eventforwarding:
enabled: true
buffer_size: 5
flush_time_seconds: 10
file: # сохранять активность приложения в файлы jsonl
enabled: true
directory_path: "./event_logs"
rotate_minutes: 1 # Ротация каждую минуту для тестирования
max_file_size_mb: 1 # Ротация при 1 МБ для тестирования
retain_files: 5 # Хранить 5 старых файлов
http: # пересылать активность приложения с помощью HTTP POST в формате JSON
enabled: false
url: "https://your-forwarder-url.com/api/events"
ssl_verify: false
timeout_seconds: 10
headers:
Authorization: "Bearer YOUR_API_KEY"
MY-CUSTOM-HEADER: "My-Header-Value"
retry_count: 3
filters:
event_types:
- "error"
- "warning"
- "alert"
- "info"
Относительные пути в конфигурации YAML разрешаются относительно местоположения файла конфигурации:
input:
content:
yara:
- "./example_rule_linux.yar" # Ищется в той же папке, что и config.yaml
- "./subfolder/custom_rules.yar" # Ищется в подпапке относительно конфигурации
- "/absolute/path/to/rule.yar" # Абсолютные пути работают как есть
- "https://example.com/rules.yar" # URL также поддерживаются
Пример структуры каталогов:
project/
├── config.yaml
├── example_rule_linux.yar # ✅ Найден по "./example_rule_linux.yar"
└── rules/
└── custom.yar # ✅ Найден по "./rules/custom.yar"
Мы приветствуем ваш вклад! Пожалуйста, ознакомьтесь с нашими рекомендациями:
git checkout -b feature/amazing-feature)git commit -m 'Добавлена потрясающая функция')git push origin feature/amazing-feature)# Клонируйте репозиторий
git clone https://github.com/codeyourweb/fastfinder.git
cd fastfinder
# Установите зависимости (см. руководства по компиляции)
# Сборка из исходников
go build -tags yara_static,gio -a -ldflags '-s -w' .
# Запуск тестов
go test ./...
Этот проект лицензирован на условиях лицензии AGPL — подробности см. в файле LICENSE.
Сделано с ❤️ сообществом кибербезопасности
Создано Жан-Пьером ГАРНЬЕ (@codeyourweb) • 2021-2026
| Опция | Описание | По умолчанию |
|---|
-h, --help | Вывести справку | |
-c, --configuration <файл конфигурации yaml> | Путь к файлу конфигурации | |
-b, --build <выходной исполняемый файл> | Создать автономный бинарник со встроенной конфигурацией (только архитектура x64) | |
-r, --root <Путь> | Корневой путь сканирования (переопределяет перечисление дисков) | |
-s, --silent | Тихий режим — запуск без видимого окна или консоли | |
-v, --verbosity <уровень детализации> | Уровень детализации логов (1-5) | 3 |
-t, --triage | Режим непрерывного мониторинга | false |