threat-intelligence について
セキュリティアナリスト向けのサイバー脅威インテリジェンス用スキルです。IOCの管理、脅威アクターやキャンペーンの分析、MITRE ATT&CKへのマッピング、レポート作成に対応します。
主な機能
- 01IOCの抽出と検証
- 02インジケーターの重複排除と整理
- 03アクターとキャンペーンのプロファイリング
- 04MITRE ATT&CKへのマッピング
- 05インテリジェンスレポートの生成
- 06脅威フィードの解析と正規化
活用シーン
- 01インシデント報告からIOCを抽出
- 02脅威アクターとキャンペーンを追跡
- 03観測した挙動をATT&CKに対応付け
- 04脅威速報と評価を作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sherifeldeeb/ agentskills --skill threat-intelligenceインストール後、Claude Code で/threat-intelligenceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/.gitkeepreferences/.gitkeepREFERENCE.mdscripts/.gitkeepcti_utils.pyrequirements.txt詳細
脅威インテリジェンススキル
IOC の抽出、脅威アクターのプロファイリング、MITRE ATT&CK へのマッピングを通じて、サイバー脅威インテリジェンスを収集、分析、共有します。
機能
- IOC の抽出:テキスト、ログ、レポートからインジケーターを抽出します
- IOC の管理:インジケーターの重複を排除し、検証、拡充します
- 脅威のプロファイリング:脅威アクターやキャンペーンを記録します
- ATT&CK へのマッピング:脅威を MITRE ATT&CK フレームワークにマッピングします
- インテリジェンスレポート:脅威速報や評価レポートを生成します
- フィードの処理:脅威フィードを解析し、正規化します
クイックスタート
from cti_utils import IOCExtractor, ThreatActor, IntelReport
# Extract IOCs from text
extractor = IOCExtractor()
iocs = extractor.extract_from_text('''
Malware connects to 192.168.1.100 and evil.com.
Hash: d41d8cd98f00b204e9800998ecf8427e
''')
print(iocs)
# Document threat actor
actor = ThreatActor('APT29', aliases=['Cozy Bear', 'The Dukes'])
actor.add_ttp('T1566', 'Phishing')
actor.set_motivation('espionage')
# Generate intel report
report = IntelReport('Emerging Ransomware Campaign')
report.add_ioc('ip', '10.0.0.1', 'C2 server')
print(report.generate())
使用方法
IOC の抽出
さまざまなテキストソースから侵害指標を抽出します。
例:
from cti_utils import IOCExtractor
extractor = IOCExtractor()
# Extract from text
text = '''
The malware was downloaded from hxxp://malware[.]evil[.]com/payload.exe
It connects to C2 server at 192.168.100.50 on port 443.
The file hash is: a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
Email originated from [email protected]
'''
iocs = extractor.extract_from_text(text)
print(f"IPs: {iocs['ip']}")
print(f"Domains: {iocs['domain']}")
print(f"URLs: {iocs['url']}")
print(f"Hashes: {iocs['hash']}")
print(f"Emails: {iocs['email']}")
# Defang/refang IOCs
defanged = extractor.defang('http://evil.com') # hxxp://evil[.]com
refanged = extractor.refang('hxxp://evil[.]com') # http://evil.com
# Validate IOCs
valid = extractor.validate_ioc('ip', '192.168.1.1') # True
invalid = extractor.validate_ioc('ip', '999.999.999.999') # False
IOC の管理
コンテキスト情報とともにインジケーターのコレクションを管理します。
例:
from cti_utils import IOCCollection
collection = IOCCollection('Campaign-2024-001')
# Add IOCs with context
collection.add_ioc(
ioc_type='ip',
value='192.168.1.100',
context='C2 server',
confidence='high',
source='Sandbox analysis'
)
collection.add_ioc(
ioc_type='domain',
value='malware.evil.com',
context='Payload delivery',
confidence='medium',
source='Network logs'
)
collection.add_ioc(
ioc_type='hash',
value='a1b2c3d4e5f6...',
context='Ransomware executable',
confidence='high',
source='EDR'
)
# Deduplicate
collection.deduplicate()
# Export formats
print(collection.to_csv())
print(collection.to_json())
print(collection.to_stix()) # STIX 2.1 format
脅威アクターのプロファイリング
脅威アクターとその特性を記録します。
例:
from cti_utils import ThreatActor
actor = ThreatActor(
name='APT29',
aliases=['Cozy Bear', 'The Dukes', 'YTTRIUM']
)
# Set attributes
actor.set_motivation('espionage')
actor.set_sophistication('advanced')
actor.set_origin('Russia')
# Add TTPs (MITRE ATT&CK)
actor.add_ttp('T1566.001', 'Spearphishing Attachment')
actor.add_ttp('T1059.001', 'PowerShell')
actor.add_ttp('T1071.001', 'Web Protocols')
actor.add_ttp('T1486', 'Data Encrypted for Impact')
# Add targeting
actor.add_target_sector('Government')
actor.add_target_sector('Healthcare')
actor.add_target_region('North America')
actor.add_target_region('Europe')
# Add tools
actor.add_tool('Cobalt Strike')
actor.add_tool('Mimikatz')
# Add infrastructure
actor.add_infrastructure('ip', '192.168.1.100', 'C2 server')
actor.add_infrastructure('domain', 'actor-c2.com', 'Primary C2')
# Generate profile
print(actor.generate_profile())
キャンペーンの追跡
脅威キャンペーンを時系列で追跡します。
例:
from cti_utils import Campaign
campaign = Campaign(
name='Operation DarkSide',
first_seen='2024-01-01',
threat_actor='APT29'
)
# Add campaign details
campaign.set_description('''
Targeted campaign against financial institutions using
spearphishing emails with malicious Excel attachments.
''')
campaign.set_objective('Financial theft and espionage')
# Add IOCs
campaign.add_ioc('domain', 'campaign-c2.evil.com')
campaign.add_ioc('hash', 'abc123...', 'Excel dropper')
# Add TTPs
campaign.add_ttp('T1566.001', 'Initial access via phishing')
campaign.add_ttp('T1059.005', 'VBA macro execution')
# Add targets
campaign.add_target('Financial Services', 'North America')
# Timeline events
campaign.add_event('2024-01-01', 'First phishing emails observed')
campaign.add_event('2024-01-05', 'New C2 infrastructure identified')
campaign.add_event('2024-01-10', 'Malware variant updated')
# Generate report
print(campaign.generate_report())
MITRE ATT&CK へのマッピング
脅威を ATT&CK フレームワークにマッピングします。
例:
from cti_utils import ATTACKMapper
mapper = ATTACKMapper()
# Map techniques
mapper.add_technique('T1566.001', 'Spearphishing used for initial access')
mapper.add_technique('T1059.001', 'PowerShell scripts executed')
mapper.add_technique('T1055', 'Process injection observed')
mapper.add_technique('T1486', 'Files encrypted with ransomware')
# Generate matrix view
print(mapper.generate_matrix())
# Get technique details
print(mapper.get_technique_info('T1566.001'))
# Export for ATT&CK Navigator
mapper.export_navigator('attack_layer.json')
インテリジェンスレポート
脅威インテリジェンスレポートを生成します。
例:
from cti_utils import IntelReport
report = IntelReport(
title='Emerging Ransomware Campaign Targeting Healthcare',
classification='TLP:AMBER'
)
# Executive summary
report.set_summary('''
A new ransomware campaign has been identified targeting healthcare
organizations in North America. The campaign uses phishing emails
with malicious attachments to gain initial access.
''')
# Key findings
report.add_finding('New ransomware variant identified: "MedLocker"')
report.add_finding('Campaign active since January 2024')
report.add_finding('At least 5 healthcare organizations targeted')
# Add IOCs
report.add_ioc('hash', 'abc123...', 'Ransomware executable')
report.add_ioc('domain', 'medlocker-payment.onion', 'Payment portal')
report.add_ioc('ip', '192.168.1.100', 'C2 server')
# Add TTPs
report.add_ttp('T1566.001', 'Phishing with malicious attachments')
report.add_ttp('T1486', 'Data encryption')
# Recommendations
report.add_recommendation('Block IOCs at perimeter')
report.add_recommendation('Update endpoint detection signatures')
report.add_recommendation('Conduct phishing awareness training')
# Generate outputs
print(report.generate())
print(report.generate_executive_brief())
設定
環境変数
| 変数 | 説明 | 必須 | デフォルト |
|---|---|---|---|
CTI_FEED_API_KEY | 脅威フィード用の API キー | いいえ | なし |
CTI_OUTPUT_DIR | レポートの出力ディレクトリ | いいえ | ./output |
対応する IOC の種類
- ip - IPv4 アドレスと IPv6 アドレス
- domain - ドメイン名
- url - 完全な URL
- hash - MD5、SHA1、SHA256 ハッシュ
- email - メールアドレス
- cve - CVE 識別子
制限事項
- ライブフィード非対応:フィードの取得には手動設定が必要です
- オフラインの ATT&CK:組み込みの手法データを使用します
- エンリッチメント API 非対応:外部エンリッチメントは含まれません
トラブルシューティング
無効な IOC 形式
IOC の検証には標準の正規表現パターンを使用します。
# Valid
extractor.validate_ioc('ip', '192.168.1.1') # True
# Invalid
extractor.validate_ioc('ip', '192.168.1.256') # False
デファングの問題
一貫したデファング形式を使用してください。
# Standard defanging
extractor.defang('http://evil.com')
# Returns: hxxp://evil[.]com
関連スキル
参考資料
コメント
Markdown 対応