mcpField
P
performing-threat-landscape-assessment-for-sector

performing-threat-landscape-assessment-for-sector

github.com/mukul975セキュリティ35.2k52 回インストール8 週間前に更新
リポジトリ

performing-threat-landscape-assessment-for-sector について

特定業界に影響するサイバー脅威を評価するセキュリティスキルです。標的とする攻撃者、攻撃経路、技術、脆弱性、インシデント、新たなリスクを分析し、セキュリティ計画や報告に役立てます。

主な機能

  1. 01業界を標的とする攻撃者の分析
  2. 02攻撃経路と技法の分析
  3. 03悪用される脆弱性の整理
  4. 04インシデント傾向と新たな脅威の確認
  5. 05業界別脅威レポートの作成

活用シーン

  1. 01業界リスクに基づくセキュリティ投資の優先順位付け
  2. 02取締役会向け脅威レポートの作成
  3. 03業界固有の攻撃パターンの確認
  4. 04新たなサプライチェーンリスクの特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill performing-threat-landscape-assessment-for-sector

インストール後、Claude Code で/performing-threat-landscape-assessment-for-sectorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

セクター向け脅威環境評価の実施

概要

セクター固有の脅威環境評価では、特定の業界分野(ヘルスケア、金融サービス、エネルギー、政府、製造業など)が直面しているサイバー脅威環境を分析します。具体的には、どの脅威アクターがそのセクターを標的にしているか、好む攻撃ベクトルとTTP、悪用される一般的な脆弱性、過去のインシデントデータ、新たな脅威を調べます。これにより、リスク管理、セキュリティ投資の優先順位付け、取締役会レベルの報告に役立つ、実行可能なインテリジェンスが得られます。

使用するタイミング

  • 「セクター向け脅威環境評価の実施」に関わるセキュリティ評価を行う場合
  • 関連するセキュリティイベントに対してインシデント対応手順に従う場合
  • 定期的なセキュリティテストまたは監査活動を実施する場合
  • 実践的なテストを通じてセキュリティ管理策を検証する場合

前提条件

  • attackcti、requests、pandas、matplotlib ライブラリをインストールした Python 3.9 以降
  • 脅威インテリジェンスフィード(AlienVault OTX、MISP、ベンダーレポート)へのアクセス
  • TTP のマッピングに使用する MITRE ATT&CK ナレッジベース
  • 業界固有の ISAC への加盟(FS-ISAC、H-ISAC、E-ISAC など)
  • セクター固有の規制要件に関する理解

主要な概念

セクターに対する標的分析

セクターによって直面する脅威プロファイルは異なります。金融サービスは高度な国家支援型アクター(Lazarus Group)や、金融詐欺を狙うサイバー犯罪グループに直面しています。ヘルスケアは、緊急性やレガシーシステムを悪用するランサムウェアグループに直面しています。エネルギーおよび重要インフラは、破壊的能力を持つ国家支援型グループ(TEMP.Veles、Sandworm)に直面しています。政府は、スパイ活動を主目的とする APT(APT29、APT28、Turla)に直面しています。

脅威環境の構成要素

包括的な評価には、次の要素が含まれます。脅威アクターのプロファイリング(そのセクターを標的とするグループ)、攻撃ベクトルの分析(観測された初期アクセス手法)、TTP のマッピング(そのセクターに対して一般的に使用される手法)、脆弱性の状況(一般的に悪用される CVE)、インシデントの傾向分析(侵害の頻度、影響、復旧時間)、および新たな脅威(新しいグループ、進化する手法、サプライチェーンのリスク)です。

インテリジェンスソース

セクター固有のインテリジェンスは、ISAC(情報共有分析センター)、政府の勧告(CISA、FBI、NSA)、ベンダーの脅威レポート(CrowdStrike Annual Threat Report、Mandiant M-Trends、Verizon DBIR)、およびセクター固有の攻撃に関する学術研究から得られます。

ワークフロー

ステップ 1: セクターを標的とする脅威アクターの特定
from attackcti import attack_client
import json

