ラックは2月1日、遠隔操作ウイルス(RAT:リモートアクセスツール)でDNSトンネリングを使った攻撃が行われてるとして注意喚起を行った。同社の調査でこの手口が使用されたケースは初めてだという。

同社は、昨年後半に大手企業の複数社から「PCで不審なソフトウェアが動作している」として調査を請け負い、今回のRATを確認した。攻撃者は、DNSサーバーを模したC&Cサーバーを構築して、企業内部で活動するRATが通常のDNS要求に見せかけたリクエストをC&Cサーバーのドメインに送信することで、指令の通信を行っていた。

DNS(Domain Name Server)は、Web通信に欠かせないシステムで、ネットワーク上のドメイン名やホスト名と、IPアドレスの参照管理を行っている。DNSへのアクセスを防ぐためには、攻撃者が用意したDNSサーバーのドメイン名を確認する必要が有る上、ドメイン名が把握できてもアクセス制限は簡単ではないとラックは指摘。DNSサーバーを企業内部ネットワークに構築していても、DNSの動作履歴をログとして記録することは多くの企業が行っていないため、不正なDNSアクセスの把握が難しいという。また、DNSはネット接続機能を持つデバイスであれば必ず利用するため、例えばブラウザやメール、メッセンジャーといったアプリ制限を行っていても、RATが実行できればDNSプロトコルを介して遠隔される危険性があるとしている。

今回ラックが検出した遠隔操作ウイルスの行動概要図

検出した不正なDNSパケット

これまでのRATの多くはWeb閲覧時に行われるHTTP(HTTPS含む)プロトコルを使用していたことから、今回のケースが異質なものとなる。ラックによると、攻撃対象となった企業のDNS運用状況を「十分に把握」していたとのことで、DNSパケットを利用してネットと企業内部のネットワーク間の指令のやり取りを秘密裏に行っていた。

ラックが検出したDNSパケットは「通常のものとは考えられないDNSパケット」で、攻撃者が用意したとみられるDNSサーバーに対して、RATがFQDNを含むDNSクエリを模したパケットを送出していた。例として用意された画像では、ホスト名部分が実際のドメイン名から書き換えてあるが、サブドメイン名「abcde」の部分は、標的の企業を特定する文字列か作戦名の可能性があるという(ほかに4つのサブドメインが存在)。

実際のDNSリクエストでは、10秒程度の短い間に指令サーバーとの通信(DNSクエリの送信)が行われており、FQDNのホスト名部分には、暗号化された30字以上の文字列が埋め込まれていた。DNSサーバーが稼働していれば、これらのTXTレコードのクエリを送信したクライアントPCに対して応答があるものの、ラックが検体を解析した段階では、当該DNSサーバーはすでに存在しておらず、指令内容を確認できなかった。

今回のケースでは、C&Cサーバーがすでに存在していなかった

DNSトンネリングへの対抗策は?

ラックはこうしたDNSトンネリングの手法に対する防御策として、「DNSサーバーへのアクセス状況の確認」を呼びかけている。

アクセスログの取得はDNSの負荷増大に繋がるため、サーバーの負担を確認しながら取得する必要があるものの、これを取得して、不正なDNSリクエストの有無を確認する。負荷増大への懸念からログ取得を行いたくない場合は、DNSが使用するポート番号(TCP/UDPの53)のパケットキャプチャを行い、調査する方法もある。

こうして不正なDNSリクエストを確認した場合は、DNSのフォワード制限かファイアウォールなどで指令サーバーへのDNS通信を拒否するように設定する。また、内部DNSにおける名前解決は企業内部ネットワークのみに制限して社外のDNSサーバーにフォワードしない設定を行い、外部Webサイトへのアクセスはプロキシサーバー経由でのアクセスに制限するよう呼びかけている。

また、これは一般的なセキュリティ対策でもあるが、Webアクセスを想定していない制御システムや機密情報の取り扱いシステムにおける内部DNSサーバーの接続状況を再度確認し、外部との接続が必要ない場合には、内部のDNSサーバーを隔離するように呼びかけている。