gotr00t0day/privwatch
GitHub: gotr00t0day/privwatch
一款Linux进程审计工具,通过扫描正在运行的进程,检测root进程执行非root所有且可写文件的风险,从而发现潜在的权限提升漏洞。
Stars: 4 | Forks: 1
# privwatch

Linux 进程审计工具,遍历 `/proc`,打印每个正在运行的进程及其 PID、命令名称、所属用户、完整命令行,并在进程以 **root** 身份运行但解析后的路径**不**归 root 所有且**组可写或全局可写**时,标记**可写执行目标**。这种模式是一种常见的权限提升信号(root 正在执行他人可修改的代码)。
作者:c0d3Ninja(参见源文件头)。
## 功能说明
- 枚举 `/proc` 中的数字条目,并读取 `comm`、`status` (UID) 和 `cmdline`。
- 构建一组**执行目标**:主可执行文件(如果是绝对路径)、传递给已知解释器(Python、shell、Node 等)的脚本,以及其他非 `key=value` 风格的绝对路径参数。
- 尽可能使用 `realpath` 解析路径。
- 对于每个目标,使用 `stat(2)`:如果进程的真实 UID 为 `0`,文件所有者**不**是 `0`,且模式包含 `S_IWGRP` 或 `S_IWOTH`,则该行会标注 **HIGH RISK** 消息。
**没有 CLI**:直接运行二进制文件并读取 stdout。
## 输出格式
每一行均为彩色终端输出:
`PID -> comm -> username -> cmdline -> [HIGH RISK: path]`
如果未找到匹配的目标,风险后缀为空。
## 系统要求
- 带有 `/proc`(进程文件系统)的 Linux。
- C++20 编译器(`std::filesystem`)。
## 构建(独立)
从仓库根目录:
```
g++ -DPROCESSMONITOR_STANDALONE -std=c++20 privwatch.cpp -I. -o privwatch
```
除了 C++ 标准库和 POSIX(`unistd`、`pwd`、`sys/stat`)之外,不需要额外的库。
请仅在您获得授权评估的系统上使用。
标签:Bing搜索, C++20, Linux内核, Root权限, SQL, Std::filesystem, Web报告查看器, XML 请求, 协议分析, 可写执行文件, 安全开发, 提权检测, 文件系统监控, 权限提升, 系统审计, 路径解析, 进程分析, 进程审计, 高危风险识别