Melissa Alvarez

新しいKibana統合によるドメイン生成アルゴリズム(DGA)アクティビティの検出

Kibana の Integrations アプリに DGA 検出パッケージを追加しました。 1 回のクリックで、DGA モデルと、取り込みパイプライン構成、異常検出ジョブ、検出ルールなどの関連アセットをインストールして使用を開始できます。

7分で読めます機械学習検出科学
新しいKibana統合によるドメイン生成アルゴリズム(DGA)アクティビティの検出

潜在的なドメイン生成アルゴリズム(DGA)攻撃からネットワークを保護する方法をお探しですか? DGA検出パッケージがKibanaのIntegrationsアプリで利用できるようになりました。

ユーザーは、1回のクリックでDGAモデルと関連アセット(取り込みパイプライン設定、異常検出ジョブ、検出ルールなど)をインストールして使用を開始できます。 DGA パッケージのインストールと完全な有効化に関する詳細な手順については、以下をお読みください。

【関連記事: マルウェアへの迅速な対応をセキュリティ保護に自動化する】

DGAとは?

DGAは、クライアントマシンの感染が防御手段を回避するようにするために、多くのマルウェア作成者が採用している手法です。 この手法の目的は、数百または数千のランダムに生成されたドメイン名を使用して、感染したクライアントマシンとコマンド&コントロール(C&CまたはC2)サーバー間の通信を隠すことであり、そのうちの1つは最終的にC&CサーバーのIPアドレスに解決されます。

DGA攻撃では一体何が起きているのでしょうか。それをより簡単に理解するために、戦場の兵士を想像してみましょう。 多くの兵士と同様、あなたも無線電波を使用して通信する通信装置を持っています。 敵はあなたの無線電波を妨害することで、その通信を邪魔しようとするでしょう。 これに対抗するための1つの方法として考えられるのは、周波数ホッピングです。つまり、送信中にきわめてすばやく周波数を変える無線システムを使用するのです。 周波数を変えることで、敵にとってはランダムで予測不可能なものとなり、電波を妨害することが難しくなります。

DGAは、マルウェアの周波数ホッピング通信チャネルのようなものです。 彼らはドメインを頻繁に変更するため、DNSドメイン名のブロックによってマルウェアのC2通信チャネルをブロックすることは不可能になります。 ランダムに生成されたDNS名が多すぎて、それらを正常に識別してブロックすることはできません。

この手法は、2009年に「Conficker」ワームがランダムに生成された非常に多数のドメイン名を通信に使用し始めたときに、マルウェアの世界で力強く登場しました。 ワームの作成者は、セキュリティ研究者のコンソーシアムが通信に使用していたDNSドメインをシャットダウンすることでワームのC2チャネルを中断した後、この対策を開発しました。 DNSの緩和は、 2017 WannaCryランサムウェアの世界的な発生の場合にも実行されました。

開始する

モデルと関連アセット (パイプライン、異常検出構成、検出ルールなど) は、8.0 の時点で Kibana の統合アプリにリリースされています。 今後もこの形式を維持していきます。

Elastic Cloudクラスターをお持ちでないが、リリース済みのProblemChildパッケージで試してみたい場合は、Elastic Cloudの 14日間無料トライアル を開始できます。

ここでは、リリースされた DGA パッケージを使用して、お客様の環境で DGA を数分で起動して実行するための手順を見ていきます。

ステップ 1: パッケージアセットのインストール

Kibanaでは、インテグレーションアプリにDGA検出パッケージが含まれるようになりました。 アセットをインストールするには、「設定」タブの下にある「DGAアセットのインストール」ボタンをクリックします。これにより、DGA モデルを使用して、ネットワーク データで DGA アクティビティが検出されたときにアラートを生成するために必要なすべてのアーティファクトがインストールされます。

インストールが完了したら、[ Stack Management] > [Ingest Pipelines ] に移動し、 <version-number>-ml\_dga\_ingest\_pipeline がインストールされ、受信インジェスト データを強化するために使用できるようになったことを確認できます。 取り込みパイプラインは、これを行うために<version-number>-ml\_dga\_inference\_pipelineを活用します。

同様に、インストールされた DGA モデルは、 機械学習>モデル管理>トレーニング済みモデルで確認できます。

ステップ 2: データを強化する

