aancw/pentlog

GitHub: aancw/pentlog

一款面向渗透测试的高保真终端日志记录器,以证据优先的设计解决传统日志碎片化、难搜索、难合规的问题。

Stars: 27 | Forks: 2

# PentLog 🔐 **证据优先的渗透测试日志记录器 —— 捕获每一条命令,查找任何内容,证明一切。** 具备 AI 分析、可搜索内容、交互式时间轴以及合规就绪报告的高保真终端日志。基于 `ttyrec` 构建。 非常适合 **真实项目**、**合规与审计**、**OSCP** 以及 **HackTheBox**。

Release Go Downloads License

快速开始功能特性命令安装文档贡献

## ✨ 为什么选择 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 更新到最新版本 |
## 🛠️ 安装 ### 系统要求 - **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**! **为专业人士打造。证据优先。绝不妥协。**
标签:AES-256, AI分析, Cloudflare, ESC漏洞, ETW劫持, EVTX分析, Go语言, HackTheBox, MITRE ATT&CK, OSCP, ttyrec, 交互式时间轴, 可搜索日志, 合规报告, 安全运营, 扫描框架, 操作记录, 数据展示, 日志审计, 日志记录, 漏洞评估, 电子取证, 程序破解, 红队, 终端录制, 网络安全, 证据收集, 隐私保护, 高保真日志