DNSトンネリングは、DNSの問合せ名(ホスト名)にデータを載せて外へ持ち出す手口です。特別な穴を開けるのではなく、正規の名前解決の流れをそのまま使うのがポイント。だからDNSが許可されている環境では素通りしてしまいます。
先に押さえる
この手口はDNSの名前解決の流れの上に成り立ちます。「端末→自社リゾルバ→権威DNSサーバ」という正規の道を、攻撃者が自分の権威DNSサーバを用意して待ち構える、というのが核です。
データが「問合せ名」に乗って届くまで
1マルウェアが問合せ名にデータを埋める
感染したPCのマルウェア
↓「〈盗んだデータ〉.攻撃者のドメイン のIPは?」
=問合せ名の中にデータを隠す
=問合せ名の中にデータを隠す
自社の外部DNSサーバ正規のリゾルバ(代行者)
2正規の流れで攻撃者の権威サーバに届く
自社の外部DNSサーバ
↓反復問合せ「このドメインの担当はどこ?」
攻撃者の権威DNSサーバ= C&Cサーバ問合せ名からデータを回収
↑応答(返答用のレコード)に指示や返信データを載せて返す
攻撃者は自分のドメインの権威DNSサーバを持っているので、そのドメイン宛の問合せは必ず自分の手元に届きます。問合せ名に載せた文字列がそのまま取り出せる、というわけです。応答にデータを載せれば双方向のやり取りにもなります。
動きで見る
順に追うと、盗んだデータが問合せ名(サブドメイン)に乗って正規のDNS経路を素通りし、攻撃者の権威DNSに抜けて双方向のトンネルが成立する流れが見えます。(図は横スクロールできます)
なぜ関所(FW)を素通りするのか
見抜きどころ
これは不正な通信ではなく、見た目は正規の名前解決です。FWがDNSを許可している限り、通信そのものは正当に見えて通ってしまう。だから対策は「怪しいDNSを個別に止める」のではなく、端末からの直接の外部DNSを禁じ、必ず自社のリゾルバ経由に限定する——つまり経路を絞る方向になります。
大量に持ち出すと現れる「量の異常」
問合せ名に載せられる量は1回ぶんが限られます。だから大量のデータを出そうとすると、次の2つが同時に現れます。
1回あたりの量
- 異常に長いホスト名の問合せ
- 詰め込むほど名前が長くなる
回数
- 特定のドメインに対する多数の問合せ
- 宛先が同じドメインに偏る点が正常時と違う
※「大量のDNSクエリ」だけでは弱い。宛先が同一ドメインに集中する偏りまで押さえると痕跡として的確。