Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SUNBURST — シャノンエントロピーを使用したSUNBURST C2 Stage-1の検出 | Kitploit
ツール/GitHubGitHub/malwaremorghulis/sunburst
ネットワークセキュリティマルウェア分析コマンド&コントロール脅威インテリジェンスDNS分析異常検知
GitHubmalwaremorghulis/sunburst

SUNBURST

シャノンエントロピーを使用したSUNBURST C2 Stage-1の検出

リポジトリを見る
31223年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

SUNBURST

Shannonエントロピーを使用したSUNBURST C2 Stage-1の検出

概要:

Shannonエントロピーを使用してドメイン生成アルゴリズム(DGA)を検出します。 関数にはFQDNのみを入力するか、CSVファイルから読み取る必要があります。 構文: Prefix_or_subdomain.Domain.TLD APTがキルチェーンC2のために長文字列DGAを利用することを受けて作成されました。 高いエントロピー(標準偏差の2倍超)を持つ長い文字列のURLを識別します。 長いプレフィックス/サブドメインを持つURLの上位2.5%を対象とします。 CNDアナリストが必要な場合に備え、追加のメタデータ(例:プレフィックス長)を保存します。

必要条件:

  1. Python 3.9+
  2. PythonがPATH変数に存在すること
  3. 記載されているすべてのインポート(必要に応じてpip install)
  4. 入力DNSログには1行に1つのFQDNがあること(他の句読点は不可)
  5. Cisco Top-1M (CSV、ZIP) または Majestic (CSV) Top-1M がスクリプトと同じフォルダに存在すること。

実行方法 (対話モードON、VARIABLESを参照):

  1. Python 3.9.xをインストールします。
  2. すべての入力ファイルを正しいフォーマットで準備します(ドメインをテキストファイルに1行1つ、句読点なし)。
  3. 入力ファイルがこのスクリプトと同じディレクトリ/フォルダにあることを確認します。 4a) (Windows) このスクリプトをPython IDLEまたはVisual Studio Codeで開きます。 4b) (Linux) $~: python3 shannon.py
  4. 調査する入力DNSログファイルを入力します。
  5. 活用するCisco Umbrella (CSV/ZIP) または Majestic Top-1Mファイル (CSV) を入力します。
  6. FrequencyおよびShannonエントロピーの値が生成されるのを待ちます。
  7. 出力ファイルを確認します。

実行方法 (対話モードOFF、VARIABLESを参照):

  1. Python 3.9.xをインストールします。
  2. すべての入力ファイルを正しいフォーマットで準備します(ドメインをテキストファイルに1行1つ、句読点なし)。
  3. 入力ファイルがこのスクリプトと同じディレクトリ/フォルダにあることを確認します。 4a) (Windows) このスクリプトをPython IDLEまたはVisual Studio Codeで開きます。 4b) (Linux) $~: python3 shannon.py
  4. 分析する入力ログは "domains.txt" です。VARIABLESを参照してください。
  5. 辞書の確率を構築するためのTop-Nファイルを選択します。VARIABLESを参照してください。
  6. FrequencyおよびShannonエントロピーの値が生成されるのを待ちます。
  7. 出力ファイルを確認します。

前提条件:

  1. 大文字と小文字の出現確率は等しいと仮定します。 a) TORノードがDNSクエリおよび0x20エンコーディングにおいて大文字小文字の感度を変えることは考慮しません。
  2. ETOAN文字頻度表は、0-9、"-"、""が欠けているため不十分です。 a) ドメインにはハイフン(-)、アンダースコア()、数字を含めることができます。
  3. ExploderBot DGAに対抗するようには設計されていません。
  4. 入力:シンプルなテキストファイルで、各URLは各行に1つのみ - それ以外はありません。
  5. 入力は、禁止文字を含まない厳密にURL文字列のみで構成されます。
  6. 入力ファイルと出力ファイルは、このスクリプトと同じフォルダにある必要があります。
  7. Python3がPATH変数に存在すること。

データセット(ドメイン):

使用したデータセットは、SQLiteから抽出したPi-Holeクエリログ(12時間のウィンドウ)から派生したものです。

BASH:

$~: sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain FROM queries WHERE timestamp >='$(($(date +%s) - 43200))'" > domains.txt

データはExcel > データ > 重複の削除を使用して重複排除されました。 リバースルックアップ(PTR)のin-addr.arpaデータも削除されました。

データセット(確率):

RedCanaryのDGA分析結果を活用し、このスクリプトはURLを受け取り、Shannonエントロピーを計算します。

DevOpsテストフェーズ:

  1. shannon.py (1.0) - 静的RedCanary辞書で計算が機能するようにする。
  2. shannon.py (1.1) - 軽微なテストを1.0にマージ。
  3. dictionary.py (1.0) - Cisco + Majestic Top-1Mのオープン/クローズをテスト。
  4. shannon.py (2.0) - 1.0とdictionary.pyのテスト済み関数を組み合わせる。

参照:

Splunk Shannon Entropy - アイデアの出典* https://www.splunk.com/en_us/blog/tips-and-tricks/when-entropy-meets-shannon.html

SANS Mark Baggett - RedCanaryがAlexa Top 1Mの分析に使用したツール https://github.com/markbaggett/freq

RedCanary - 確率スコアの由来となるブログ https://redcanary.com/blog/threat-hunting-entropy/

AlexaのTop 1Mドメイン - RedCanaryが使用したデータコーパス https://www.alexa.com/topsites

DGA Detector https://github.com/exp0se/dga_detector

Shannonエントロピー - 公式 https://towardsdatascience.com/the-intuition-behind-shannons-entropy-e74820fe9800

ツールをダウンロード