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

### 日志生成器

### 生成的日志、Raw 集中视图、Parser 与 AI

### 设置

### 设置

## 技术栈
### 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, 安全运营, 扫描框架, 数字取证, 网络测绘, 自动化攻击, 自动化脚本