見えないところから訪れる不具合…
日頃、自分よりも 2 歳しか若くない年寄りな車に乗っています。とはいえこの子は、私とは異なり過去 10 年でたったの 3 回しかレッカー車による移動のお世話になっていない優良健康児なんですが、今年の年明け、久しぶりに不具合が発生しました。今回は移動が出来なくなるほどのトラブルではないものの、アイドリングせず信号待ちのたびにエンジンがストールして停まってしまいます。アクセルを多めに吹かしておけば走れる状態なので、なんだろうか?とエンジンルームを開けてみてみるも素人目には問題が見つけられません。仕方なく、信号待ちのたびにアクセルを大きく吹かして無駄に前方車両にプレッシャーをかけつつ(その節は失礼いたしました…)、お世話になっているお店に持っていって見てもらいました。結果としてはインジェクションにつながっているエアホースの「裏側」に亀裂が入っていて、そこからエアーが漏れているがゆえにアイドリングしないという結論で、軽整備にて無事復活を遂げました。分かってしまえばなんてことのない対処のし様がある故障でしたが、見えないことには如何ともし難い、という一幕でした。
皆さまのシステムにおいても同様な事の無きよう、我々 VMware は過去いくつかの Blog や IT 価値創造塾における記事にて警鐘を鳴らさせていただいてまいりました。
・CISOがランサムウェアの対策としてラテラルセキュリティに注目する理由
・ランサムウェアの脅威に備えるセキュリティ対策 – ネットワーク編
・インフラにもゼロトラストを:ラテラルセキュリティでシステム内のブラインドスポットを消し去ろう(前編)
・インフラにもゼロトラストを:ラテラルセキュリティでシステム内のブラインドスポットを消し去ろう(後編)
・NDR ( Network Detection and Response ) の正しい実装とは
・VMware NSX による ”仮想パッチ” で脆弱性対策にアジリティを
“攻撃者はすでにシステム内部に侵入しているという前提での対処が必要”という具体例の一つとして、今回は古くからある攻撃手法ではあるものの未だに攻撃者グループで便利に利用されることの多い、DNS トンネリングとその対処方法例についてご紹介させていただきたいと思います。
DNS を利用した通信、DNS トンネリングとは
DNS トンネリングは、DNS プロトコルを利用してデータを転送する技術です。通常、DNS は、IP アドレスとドメイン名を変換するための、所謂インターネット上のアドレス帳のように使用されますが、DNS トンネリングでは、DNS の問い合わせ(DNS クエリ)にデータをエンコードして送信できる仕組みを使用します。
攻撃者がこの仕組を悪用する場合、
1. 攻撃者は悪意のあるプログラムを被害者のコンピュータにインストールし、そのプログラムが C&C サーバーと通信するために、エンコードされたデータを埋め込んだ DNS クエリとして送信します。
2. 悪意のある DNS サーバーは、エンコードされたデータを受信し、解読して処理をします。そして DNS リクエストに対する応答として、別のエンコードされたデータを返します。
3. クライアントはこの DNS 応答を受け取り、それを解読してデータを取得します。
このように DNS クライアントとサーバー間で通信チャネルが構築され、C&C の司令を送受信したり、実際のデータの抜き出しに利用されたりします。
DNS トンネリングの主な課題は、セキュリティ上の問題です。DNS トンネリングが使用される際、ネットワーク機器や管理者には一見通常の信頼された DNS 通信のように見えうるため、ファイアウォールやセキュリティソフトウェアによってブロックされない可能性があります。また、一般的なネットワーク環境では、常に大量の DNS クエリが送受信されており、これらの中から問題のある通信を判別することが難しい背景があります。これらの事情により攻撃者は、DNS トンネリングを比較的容易に悪意のある目的に使用することが可能となっています。
DNS トンネリングを悪用したデータ抜き出しのデモ
より具体的なイメージを持っていただくために、簡単なサンプル構成を用意して DNS トンネリングによるデータ抜き出しを行うデモをご用意いたしました。ここでは DNS トンネルを構成するツールとして、DNSCAT2 というアプリケーションを使用します。
まず攻撃者は、悪意のある DNS サーバーとして、DNSCAT2 を動作させたサーバーを用意します。次にこの例では、”malicious.nsxlab.tokyo” というサブドメインに対する名前解決の権限移譲を上位の DNS サーバーに NS レコードで登録します。これだけで攻撃者側の準備は完了します。
次に侵害された想定のクライアント側ですが、DNSCAT2 のクライアントアプリも存在していますが、このデモではよりエンドポイントセキュリティに検知されづらい、ファイルレスマルウェアとしてPowerShell によって DNSCAT2 サーバーに接続するスクリプトを実行します。
この間のクライアントと DNSCAT2 サーバー間のやりとりは、DNS プロトコル(UDP 53)を介して行われるため、一般的な境界型 Firewall や VMware NSX による分散 Firewall だけでは脅威に気づくことが出来ず通常の許可された DNS プロトコルとして転送してしまい、DNSCAT2 とクライアント間で通信チャネルが出来上がってしまいます。
攻撃者はこの通信チャネルにより外部の C&C サーバーからクライアントへのリモート制御、およびデータの不正転送・抜き出しを実行できます。
前述のとおりこれら一連の攻撃は、UDP53 を利用した DNS プロトコルとして転送されており、実環境では大量に転送されている DNS の Noisy なトランザクションに対して注意を向けていないとこれら悪意のある行為を見逃してしまい攻撃が行われていることすら認識できないかもしれません。これが DNS トンネルのセキュリティ的な課題となります。
上記で解説した一連のデモ動画をこちらに掲載してあります。より詳しい動作をご確認されたい場合はこちらを御覧ください。
↓
https://juku-jp.vmware.com/video/lateral-security-alert-demo-001/#h201
見えないところから忍び寄る脅威…
このように、侵入型ランサムウェアに代表される昨今の高度化された脅威は仮に NSX の分散型 Firewall によるマイクロセグメンテーションを配備していたとしてもその防御網をくぐり抜けて攻撃を実施してきます。 攻撃者は許可されたプロトコルで、許可されたホストに対して、いつもと変わらない※通信量で攻撃を実行してきます。
※この Blog で紹介しているデモビデオではファイルの抜き出し時に DNS クエリが大量に発生していますが、このトランザクションをランダムなインターバルを置いて実行し緩やかにデータを抜き出す手法や、一つの宛先だけではなく複数宛先へのDNSクエリに分散してデータを転送する方法、Https 上で DNS トンネリングを実行する方法、など、様々な種類の検知防御回避テクノロジーが報告されています。
このように高度化された攻撃に対処するには何が必要でしょうか?
考慮すべきポイントはインフラ・システム内におけるブラインドスポットの徹底的な削減です。通常、ネットワーク通信に対してすべてのトランザクションを監視対象にするためにはTAPやミラーリングを駆使せねばならず、コスト的にもネットワークデザイン的にも制約が発生してしまい、妥協を余儀なくされます。その妥協にこそブラインドスポットが発生してしまいます。
ただしオンプレ、および VMware Cloud における vSphere 基盤においては、NSX を利用することですべての通信を精査対象とすることが可能で、これによりシステム内のブラインドスポットを完全に消し去る事が可能です。
もちろんこの Blog でご紹介したような許可されたプロトコルを利用した悪意のある内部通信もこの NSX による分散 IDPS を利用することで即座に検知、Block することが可能となります。
見えないところから忍び寄る脅威に対処するのはなかなかに難しいことですが、見えないところ=ブラインドスポットを極限まで消していくことは、NSX さえあれば意外と容易に実施が可能なのです。
分散型 IDPS によりこの攻撃を如何に検知・Block し、Alert を発呼できるか、についてより詳しい動作をご確認されたい場合はこちらを御覧ください。
↓
https://juku-jp.vmware.com/video/lateral-security-alert-demo-001/#h202
まとめ
今回は DNS トンネリングという非常に Basic な技術を利用して許可されたプロトコルを介した攻撃事例をご紹介しました。DNS トンネリングの脅威が報告されたのは、2000 年代初頭と言われています。それ以来、DNS トンネリングは悪意のある攻撃者によって広く利用される脅威の一つとなっており、なおかつ最近でもいまだ以下のような攻撃者グループによって利用されていることが報告されています。
APT29(Cozy Bear):2020 年に発生した米国の連邦政府機関へのサイバー攻撃(ソーラーワインズ攻撃)では、APT29 が DNS トンネリングを使用して、C&C サーバーと通信を行っていたことが報告されています。
Lazarus Group:北朝鮮に関連するとされる Lazarus Group は、DNS トンネリングを使用して、スパイウェアやランサムウェアを配信したり、機密情報を盗んだりすることが知られています。
FIN7:FIN7 は、DNS トンネリングを使用して、クレジットカード情報を盗むマルウェアを配信することが報告されています。
Sea Turtle:2019 年に報告された Sea Turtle 攻撃では、DNS トンネリングが使用され、世界中の政府機関、エネルギー企業、宇宙関連企業などの標的になっていました。
ShadowPad:2017 年に発覚した、中国に関連するとされる ShadowPad 攻撃では、DNS トンネリングを使用して、マルウェアの C&C サーバーと通信していたことが報告されています。
etc,etc…
(これらの攻撃は、DNS トンネリングが使用されたいくつかのサンプルですが、実際にはその他の攻撃方法も併用されて攻撃キャンペーンが構成されています。)
古くからあるよく知られた攻撃手法であるDNSトンネリングのような技術が現代においても悪用され続けている背景はどこにあるのでしょうか?
それは、許可されたプロトコルを介した攻撃に対する効率的、かつコスト的に実現可能な現実的な防御手段がこれまでなかったことがあげられるのではないでしょうか。そんな市場的な背景を考慮して開発・販売されている NSX Security、次期 vSphere 更改や Upgrade のタイミングでは是非ともご検討いただくことをお勧めします。
(エンジンルーム内のエアホース亀裂に気がつくことさえできれば、ガムテープ巻くだけで対処が可能になりますよ…)
今後も今回のような実際の攻撃手法・侵害事例を参考にした攻撃サンプルをいくつかのデモ動画でご紹介していく予定ですので続編もぜひお楽しみに。