class SectorThreatAssessment:
    SECTOR_GROUPS = {
        "financial": ["FIN7", "FIN8", "FIN11", "Carbanak", "Lazarus Group",
                       "Cobalt Group", "TA505", "GOLD SOUTHFIELD"],
        "healthcare": ["FIN12", "Ryuk", "Conti", "Wizard Spider",
                        "GOLD ULRICK", "Vice Society"],
        "energy": ["TEMP.Veles", "Sandworm Team", "Dragonfly",
                    "XENOTIME", "ERYTHRITE", "Berserk Bear"],
        "government": ["APT29", "APT28", "Turla", "Gamaredon Group",
                        "Mustang Panda", "APT41", "Lazarus Group"],
        "manufacturing": ["APT41", "TEMP.Veles", "Dragonfly",
                           "HEXANE", "MAGNALLIUM"],
        "technology": ["APT41", "Lazarus Group", "APT10",
                        "HAFNIUM", "Winnti Group"],
    }

    def __init__(self, sector):
        self.sector = sector.lower()
        self.lift = attack_client()
        self.groups = self.lift.get_groups()
        self.assessment = {
            "sector": sector,
            "threat_actors": [],
            "common_techniques": {},
            "attack_vectors": {},
            "risk_summary": {},
        }

    def analyze_sector_actors(self):
        """Analyze threat actors known to target this sector."""
        target_groups = self.SECTOR_GROUPS.get(self.sector, [])
        actor_profiles = []

        for group_name in target_groups:
            group = next(
                (g for g in self.groups
                 if g.get("name", "").lower() == group_name.lower()
                 or group_name.lower() in [a.lower() for a in g.get("aliases", [])]),
                None
            )
            if group:
                group_id = ""
                for ref in group.get("external_references", []):
                    if ref.get("source_name") == "mitre-attack":
                        group_id = ref.get("external_id", "")
                        break

                techniques = []
                if group_id:
                    techs = self.lift.get_techniques_used_by_group(group_id)
                    for t in techs:
                        for ref in t.get("external_references", []):
                            if ref.get("source_name") == "mitre-attack":
                                techniques.append({
                                    "id": ref.get("external_id", ""),
                                    "name": t.get("name", ""),
                                })
                                break

                profile = {
                    "name": group.get("name", ""),
                    "aliases": group.get("aliases", []),
                    "description": group.get("description", "")[:300],
                    "attack_id": group_id,
                    "technique_count": len(techniques),
                    "techniques": techniques[:20],
                }
                actor_profiles.append(profile)
                print(f"  [+] {group.get('name')}: {len(techniques)} techniques")

        self.assessment["threat_actors"] = actor_profiles
        print(f"[+] Profiled {len(actor_profiles)} threat actors for {self.sector}")
        return actor_profiles

    def identify_common_techniques(self):
        """Find the most commonly used techniques across sector actors."""
        from collections import Counter
        technique_counter = Counter()

        for actor in self.assessment["threat_actors"]:
            for tech in actor.get("techniques", []):
                technique_counter[f"{tech['id']}:{tech['name']}"] += 1

        common = technique_counter.most_common(20)
        self.assessment["common_techniques"] = [
            {
                "technique": tech.split(":")[0],
                "name": tech.split(":")[1] if ":" in tech else "",
                "actor_count": count,
                "actors_using": [
                    a["name"] for a in self.assessment["threat_actors"]
                    if any(t["id"] == tech.split(":")[0] for t in a.get("techniques", []))
                ],
            }
            for tech, count in common
        ]

        print(f"\n=== Top Techniques for {self.sector.upper()} ===")
        for entry in self.assessment["common_techniques"][:10]:
            print(f"  {entry['technique']} {entry['name']}: "
                  f"used by {entry['actor_count']} groups")

        return self.assessment["common_techniques"]

