DNSトンネリング攻撃とその防止策

Risk Factors

Likelihood

Complexity

Business Impact

DNSトンネリング

DNSトンネリングとは

DNSトンネリングは検知が困難な攻撃です。この攻撃によってDNS要求が攻撃者のサーバにルーティングされ、秘密のコマンド&コントロール・チャネルとデータの流出経路を攻撃者が入手できます。DNSはインターネットの電話帳のようなものです。つまり、IPアドレスとドメイン名の変換を容易にする機能です。人間は、長い数字の羅列を記憶するのは得意ではありません。Webアドレス(例:extrahop.com/network-attack-library)の方が覚えやすく、どこへアクセスしようとしているのかが少しわかります。WebブラウザではIPアドレスが使用されるため、WebアドレスとIPアドレスを変換する機能が必要です。悪意のあるアクタはDNSトンネリングを使用することで、ファイアウォールを通じてデータを入手します。DNSトンネリングは、コマンド&コントロール(C&C)メッセージまたは少量のデータを、目立たないDNS応答およびクエリにエンコードします。DNSメッセージに置くことができるデータはごくわずかであるため、すべてのコマンドが小規模でなければならず、徐々にデータの流出が発生します。DNSはノイズが多いプロトコルなので、この技法を検知するのは困難です。したがって、通常のホスト・クエリや通常のDNSトラフィックと悪意のあるアクティビティとの区別がさらに困難になります。

**DNSトンネリングの仕組み: ** 1. 悪意のあるアクタが、マルウェアを実行するサーバを用意し、そのマルウェアでこのサーバを指すドメインを指定します。 2. 攻撃者は、マルウェアに感染させたホストに、攻撃者が制御するドメインへのクエリを発行させます。 3. DNSリゾルバは、このクエリをルーティングするときに、攻撃者から標的へのトンネルを作成します。攻撃者はそのトンネルを使用してデータを入手し、ホストを遠隔操作するほか、攻撃チェーンの次のステップを実行できます。

SUNBURST攻撃でDNSトンネリングが使用されていたか

その答えは複雑です。SUNBURSTでDNSが使用されたのは明らかですが、一般的にはコマンド&コントロールで利用される技法はドメイン生成アルゴリズムであると理解されています。SUNBURSTは標的を選択するためにDNSでデータをエンコードしましたが、コマンド&コントロールの主要な手段としてDNSを使用しませんでした。しかし、SUNBURSTがDNSトンネリングを実行していたという興味深い議論があります。


DNSトンネリング攻撃に対する防御

DNSの監視と攻撃の検知のための2つの主要な手法として、ペイロード分析とトラフィック分析があります。ペイロード分析ではDNS要求とDNS応答の内容を調べます。要求と応答のサイズの違いや、通常と異なるホスト名のような要因が、疑わしいアクティビティの特定に役立つ可能性があります。トラフィック分析では、発行された要求の数、地理的位置、ドメイン履歴などの情報を使用して、通常のDNSトラフィックと悪意のある行動を区別します。たとえば、ネットワークでの検知と対応では、機械学習を使用して、任意の環境において通常のDNSの動作がどのようなものであるかについての基準を確立します。これに基づいて、攻撃の前兆と考えられる異常な行動に関するアラートを提供します。この攻撃の検知は復号を使用することで強化できます。CISAでは、ローカルDNSサーバでDNS-over-HTTPまたはDNS-over-TLSを利用して内部のDNSトラフィックを保護することを推奨しています。このトラフィックの復号によって、データ流出の可能性やコマンド&コントロールなどに対するSecOpsの可視性が得られます。このような理由から、TLS 1.3やKerberosなどの一般的な暗号化プロトコルすべてに対応する復号機能をセキュリティ・ツールが備えていることが重要です。


DNSトンネリングの歴史

DNSの乗っ取りが最初に論じられたのは、1990年代の後半です。2004年には、Black HatでDan Kaminsky氏が扱うほどまでに、各地で報告されるようになりました。Kaminsky氏は、DNSトンネリングに使用する最初のユーティリティの1つであるOzymanDNSを作成しています。それ以来、多くのユーティリティが作成されていますが、中心となる手法はほとんど変わりません。DNSトンネリングに使用される一般的なユーティリティには、Iodine(2006年)、NSTX(2000年、Linux専用)、DNScat(2010年)などがあります。