shankar121112/AIRSS
GitHub: shankar121112/AIRSS
AIRSS 是一个基于 FastAPI 构建的自动化网络安全评估与事件响应模拟平台,提供网络扫描、漏洞评估、合规审计和攻击模拟等一体化教学演练功能。
Stars: 0 | Forks: 0
# AIRSS — 自动化事件响应模拟系统
**Tilak Maharashtra Vidyapeeth University, Pune**
**计算机科学系 — BCA 2025–2026**
**Shankar Shivhar Waghmare | PRN: 46423000820**
## 📋 目录
- [项目概述](#-project-overview)
- [架构与组件](#-architecture--components)
- [核心功能](#-core-features)
- [系统流程](#-system-flow)
- [技术栈](#-technical-stack)
- [安装与设置](#-installation--setup)
- [使用指南](#-usage-guide)
- [API 文档](#-api-documentation)
- [安全特性](#-security-features)
- [故障排除](#-troubleshooting)
## 🎯 项目概述
### 什么是 AIRSS?
AIRSS(自动化事件响应模拟系统)是一个全面的网络安全评估和漏洞管理平台,旨在模拟像 Nessus 或 OpenVAS 这样的企业级安全扫描工具。该系统在基于 Web 的界面中提供自动化网络发现、漏洞评估、合规性审计和事件响应功能。
### 为什么选择 AIRSS?
**教育目的**:作为 BCA 毕业设计项目构建,旨在展示网络安全概念、Web 开发和系统集成的实际应用。
**学习目标**:
- 网络扫描和发现技术
- 漏洞评估方法论
- 使用 WebSocket 进行实时 Web 应用程序开发
- 跨平台兼容性(Windows/Linux/macOS)
- 安全合规框架
- PDF 报告生成
- 数据库集成和状态管理
**实际应用**:模拟网络安全专业人员用于网络评估、合规性审计和事件响应规划的专业安全工具。
## 🏗️ 架构与组件
### 系统架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Web Browser │ │ FastAPI App │ │ Background │
│ (Frontend) │◄──►│ (Backend) │◄──►│ Services │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ HTML/CSS/JS │ │ Templates & │ │ Network │
│ Templates │ │ Static Files │ │ Scanning │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
### 核心模块
#### 1. **main.py** - FastAPI 后端
- **用途**:处理 HTTP 请求、WebSocket 连接和业务逻辑的主应用服务器
- **关键组件**:
- FastAPI 应用设置
- 会话管理
- 用于实时更新的 WebSocket 管理器
- 后台任务调度器
- 用于扫描、报告和管理的 API endpoint
#### 2. **discover.py** - 网络发现引擎
- **用途**:核心网络扫描和设备发现功能
- **主要特性**:
- 使用原始套接字进行 ICMP ping 扫射
- 针对 ICMP 被拦截的主机进行 TCP 端口探测
- ARP 表读取和 MAC 厂商查询
- 操作系统指纹识别
- 服务检测和端口映射
#### 3. **report_generator.py** - PDF 报告引擎
- **用途**:从扫描结果生成专业的 PDF 报告
- **特性**:
- 带有页眉/页脚的结构化 PDF 布局
- 漏洞摘要
- 合规性报告
- 带时间戳和品牌化的报告
#### 4. **database.py** - Firebase Firestore 管理器
- **用途**:核心数据库操作和持久层
- **主要特性**:
- Firebase Firestore 初始化和 schema 管理
- 带有版本控制的发现扫描集合
- 漏洞跟踪和存储
- 主机管理和历史记录
- 用于检索扫描的查询接口
- 通过 GOOGLE_APPLICATION_CREDENTIALS 支持 Firebase 凭据
#### 5. **db_integration.py** - 数据库集成层
- **用途**:高级数据库抽象和业务逻辑
- **主要特性**:
- ScanManager:处理扫描生命周期和版本控制
- HostManager:管理发现的主机及其关系
- VulnerabilityManager:存储和检索漏洞数据
- PortManager:跟踪开放端口和服务
- LogManager:维护审计和操作日志
- HistoryManager:处理扫描历史和增量检测
#### 6. **setup_firebase.py** - Firebase 设置实用程序
- **用途**:初始化并测试 Firebase Firestore 连接
- **特性**:
- 凭据验证
- 数据库连接测试
- 集合初始化
- 设置验证
#### 7. **generate_test_data.py** - 测试数据生成器
- **用途**:使用样本数据填充数据库以供开发使用
- **特性**:
- 真实的测试扫描和主机
- 样本漏洞和端口
- 安全事件和日志
- 开发数据种子化
#### 8. 前端组件
- **templates/**:Jinja2 HTML 模板
- `login.html`:身份验证界面
- `dashboard.html`:主应用程序界面
- **static/**:静态资源
- `css/main.css`:样式和响应式设计
- `js/main.js`:客户端逻辑和 WebSocket 处理
### 数据流
```
User Request → FastAPI Routes → Background Tasks → Network Scanning
↓ ↓ ↓ ↓
WebSocket → Real-time Updates → Database Store → PDF Reports
Updates → UI Updates → Scan History → Export
```
## 🚀 核心功能
### 🔐 身份验证系统
- 基于安全 cookie 的**会话身份验证**
- **默认凭据**:`admin` / `Shankar`
- 带有会话清理的**注销功能**
### 📊 仪表盘与分析
- **实时统计**:设备计数、风险等级、开放端口
- **网络拓扑可视化**(基于 SVG)
- 带有实时 RX/TX 图形的**流量监控**
- 使用 Chart.js 的**风险分布图表**
- 带有版本控制的**扫描历史跟踪**
- 由 Firebase 支持的历史数据**持久化**
### 🔍 网络扫描器
- **灵活的 IP 范围输入**:CIDR 表示法、范围、单个 IP
- **双重扫描模式**:
- **真实模式**:使用系统网络工具进行准确扫描
- **模拟模式**:生成用于测试的真实模拟数据
- 通过 WebSocket 的**实时进度更新**
- **全面的设备画像**:IP、主机名、OS、MAC、厂商
- 在 Firebase Firestore 中的**持久扫描存储**
### 🎯 漏洞评估
- 基于开放端口和服务的**动态风险评分**
- 带有真实漏洞数据的 **CVE 数据库集成**
- **CISA KEV(已知被利用漏洞)**加权
- 具有已知漏洞端口的**服务映射**
- **风险分类**:严重、高、中、低
### 📋 合规与策略引擎
- 基于 JSON 的**策略定义** (`policies.json`)
- 对照安全标准进行**自动化合规检查**
- 带有修复指导的**结果报告**
- **全网合规评分**
### ⚡ 攻击模拟控制台
- **多种攻击向量**:
- 端口扫描(nmap 集成)
- Ping 扫射
- SYN/UDP 泛洪攻击
- ARP 欺骗
- 操作系统指纹识别
- **可配置的强度等级**(低/中/高)
- **实时攻击监控**
- **安全控制**和持续时间限制
### 🔄 自动扫描调度器
- 可配置间隔的**自动定期扫描**
- 使用 asyncio 的**后台任务管理**
- **扫描历史和增量检测**
- 针对新漏洞的**警报系统**
### 📄 专业报告
- 带有结构化布局的 **PDF 报告生成**
- **全面的扫描摘要**
- 带有修复步骤的**漏洞详情**
- **合规审计报告**
- **带时间戳和版本控制的报告**
### 🌐 实时通信
- 基于 WebSocket 的**实时更新**
- 用于多客户端同步的**广播系统**
- 用于响应式 UI 的**事件驱动架构**
- **连接状态监控**
## 🔄 系统流程
```
1. Admin Login
└── Session creation and authentication
2. Dashboard Access
├── Real-time statistics loading
├── WebSocket connection establishment
└── Background services initialization
3. Network Scanning
├── Target network specification
├── Scan profile selection (real/simulation)
├── Live progress updates via WebSocket
└── Device discovery and profiling
4. Vulnerability Assessment
├── Port analysis and service detection
├── CVE database correlation
├── Risk score calculation
└── Compliance policy evaluation
5. Device Management
├── Detailed device information display
├── Vulnerability drill-down
└── Targeted rescanning
6. Attack Console
├── Target device selection
├── Attack vector configuration
├── Real-time execution monitoring
└── Result logging
7. Reporting & Export
├── Scan result compilation
├── PDF report generation
└── Download/export functionality
```
## 🛠️ 技术栈
| 层级 | 技术 |
|---|---|
| **后端** | Python 3.11+、FastAPI、Uvicorn |
| **数据库** | Firebase Firestore 持久化存储 |
| **实时** | WebSocket(FastAPI 原生) |
| **网络** | Scapy、Paramiko (SSH)、Raw Sockets |
| **报告** | FPDF、ReportLab |
| **模板** | Jinja2、HTML5/CSS3 |
| **前端** | Vanilla JavaScript、Chart.js 4 |
| **异步** | Asyncio、concurrent.futures |
| **工具** | 用于 nmap 集成的 Subprocess、日志记录、线程 |
## 📁 项目结构
```
final project/
├── main.py # FastAPI backend, WebSocket handler, API routes
├── discover.py # Network discovery engine (ICMP, ARP, port scanning)
├── database.py # Firebase Firestore database manager
├── db_integration.py # High-level database abstraction layer
├── setup_firebase.py # Firebase setup and connection testing
├── generate_test_data.py # Test data generator for development
├── report_generator.py # PDF report generation engine
├── policies.json # Compliance policies and security rules
├── requirements.txt # Python dependencies
├── run.sh # Application startup script
├── set_credentials.ps1 # PowerShell script to set Firebase credentials
├── templates/
│ ├── login.html # Authentication page
│ └── dashboard.html # Main application dashboard
├── static/
│ ├── css/main.css # Responsive stylesheet
│ └── js/main.js # Client-side logic, WebSocket handler
├── FIREBASE_SETUP.md # Firebase database setup guide
├── DEBUGGING_NOTES.md # Development debugging notes
├── DATABASE.md # Database documentation
├── DATABASE_IMPLEMENTATION.md # Database implementation details
├── FLOWCHART.md # System architecture flowchart
├── QUICKSTART.md # Quick start guide
└── README.md # This file
```
## 📦 安装与设置
### 前置条件
#### 系统要求
- **Python 3.11+**
- 兼容 **Windows/Linux/macOS**
- **管理员权限**(用于原始套接字操作)
#### 可选依赖项
- **nmap**:用于高级端口扫描和操作系统检测
- **管理权限**:用于某些网络操作
### 安装步骤
#### 1. 克隆/下载项目
```
# 导航到项目目录
cd "final project"
```
#### 2. 安装 Python 依赖项
```
# 安装所有必需的包
pip install -r requirements.txt
```
#### 3. 验证安装
```
# 测试导入
python -c "import fastapi, uvicorn, scapy, paramiko, fpdf; print('All dependencies installed')"
```
### 配置
#### 环境设置
- **虚拟环境**:建议使用以进行隔离
- **工作目录**:确保所有文件都在同一个目录中
- **文件权限**:对项目目录具有读/写访问权限
#### 可选配置
- **policies.json**:自定义合规规则
- **网络接口**:确保具有用于扫描的网络访问权限
- **防火墙规则**:允许必要的网络操作
#### Firebase Firestore 配置
应用程序使用 Firebase Firestore 进行扫描数据的持久化存储。请按照以下步骤设置您的数据库:
**步骤 1:获取 Firebase 服务账号凭据**
1. 前往 [Firebase 控制台](https://console.firebase.google.com/project/airss-37fad)
2. 导航至 **项目设置** → **服务账号** 标签页
3. 点击 **生成新的私钥**
4. 将 JSON 文件保存到您的项目目录中(例如:`airss-37fad-firebase-adminsdk-fbsvc-xxxxx.json`)
**步骤 2:设置凭据环境变量**
```
# Windows PowerShell(在项目目录中运行)
.\set_credentials.ps1
# 或手动设置:
$env:GOOGLE_APPLICATION_CREDENTIALS = "C:\path\to\airss-37fad-firebase-adminsdk-fbsvc-xxxxx.json"
```
**步骤 3:创建 Firestore 数据库**
1. 前往 [Firestore 数据库](https://console.firebase.google.com/project/airss-37fad/firestore)
2. 点击 **“创建数据库”**
3. 选择 **“以测试模式启动”**(用于开发)
4. 选择位置:`us-central1`
5. 点击 **“创建”**
**步骤 4:测试 Firebase 连接**
```
# 测试设置
python setup_firebase.py
# 生成测试数据(可选)
python generate_test_data.py
```
**预期输出:**
```
✓ Firebase credentials found
✓ Firebase initialized successfully
✓ discovery_scans: 0 documents
✓ hosts: 0 documents
✓ open_ports: 0 documents
✓ vulnerabilities: 0 documents
✓ log_scans: 0 documents
✓ scan_history: 0 documents
✓ Firebase database setup complete!
```
**其他凭据提供方式:**
- 将 `FIREBASE_CREDENTIALS_PATH` 设置为 JSON 文件路径
- 将 `FIREBASE_CREDENTIALS_JSON` 设置为作为字符串的 JSON 内容
- 设置 `FIREBASE_PROJECT_ID`(默认为 `airss-37fad`)
#### 数据库集合结构
AIRSS 使用 6 个主要的 Firestore 集合:
**1. `discovery_scans`** - 网络扫描元数据
```
{
"scan_id": "scan_20240507_001",
"scan_name": "Network Discovery Scan",
"target_network": "192.168.1.0/24",
"start_time": "2024-05-07T10:00:00Z",
"end_time": "2024-05-07T10:05:00Z",
"status": "completed",
"total_hosts_found": 15,
"total_vulnerabilities": 3,
"scan_type": "network",
"notes": "Full network inventory"
}
```
**2. `hosts`** - 发现的网络设备
```
{
"host_id": "host_192_168_1_10",
"scan_id": "scan_20240507_001",
"ip_address": "192.168.1.10",
"hostname": "router.local",
"mac_address": "00:11:22:33:44:55",
"vendor": "Cisco Systems",
"os_type": "Linux",
"status": "online",
"open_ports_count": 5,
"vulnerability_count": 2
}
```
**3. `open_ports`** - 开放端口和服务
```
{
"port_id": "port_host_192_168_1_10_22_tcp",
"host_id": "host_192_168_1_10",
"scan_id": "scan_20240507_001",
"port_number": 22,
"protocol": "tcp",
"service_name": "ssh",
"service_version": "OpenSSH 8.0",
"state": "open"
}
```
**4. `vulnerabilities`** - 安全漏洞详情
```
{
"vuln_id": "vuln_host_192_168_1_10_CVE_2024_1234",
"host_id": "host_192_168_1_10",
"scan_id": "scan_20240507_001",
"port_id": "port_host_192_168_1_10_22_tcp",
"vulnerability_name": "Weak SSH Configuration",
"severity": "High",
"cvss_score": 7.5,
"cve_id": "CVE-2024-1234",
"description": "SSH allows weak ciphers",
"solution": "Disable weak ciphers in sshd_config"
}
```
**5. `log_scans`** - 安全事件日志
```
{
"log_id": "log_20240507_001",
"scan_id": "scan_20240507_001",
"event_type": "PORT_SCAN",
"severity": "Warning",
"source_ip": "192.168.1.50",
"target_ip": "192.168.1.10",
"port": 22,
"protocol": "tcp",
"action": "DETECTED",
"message": "Suspicious port scanning activity",
"timestamp": "2024-05-07T10:02:00Z"
}
```
**6. `scan_history`** - 变更跟踪
```
{
"history_id": "hist_20240507_001",
"scan_id": "scan_20240507_001",
"host_id": "host_192_168_1_10",
"previous_state": "offline",
"current_state": "online",
"change_detected": true,
"changed_at": "2024-05-07T10:01:00Z"
}
```
### 运行应用程序
#### 开发模式
```
# 开启自动重载运行
uvicorn main:app --reload --host 127.0.0.1 --port 8000
```
#### 生产模式
```
# 运行生产服务器
uvicorn main:app --host 0.0.0.0 --port 8000
```
#### 访问应用程序
- **URL**:`http://localhost:8000`
- **默认登录**:`admin` / `Shankar`
## 📖 使用指南
### 首次设置
1. **启动应用程序**
uvicorn main:app --host 127.0.0.1 --port 8000
2. **访问 Web 界面**
- 在浏览器中打开 `http://localhost:8000`
- 使用默认凭据登录
3. **初始配置**
- 查看仪表盘概览
- 如果需要,配置扫描设置
### 网络扫描
#### 基本网络扫描
1. 导航至 **网络扫描器** 部分
2. 输入目标网络(例如:`192.168.1.0/24`)
3. 选择扫描配置文件(真实/模拟)
4. 点击 **开始扫描**
5. 实时监控进度
#### 高级扫描选项
- **自定义 IP 范围**:`10.0.0.1-50`、`192.168.1.100`
- **单个主机**:`192.168.1.1`
- **多个子网**:用逗号分隔
### 设备分析
#### 查看设备详情
1. 扫描后转至 **设备** 部分
2. 点击任意设备行查看详细视图
3. 查看开放端口、服务和漏洞
4. 检查合规状态
#### 漏洞评估
- **风险评分**:颜色编码的严重性级别
- **CVE 详情**:点击查看漏洞信息
- **修复步骤**:为每个发现的问题提供
### 攻击模拟
#### 运行攻击
1. 从 **设备** 列表中选择目标设备
2. 从 **攻击控制台** 选择攻击类型
3. 配置参数(、持续时间)
4. 执行并实时监控
#### 支持的攻击类型
- **端口扫描**:全面的端口枚举
- **Ping 扫射**:ICMP 网络发现
- **SYN 泛洪**:TCP SYN 数据包泛洪
- **UDP 泛洪**:UDP 数据包泛洪
- **ARP 欺骗**:ARP 缓存中毒
- **操作系统指纹识别**:操作系统检测
### 报告
#### 生成报告
1. 完成网络扫描
2. 导航至 **日志和报告** 部分
3. 点击 **生成 PDF 报告**
4. 下载专业的 PDF 报告
#### 报告内容
- 执行摘要
- 设备清单
- 漏洞发现
- 合规状态
- 修复建议
## 🔌 API 文档
### 身份验证 Endpoint
#### POST `/login`
对用户进行身份验证并创建会话
```
{
"username": "admin",
"password": "Shankar"
}
```
#### GET `/logout`
销毁用户会话
### 扫描 Endpoint
#### POST `/api/scan/network`
发起网络扫描
```
{
"target": "192.168.1.0/24",
"profile": "real"
}
```
#### GET `/api/devices`
检索发现的设备
#### GET `/api/device/{ip}`
获取详细的设备信息
### WebSocket Endpoint
#### WS `/ws`
实时通信通道
- 接收:设备发现、扫描进度、攻击结果
- 发送:UI 更新、警报、统计数据
### 实用程序 Endpoint
#### GET `/api/local-subnet`
自动检测本地网络
#### GET `/api/traffic`
获取网络流量统计信息
#### POST `/api/auto-scan`
配置自动扫描
## 🔒 安全特性
### 身份验证与授权
- 带有安全 cookie 的**基于会话的安全机制**
- 通过会话验证进行 **CSRF 保护**
- **注销清理**可防止会话劫持
### 网络安全
- 用于底层网络访问的**原始套接字操作**
- 带有可配置限制的**安全攻击模拟**
- **网络隔离**感知
### 数据保护
- 用于扫描数据存储的 **Firebase Firestore 数据持久化**
- 使用环境变量的**安全凭据处理**
- 对所有用户输入进行**输入验证**
- 所有管理操作的**审计日志**
- 基于云的**备份**和恢复功能
### 运营安全
- 用于审计追踪的**日志系统**
- **错误处理**可防止信息泄露
- 扫描操作的**资源限制**
## 🔧 故障排除
### 常见问题
#### Firebase 连接问题
**症状**:“未找到 Firebase 凭据”或“数据库未初始化”
**解决方案**:
```
# 为当前会话设置凭据
$env:GOOGLE_APPLICATION_CREDENTIALS = "C:\path\to\credentials.json"
# 或使用辅助脚本
.\set_credentials.ps1
# 测试连接
python setup_firebase.py
```
#### 找不到 Firestore 数据库
**症状**:“(默认) 数据库不存在”
**解决方案**:
1. 前往 [Firestore 控制台](https://console.firebase.google.com/project/airss-37fad/firestore)
2. 点击 **“创建数据库”**
3. 选择 **“以测试模式启动”**
4. 选择位置:`us-central1`
5. 等待 1-2 分钟,然后重试
#### 应用程序无法启动
**症状**:导入错误、缺少依赖项
**解决方案**:
```
# 重新安装依赖项
pip install -r requirements.txt
# 检查 Python 版本
python --version
# 验证虚拟环境
which python
```
#### 网络扫描失败
**症状**:未找到设备、超时错误
**解决方案**:
- 检查网络连接
- 确认目标网络可访问
- 尝试使用模拟模式进行测试
- 检查防火墙设置
#### WebSocket 连接问题
**症状**:实时更新不起作用
**解决方案**:
- 检查浏览器 WebSocket 支持
- 确认服务器在正确的端口上运行
- 检查网络防火墙/代理设置
#### PDF 生成错误
**症状**:报告生成失败
**解决方案**:
- 验证 fpdf 安装
- 检查文件权限
- 确保有足够的磁盘空间
### 性能优化
#### 扫描性能
- 使用适当的超时值
- 限制并发操作
- 考虑网络带宽
#### 内存使用
- 定期清理旧的扫描结果
- 监控后台任务使用情况
- 如有需要,重启应用程序
### 日志和调试
#### 启用调试日志
```
import logging
logging.basicConfig(level=logging.DEBUG)
```
#### 检查应用程序日志
- 服务器启动消息
- 扫描操作日志
- 错误追踪和堆栈跟踪
## 📈 未来增强
### 计划中的功能
- 具有基于角色的访问控制 (RBAC) 的**用户管理**
- 带有自定义图表和数据导出的**高级报告**
- 用于第三方安全工具的**集成 API**
- **移动响应式设计**改进
- 用于自定义网络探测的**插件系统**
- 用于团队协作的**多租户支持**
### 技术改进
- 用于提升可扩展性的**微服务架构**
- 使用 Docker 的**容器化部署**
- 用于自动化测试的 **CI/CD pipeline**
- **性能监控**和指标
- **安全强化**和渗透测试
## 📚 参考与资源
### 学术参考
- Tilak Maharashtra Vidyapeeth University BCA 课程体系
- 网络安全原则与实践
- Web 应用程序安全基础
### 技术参考
- FastAPI 文档:https://fastapi.tiangolo.com/
- Scapy 文档:https://scapy.net/
- WebSocket RFC 6455
- CVE 数据库:https://cve.mitre.org/
### 安全标准
- CISA 已知被利用漏洞
- 通用漏洞评分系统 (CVSS)
- 安全合规框架
## 👨💻 作者与致谢
**项目作者**:Shankar Shivhar Waghmare
**PRN**:46423000820
**机构**:Tilak Maharashtra Vidyapeeth University, Pune
**系别**:计算机科学 (BCA)
**学年**:2025-2026
**特别感谢**:
- 项目指导老师和指导教师
- 提供优秀库的开源社区
- 提供漏洞数据的安全研究社区
## 📄 许可与免责声明
本项目作为学术课程的一部分,专为教育目的而开发。该系统模拟安全评估工具,应负责任且合乎道德地使用。
**重要提示**:此工具仅供教育和模拟使用。未经明确许可,请勿用于未经授权的网络扫描或安全测试。
*最后更新:2026年5月7日*
*版本:2.2 - Firebase 数据库集成*
标签:AES-256, Python, 云存储安全, 实时处理, 插件系统, 无后门, 漏洞评估, 网络扫描, 网络调试, 自动化, 计算机取证, 逆向工具