これで、取り込みパイプラインを使用してデータを取り込む準備が整いました。 教師ありモデルは、DGA スコアを使用して DNS イベントを含む受信データを分析し、エンリッチメントします。

このパイプラインは、ECS フィールド (dns.question.name と dns.question.registered_domain) を含む DNS イベント ( packetbeat データなど) を含むデータを処理するように設計されています。 インストール済みのインジェストパイプラインを Elastic ビートに追加するには、簡単な 設定を追加します。

インデックスに関連付けられたインジェスト パイプラインが既にある場合は、 パイプライン プロセッサ を使用して、DGA インジェスト パイプラインを既存のパイプラインに統合できます。

また、選択したビートに次のマッピングを追加することもできます。

{
  "properties": {
    "ml_is_dga": {
      "properties": {
        "malicious_prediction": {
          "type": "long"
        },
        "malicious_probability": {
          "type": "float"
        }
      }
    }
  }
}

これは、「スタック管理」>「インデックス管理」>「コンポーネントテンプレート」で実行できます。 カスタムコンポーネントを追加するために編集できるテンプレートには、 @custom サフィックスが付けられます。 Elastic ビートの @custom コンポーネント テンプレートを編集するには、上記の JSON blob を [Load JSON (JSON の読み込み )] ポップアップに貼り付けます。

これで、モデルが受信 DNS イベントを次のフィールドで強化することがわかります。

  • Ml_is_dga.malicious_prediction: 値 "1" は、DNS ドメインが悪意のある DGA アクティビティの結果であると予測されることを示します。 値 "0" は、良性であると予測されることを示します。

  • Ml_is_dga.malicious_probability: DNS ドメインが悪意のある DGA アクティビティの結果であるという 0 から 1 までの確率スコア。

インジェストパイプラインがデータで期待どおりに動作していることをすぐにテストする方法が必要な場合は、 シミュレートパイプラインAPI でいくつかのサンプルドキュメントを使用し、 ml_is_dga フィールドが表示されていることを確認できます。

ステップ 3: 異常検出の実行

このパッケージには、事前設定された異常検出ジョブが含まれています。 この機械学習 (ML) ジョブは、教師あり DGA モデルによって生成された DGA スコアを調べ、特定のソース IP アドレスの異常に高いスコアの異常なパターンを探します。 これらのイベントには、異常スコアが割り当てられます。

エンリッチされたデータに対してこのジョブを実行するには、 機械学習>異常検出に移動します。 ジョブ ウィザードを使用してジョブを作成すると、DGA のカードと共に [事前構成済みジョブを使用する] オプションが表示されます。 カードを選択すると、実行できる事前構成済みの異常検出ジョブが表示されます。 このジョブは、インジェスト パイプラインによってエンリッチされたインデックスにのみ役立ちます。

ステップ 4: ルールの有効化

DGA フレームワークの利点を最大限に活用するには、インストールされている検出ルールをアクティブ化します。 これらは、教師ありモデルまたは異常検出ジョブの特定の条件が満たされたときにトリガーされます。 インストールされているルールの完全な一覧は、パッケージ自体の 概要 ページ、または最新の試験的な検出 リリースにあります。

含まれている事前構成済みの異常検出ジョブを最大限に活用するには、補完的なルールである 潜在的な DGA アクティビティを有効にします。 これにより、セキュリティ アプリの検出ページに異常ベースのアラートが作成されます。

事前構成された異常検出ジョブと補完ルールは、どちらも検出ルール リポジトリ リリースで使用できます。 インストールされているルールを有効にして使用するには、[ セキュリティ] > [ルール ] に移動し、[ Elastic のプレビルド ルールとタイムライン テンプレートを読み込む] を選択します。

Get in touch

ProblemChildをお試しいただき、新しい機能の追加に取り組む際のフィードバックをお寄せいただければ幸いです。 プロセス中に問題が発生した場合は、 コミュニティのSlackチャンネルディスカッションフォーラムまたはオープン検出リポジトリからお問い合わせください。

Elastic Cloudでは、最新バージョンの Elasticsearch Service をいつでも体験でき、このブログに従って、Windowsプロセスイベントデータ用のProblemChildフレームワークを環境にセットアップできます。 また、 クイックスタートトレーニング を活用して、成功への準備を整えましょう。 Elastic Cloudの無料トライアルを今すぐ開始して、プラットフォームをご利用ください。楽しい実験を!

この記事を共有する