mcpField
A
analyzing-indicators-of-compromise

analyzing-indicators-of-compromise

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

analyzing-indicators-of-compromise について

IOC の分類から複数ソースによる情報補完、確信度評価、記録までを扱うセキュリティ分析者向けスキルです。複数の情報源との照合と分析者の判断を重視し、重大なブロック判断だけに単独で使うことは想定していません。

主な機能

  1. 01IOC の分類とデファング
  2. 02複数の脅威情報ソースによる補完
  3. 03MISP によるキャンペーン照合
  4. 04確信度評価と対応判断
  5. 05調査結果の記録と STIX 出力

活用シーン

  1. 01フィッシングメールやアラートの IOC トリアージ
  2. 02一括フィードの指標を取り込み前に評価
  3. 03インシデント調査でネットワーク指標を補足

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-indicators-of-compromise

インストール後、Claude Code で/analyzing-indicators-of-compromiseを入力して読み込まれたか確認します。

同梱ファイル

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

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

詳細

侵害指標の分析

使用するタイミング

次の場合にこのスキルを使用してください:

  • フィッシングメールやアラートから、迅速なトリアージが必要な IOC(URL、IP アドレス、ファイルハッシュ)が生成されたとき
  • 自動フィードから一括で届く IOC を、ブロック制御に取り込む前に信頼度スコアで評価する必要があるとき
  • インシデント調査で、観測されたネットワークアーティファクトにコンテキストを付加する必要があるとき

このスキルを単独で、高い影響を伴うブロック判断に使用しないでください。自動エンリッチメントの結果は、必ずアナリストの判断と組み合わせてください。特に、共有インフラストラクチャ(CDN、クラウドプロバイダー)には注意が必要です。

前提条件

  • マルチ AV およびサンドボックス検索用の VirusTotal API キー(無料版または Enterprise)
  • IP レピュテーション確認用の AbuseIPDB API キー
  • 既知のキャンペーンと相互参照するための MISP インスタンスまたは TIP
  • requests および vt-py ライブラリを含む Python、または事前構築済みのコネクターを備えた SOAR プラットフォーム

ワークフロー

ステップ 1:IOC の種類を正規化して分類する

エンリッチメントの前に、各 IOC を分類してください:

  • IPv4/IPv6 アドレス:RFC 1918 のプライベートアドレスか確認します(該当する場合は外部エンリッチメントをスキップ)。形式も検証します
  • ドメイン/FQDN:安全に扱えるようデファングし(evil[.]com)、tldextract を使って登録ドメインを抽出します
  • URL:ドメインとパスを別々に抽出し、リダイレクターを確認します
  • ファイルハッシュ:ハッシュの種類(MD5/SHA-1/SHA-256)を特定します。一意性を確保するため、SHA-256 を優先します
  • メールアドレス:パターン分析のため、ドメイン(MX/DMARC を確認)とローカルパートに分けます

