4njuT0m/cybernews
GitHub: 4njuT0m/cybernews
一个基于 Flask 和 Google Gemini AI 的轻量级威胁情报平台,通过聚合安全新闻 RSS 源和 CISA 漏洞数据,自动提取 IOC 并映射 MITRE ATT&CK 框架,帮助安全团队快速获取和分析威胁信息。
Stars: 2 | Forks: 0
# CyberNews
一个为理解全栈开发、API 设计和网络安全基础而构建的威胁情报平台。该项目集成了实时威胁源、漏洞数据,并展示了 AI 驱动的威胁分析概念。
## 关于
这是在网络安全培训期间开发的一个学习项目,旨在理解:
- 构建具有基于角色的访问控制 (RBAC) 的安全 Web 应用程序
- 集成多个威胁情报源(RSS 源,CISA KEV)
- 使用 JWT token 进行 API 身份验证和授权
- 威胁数据建模和 IOC(失陷指标)提取
- 用于自动化威胁源摄取的后台作业调度
- 面向安全运营用例的数据库设计
该项目聚合了来自 The Hacker News 和 SecurityWeek 的网络安全新闻,集成了 CISA 已知被利用漏洞,并使用 Google Gemini AI 提取 IOC 并将威胁映射到 MITRE ATT&CK 技术。
## 技术栈
- 后端:Flask, SQLAlchemy
- 数据库:PostgreSQL(生产环境),SQLite(开发环境)
- 身份验证:静态 Bearer Tokens,bcrypt
- 调度:APScheduler
- AI:Google Generative AI (Gemini)
- 源解析:feedparser
## 项目结构
```
cybernews/
├── app/
│ ├── __pycache__/
│ ├── blueprints/
│ ├── __init__.py # App factory
│ ├── admin.py # Admin operations
│ ├── api.py # API endpoints
│ ├── auth.py # Authentication routes
│ ├── news.py # News/article routes
│ ├── services/
│ │ ├── __pycache__/
│ │ ├── __init__.py
│ │ ├── feed_fetcher.py # RSS feed parsing
│ │ ├── gemini_service.py # IOC extraction
│ │ ├── ioc_extractor.py # IOC processing
│ │ └── scheduler.py # Background job scheduling
│ ├── static/
│ │ ├── css/
│ │ │ └── style.css
│ │ └── js/
│ │ └── main.js
│ ├── templates/ # HTML templates
│ │ ├── admin.html
│ │ ├── base.html
│ │ ├── error.html
│ │ ├── incidents.html
│ │ ├── index.html
│ │ ├── iocs.html
│ │ └── login.html
│ ├── __init__.py
│ └── models.py # Database models
├── venv/
├── .env # Environment variables (local)
├── .gitignore
├── config.py # Configuration
├── requirements.txt
└── run.py # Entry point
└── seed.py # Database seeding
```
## 安装与设置
1. 克隆仓库
git clone https://github.com/4njuT0m/cybernews.git
cd cybernews
2. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
3. 安装依赖项
pip install -r requirements.txt
4. 配置环境
cp .env.example .env
编辑 `.env`:
SECRET_KEY=your_secret_key_here
BEARER_TOKEN=your_bearer_token_here
GEMINI_API_KEY=your_gemini_api_key_here
# Database (Supabase)
DATABASE_URL=your_Database url_here
5. 初始化数据库
python seed.py
6. 运行应用程序
python run.py
访问地址 `http://localhost:5000`
## 测试凭据
初始化数据库后:
- analyst1 / analyst1pass(级别 1)
- analyst2 / analyst2pass(级别 2)
- admin / adminpass(管理员)
## 主要功能
**威胁源聚合**:每 30 分钟自动获取并解析来自安全新闻源的 RSS 源。
**基于角色的访问控制**:三种用户角色(级别 1 分析师、级别 2 分析师、管理员),具有不同的权限级别和数据可见性。
**IOC 提取**:Google Gemini API 分析文章内容以提取失陷指标(IP 地址、域名、文件哈希)。
**MITRE ATT&CK 映射**:将威胁技术映射到 MITRE ATT&CK 框架,以实现更好的威胁分类。
**漏洞跟踪**:集成 CISA KEV 数据以跟踪联邦政府规定的可利用漏洞。
**身份验证**:使用 Bearer token 身份验证保护 API 端点,以供编程访问。
## 数据库设计
**User 表**
- username(唯一)
- password_hash(bcrypt)
- role(analyst_l1,analyst_l2,admin)
- clearance level
- last_login timestamp
**NewsArticle 表**
- title, source, URL
- published_at timestamp
- category(漏洞、泄露、威胁行为者等)
- severity(严重、高、中、低)
- summary
- cve_id, epss_score
- iocs(一对多关系)
- mitre_tags(一对多关系)
- ai_processed 标志
## API 端点
```
POST /login - Web interface authentication
POST /logout - Secure session termination
GET /api/news - Fetch filtered intelligence feed
DELETE /admin/reports/ - Purge intelligence records
POST /admin/incidents - Create new SOC incident
```
所有端点都需要 Bearer token 身份验证。
## 配置
该项目支持三种环境:
- 开发环境:启用 Debug 模式,SQLite 数据库,不安全的 cookies
- 生产环境:禁用 Debug 模式,PostgreSQL 数据库,安全的 HTTPS cookies
- 测试环境:内存 SQLite,禁用 CSRF
通过 `FLASK_ENV` 环境变量进行配置。
## 后台作业
APScheduler 每 30 分钟运行一次 RSS 源收集:
1. 从配置的源获取文章
2. 根据 URL 对文章进行去重
3. 将新文章存储在数据库中
4. 将文章排队以进行 AI 处理(每次运行最多 10 篇)
Gemini AI 处理未经处理的文章,以提取 IOC 并映射 MITRE 技术。
## 学习目标
该项目演示了:
- 使用 bcrypt 进行安全的密码哈希处理
- 基于 JWT token 的 API 身份验证
- 基于角色的访问控制实现
- 威胁情报数据建模
- 后台作业调度
- 第三方 API 集成(RSS,Gemini)
- 数据库查询优化
- 使用 ORM 防止 SQL 注入
- Session 安全配置
## 许可证
MIT 许可证
标签:AI安全分析, API安全, API设计, APScheduler, bcrypt, CISA KEV, Cloudflare, DLL 劫持, feedparser, Flask, GPT, IOC提取, JSON输出, JWT认证, masscan, MITRE ATT&CK, nuclei, PostgreSQL, Python, RBAC, RSS订阅, SQLAlchemy, SQLite, TIP, 加密哈希, 后台任务调度, 基于角色的访问控制, 大语言模型, 失陷标示符, 威胁情报平台, 安全培训, 安全数据建模, 安全资讯聚合, 实时处理, 无后门, 测试用例, 漏洞管理, 网络安全, 网络安全学习, 逆向工具, 隐私保护