assessment = SectorThreatAssessment("financial")
assessment.analyze_sector_actors()
assessment.identify_common_techniques()
ステップ 2: 攻撃ベクトルと初期アクセスの分析
def analyze_attack_vectors(assessment):
    """Analyze initial access vectors common for the sector."""
    initial_access_techniques = [
        t for t in assessment.assessment["common_techniques"]
        if t["technique"].startswith("T1566") or t["technique"].startswith("T1190")
        or t["technique"].startswith("T1133") or t["technique"].startswith("T1078")
        or t["technique"].startswith("T1195")
    ]

    # Supplement with known sector-specific vectors
    sector_vectors = {
        "financial": {
            "primary": ["Spearphishing (T1566)", "Exploit Public-Facing App (T1190)",
                        "Valid Accounts (T1078)", "Supply Chain Compromise (T1195)"],
            "emerging": ["MFA Fatigue/Push Bombing", "QR Code Phishing (Quishing)",
                         "Business Email Compromise", "API Key Theft"],
        },
        "healthcare": {
            "primary": ["Spearphishing (T1566)", "Exploit Public-Facing App (T1190)",
                        "External Remote Services (T1133)", "Valid Accounts (T1078)"],
            "emerging": ["IoMT Device Exploitation", "Telehealth Platform Attacks",
                         "Medical Device Firmware Attacks", "Supply Chain via EHR Vendors"],
        },
        "energy": {
            "primary": ["Spearphishing (T1566)", "Exploit Public-Facing App (T1190)",
                        "External Remote Services (T1133)", "Supply Chain Compromise (T1195)"],
            "emerging": ["OT/ICS Protocol Exploitation", "Remote Access to SCADA",
                         "Engineering Workstation Compromise", "Vendor VPN Exploitation"],
        },
    }

    vectors = sector_vectors.get(assessment.sector, {})
    assessment.assessment["attack_vectors"] = vectors
    return vectors
ステップ 3: セクター脅威レポートの生成
def generate_sector_report(assessment):
    data = assessment.assessment
    report = f"""# {data['sector'].title()} Sector Threat Landscape Assessment
Generated: {datetime.datetime.now().isoformat()}

## Executive Summary
This assessment analyzes the cyber threat landscape for the {data['sector']} sector,
identifying {len(data['threat_actors'])} active threat groups, their preferred techniques,
and recommended defensive priorities.

## Threat Actor Summary
| Actor | ATT&CK ID | Techniques | Key Focus |
|-------|-----------|------------|-----------|
"""
    for actor in data["threat_actors"]:
        report += (f"| {actor['name']} | {actor['attack_id']} "
                   f"| {actor['technique_count']} | {actor['description'][:60]}... |\n")

    report += f"""
## Most Common Techniques
| Rank | Technique | Name | Groups Using |
|------|-----------|------|-------------|
"""
    for i, tech in enumerate(data.get("common_techniques", [])[:15], 1):
        actors = ", ".join(tech["actors_using"][:3])
        report += f"| {i} | {tech['technique']} | {tech['name']} | {actors} |\n"

    vectors = data.get("attack_vectors", {})
    report += f"""
## Attack Vectors
### Primary Vectors
"""
    for v in vectors.get("primary", []):
        report += f"- {v}\n"
    report += "\n### Emerging Vectors\n"
    for v in vectors.get("emerging", []):
        report += f"- {v}\n"

    report += """
## Recommendations
1. Prioritize detections for the top 10 techniques used by sector-targeting groups
2. Conduct threat-informed red team exercises mimicking identified actors
3. Join sector ISAC for real-time threat sharing
4. Implement controls for identified initial access vectors
5. Review supply chain security posture for sector-specific risks
"""
    with open(f"threat_landscape_{data['sector']}.md", "w") as f:
        f.write(report)
    print(f"[+] Sector report saved: threat_landscape_{data['sector']}.md")

generate_sector_report(assessment)

検証基準

  • セクター固有の脅威アクターを特定し、プロファイリングしている
  • アクター間で共通する手法を分析し、ランク付けしている
  • 対象セクターに対する攻撃ベクトルをマッピングしている
  • 最近のインテリジェンスに基づき、新たな脅威を特定している
  • 包括的なセクター脅威レポートを生成している
  • 推奨事項がセキュリティ投資の判断に実際に活用できる内容になっている

参考資料

コメント