nowsecure/fsmon

GitHub: nowsecure/fsmon

fsmon 是一款跨平台的底层文件系统监控工具,支持 Linux、Android、iOS 和 macOS,能够实时捕获文件变更并关联具体的进程信息。

Stars: 1006 | Forks: 159

# fsmon ![ci](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/32e5ea5c9e100132.svg) 适用于 Linux、Android、iOS 和 macOS 的底层文件系统监控工具。 - **作者**: pancake @ nowsecure - **许可证**: MIT 专为以下人员设计 - 系统管理员和事件响应人员 - 安全研究员和取证分析师 - 调试 I/O 密集型应用程序的开发者 - 对观察文件系统访问行为感兴趣的反向工程师 ## 安装说明 在 **macOS** 上,您现在可以通过 brew 使用以下命令安装它: ``` brew tap nowsecure/fsmon https://github.com/nowsecure/fsmon brew install nowsecure/fsmon/fsmon ``` 或者直接运行 `make`,或从 [release](https://github.com/nowsecure/fsmon/releases) 页面选择构建版本。 ``` make make install PREFIX=/usr ``` ## 使用说明 该工具从特定目录检索文件系统事件,并以彩色格式或 JSON 格式显示它们。 可以筛选特定程序名称或进程 ID (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 的主要特性 `fsmon` 是一个专为开发者、取证分析师和反向工程师设计的底层、跨平台文件系统监控工具。它通过挂钩到操作系统内核的跟踪工具或文件通知 API 来工作。 ### ✅ 支持的平台 - **Android**: 通过 `inotify`,`fanotify` 并不总是受支持 - **Linux**: 通过 `inotify` 和 `fanotify` - **macOS**: 使用 `kdebug`、`FSEvents`、`kqueue` 和 `/dev/fsevents` - **iOS** (通过 FSEvent API 提供有限支持) ### 核心功能 - **实时文件监控** 实时检测并报告文件操作,如创建、删除、修改、属性更改和重命名。 - **多后端支持** 自动选择最佳可用的监控后端,或允许用户选择: - `inotify`、`fanotify` (Linux) - `fsevapi`、`kdebug`、`devfsev`、`kqueue` (iOS / macOS) 可以使用 `fsmon -L` 列出后端列表。 - **进程级洞察** 尽可能将文件事件与进程名称、PID 和 UID 关联起来。 - **递归监控** 递归监控整个目录树,动态添加新目录。 - **JSON 输出格式** 支持 JSON 或 JSON 流模式的结构化日志记录,以便与其他工具(例如 `jq`、`ELK` 等)轻松集成。 - **文件名过滤与格式化** 可选择剥离完整路径,仅显示文件名,并根据事件类型对输出进行着色。 - **选择性监控** 通过以下方式筛选事件: - 特定进程名称 (`-P`) - 特定 PID (`-p`) - 子进程 (`-c`) - 给定路径下的文件 - **事件触发备份** 检测到更改时 (`-b`),自动将受影响的文件复制到备份目录。 - **时间戳记录** 为每个事件添加时间戳,以协助取证分析。 - **最小依赖项** 使用可移植的 C 编写,除标准库外没有运行时依赖项。 - **优雅关闭与信号处理** 处理 `SIGINT`、`SIGTERM` 和 `SIGALRM`,以允许正常退出和定时监控会话。 ### 🧪 跟踪的事件类型 `fsmon` 可以检测的事件示例: - `CREATE_FILE`、`DELETE`、`RENAME` - `OPEN`、`CLOSE`、`STAT_CHANGED` - `CHOWN`、`CHMOD`、`XATTR_MODIFIED` - `CONTENT_MODIFIED`、`EXCHANGE`、`FINDER_INFO_CHANGED` ## 编译 fsmon 是一个可移植工具。它适用于 iOS、OSX、Linux 和 Android (x86, arm, arm64, mips) ``` $ make ``` 只需运行 `make ios` 或 `make android` 即可轻松实现 iOS/Android 的交叉编译: ``` $ make android NDK_ARCH= ANDROID_API= ``` ## 许可证 该工具是由 [NowSecure](https://nowsecure.com) 开发的免费软件,并在 MIT 许可证下分发。 您可以通过电子邮件 [pancake@nowsecure.com](mailto:pancake@nowsecure.com) 联系 **Sergi Alvarez**
标签:Android, Awesome, CIDR输入, DNS解析, DSL, fanotify, iOS, I/O 监控, JSON 输出, 云资产清单, 内核追踪, 客户端加密, 库, 应急响应, 开发调试, 开源项目, 批量测试, 数字取证, 文件系统监控, 文件访问行为分析, 流量嗅探, 系统管理, 网络安全, 网络安全审计, 自动化脚本, 跨平台工具, 进程过滤, 逆向工程, 隐私保护