ドキュメント内の IOC は、誤ってクリックされないようにデファングしてください(. を [.] に、:// を [://] に置き換えます)。

ステップ 2:複数のソースからエンリッチメントする

VirusTotal(ファイルハッシュ、URL、IP、ドメイン):

import vt

client = vt.Client("YOUR_VT_API_KEY")

# File hash lookup
file_obj = client.get_object(f"/files/{sha256_hash}")
detections = file_obj.last_analysis_stats
print(f"Malicious: {detections['malicious']}/{sum(detections.values())}")

# Domain analysis
domain_obj = client.get_object(f"/domains/{domain}")
print(domain_obj.last_analysis_stats)
print(domain_obj.reputation)
client.close()

AbuseIPDB(IP アドレス):

import requests

response = requests.get(
    "https://api.abuseipdb.com/api/v2/check",
    headers={"Key": "YOUR_KEY", "Accept": "application/json"},
    params={"ipAddress": "1.2.3.4", "maxAgeInDays": 90}
)
data = response.json()["data"]
print(f"Confidence: {data['abuseConfidenceScore']}%, Reports: {data['totalReports']}")

MalwareBazaar(ファイルハッシュ):

response = requests.post(
    "https://mb-api.abuse.ch/api/v1/",
    data={"query": "get_info", "hash": sha256_hash}
)
result = response.json()
if result["query_status"] == "ok":
    print(result["data"][0]["tags"], result["data"][0]["signature"])
ステップ 3:キャンペーンの帰属情報でコンテキストを補う

IOC に一致する既存のイベントがあるか、MISP に問い合わせます:

from pymisp import PyMISP

misp = PyMISP("https://misp.example.com", "API_KEY")
results = misp.search(value="evil-domain.com", type_attribute="domain")
for event in results:
    print(event["Event"]["info"], event["Event"]["threat_level_id"])

Shodan で IP のコンテキスト(ホスティングプロバイダー、開放ポート、バナー)を確認し、その IP が弾力性のあるホスティング事業者に属するのか、正規のクラウドプロバイダーに属するのかを特定して、誤検知のリスクを評価します。

ステップ 4:信頼度スコアと処置を決定する

段階的な判断基準を適用します:

  • ブロック(高信頼度 ≥ 70%):VT での AV 検出数が 15 以上、AbuseIPDB スコアが 70 以上、既知のマルウェアファミリーまたはキャンペーンと一致
  • 監視/アラート(中信頼度 40~69%):AV 検出数が 5~14 件、AbuseIPDB スコアが中程度、キャンペーンへの帰属情報なし
  • 許可リスト登録/調査(低信頼度 <40%):AV 検出数が 4 件以下、不正利用の報告なし、正規のサービス(Google、Cloudflare CDN の IP)
  • 誤検知:正規の業務サービスが誤って検知された場合。記録し、今後のアラートから除外します
ステップ 5:記録して共有する

次の情報を TIP/MISP に記録します:

  • 収集したすべてのエンリッチメントデータ(タイムスタンプ、ソース、スコア)
  • 処置の判断とその根拠
  • 実施したブロック措置(ファイアウォール、プロキシ、DNS シンクホール)
  • 関連するインシデントチケット番号

信頼度フィールドを適切に設定した STIX インジケーターオブジェクトとしてエクスポートします。

主な概念

用語定義
IOC侵害指標 — 侵害の可能性を示す、観測可能なネットワークまたはホストのアーティファクト
エンリッチメント複数のインテリジェンスソースからコンテキストデータを追加し、生の IOC を補強するプロセス
デファングドキュメント内で IOC が誤って有効化されないよう、IOC を変更すること(. を [.] に置き換えるなど)
誤検知率無害なアーティファクトが悪意あるものとして誤って検知される割合。ブロックしきい値の調整に欠かせない指標です
シンクホール悪意のあるドメインへの DNS 問い合わせを無害な IP にリダイレクトする DNS サーバー。トラフィックを完全にブロックせずに検知できます
TTLブロック制御における IOC の有効期間。IP インジケーターは 30 日後、ドメインは 90 日後に期限切れにする必要があります

ツールとシステム

  • VirusTotal:70 以上の AV エンジン、サンドボックスレポート、コミュニティのコメントを備えた、マルチエンジン型のマルウェアスキャナーおよび脅威インテリジェンスプラットフォームです。
  • AbuseIPDB:90 日間の不正利用レポート履歴を備えた、コミュニティ管理の IP 評判データベースです。
  • MalwareBazaar (abuse.ch):YARA ルールとの関連付けやマルウェアファミリーのタグ付けを備えた、無料のマルウェアハッシュリポジトリです。
  • URLScan.io:フィッシング URL のトリアージ向けに、スクリーンショット、DOM、ネットワークリクエストを取得する無料の URL 分析サービスです。
  • Shodan:IP の情報補完に利用できる、ホスティングプロバイダー、開放ポート、バナー情報を含む、インターネット全体のスキャンデータを提供します。

よくある落とし穴

  • 共有インフラストラクチャをブロックする:CDN の IP(Cloudflare 104.21.x.x、AWS CloudFront)では悪意のあるコンテンツが正当にホストされている場合がありますが、IP をブロックすると、数千もの正規サイトに影響が及びます。
  • VT スコアに固執する:VT の検出数が少なくても、無害とは限りません。ゼロデイマルウェアやカスタム APT ツールは、初期にはスコアが 0 になることがよくあります。サンドボックスでの挙動、MISP、パッシブ DNS を確認してください。
  • デファングを忘れる:メールや Confluence のドキュメントに有効な IOC を貼り付けると、自動 URL スキャナーやフィッシングツールが作動する可能性があります。
  • 有効期限ポリシーがない:TTL のない IOC はブロックリストに無期限に蓄積し、インフラストラクチャが正規ユーザーに再利用された際に誤検知を引き起こします。
  • 単一の情報源に頼りすぎる:VirusTotal は AV の見解を集約していますが、そのすべてが誤っている場合や、新たに出現したマルウェアへの対応が遅れている場合があります。重要な判断には、3 つ以上の独立した情報源を使用してください。

コメント