filipe01000/ai-log-generator

GitHub: filipe01000/ai-log-generator

一款基于 AI 的合成安全日志生成平台,为 SOC 训练和检测工程提供无需暴露真实敏感数据的逼真攻防场景日志。

Stars: 0 | Forks: 0

# AI Log 生成器 专业的 Web 平台,专注于生成逼真的合成日志,适用于 SOC、Blue Team、DFIR、Threat Hunting、Pentest、CTF、实验室和 incident 模拟。 该项目将最初基于 Shell Script 的想法替换为现代化的 Web 架构,采用了 Next.js、React、TypeScript、TailwindCSS、shadcn/ui 风格组件、Prisma、SQLite,并可选集成 OpenAI API 或本地 Ollama。 ## 目标 生成合成日志数据集,用于训练和检测工程,且无需使用敏感的真实数据。系统混合了良性事件与恶意事件,包含 MITRE ATT&CK 映射,并支持导出为 SOC/SIEM 工作流接受的多种格式。 ## 截图 ### 深色模式 Dashboard ![Dashboard 深色模式](https://static.pigsec.cn/wp-content/uploads/repos/cas/17/1758f78006d3b57e6374aeb75fceaba183406fb3758ef25ecb5985ae2b92f8a2.png) ### 浅色模式 Dashboard ![Dashboard 浅色模式](https://static.pigsec.cn/wp-content/uploads/repos/cas/d9/d937489fb3fbfcbeadd552adf6f2ac58f3ef6dec0e4259e5dfcd9a3a22a0e4f5.png) ### 日志生成器 ![日志生成器](https://static.pigsec.cn/wp-content/uploads/repos/cas/b6/b69ca0dfa74acbd7af2a956d7c10b913735a1ea09d14bc705aa528946769a67d.png) ### 生成的日志、Raw 集中视图、Parser 与 AI ![日志 Raw Parser AI](https://static.pigsec.cn/wp-content/uploads/repos/cas/6d/6d0268f178e35a84eaf72e070f1ee541718bbc0cfd2dcd718644578b31337ccc.png) ### 设置 ![Settings](https://static.pigsec.cn/wp-content/uploads/repos/cas/58/5892e9b9c66b5fa7627f9bd50fde3093bb99eab1109654f1e8757b584ce6b7d4.png) ### 设置 ![Settings](https://static.pigsec.cn/wp-content/uploads/repos/cas/58/5892e9b9c66b5fa7627f9bd50fde3093bb99eab1109654f1e8757b584ce6b7d4.png) ## 技术栈 ### Frontend - Next.js App Router - React - TypeScript - TailwindCSS - 本地 shadcn/ui 风格组件 - React Hook Form - Zod - Recharts ### Backend - 位于 `/app/api` 的 Next.js Route Handlers - REST API - 位于 `/lib` 的模块化架构 - 使用 Zod 进行验证 - 基于内存的基础 rate limit ### 数据库 - 用于 MVP 的 SQLite - Prisma ORM - 通过在 schema 中更改 `DATABASE_URL` 和 provider 即可为生产环境准备好 PostgreSQL ### AI - 默认支持功能性的 mock/混合模式 - 可选的 OpenAI API - 可选的本地 Ollama - 策略:templates + 合成生成 + 场景 AI ## 已实现功能 - 包含指标、厂商、严重程度、MITRE 和近期事件的 Dashboard - 根据厂商、事件、严重程度、数量和良性噪声生成日志 - AI Scenario Builder - 场景时间线 - 虚构 IOC - 包含 MITRE ATT&CK 的 TTP - 混合了良性与恶意事件的连贯日志 - 带有过滤器的已生成日志屏幕 - Raw 视图和格式化的 JSON 视图 - 将日志复制到 clipboard - 支持导出为 TXT、JSON、CSV、Syslog、CEF、LEEF、模拟 EVTX 和 NDJSON - 模拟预设 - MITRE ATT&CK 页面 - 包含 AI provider 状态的 Settings ## MVP 中支持的厂商和系统 - FortiGate - FortiSIEM - Wazuh - Sysmon - Windows Security - Active Directory - Linux Auditd - Apache - Nginx - SSH - VPN - DNS - DHCP - Firewall - Suricata - Zeek - pfSense - Cisco ASA - Cisco IOS - Mikrotik - AWS CloudTrail - Azure - Microsoft Defender - Office 365 - Exchange - Kubernetes - Docker - PostgreSQL - MySQL ## 支持的事件 包括 logon、logoff、认证失败、横向移动、RDP、PowerShell、CMD、Linux Bash、进程创建、远程执行、用户创建、组更改、凭证转储、Mimikatz、Pass-the-Hash、Kerberoasting、Golden Ticket、DNS Tunneling、Beacon C2、Reverse Shell、Web Shell、SQL Injection、XSS、Directory Traversal、Brute Force、Nmap、Masscan、Hydra、ransomware、数据外发、malware、botnet、APT 和 insider threat。 ## 文件夹结构 ``` /app /dashboard /generate /ai-builder /attacks /mitre /exports /settings /logs /api /generate /export /ai-scenario /dashboard /logs /mitre /components /ui /charts /forms /tables /layout /dashboard /attacks /lib ai.ts generators.ts exporters.ts mitre.ts validators.ts utils.ts prisma.ts rate-limit.ts security.ts constants.ts /data /templates /mitre /samples /prisma schema.prisma seed.ts ``` ## 本地安装 要求: - 建议使用 Node.js 20 或更高版本 - npm 步骤: ``` cp .env.example .env npm install npm run dev ``` 访问: ``` http://localhost:3000 ``` `npm run dev` 命令会自动执行: ``` prisma generate prisma db push tsx prisma/seed.ts next dev ``` ## 配置 OpenAI API 编辑 `.env`: ``` OPENAI_API_KEY="sua_chave" OPENAI_MODEL="gpt-4.1-mini" AI_PROVIDER="openai" ``` 在 AI Scenario Builder 界面中,选择 `OpenAI API`。 如果未提供密钥,系统将继续使用 `mock` provider 运行,该 provider 结合了本地 templates 和合成生成。 ## 配置本地 Ollama 在本地安装并启动 Ollama。然后编辑 `.env`: ``` OLLAMA_URL="http://localhost:11434/api/generate" OLLAMA_MODEL="llama3.1" AI_PROVIDER="ollama" ``` 在 AI Scenario Builder 界面中,选择 `Ollama local`。 ## REST API ### 生成日志 ``` POST /api/generate Content-Type: application/json ``` ``` { "vendor": "FortiGate", "eventType": "Brute Force", "count": 100, "severity": "high", "noiseLevel": 25, "simulationMode": "SOC", "outputFormat": "json", "useAI": false } ``` ### 使用 AI 创建场景 ``` POST /api/ai-scenario Content-Type: application/json ``` ``` { "companyType": "Empresa média", "assetCount": 120, "userCount": 450, "attackType": "Ransomware", "durationHours": 8, "noiseLevel": 35, "severity": "critical", "vendors": ["FortiGate", "Windows Security", "Sysmon", "Wazuh"], "outputFormat": "json", "logCount": 180, "aiProvider": "mock" } ``` ### 查询日志 ``` GET /api/logs?vendor=FortiGate&severity=high&mitreId=T1110&take=100 ``` ### 导出日志 ``` POST /api/export Content-Type: application/json ``` ``` { "format": "cef", "vendor": "FortiGate", "severity": "high", "limit": 1000 } ``` ### Dashboard ``` GET /api/dashboard ``` ## 安全与负责任的使用 - 所有日志均为合成日志。 - 请勿输入敏感的真实数据。 - 应用程序会显示教育性警告。 - 输入内容使用 Zod 进行验证。 - 文本字段已进行 sanitize 处理。 - 具有基于 IP 的基础 rate limit。 - 目标是用于防御性训练、实验室、CTF 和检测工程。 ## 迈向生产环境之路 对于生产环境,建议: 1. 将 SQLite 替换为 PostgreSQL。 2. 添加身份验证。 3. 将 rate limit 持久化到 Redis 中。 4. 实现用于大规模生成的队列。 5. 添加 RBAC。 6. 将生成 worker 分离。 7. 为大型导出添加 storage。 8. 按厂商对 templates 进行版本控制。 9. 添加自动化测试。 10. 添加 Dockerfile 和 docker-compose。 ## PostgreSQL `.env` 示例: ``` DATABASE_URL="postgresql://user:password@localhost:5432/ai_log_generator" ``` 然后调整 `prisma/schema.prisma`: ``` datasource db { provider = "postgresql" url = env("DATABASE_URL") } ``` 执行: ``` npx prisma migrate dev npm run dev ``` ## 许可证 用于实验室、作品集和安全培训的教育项目。 ## Logs 界面新增改进 `Logs Gerados` 界面现在具有四种查看模式: 1. `Raw 集中视图` - 在单个控制台中显示所有过滤后的日志。 - 显示行号、厂商、严重程度和完整的 raw 日志。 - 支持按时间线、厂商或严重程度分组。 - 允许在 raw 日志中进行搜索并将所有内容复制到 clipboard。 2. `Parser` - 实时对 raw 日志进行解析。 - 检测 JSON、key-value、Web 访问日志、Zeek TSV 和纯文本。 - 将 SOC 的重要字段进行标准化,如源、目标、端口、用户、主机、进程、命令和 MITRE。 - 显示提取的字段和 parser 质量观察结果。 3. `AI` - 分析选定的日志。 - 在没有外部密钥的情况下以本地 mock 模式运行。 - 可通过 `OPENAI_API_KEY` 使用 OpenAI。 - 可通过 `OLLAMA_URL` 和 `OLLAMA_ANALYSIS_MODEL` 使用本地 Ollama。 - 返回结论、严重程度、置信度、风险、证据、parser 调整、修正和建议的响应。 4. `表格` - 保留带有过滤器和个人 raw 视图的传统视图。 ### AI 的可选环境变量 ``` OPENAI_API_KEY="sua-chave" OPENAI_MODEL="gpt-4.1-mini" OPENAI_ANALYSIS_MODEL="gpt-4.1-mini" OLLAMA_URL="http://localhost:11434/api/generate" OLLAMA_MODEL="llama3.1" OLLAMA_ANALYSIS_MODEL="llama3.1" ``` ### 新增 Endpoint ``` POST /api/ai-analysis ``` 最小 Payload: ``` { "provider": "mock", "objective": "Analise o log como SOC N1/N2 e sugira ajustes de parser.", "logs": [ { "vendor": "FortiGate", "eventType": "Brute Force", "severity": "high", "raw": "date=2026-07-02 time=10:00:00 srcip=10.0.0.5 dstip=8.8.8.8 action=blocked mitreid=T1110" } ] } ``` ## 版本 3 新特性 - 支持深色和浅色模式,并持久化存储在 `localStorage` 中。 - 应用程序顶部设有切换按钮。 - Settings 界面提供浅色、深色和系统跟随选项。 - SOC 控制台风格的 Raw 集中视图。 - 用于查看标准化字段的 Parser 视图。 - AI 选项卡,用于分析、parser 调整、严重程度、证据和建议的响应。 - 位于 `docs/linkedin-post.md` 和 `docs/github-publish.md` 的辅助文档。 ## 版本 4 新特性 - Raw 日志默认启用自动换行,无需水平滚动即可复制。 - `Raw 集中视图` 模式下提供针对单个日志的复制按钮。 - 保留了 `Copiar tudo` 按钮,用于复制所有已过滤的日志。 - 表格的 Raw 视图已调整以适应屏幕范围,采用控制台/SIEM 风格。 - Dashboard 的图表颜色已针对浅色和深色模式进行调整。 - 移除了 Recharts 在柱状图、标签和 tooltip 中默认的黑色区域。 - `Excluir filtrados` 按钮,仅删除与当前过滤器匹配的日志。 - `Limpar todos` 按钮,用于删除保存在 SQLite 中的所有合成日志。 - 新增 Endpoint `DELETE /api/logs`,用于受控清理已生成的日志。 ### 删除生成的日志 带过滤器删除日志: ``` DELETE /api/logs Content-Type: application/json ``` ``` { "scope": "filtered", "filters": { "vendor": "FortiGate", "severity": "critical" } } ``` 删除所有合成日志: ``` DELETE /api/logs Content-Type: application/json ``` ``` { "scope": "all" } ``` 为了安全起见,过滤删除需要至少激活一个过滤器。要删除所有内容,必须显式使用 `scope: "all"`。
标签:AI数据生成, AI风险缓解, Petitpotam, 安全运营, 扫描框架, 数字取证, 网络测绘, 自动化攻击, 自动化脚本