L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

performing-indicator-lifecycle-management

performing-indicator-lifecycle-management

指标生命周期管理跟踪 IOC 从初始发现到验证、富化、部署、监控和最终停用的全过程。本技能涵盖实施 IOC 质量评估、老化策略、置信度衰减评分、误报跟踪、命中率监控和自动到期的系统化流程,以维护高质量、可操作的指标数据库,最大限度减少分析师疲劳并提高检测效能。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: performing-indicator-lifecycle-management description: 指标生命周期管理跟踪 IOC 从初始发现到验证、富化、部署、监控和最终停用的全过程。本技能涵盖实施 IOC 质量评估、老化策略、置信度衰减评分、误报跟踪、命中率监控和自动到期的系统化流程,以维护高质量、可操作的指标数据库,最大限度减少分析师疲劳并提高检测效能。 domain: cybersecurity subdomain: threat-intelligence tags: [threat-intelligence, cti, ioc, mitre-attack, stix, indicator-lifecycle, ioc-management] version: "1.0" author: mahipal license: Apache-2.0

执行指标生命周期管理

概述

指标生命周期管理跟踪 IOC 从初始发现到验证、富化、部署、监控和最终停用的全过程。本技能涵盖实施 IOC 质量评估、老化策略、置信度衰减评分、误报跟踪、命中率监控和自动到期的系统化流程,以维护高质量、可操作的指标数据库,最大限度减少分析师疲劳并提高检测效能。

前置条件

  • Python 3.9+,安装 pymisp、requests、stix2 库
  • 用于指标存储的 MISP 或 OpenCTI 实例
  • 具备 IOC 监控列表能力的 SIEM(Splunk、Elastic)
  • 了解 IOC 类型、置信度评分和 TLP 分类

核心概念

指标生命周期阶段

  1. 发现:从威胁情报、恶意软件分析或事件响应中首次识别 IOC
  2. 验证:通过富化来源(VirusTotal、Shodan)核实 IOC
  3. 富化:添加额外上下文(WHOIS、被动 DNS、威胁行为者归因)
  4. 部署:将 IOC 推送到检测系统(SIEM、IDS、防火墙)
  5. 监控:跟踪命中率、误报率和检测效能
  6. 审查:定期评估 IOC 的相关性和准确性
  7. 停用:根据老化策略使 IOC 过期或移除

置信度衰减

指标置信度随时间降低,因为对手会轮换基础设施。基于时间的衰减函数自动降低置信度评分,确保旧指标不会产生过多告警。典型半衰期:IP 地址(30 天)、域名(90 天)、文件哈希(365 天)。

质量指标

  • 命中率:生成真正告警的已部署 IOC 百分比
  • 误报率:IOC 告警中良性的百分比
  • 覆盖率:已知威胁技术中具有 IOC 覆盖的百分比
  • 新鲜度:数据库中活跃指标的平均年龄

操作步骤

步骤 1:实现 IOC 生命周期状态机

from datetime import datetime, timedelta
from enum import Enum

class IOCState(Enum):
    DISCOVERED = "discovered"      # 已发现
    VALIDATED = "validated"        # 已验证
    ENRICHED = "enriched"          # 已富化
    DEPLOYED = "deployed"          # 已部署
    MONITORING = "monitoring"      # 监控中
    UNDER_REVIEW = "under_review"  # 审查中
    RETIRED = "retired"            # 已停用

class IOCLifecycle:
    def __init__(self, ioc_type, value, source, initial_confidence=50):
        self.ioc_type = ioc_type
        self.value = value
        self.source = source
        self.confidence = initial_confidence
        self.state = IOCState.DISCOVERED
        self.created = datetime.utcnow()
        self.last_updated = datetime.utcnow()
        self.last_seen = None
        self.hit_count = 0
        self.false_positive_count = 0
        self.history = [{"state": "discovered", "timestamp": self.created.isoformat()}]

    def transition(self, new_state: IOCState, reason=""):
        self.state = new_state
        self.last_updated = datetime.utcnow()
        self.history.append({
            "state": new_state.value,
            "timestamp": self.last_updated.isoformat(),
            "reason": reason,
        })

    def apply_decay(self):
        """根据 IOC 类型半衰期应用置信度衰减。"""
        half_lives = {"ip": 30, "domain": 90, "hash": 365, "url": 60}
        half_life = half_lives.get(self.ioc_type, 90)
        age_days = (datetime.utcnow() - self.created).days
        decay_factor = 0.5 ** (age_days / half_life)
        self.confidence = max(0, int(self.confidence * decay_factor))

    def record_hit(self, is_true_positive=True):
        self.hit_count += 1
        self.last_seen = datetime.utcnow()
        if not is_true_positive:
            self.false_positive_count += 1
            if self.false_positive_count > 3:
                self.transition(IOCState.UNDER_REVIEW, "误报过多")

    def should_retire(self):
        max_ages = {"ip": 90, "domain": 180, "hash": 730, "url": 120}
        max_age = max_ages.get(self.ioc_type, 180)
        age_days = (datetime.utcnow() - self.created).days
        return age_days > max_age and self.hit_count == 0

验收标准

  • IOC 生命周期状态机在各阶段间正确转换
  • 置信度衰减根据 IOC 类型半衰期降低评分
  • 命中率和误报跟踪功能正常
  • 老化策略自动标记指标进行审查/停用
  • 质量指标仪表盘显示 IOC 数据库健康状态

参考资料

Skills enregistrées