Cyber Security Academy · レッスン

DNSトンネリングと情報窃取

DNS経由でデータを密かに持ち出す方法を学びます。

レッスン 3/413 ステップ

「DNSトンネリングと情報窃取」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

DNSによるデータ密輸

DNSトンネリングは、DNSクエリと応答の中に任意のデータを符号化し、名前解決システムを秘密通信チャネルに変えます。ほぼすべてのネットワークでDNSの境界外への通信が許可されるため、データ窃取やコマンドアンドコントロール(C2)に好んで使われます。

ファイアウォールがそれ以外のすべてをブロックしていても、リゾルバーが応答し続けるなら、攻撃者はDNSを介して完全な双方向チャネルを構築できます。

チャネルの仕組み

攻撃者は、たとえばtunnel.evil.comのドメインに対する権威ネームサーバーを制御します。インプラントは、クエリのサブドメイン(左側のラベル)に外向きのデータを符号化します。

  • データは<base32-chunk>.tunnel.evil.comとして送信されます。
  • 権威サーバーは、TXT、CNAME、またはNULLレコード内に命令を返します。

各クエリと応答のペアには、小さなペイロードの断片が含まれます。

ZXhmaWx0cmF0ZWQtc2VjcmV0.tunnel.evil.com
# Encoded chunk smuggled in the query label

エンコードの選択肢

DNSラベルは大文字と小文字を区別せず、長さにも制限があるため、バイナリデータは通常Base32でエンコードします(Base64は大文字と小文字が混在し、安全でない文字も使用します)。考慮すべき制約は次のとおりです。

  • 各ラベルは最大63文字です。
  • 名前全体は最大255文字です。
  • そのため、1回のクエリで運べるのは最大でも数百バイト程度です。

このスループットの低さにより、DNS経由の情報窃取は低速でクエリ数も多くなり、検知もしやすくなります。

使用されるレコードタイプ

異なるレコードタイプを使い分けることで、下り方向の容量を最大化します。

  • TXT — 大容量の自由形式テキストペイロードに対応し、C2応答の主力となります。
  • NULL — 生のバイト列を運ぶもので、iodineなどの古いツールで使われます。
  • CNAME / MX — 中程度の容量で、正規のトラフィックに紛れ込みます。
  • A / AAAA — 容量は小さいものの非常に一般的で目立ちにくいタイプです。

一般的なツール

検知時に識別できるよう、次のような代表的なトンネリングユーティリティを把握しておきましょう。

  • iodine — NULL/TXTレコードを使用するIP over DNSトンネルです。
  • dnscat2 — DNS経由の暗号化C2チャネルです。
  • DNSExfiltrator — 段階的にファイルを窃取します。
  • Cobalt Strike DNSビーコン — レッドチーム活動や実際の侵入でよく使われます。

これらのツールには、特徴的なクエリパターンとエントロピーの特徴があります。

低速モードと高速モード

攻撃者はトンネルを調整します。低速・低頻度のプロファイルでは、ボリュームのしきい値を回避するために1分あたり数回だけクエリを送信します。これは、認証情報や鍵のような少量の秘密情報を密かに窃取するのに適しています。

高スループットのプロファイルでは、対話型C2や大量転送のためにクエリ数を最大化し、ステルス性と引き換えに速度を高めます。検知ロジックでは、両方の極端なパターンを捉える必要があります。

検知シグナル:エントロピー

エンコードされたサブドメインはランダムな文字列のように見えるため、自然なドメイン名と比べてエントロピーが高くなります。ラベルごとにシャノンエントロピーを計算することは、有力なヒューリスティックです。

正規の名前は、発音しやすくエントロピーの低い文字列になる傾向があります。一方、xj4k9d2mq7zp1.tunnel.evil.comは目立ちます。サブドメインのエントロピーが調整済みのしきい値を超えるドメインを警告対象にします。

検知シグナル:ボリュームと長さ

その他の行動指標は次のとおりです。

  • 1台のホストから単一ドメインへのクエリ数が異常に多い。
  • 255バイトの上限に近い長いクエリ名。
  • TXTまたはNULLレコードの使用が不釣り合いに多い。
  • 1つの親ドメイン配下に一意なサブドメインが多数ある(カーディナリティが高い)。
  • 登録されたばかり、または評価の低いドメインへのクエリ。
# Top talkers by unique subdomain count per parent domain
sort dns.log | awk '{print $domain}' | sort | uniq -c | sort -rn | head

送信元フィルタリングが有効な理由

エンドポイントがインターネット上のDNSサーバーと直接通信することは避けるべきです。すべてのクライアントを内部リゾルバー経由にし、ファイアウォールで外向きのUDP/TCP 53番ポートをブロックします。

これによりDNS通信を管理された集中ポイントに集約でき、そこでログ記録、検査、脅威インテリジェンスの適用を行えます。また、8.8.8.8のような外部リゾルバーをハードコードしたインプラントも機能しなくなります。

多層的な緩和策

複数の制御を組み合わせて、トンネリングを阻止します。

  • 名前解決を集中化し、外部への直接的な53番ポート通信をブロックします。
  • 評判情報フィードを備えたDNSファイアウォール / RPZを導入します。
  • エントロピー、クエリ長、NXDOMAIN率、ドメインごとのカーディナリティについて警告します。
  • 可能な範囲でクエリをレート制限し、サイズに上限を設けます。
  • トンネリングをHTTPS内に隠す、未知のエンドポイントへのDoH通信を監視します。

DoH:検知の盲点

DNS over HTTPSはクエリをTLSで443番ポートへ送信するため、従来の53番ポート監視では何も検知できません。インプラントが不正なエンドポイントへのDoHを使用すると、パッシブDNSログから見えない形でデータをトンネリングできます。

承認済みのDoHリゾルバーにエンドポイントを固定し、管理対象デバイスでは既知のパブリックDoHのIPアドレスやホスト名をブロックし、TLS SNIと宛先の評判を検査することで緩和できます。

理解度チェック

検知の直感力を試してみましょう。

まとめ

DNSトンネリングは、クエリのサブドメインと応答レコード(TXT、NULL、CNAME)を悪用して、情報窃取やC2のための秘密通信チャネルを作ります。スループットが低いため低速ですが、ステルス性に優れています。iodineやdnscat2などのツールは、特徴的なパターンを残します。

エントロピー、クエリ長、ボリューム、カーディナリティの分析で検知し、集中型リゾルバー、送信元フィルタリング、DNSファイアウォール/RPZ、DoHの制御で防止します。次は、DNSSECとフィルタリングが名前解決システム全体をどのように防御するかを見ていきます。

無料で開始

AI チューターと学ぶ Cyber Security Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
76
レッスン
303

よくある質問

「DNSトンネリングと情報窃取」レッスンは無料ですか?

はい。「DNSトンネリングと情報窃取」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「DNSトンネリングと情報窃取」で何を学びますか?

DNS経由でデータを密かに持ち出す方法を学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「DNSトンネリングと情報窃取」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. DNSの仕組みとリスク
  2. DNSスプーフィングとキャッシュポイズニング
  3. DNSトンネリングと情報窃取
  4. DNSSECとDNSフィルタリング
← Cyber Security Academyに戻る