DGA とは何ですか? また、それを検出するにはどうすればよいですか?

ドメイン生成アルゴリズム (DGA) は、大量のドメイン名を定期的に動的に生成するアルゴリズムの一種です。通常、ドメインはマルウェアやボットネットによってランデブー ポイントとして使用され、悪意のある攻撃者のコマンド & コントロール サーバーへのコールバックを容易にします。DGA により、マルウェアは 1 日に数万のドメインを生成できますが、その大部分は未登録です。膨大な数の未登録ドメインは登録済みドメインを偽装するために使用され、感染したボットネットはシグネチャまたは IP レピュテーション ベースのセキュリティ検出システムによる検出と抑止を回避できます。

DGA を使用する最初のマルウェア ファミリは、2008 年の Kraken です。その年の後半に登場した Conflicker ワームにより、DGA 戦術は有名になりました。10 年経った今でも、今日のネットワークの一部で Conflicker またはその亜種の XNUMX つが見つかることがあります。

マルウェアの増加に伴い、DGA の使用も広まっています。

DGA検出の目的

DGA アクティビティは重大な侵害の指標となるため、ネットワーク上のそのようなアクティビティを検出することが重要になります。DGA 検出には 3 つのレベルがあり、レベルが上がるにつれて深刻度が増します。後のレベルでの検出はより困難ですが、より重要になります。

DGA が検出された場合、1 つ以上のシステムが DGA ベースのマルウェアに感染し、ボットネットになっていることを意味します。何らかの対策を講じる必要があります。最初の目標は、影響を受けたシステムを特定し、適切にクリーンアップまたは隔離して、エスカレーションを防ぐことです。

次の目標は、特定の DGA ドメイン名が登録されているかどうかを判断することです。ドメインが登録されている場合、それはアクティブなコマンド & コントロール サーバーとなり、ネットワークに大きなリスクをもたらします。感染したシステム (ボットネット) は、これらのサーバーを使用してホームにコールし、悪意のある攻撃者からのコマンドを受信する可能性があります。したがって、効果的な DGA 検出システムの 2 番目のコンポーネントは、登録済みドメインと未登録ドメインを区別する機能です。

たとえば、DGA は xyzwer1000、xyzwer1、…から xyzwer2 まで 1000 個のドメインを生成する場合があります。ハッカーは、xyzwer500 などの 999 つのドメインのみを登録すればよく、他の XNUMX 個のドメインを登録する必要はありません。登録されたドメインとそれに関連付けられた IP が識別できれば、その情報を使用して、ターゲット システムとコマンド & コントロール サーバー間の通信チャネルをブロックできます。さらに、ネットワーク内のどのシステムからでもそのサーバーへのコールバックを阻止するために、他のすべての防止システムまたは検出システムに情報を伝播する必要があります。

DGA 検出システムの最後の、しかし最も重要な目的は、登録されたドメインへのコールバックが成功したかどうか、および感染したシステムとコマンド & コントロール サーバーの間で通信が行われたかどうかを判断することです。このようなアクティビティが検出された場合、何らかの損害がすでに発生している可能性があります。ネットワーク内のマルウェアが更新されたか、新しいマルウェアがインストールされた可能性があります。機密データが流出した可能性があります。

DGA 検出はどのように機能しますか?

DGA アクティビティは、通常 5 つの一般的な手順でネットワーク パケットをキャプチャして分析することによって検出されます。

ステップ1 – DNSアプリケーションの検出
検出は、DNS 要求および/または応答メッセージを介して開始されます。DNS は基本的なインターネット プロトコルであり、ほとんどのファイアウォールには、予約済みのポート 53 で発信 DNS トラフィックを許可するポリシーがあります。ただし、ハッカーはポート 53 を利用して、標準の DNS メッセージ形式に従わずにトラフィックを送信する可能性があります。この攻撃は DNS トンネリングと呼ばれます。DNS アプリケーションをより正確に識別するには、ディープ パケット インスペクション (DPI) エンジンが推奨されます。

ステップ2 – ドメイン名の抽出
ネットワーク アプリケーションが DNS として識別されると、DNS クエリおよび応答メッセージ内のドメイン名を抽出する必要があります。正しいドメイン名を抽出するには、DNS メッセージの内容を慎重に解析する必要があり、このタスクを実行するには DPI エンジンが必要です。

ステップ3 – DGAを検出する
DNS メッセージから抽出されたドメインが DGA であるかどうかを判断するには、分析を実行する必要があります。これはおそらく最も複雑なステップです。課題は、誤検知と誤検知の両方を減らすことです。検出メカニズムは、過去 10 年以上にわたって劇的に進化してきました。
いくつかのメカニズムは、比較的単純なシャノンエントロピーに基づいています。
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
いくつかのメカニズムは、HitbカンファレンスでFyodorが発表したより洗練されたNグラムに基づいています。
最近、機械学習が普及するにつれて、その方法論も DGA 検出に適用されています。機械学習は、N グラム、シャノン エントロピー、ドメイン名の長さなどの特徴を組み合わせて、決定に影響を与えることができます。いくつかの機械学習モデルが試されてきました。2014 年に Jay Jacobs がプロセスについて説明した非常に優れたブログ記事があります。
以下は、マルコフ連鎖による機械学習に基づく別のオープンソース DGA 検出器です。
https://github.com/exp0se/dga_detector

ステップ4 – 登録済みのDGAドメインを検出する
DGA ドメイン名が登録されているかどうかを検出するには、DNS 応答をチェックする必要があります。DNS 要求を追跡するだけでは不十分です。検出システムは、情報間の相関関係を容易にするために、トランザクション全体を追跡する必要があります。

ステップ5 – 登録されたDGAドメインへのトラフィックを検出する
既存の DGA 検出システムのほとんどは、ドメイン名が DGA ドメインであるかどうかの検出に重点を置いているため、最後の最も重要な質問、つまり登録済みの DGA ドメインに送信されたトラフィックがあるかどうかを忘れがちです。これをタイムリーに検出するには、DGA ドメイン検出をネットワーク トラフィック検査と緊密に連携させる必要があります。損害が発生する前に、結果をトラフィック検査エンジンに直ちにエコーバックする必要があります。

ステップ6 – 登録されたDGAドメインへのトラフィックをブロックする
技術的には検出の一部ではありませんが、ファイアウォールや IPS などの防止システムと統合されている場合は、登録されたドメインへのすべてのトラフィックをブロックするルールをすぐに挿入する必要があります。

優れた DGA 検出システムは、5 つのステップすべてを実行する必要があります。優れた DGA 検出システムには、ステップ 6 も含まれている必要があります。残念ながら、今日のほとんどの DGA 検出システムは、ステップ 3 またはステップ 4 で停止します。

結論
DGA はシグネチャやレピュテーションベースの検出または防止システムでは検出が難しいため、マルウェア開発者の間で非常に人気があります。
検出を実行するには、インテリジェントな検出システムが必要です。優れた DGA 検出システムは、DNS トランザクションからドメイン名情報を抽出し、徹底的な分析を実行して DGA ステータスを検出し、疑わしいドメインの登録ステータスを確認し、ネットワーク トラフィック検査と相関させて侵害のレベルを評価し、理想的には予防システムと統合してさらなる侵害を回避する必要があります。誤検知と誤検知の両方を減らすには、機械学習を真剣に検討する必要があります。あらゆる段階で包括的かつ広範囲にわたるインテリジェンスがなければ、脅威を真に軽減することはできません。

資料

Andrey Abakumove による Github のリポジトリには、ドメイン名を生成するためのアルゴリズムと、悪意のあるドメイン名の辞書が含まれています。

上へスクロール