339 lines
10 KiB
Markdown
339 lines
10 KiB
Markdown
|
|
# IT智能服务台 — 威胁检测方案报告
|
||
|
|
|
||
|
|
> **编制日期**: 2026-07-14
|
||
|
|
> **版本**: v2.0 (修订版)
|
||
|
|
> **角色**: 威胁检测工程师
|
||
|
|
> **目标**: 建立威胁监控体系,及时发现和应对安全攻击
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. 认证机制与威胁模型更新
|
||
|
|
|
||
|
|
### 1.1 当前认证方式
|
||
|
|
|
||
|
|
| 登录方式 | 状态 | 暴力破解可行性 |
|
||
|
|
|----------|------|----------------|
|
||
|
|
| 企微OAuth2 | ✅ 使用中 | ❌ 企微保障 |
|
||
|
|
| 企微扫码 | ✅ 使用中 | ❌ 企微保障 |
|
||
|
|
| 账号密码登录 | ❌ 已废弃 | 不适用 |
|
||
|
|
|
||
|
|
**结论**: 由于没有密码入口,暴力破解检测不适用于本系统。攻击者需先攻克企微才能访问本系统。
|
||
|
|
|
||
|
|
### 1.2 真实威胁向量
|
||
|
|
|
||
|
|
| 威胁 | ATT&CK | 描述 | 优先级 |
|
||
|
|
|------|---------|------|--------|
|
||
|
|
| **T1078** | 有效账户滥用 | 员工Token/账号被窃取后在非授权环境使用 | P0 |
|
||
|
|
| **T1552** | 非安全凭据访问 | Token泄露、被复用 | P0 |
|
||
|
|
| **T1068** | 越权访问 | 低权限用户访问高权限资源 | P1 |
|
||
|
|
| **T1041** | 数据外传 | 批量导出敏感数据 | P1 |
|
||
|
|
| **内部威胁** | 权限滥用 | 管理员非工作时间敏感操作 | P1 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. MITRE ATT&CK 覆盖评估
|
||
|
|
|
||
|
|
### 2.1 当前检测能力
|
||
|
|
|
||
|
|
| 覆盖等级 | 定义 | 占比 |
|
||
|
|
|----------|------|------|
|
||
|
|
| **Level 0** | 无覆盖 | 80% |
|
||
|
|
| **Level 1** | 日志记录 (已实现) | 15% |
|
||
|
|
| **Level 2** | 告警检测 | 5% |
|
||
|
|
| **Level 3** | 威胁狩猎 | 0% |
|
||
|
|
|
||
|
|
### 2.2 重点检测方向
|
||
|
|
|
||
|
|
基于真实威胁向量,优先覆盖:
|
||
|
|
|
||
|
|
| 技术ID | 技术名称 | 检测策略 |
|
||
|
|
|--------|----------|----------|
|
||
|
|
| T1078 | 有效账户 | Token异常使用检测 |
|
||
|
|
| T1552 | 非安全凭据 | Token多IP使用检测 |
|
||
|
|
| T1068 | 越权访问 | RBAC拒绝日志分析 |
|
||
|
|
| T1041 | 数据外传 | 批量导出监控 |
|
||
|
|
| T1056 | 权限滥用 | 管理员异常操作 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. 检测方案设计
|
||
|
|
|
||
|
|
### 3.1 架构
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────────┐
|
||
|
|
│ 数据采集层 │
|
||
|
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||
|
|
│ │审计日志 │ │登录日志 │ │RBAC日志 │ │API日志 │ │
|
||
|
|
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
|
||
|
|
└───────┼───────────┼───────────┼───────────┼────────────────┘
|
||
|
|
│ │ │ │
|
||
|
|
▼ ▼ ▼ ▼
|
||
|
|
┌─────────────────────────────────────────────────────────────┐
|
||
|
|
│ 规则检测层 │
|
||
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
|
|
│ │Token异常检测 │ │越权访问检测 │ │数据导出监控 │ │
|
||
|
|
│ │(T1078/T1552)│ │(T1068) │ │(T1041) │ │
|
||
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||
|
|
└─────────────────────────────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────────┐
|
||
|
|
│ 响应处置层 │
|
||
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
|
|
│ │告警通知 │ │会话封禁 │ │工单创建 │ │
|
||
|
|
│ │(企微机器人) │ │(Redis) │ │(ITSM) │ │
|
||
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||
|
|
└─────────────────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3.2 核心检测规则
|
||
|
|
|
||
|
|
#### 规则1: Token异常使用 (T1078/T1552)
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
id: itdesk-T1078-001
|
||
|
|
title: 凭证异常 - Token多IP使用
|
||
|
|
level: high
|
||
|
|
description: |
|
||
|
|
检测同一Token在短时间内被多个不同IP使用,可能是Token泄露或中间人攻击。
|
||
|
|
mitre: T1078, T1552
|
||
|
|
condition: |
|
||
|
|
同一 token_hash
|
||
|
|
不同 ip_address >= 3
|
||
|
|
时间窗口: 1小时
|
||
|
|
action: |
|
||
|
|
1. 标记为可疑
|
||
|
|
2. 发送企微告警
|
||
|
|
3. 可选: 自动 invalidate token
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 规则2: 越权访问检测 (T1068)
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
id: itdesk-T1068-001
|
||
|
|
title: 权限提升 - 越权访问
|
||
|
|
level: critical
|
||
|
|
description: |
|
||
|
|
检测低权限用户尝试访问高权限资源,可能是权限提升攻击。
|
||
|
|
mitre: T1068
|
||
|
|
condition: |
|
||
|
|
RBAC拒绝事件
|
||
|
|
同一用户 >= 3次/10分钟
|
||
|
|
action: |
|
||
|
|
1. 标记为可疑
|
||
|
|
2. 发送企微告警
|
||
|
|
3. 暂停用户账户
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 规则3: 批量数据导出 (T1041)
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
id: itdesk-T1041-001
|
||
|
|
title: 数据泄露 - 批量导出
|
||
|
|
level: high
|
||
|
|
description: |
|
||
|
|
检测大量数据导出操作,可能是数据外传前兆。
|
||
|
|
mitre: T1041
|
||
|
|
condition: |
|
||
|
|
action = 'data_export'
|
||
|
|
导出记录数 > 1000 或 导出大小 > 100MB
|
||
|
|
action: |
|
||
|
|
1. 标记为可疑
|
||
|
|
2. 发送企微告警
|
||
|
|
3. 需要MFA二次确认
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 规则4: 管理员异常操作 (内部威胁)
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
id: itdesk-insider-001
|
||
|
|
title: 内部威胁 - 管理员异常操作
|
||
|
|
level: high
|
||
|
|
description: |
|
||
|
|
检测管理员在非工作时间执行敏感操作。
|
||
|
|
mitre: T1056
|
||
|
|
condition: |
|
||
|
|
管理员角色
|
||
|
|
敏感操作 (role_change/config_change/account_disable)
|
||
|
|
时间不在 08:00-22:00
|
||
|
|
action: |
|
||
|
|
1. 发送企微告警
|
||
|
|
2. 记录详细审计日志
|
||
|
|
3. 需要OTP二次确认
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 规则5: 外部API滥用 (T1071)
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
id: itdesk-T1071-001
|
||
|
|
title: 外部服务异常 - Dify API高错误率
|
||
|
|
level: medium
|
||
|
|
description: |
|
||
|
|
检测Dify AI服务的异常调用模式。
|
||
|
|
mitre: T1071
|
||
|
|
condition: |
|
||
|
|
Dify API
|
||
|
|
错误率 > 30% 或 响应时间 > 30秒
|
||
|
|
action: |
|
||
|
|
1. 切换备用通道
|
||
|
|
2. 发送告警
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. 数据源清单
|
||
|
|
|
||
|
|
| 数据源 | 表/日志 | 检测用途 |
|
||
|
|
|--------|---------|----------|
|
||
|
|
| 审计日志 | audit_logs | 管理员操作、权限变更 |
|
||
|
|
| 登录日志 | login_logs | 登录来源分析 |
|
||
|
|
| RBAC日志 | access_denied事件 | 越权访问 |
|
||
|
|
| 应用日志 | JSON logs | API调用统计 |
|
||
|
|
| Redis | token相关 | Token实时监控 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. 实施路线图
|
||
|
|
|
||
|
|
### 阶段1: 核心检测 (2周)
|
||
|
|
|
||
|
|
| 任务 | 产出 |
|
||
|
|
|------|------|
|
||
|
|
| Token多IP检测 | 告警 + 自动封禁 |
|
||
|
|
| 越权访问检测 | 实时告警 |
|
||
|
|
| 批量导出监控 | 告警 + 审批流程 |
|
||
|
|
|
||
|
|
### 阶段2: 增强检测 (4周)
|
||
|
|
|
||
|
|
| 任务 | 产出 |
|
||
|
|
|------|------|
|
||
|
|
| 管理员异常行为 | 非工作时间告警 |
|
||
|
|
| 外部API监控 | Dify/企微API健康度 |
|
||
|
|
| 告警渠道 | 企微机器人webhook |
|
||
|
|
|
||
|
|
### 阶段3: 高级能力 (持续)
|
||
|
|
|
||
|
|
| 任务 | 产出 |
|
||
|
|
|------|------|
|
||
|
|
| 用户行为基线 | 异常行为检测 |
|
||
|
|
| 威胁情报 | IOC匹配 |
|
||
|
|
| SOAR剧本 | 自动响应 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. 快速部署方案
|
||
|
|
|
||
|
|
### 6.1 立即可执行
|
||
|
|
|
||
|
|
基于现有 `audit_logs` 表,增加定时分析任务:
|
||
|
|
|
||
|
|
```python
|
||
|
|
# 每日管理员操作分析
|
||
|
|
async def analyze_admin_operations():
|
||
|
|
"""检测非工作时间敏感操作"""
|
||
|
|
query = """
|
||
|
|
SELECT employee_id, action, ip_address, created_at
|
||
|
|
FROM audit_logs
|
||
|
|
WHERE action IN ('role_change', 'config_change', 'account_disable')
|
||
|
|
AND EXTRACT(HOUR FROM created_at) NOT BETWEEN 8 AND 22
|
||
|
|
"""
|
||
|
|
# 发送报告给安全管理员
|
||
|
|
```
|
||
|
|
|
||
|
|
### 6.2 Token监控
|
||
|
|
|
||
|
|
在 `token_service.py` 中增加埋点:
|
||
|
|
|
||
|
|
```python
|
||
|
|
async def on_token_used(token_hash: str, ip: str):
|
||
|
|
"""记录Token使用IP,用于异常检测"""
|
||
|
|
redis = await get_redis()
|
||
|
|
key = f"token_ip:{token_hash}"
|
||
|
|
|
||
|
|
# 记录使用的IP集合
|
||
|
|
await redis.sadd(key, ip)
|
||
|
|
await redis.expire(key, 3600) # 1小时窗口
|
||
|
|
|
||
|
|
# 检查是否多IP使用
|
||
|
|
ip_count = await redis.scard(key)
|
||
|
|
if ip_count >= 3:
|
||
|
|
await send_alert(f"Token异常: {token_hash} 使用了 {ip_count} 个IP")
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. 实施进度 (2026-07-14)
|
||
|
|
|
||
|
|
### ✅ 已完成
|
||
|
|
|
||
|
|
| 任务 | 完成时间 | 状态 |
|
||
|
|
|------|----------|------|
|
||
|
|
| Token IP记录功能 | 2026-07-14 | ✅ 已实现 |
|
||
|
|
| Token异常检测定时任务 | 2026-07-14 | ✅ 已实现 |
|
||
|
|
| get_current_user IP记录集成 | 2026-07-14 | ✅ 已实现 |
|
||
|
|
| 单元测试 | 2026-07-14 | ✅ 7/7 通过 |
|
||
|
|
|
||
|
|
### 📝 产出物
|
||
|
|
|
||
|
|
| 文件 | 路径 |
|
||
|
|
|------|------|
|
||
|
|
| 检测任务 | `backend/app/tasks/token_anomaly_detection.py` |
|
||
|
|
| Token服务扩展 | `backend/app/services/token_service.py` (新增方法) |
|
||
|
|
| 认证集成 | `backend/app/dependencies/__init__.py` (IP记录) |
|
||
|
|
| 单元测试 | `backend/tests/test_token_anomaly.py` |
|
||
|
|
|
||
|
|
### 📋 待完成
|
||
|
|
|
||
|
|
| 任务 | 优先级 | 备注 |
|
||
|
|
|------|--------|------|
|
||
|
|
| 集成测试 | P2 | 需要测试环境 |
|
||
|
|
| 生产部署 | P1 | 需配置webhook |
|
||
|
|
| 告警阈值调优 | P2 | 根据实际告警调整 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. 总结
|
||
|
|
|
||
|
|
### 7.1 核心结论
|
||
|
|
|
||
|
|
| 维度 | 评分 |
|
||
|
|
|------|------|
|
||
|
|
| 身份认证 | ⭐⭐⭐⭐ 企微OAuth + OTP |
|
||
|
|
| 访问控制 | ⭐⭐⭐⭐ RBAC |
|
||
|
|
| **威胁检测** | ⭐⭐ **建设中** |
|
||
|
|
|
||
|
|
### 7.2 优先行动
|
||
|
|
|
||
|
|
1. **已完成**: Token多IP使用检测 ✅
|
||
|
|
2. **1周内**: 批量导出监控
|
||
|
|
3. **2周内**: 管理员异常操作告警
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 附录
|
||
|
|
|
||
|
|
### A. 现有安全组件
|
||
|
|
|
||
|
|
| 组件 | 位置 |
|
||
|
|
|------|------|
|
||
|
|
| 审计日志 | app/models/audit_log.py |
|
||
|
|
| 登录日志 | app/models/login_log.py |
|
||
|
|
| MFA服务 | app/services/mfa_service.py |
|
||
|
|
| IP白名单 | app/middleware/admin_ip_whitelist.py |
|
||
|
|
| 速率限制 | app/main.py (slowapi) |
|
||
|
|
|
||
|
|
### B. 告警级别定义
|
||
|
|
|
||
|
|
| 级别 | 触发条件 | 响应时间 |
|
||
|
|
|------|----------|----------|
|
||
|
|
| P0 | 越权访问 / 批量导出 | < 5分钟 |
|
||
|
|
| P1 | Token异常 / 管理员异常 | < 15分钟 |
|
||
|
|
| P2 | API异常 / 非敏感操作 | < 1小时 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
> **编制人**: 威胁检测工程师
|
||
|
|
> **审核人**: 待定
|
||
|
|
> **下次评估**: 2026-10-14
|