gnarcoding/bespoke-ui-cyber-analytics

GitHub: gnarcoding/bespoke-ui-cyber-analytics

一个利用 LLM 根据 DShield Web 蜜罐日志中的攻击模式动态生成定制化 React 可视化仪表盘的安全分析工具。

Stars: 2 | Forks: 0

# Generative-UI 蜜罐仪表盘 一个**能自行编写其 UI** 的蜜罐仪表盘。与包含静态图表的固定布局不同,该仪表盘使用 LLM 来分析你的 [DShield](https://dshield.org/) webhoneypot 日志,并生成一个专为实际发生的攻击模式量身定制的 React 仪表盘。 遇到 WordPress 暴力破解攻击的一天?你会得到一个专注于 WordPress 的仪表盘。云元数据 SSRF 探测?UI 会重塑以突出显示这些内容。仪表盘紧随攻击态势而变。 ## 工作原理 1. **摄取 (Ingest)** -- 读取 DShield webhoneypot 的 JSONL 日志文件 2. **分析 (Analyze)** -- 纯 Python 分析,提取攻击模式,对 URL 进行聚类,标记签名特征(不涉及 LLM,不处理原始日志字符串) 3. **生成 (Generate)** -- 将结构化摘要发送给 Claude,返回一个专为当天的攻击定制的单文件 React 组件 4. **缓存 (Cache)** -- 生成的 UI 在 SQLite 中通过结构哈希进行缓存,因此直到攻击特征发生实质性变化之前,仪表盘都会保持稳定 5. **服务 (Serve)** -- FastAPI 后端在沙箱 iframe 中提供生成的 UI;UI 在渲染时获取聚合数据 LLM **永远不会看到原始的日志内容**(攻击者可以控制 User-Agent、URL、请求头和请求体——提示注入是一个真实存在的威胁)。它只能看到经过净化的结构化摘要:类别、计数和模式标签。 ## 快速开始 ``` # Clone 与设置 git clone && cd hpot-ui python -m venv venv && source venv/bin/activate pip install -r requirements.txt npm install # 添加您的 Anthropic API key echo "ANTHROPIC_API_KEY=sk-ant-..." > .env # 运行 python server.py # 打开 http://localhost:8000 ``` ### 环境要求 - Python 3.11+ - Node.js(用于对生成的组件进行 esbuild 验证) - 一个 [Anthropic API 密钥](https://console.anthropic.com/) - DShield webhoneypot 日志文件(JSONL 格式,每行一条记录) ## 架构 ``` webhoneypot logs (JSONL) | ingest.py -- read & parse log files | analyze.py -- extract patterns, cluster URLs, tag attacks (NO LLM) | SchemaSummary -- structured summary (never raw log strings) | generate_ui.py -- Claude generates a React component from the summary | server.py -- FastAPI serves UI + data endpoints | sandboxed iframe -- generated UI renders, fetches data via postMessage ``` ### 核心文件 | 文件 | 功能说明 | |---|---| | `ingest.py` | 读取 JSONL 日志文件,输出字典,跳过格式错误的行 | | `analyze.py` | 纯 Python 日志分析——URL 聚类、攻击标记、字段基数统计 | | `generate_ui.py` | 调用 Claude 生成 React 仪表盘组件,并在 SQLite 中缓存 | | `server.py` | FastAPI 后端——提供摘要、UI、数据和原始日志的接口 | | `web/index.html` | 最简宿主外壳,在沙箱 iframe 中渲染生成的组件 | | `web/fallback.jsx` | 如果生成失败时使用的静态后备仪表盘 | | `prompts/ui_generator.txt` | 告诉 Claude 如何构建 UI 的系统提示词 | | `validate_runtime.js` | 验证生成的组件能否正确编译和渲染 | ## 安全模型 这是一个蜜罐仪表盘——它可视化的数据**本质上是由攻击者控制的**。安全措施如下: - **净化层**:分析器生成结构化摘要,从不处理原始日志字符串。LLM 永远不会看到逐字的攻击者输入。 - **沙箱渲染**:生成的 UI 在一个带有 `sandbox="allow-scripts"`(无 `allow-same-origin`)属性的 iframe 中运行。即使是恶意生成的代码,也无法访问父级的 cookie 或发起同源请求。 - **不内嵌数据**:生成的 UI 组件不包含日志数据。它在渲染时通过 `/api/data/*` 接口获取聚合数据。由 React 负责转义。 - **服务端转义**:原始日志接口在返回前会对每个字段进行 HTML 转义。 - **验证**:生成的组件在对外服务前会通过 esbuild 进行验证。失败后会重试一次,若仍失败则回退到静态仪表盘。 ## DShield Webhoneypot 日志格式 每一行都是一个 JSON 对象: ``` { "time": "2026-03-22T14:30:00Z", "sip": "192.168.1.100", "dip": "10.0.0.1", "method": "GET", "url": "/wp-login.php", "headers": { "Host": "example.com", "User-Agent": "..." }, "useragent": "Mozilla/5.0 ...", "data": "", "version": "HTTP/1.1", "response_id": 200, "signature_id": { "rule": "..." } } ``` 默认日志路径为 `/srv/log/webhoneypot_YYYY-MM-DD.json`(可在 `ingest.py` 中配置)。 ## 构建技术栈 - [Claude](https://anthropic.com) (claude-sonnet-4-5) -- UI 生成 - [FastAPI](https://fastapi.tiangolo.com/) -- 后端 API - [React](https://react.dev/) -- 生成的仪表盘组件 - [DShield](https://dshield.org/) -- 蜜罐日志来源 - [Claude Code](https://claude.ai/code) -- 用于构建整个项目 ## 许可证 版权所有 (c) 2026 Eric Roldan (eric@gnarcoding.com) 保留所有权利。 特此授予使用和修改本软件的权限,仅供个人、 教育和非商业用途,但须遵守以下 条件: 1. 必须注明出处。对本软件的任何使用、分发或展示 或其衍生作品,必须包含对原作者 的明确可见的致谢。 2. 禁止商业用途。不得将本软件全部或部分用于 商业目的。您不得出售、许可、再授权或 以其他方式从本软件或任何衍生作品中获利。 3. 无担保。本软件按“原样”提供,不提供任何 形式的明示或暗示的保证,包括但不限于对 适销性、特定用途适用性以及非侵权的保证。 在任何情况下,作者均不对任何索赔、损害或其他 责任负责,无论是在合同诉讼、侵权行为或其他方面,由于 本软件或本软件的使用或其他交易而引起、由其导致或与之相关。
标签:AI驱动, API, AV绕过, Claude, CVE检测, DLL 劫持, DShield, esbuild, FastAPI, Generative UI, GNU通用公共许可证, iframe, JSONL, LLM, MITM代理, Node.js, Python, React, SQLite, Syscalls, Unmanaged PE, Web安全, Web蜜罐, 交互式蜜罐, 代码示例, 动态仪表盘, 大语言模型, 威胁情报, 开发者工具, 数据分析, 无后门, 沙箱, 网络安全, 网络调试, 聚类分析, 自动化, 自定义脚本, 蓝队分析, 蜜罐, 证书利用, 逆向工具, 隐私保护