aancw/pentlog
GitHub: aancw/pentlog
一款面向渗透测试的高保真终端日志记录器,以证据优先的设计解决传统日志碎片化、难搜索、难合规的问题。
Stars: 27 | Forks: 2
# PentLog 🔐
**证据优先的渗透测试日志记录器 —— 捕获每一条命令,查找任何内容,证明一切。**
具备 AI 分析、可搜索内容、交互式时间轴以及合规就绪报告的高保真终端日志。基于 `ttyrec` 构建。
非常适合 **真实项目**、**合规与审计**、**OSCP** 以及 **HackTheBox**。
| 命令 | 描述 |
| :--- | :--- |
| **会话管理** ||
| `create` | 初始化新的项目上下文(交互式) |
| `shell` | 启动一个加载了项目上下文的被录制 shell |
| `shell --share` | 启动一个启用实时浏览器共享的被录制 shell |
| `share` | 共享实时或录制的会话以供只读查看 |
| `sessions` | 列出并管理录制的会话 |
| `switch` | 切换到不同的渗透测试阶段 |
| **分析与搜索** ||
| `search` | 跨所有会话搜索命令历史(正则与布尔) |
| `timeline` | 用于命令时间轴提取的交互式浏览器 |
| `dashboard` | 显示你渗透测试活动的交互式仪表板 |
| `note` | 管理会话笔记和书签 |
| **报告** ||
| `export` | 导出特定阶段的命令(Markdown/HTML) |
| `analyze` | 使用 AI 提供商分析报告以总结发现 |
| `vuln` | 管理发现和漏洞 |
| **数据管理** ||
| `archive` | 存档旧会话,支持可选加密 |
| `import` | 将存档的会话恢复到 pentlog 中 |
| `freeze` | 生成所有会话日志的 SHA256 哈希以保证完整性 |
| `gif` | 将会话转换为动画 GIF(720p/1080p) |
| `serve` | 启动 HTTP 服务器以查看带有 GIF 播放器的 HTML 报告 |
| `recover` | 恢复并管理崩溃或过时的会话 |
| **实用工具** ||
| `replay` | 以完全保真度回放录制的会话 |
| `status` | 显示当前工具和项目状态 |
| `setup` | 验证依赖项并准备本地日志记录 |
| `reset` | 清除当前活动的项目上下文 |
| `completion` | 为 Zsh 和 Bash 生成自动补全脚本 |
| `update` | 自动将 pentlog 更新到最新版本 |
## 🛠️ 安装
### 系统要求
- **Go 1.24.0+**(如果从源代码构建)
- **ttyrec**(终端录制工具)
- **ttyplay**(可选,用于会话回放)
### 快速安装
```
curl -sSf https://raw.githubusercontent.com/aancw/pentlog/main/install.sh | sh
pentlog setup # One-time dependency check and setup
```
### 从源代码构建
```
git clone https://github.com/aancw/pentlog.git
cd pentlog
go build -o pentlog main.go
# 或针对 Linux 进行 cross-compile
GOOS=linux GOARCH=amd64 go build -o pentlog main.go
```
### 安装系统依赖
**自动安装**(推荐):
```
pentlog setup # Auto-installs on macOS, Ubuntu, Fedora, Alpine
```
**手动安装**:
- **macOS**: `brew install ttyrec`
- **Ubuntu/Debian/WSL**: `sudo apt-get install ttyrec`
- **Fedora**: `sudo dnf install https://github.com/ovh/ovh-ttyrec/releases/download/v1.1.7.1/ovh-ttyrec-1.1.7.1-1.x86_64.rpm`
- **Alpine**: `sudo apk add ttyrec`
### ⚠️ 安全最佳实践
- **密码保护的存档**:使用交互模式(`pentlog archive`)而不是 `--password` 标志,以避免在 shell 历史记录中存储密码
- **数据库权限**:敏感文件自动以 0600 权限创建
- **证据完整性**:在合规审计存档前使用 `pentlog freeze`
## 📊 对比:PentLog 与替代方案
| 功能 | `script` | `tmux` | PentLog |
|---------|----------|--------|---------|
| **终端保真度** | ❌ 在特殊字符处出错 | ⚠️ 有损耗(丢失重绘) | ✅ 完美(虚拟终端模拟器) |
| **可搜索日志** | ❌ 手动 grep 混乱 | ❌ 仅限逐个会话 | ✅ 全文搜索 + 正则 + 布尔运算符 |
| **自动组织** | ❌ 手动命名 | ❌ 手动命名 | ✅ 客户 → 项目 → 阶段 自动组织 |
| **时间戳** | ⚠️ 仅开始/结束 | ❌ 无时间戳 | ✅ 每条命令都有时间戳 |
| **合规就绪** | ❌ 无完整性 | ❌ 无完整性 | ✅ 哈希 + 加密 + 审计追踪 |
| **回放** | ❌ 无时间信息 | ⚠️ 仅限实时会话 | ✅ 使用 `ttyplay` 忠实回放 |
| **报告** | ❌ 手动复制/粘贴 | ❌ 手动复制/粘贴 | ✅ 自动生成 Markdown/HTML + AI 摘要 |
| **数据库** | ❌ 仅文件 | ❌ 仅文件 | ✅ 索引 SQLite 用于快速搜索 |
| **需要 Root** | ❌ 以用户身份运行 | ⚠️ 经常需要 sudo | ✅ 以普通用户身份运行 |
| **实时共享** | ❌ 不支持 | ❌ 不支持 | ✅ 带有回滚功能的实时浏览器查看器 |
| **崩溃恢复** | ❌ 日志丢失 | ⚠️ 可能丢失会话 | ✅ 防止 SSH/OOM 崩溃 |
## 📖 文档
### 入门指南
- **[文档首页](https://pentlog.petruknisme.com/)** - 完整文档站点
- **[快速开始](https://pentlog.petruknisme.com/getting-started/quickstart/)** - 设置并运行你的第一个项目
- **[用户指南](https://pentlog.petruknisme.com/guide/sessions/)** - 深入了解所有命令和功能
- **[核心概念](https://pentlog.petruknisme.com/getting-started/concepts/)** - 客户模式 vs. 考试/实验室模式 vs. 仅日志模式
### 进阶主题
- **[AI 分析](https://pentlog.petruknisme.com/guide/ai-analysis/)** - 配置 Gemini 或 Ollama 以进行报告摘要
- **[导出与报告](https://pentlog.petruknisme.com/guide/export/)** - 生成 Markdown 和 HTML 报告
- **[归档与加密](https://pentlog.petruknisme.com/advanced/archiving/)** - 创建加密证据包
### 本地文档
- 源文件位于 `docs/web/docs/` 并使用 Zensical 提供服务(`docs/web/README.md` 包含构建说明)。
### 项目信息
- **[路线图](ROADMAP.md)** - 已实现的功能和未来计划
- **[更新日志](CHANGELOG.md)** - 版本历史和改进
- **[贡献](CONTRIBUTING.md)** - 帮助我们改进 PentLog
## 💡 使用场景
### 🔴 **渗透测试项目**(真实世界)
**问题**:客户要求提供每一条命令的证据。你手动的笔记 + tmux 日志一团糟。
**解决方案**:
- 以完美的终端保真度自动捕获一切
- 自动按 客户 → 项目 → 阶段 组织
- 在几分钟内导出包含 AI 摘要的合规就绪 HTML 报告
- 使用加密归档进行安全的客户交付
### 🟡 **合规与审计**
**问题**:监管机构需要防篡改日志、审计追踪和加密。你的 shell 历史记录还不够。
**解决方案**:
- 在归档前使用 `pentlog freeze` 生成完整性哈希
- 使用 AES-256 加密会话以进行安全的证据打包
- 维护带有时间戳和操作员跟踪的详细审计追踪
- 创建具有可搜索内容的审计就绪报告
### 🟢 **认证(OSCP, HTB 等)**
**问题**:需要为 writeup 记录每一步。纠结于格式和丢失命令。
**解决方案**:
- 跨所有会话搜索以立即找到任何命令
- 导出格式正确的干净 Markdown 报告
- 完美的终端保真度意味着所见即所得
- 时间轴浏览器有助于重建你的攻击流程
### 🔵 **安全研究与红队**
**问题**:需要可重现、带时间戳的终端会话用于分析和回放。
**解决方案**:
- 以精确的时间录制会话,以便忠实地进行 `ttyplay` 回放
- 提取命令时间轴以进行详细分析
- 搜索历史会话以查找模式和技术
- 生成 GIF 录制用于文档和演示
## 📄 许可证
MIT 许可证 - 详情见 [LICENSE](LICENSE)。
## 🎯 支持与社区
- 📖 **文档**:[docs/wiki/Home.md](docs/wiki/Home.md)
- 🐛 **问题反馈**:[GitHub Issues](https://github.com/aancw/pentlog/issues)
- 💬 **讨论**:[GitHub Discussions](https://github.com/aancw/pentlog/discussions)
- ⭐ 如果你觉得 PentLog 有用,请在 **GitHub 上给我们点个 Star**!
**为专业人士打造。证据优先。绝不妥协。**
快速开始 • 功能特性 • 命令 • 安装 • 文档 • 贡献
## ✨ 为什么选择 PentLog? ### 传统日志记录的问题 在渗透测试期间使用 `script`、`tmux` 或基本的 shell 重定向会创建**碎片化、不可搜索且难以维护的证据**: - 🔴 **丢失命令** —— 混杂在噪音中,无法提取上下文 - 🔴 **无完整性** —— 如何证明日志未被篡改? - 🔴 **人工报告** —— 花费数小时复制/粘贴到文档中 - 🔴 **证据缺口** —— ANSI 代码、终端残留、覆盖操作破坏了可读性 - 🔴 **合规噩梦** —— 无审计追踪,无加密存档 ### PentLog 如何解决它 - ✅ **证据优先设计** —— 使用虚拟终端模拟器以完美的保真度捕获每一条命令 + 输出(处理颜色、覆盖、重绘 —— 你看到的与发生的一致) - ✅ **上下文与元数据** —— 从第一天起就自动添加时间戳、操作员跟踪、客户/项目组织 - ✅ **搜索一切** —— 在几秒钟内使用正则表达式 + 布尔运算符跨所有会话查找任何命令 - ✅ **合规就绪** —— 完整性哈希、AES-256 加密存档、详细审计追踪 - ✅ **几分钟内生成报告** —— 自动生成带有 AI 摘要的 Markdown/HTML(无需手动复制/粘贴) - ✅ **无需 Root 权限** —— 以普通用户身份工作;日志安全存放在 `~/.pentlog/` - ✅ **交互式工作流** —— 直观的 TUI 用于项目创建、阶段切换、搜索和笔记 - ✅ **可回放** —— 使用 `ttyplay` 进行忠实的会话回放,保留精确的时间 - ✅ **完整性保护** —— `pentlog freeze` 生成 SHA256 哈希用于证据打包 ## 🚀 快速开始 ``` # 1. 安装 (macOS/Linux) — ~30 秒 curl -sSf https://raw.githubusercontent.com/aancw/pentlog/main/install.sh | sh # 2. 设置 (一次性) — 验证依赖 pentlog setup # 3. 创建 engagement — 交互式向导 pentlog create # 4. 开始录制 — 运行 ttyrec 的 Shell pentlog shell # → 您现在拥有位于 ~/.pentlog/logs/ 的高保真日志 # → 日志已索引至 SQLite,随时可搜索 # 5. 搜索日志 — 跨所有会话查找命令 pentlog search # 6. 导出报告 — 为 client 生成 Markdown/HTML pentlog export ``` **5 分钟后你将获得**: - ✅ 具有完美保真度的可搜索终端日志(ANSI 颜色、覆盖等) - ✅ 按 客户 → 项目 → 阶段 组织的带时间戳命令 - ✅ 包含 AI 摘要的合规就绪 HTML 报告 - ✅ 用于安全交付给客户的加密存档 ## 📋 核心功能 ### 🌟 **五大亮点**(PentLog 的独特之处) | 功能 | 为何重要 | |---------|----------------| | 🎬 **高保真录制** | 以完美的终端准确度捕获每一次击键 + 输出(保留 ANSI 颜色、覆盖、重绘) | | 🔍 **交互式搜索** | 使用正则表达式和布尔运算符即时跨所有会话查找任何命令 —— 不再有 grep 混乱 | | 📊 **虚拟终端模拟器** | 查看器中显示的内容 *完全* 是你在 shell 中看到的(不像 `script` 或 `tmux` 会在特殊字符处出错) | | 💾 **合规就绪导出** | 在几秒钟内生成带有 AI 摘要、完整性哈希和加密存档的 Markdown/HTML 报告 | | 📝 **自动上下文** | 每一条命令都带有时间戳并按 客户 → 项目 → 阶段 组织 —— 无需手动命名或整理 | ### 📚 **附加功能** | 功能 | 描述 | |---------|-------------| | 🤖 **AI 分析** | 使用 Google Gemini 或 Ollama(本地 LLM)总结发现 | | 🎯 **时间轴提取** | 交互式时间轴浏览器,用于重建你的攻击序列 | | 📌 **笔记与书签** | 为会话添加带时间戳的注释,以便日后查阅 | | ⌨️ **快捷键** | Shell 会话期间 Ctrl+N 添加笔记,Ctrl+G 记录漏洞 | | 🔄 **完整回放** | 使用 `ttyplay` 忠实回放,保留精确时间 | | 🛡️ **崩溃恢复** | 保护证据免受 SSH 断开、OOM 终止和意外崩溃的影响 | | 📡 **实时共享** | 通过浏览器实时共享终端会话,配备暗色主题查看器 | | 🔐 **AES-256 存档** | 密码保护的加密存档,用于安全的客户交付 |⌨️ 命令
| 命令 | 描述 |
| :--- | :--- |
| **会话管理** ||
| `create` | 初始化新的项目上下文(交互式) |
| `shell` | 启动一个加载了项目上下文的被录制 shell |
| `shell --share` | 启动一个启用实时浏览器共享的被录制 shell |
| `share` | 共享实时或录制的会话以供只读查看 |
| `sessions` | 列出并管理录制的会话 |
| `switch` | 切换到不同的渗透测试阶段 |
| **分析与搜索** ||
| `search` | 跨所有会话搜索命令历史(正则与布尔) |
| `timeline` | 用于命令时间轴提取的交互式浏览器 |
| `dashboard` | 显示你渗透测试活动的交互式仪表板 |
| `note` | 管理会话笔记和书签 |
| **报告** ||
| `export` | 导出特定阶段的命令(Markdown/HTML) |
| `analyze` | 使用 AI 提供商分析报告以总结发现 |
| `vuln` | 管理发现和漏洞 |
| **数据管理** ||
| `archive` | 存档旧会话,支持可选加密 |
| `import` | 将存档的会话恢复到 pentlog 中 |
| `freeze` | 生成所有会话日志的 SHA256 哈希以保证完整性 |
| `gif` | 将会话转换为动画 GIF(720p/1080p) |
| `serve` | 启动 HTTP 服务器以查看带有 GIF 播放器的 HTML 报告 |
| `recover` | 恢复并管理崩溃或过时的会话 |
| **实用工具** ||
| `replay` | 以完全保真度回放录制的会话 |
| `status` | 显示当前工具和项目状态 |
| `setup` | 验证依赖项并准备本地日志记录 |
| `reset` | 清除当前活动的项目上下文 |
| `completion` | 为 Zsh 和 Bash 生成自动补全脚本 |
| `update` | 自动将 pentlog 更新到最新版本 |
标签:AES-256, AI分析, Cloudflare, ESC漏洞, ETW劫持, EVTX分析, Go语言, HackTheBox, MITRE ATT&CK, OSCP, ttyrec, 交互式时间轴, 可搜索日志, 合规报告, 安全运营, 扫描框架, 操作记录, 数据展示, 日志审计, 日志记录, 漏洞评估, 电子取证, 程序破解, 红队, 终端录制, 网络安全, 证据收集, 隐私保护, 高保真日志