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

适用于 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 输出, 云资产清单, 内核追踪, 客户端加密, 库, 应急响应, 开发调试, 开源项目, 批量测试, 数字取证, 文件系统监控, 文件访问行为分析, 流量嗅探, 系统管理, 网络安全, 网络安全审计, 自动化脚本, 跨平台工具, 进程过滤, 逆向工程, 隐私保护