detecting-exfiltration-over-dns-with-zeek について
Zeek dns.log データから DNS 経由の情報流出を検出する、SOC 分析担当者や脅威ハンター向けのセキュリティ分析スキルです。エントロピー、ラベル長、サブドメインの一意性、クエリ量を評価し、疑わしいドメインを順位付けして JSON レポートを生成します。
主な機能
- 01Zeek dns.log の TSV ヘッダー解析
- 02サブドメインのエントロピー計算
- 03異常に長いラベルの検出
- 04ドメインごとの一意なサブドメイン数集計
- 05クエリ指標によるドメインのスコア化
- 06JSON 検出レポートの生成
活用シーン
- 01DNS 経由の情報流出疑いの調査
- 02DNS トンネリングの脅威ハンティング手順作成
- 03ネットワーク監視範囲の評価
- 04インシデント対応向けの疑わしいドメインの順位付け
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill detecting-exfiltration-over-dns-with-zeekインストール後、Claude Code で/detecting-exfiltration-over-dns-with-zeekを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
Zeek を使用した DNS 経由のデータ流出の検出
概要
DNS トンネリングとデータ流出は、攻撃者がファイアウォールや DLP 制御を回避するために用いる手法で、盗み出したデータを DNS クエリのサブドメインにエンコードします。正規の DNS クエリはエントロピーと長さに予測可能なパターンを持つ一方、流出クエリは高いシャノンエントロピーを持つエンコード済みデータ、異常に長いサブドメインラベル、そして親ドメインごとの多数の一意なサブドメインを含みます。
このスキルは、Zeek の dns.log ファイル(TSV 形式)を解析して流出の兆候を検出します。エージェントは各サブドメインコンポーネントのシャノンエントロピーを計算し、DNS ラベルの上限である 63 文字を超えるクエリを特定し、親ドメインごとの一意なサブドメイン数を数え、設定可能なしきい値を超えるドメインにフラグを付けます。これらの手法により、dnscat2、iodine、dns2tcp、およびカスタムの DNS トンネリング実装などのツールを検出できます。
使用するタイミング
- DNS 経由のデータ流出を Zeek で検出する必要があるセキュリティインシデントを調査するとき
- この分野の検知ルールやスレットハンティングクエリを作成するとき
- SOC アナリストがこの種の分析に向けた構造化された手順を必要とするとき
- 関連する攻撃手法に対するセキュリティ監視のカバレッジを検証するとき
前提条件
- 標準ライブラリの math および collections モジュールを備えた Python 3.9 以降
- 標準的なフィールドヘッダーを持つ、TSV 形式の Zeek dns.log ファイル
- Zeek 5.0 以降で処理されたネットワークキャプチャデータ
- DNS プロトコルの構造およびクエリタイプの理解
手順
-
Zeek dns.log のヘッダーを解析する: TSV ファイルを読み込み、
#fieldsヘッダー行を抽出して、ts、id.orig_h、query、qtype_name、rcode_name、answersの列位置を特定します。 -
クエリを抽出して分解する: 各 DNS クエリについて、FQDN をサブドメインラベルと親ドメインに分割します。既知の安全なドメインおよび内部ゾーンへのクエリはスキップします。
-
シャノンエントロピーを計算する: 各サブドメインラベルの情報エントロピーを計算します。正規のサブドメインは一般にエントロピーが 3.5 未満である一方、エンコードまたは暗号化されたデータは 4.0 を超えるエントロピーを示します。
-
長いラベルを検出する: 63 文字の最大長に近い 52 文字を超える DNS ラベルにフラグを付けます。長いラベルはデータトンネリングの強い兆候です。
-
ドメインごとの一意なサブドメイン数を数える: 各親ドメインが受け取る異なるサブドメインの数を追跡します。ログウィンドウ内で一意なサブドメインが 50 を超えるドメインは不審です。
-
クエリ量の異常を特定する: 送信元 IP ごと、ドメインごとに毎分のクエリ数を計算します。流出ツールは、通常のブラウジングとは異なる持続的な高頻度のクエリストリームを生成します。
-
ドメインをスコア化してランク付けする: エントロピー、ラベル長、一意性の数、クエリ量を組み合わせて複合リスクスコアを算出します。ドメインをスコア順にランク付けし、疑わしい上位ドメインを出力します。
-
検出レポートを生成する: フラグが付いたドメイン、その根拠となる兆候、発信元の送信元 IP、推奨される対応アクションを含む JSON レポートを作成します。
期待される出力
{
"analysis_summary": {
"total_queries_analyzed": 145832,
"unique_domains": 3421,
"flagged_domains": 3,
"entropy_threshold": 3.5
},
"flagged_domains": [
{
"domain": "data.evil-c2.com",
"unique_subdomains": 892,
"avg_entropy": 4.72,
"max_label_length": 61,
"source_ips": ["10.0.1.45"],
"risk_score": 9.4,
"indicators": ["high_entropy", "long_labels", "high_subdomain_count"]
}
]
}