
Инструмент мониторинга файловой системы для Linux/Android iOS/macOS
Низкоуровневая утилита мониторинга файловой системы для Linux, Android, iOS и macOS.
Разработана для
На macOS теперь можно установить через brew с помощью следующих команд:
brew tap nowsecure/fsmon https://github.com/nowsecure/fsmon
brew install nowsecure/fsmon/fsmon
Либо просто выполните make или выберите сборки со страницы релизов.
make
make install PREFIX=/usr
Утилита получает события файловой системы из определённого каталога и отображает их в цветном формате или в JSON.
Можно фильтровать события по имени программы или идентификатору процесса (PID).
$ ./fsmon -h
Usage: ./fsmon-macos [-Jjc] [-a sec] [-b dir] [-B name] [-p pid] [-P proc] [path]
-a [sec] stop monitoring after N seconds (alarm)
-b [dir] backup files to DIR folder (EXPERIMENTAL)
-B [name] specify an alternative backend
-c follow children of -p PID
-f show only filename (no path)
-h show this help
-j output in JSON format
-J output in JSON stream format
-n do not use colors
-L list all filemonitor backends
-p [pid] only show events from this pid
-P [proc] events only from process name
-v show version
[path] only get events from this path
Examples:
fsmon /data
fsmon -J / | jq -r .filename
fsmon -B fanotify /home
$
fsmon — это низкоуровневый кроссплатформенный монитор файловой системы, предназначенный для разработчиков, судебных аналитиков и специалистов по реверс-инжинирингу. Он работает, подключаясь к трассировочным механизмам ядра ОС или API уведомлений о файлах.
inotify; fanotify поддерживается не всегдаinotify и fanotifykdebug, FSEvents, kqueue и /dev/fseventsМониторинг файлов в реальном времени Обнаруживает и сообщает о таких операциях с файлами, как создание, удаление, изменение, изменение атрибутов и переименование в реальном времени.
Поддержка нескольких бэкендов
Автоматически выбирает наилучший доступный бэкенд мониторинга или позволяет пользователю указать нужный:
inotify, fanotify (Linux)fsevapi, kdebug, devfsev, kqueue (iOS / macOS)Список бэкендов можно вывести с помощью fsmon -L.
Информация на уровне процессов Связывает события файлов с именами процессов, PID и UID, где это возможно.
Рекурсивный мониторинг Рекурсивно отслеживает целые деревья каталогов, динамически добавляя новые каталоги.
Формат вывода JSON
Поддерживает структурированное логирование в формате JSON или потоке JSON для лёгкой интеграции с другими инструментами (например, jq, ELK и т.д.).
Фильтрация и форматирование имён файлов При необходимости убирает полные пути, показывает только имена файлов и раскрашивает вывод в зависимости от типа события.
Примеры событий, которые может обнаруживать fsmon:
CREATE_FILE, DELETE, RENAMEOPEN, CLOSE, STAT_CHANGEDCHOWN, CHMOD, XATTR_MODIFIEDCONTENT_MODIFIED, EXCHANGE, FINDER_INFO_CHANGEDfsmon — это переносимая утилита. Она работает на iOS, OSX, Linux и Android (x86, arm, arm64, mips).
$ make
Кросс-компиляция для iOS/Android упрощена — достаточно выполнить make ios или make android:
$ make android NDK_ARCH=<ARCH> ANDROID_API=<API>
Этот инструмент — бесплатное программное обеспечение, разработанное компанией NowSecure и распространяемое под лицензией MIT.
Связаться с Sergi Alvarez можно по email [email protected].
Выборочный мониторинг Фильтрация событий по:
-P)-p)-c)Резервное копирование при событии
Автоматически копирует изменённые файлы в каталог резервного копирования при обнаружении изменений (-b).
Добавление временных меток Добавляет временные метки к каждому событию для облегчения судебного анализа.
Минимальные зависимости Написан на переносимом C без зависимостей времени выполнения, кроме стандартных библиотек.
Корректное завершение и обработка сигналов
Обрабатывает SIGINT, SIGTERM и SIGALRM для чистого выхода и сеансов мониторинга по таймеру.