DNS Rebindingを悪用してインターネットからプライベートネットワークへの攻撃

f:id:nanashi0x:20180723194055p:plain

Illustration credit: www.vecteezy.com

medium.com

 

10年以上も前から存在するDNS Rebindingという攻撃をご存知でしょうか?

最初は2007年に公表され、日本でもBlack Hat Japan 2007で金床(かなとこ)氏により「DNS PinningとソケットAPIについて」というタイトルで発表されました。

Brannon Dorsey氏が先日投稿した記事によると、この手法を使ってプライベートネットワーク上のIoT機器やルータを、攻撃者が自由自在コントロール出来るようになってしまうのです。

ですが、一体DNS Rebindingとは、どのような攻撃なのか説明できますか?

この記事では、Brannon Dorsey氏が発見した攻撃手法について、以下の順に説明していきます。

  1. DNS Rebindingとは
  2. DNS Rebindingを活用した攻撃事例
  3. DNS Rebindingの影響範囲
  4. DNS Rebidingに対する対策

DNS Rebindingとは

DNS Rebindingを一言で説明するとDNSを使用して同一生成元ポリシーを回避する攻撃」です。

「同一生成元ポリシー」についての理解なしでは、DNS Rebindingという攻撃手法について全く理解できません。

ですので、簡単に次のセクションで同一生成元ポリシーについて説明します。

同一生成元ポリシー

同一生成元ポリシーとは、あるサイトから呼び出されるリソースが、そのサイトと同一の生成元でないと呼び出せないように制限するものです。

同一の生成元になる条件は、以下の点が全て同一である必要があります。

例えば、hxxp://sample.comhxxp://sample.com/hogeは上記の条件と合致するため同一の生成元となります。

しかし、hxxp://sample.comとhxxps://sample.com/hogeはhttpとhttpsプロトコルが異なるため、生成元が異なります。

同一生成元ポリシーが存在する事によって、悪意のあるサイトにアクセスしたユーザが、同時に開いてるGmailなどの他サイトから情報窃取されることを防ぐ事が出来るのです。

更に同一生成元ポリシーに関する詳細な説明が必要であれあ、下記の記事で詳細な説明をご覧ください。

同一オリジンポリシー - Web セキュリティ | MDN

 

DNS Rebinding

続いてDNS Rebindingの説明に移ります。

この記事の冒頭で、DNS RebindingとはDNSを使用して同一生成元ポリシーを回避する攻撃と説明しました。

具体的な手法については後述するため、このセクションでは簡単に説明しますが、前のセクションで説明した通り、同一生成元ポリシーはホストで判断します。

ですので、悪意を持った攻撃者がサイトを用意して、標的サイトとIPアドレスを単純に同一IPアドレスにしても無意味です。

そこでDNS Rebindingでは、「ある工夫」をします。以下、ステップごとに説明していきます。

 

  1. まず攻撃者は、悪意のあるサイトとDNSを用意して、フィッシングメールなどによりターゲットを悪意のあるサイトへ誘導します。
  2. その後、標的ユーザーが悪意のあるサイトのIPを確認してきた時に、攻撃者が用意したDNSTTLを極端に短くして返答します。
  3. 最後に、TTLが切れて再問合せしてた時に標的サイトのIPを返答します。

 

この様な「ひと工夫」を加える事によって、標的ユーザは標的サイトにアクセスして、標的サイト上のリソースを読み込むことになるのです。

同一生成元ポリシーは違反せずに、攻撃者は標的サイトのリソースを読み込めるようになります。

DNS Rebindingを活用した攻撃事例

続いてこのセクションでは、Brannon Dorsey氏が発見したRadio Thermostat CT50脆弱性(CVE-2018–11315)を悪用する攻撃手法について説明します。

CVE-2018–11315を悪用する攻撃手法は少し長いため、2つに分割して説明します。

f:id:anoymask:20180721235344p:plain

図1 CVE-2018-11315の攻撃手法(その1)



ここでお断りしておきたいのですが、この攻撃は、攻撃者が「悪意のあるサイト」と「DNS」を用意していることが前提で発生します。

それでは以下、攻撃事例の各ステップに関して説明していきます。

 

ステップ1.細工されたサイトへアクセスさせる

XXS(クロスサイトスクリプティング)などにより、細工したサイトにアクセスしてきた標的ユーザを攻撃者が用意したサイトへターゲットを誘導します。

ステップ2.用意されたDNSDNS問い合わせを行わせる

標的ユーザは、攻撃者が用意したDNSへ、IPアドレスを確認するためにDNS問い合わせを行います。

ステップ3.DNS問い合わせに対する返答

攻撃者は用意したDNSで、標的ユーザのDNS問い合わせに対してTTLを1sに設定して返答。TTLを短くするよう設定されているので、標的ユーザはIPを長い間キャッシュ出来ず、再度DNSへ問い合わせしに行かざるを得なくなります。

ステップ4.用意されたサイトへアクセス

標的ユーザはDNS問い合わせしたことにより、攻撃者が用意したサイトのIPアドレスが分かったためアクセスします。

ステップ5.悪意のあるJavascrptiの実行

攻撃者は標的ユーザがアクセスしてきたら、予め用意していた悪意のあるJavascriptを実行します。

このJavascriptが実行されることにより、標的ユーザはJSON形式の{“tmode”: 1, “a_heat”: 95}を含んだPOSTリクエストを繰り返し送るようになるのです。

 

f:id:anoymask:20180722002538p:plain

図2 CVE-2018-11315の攻撃手法(その2)

ステップ6.用意されたDNSDNS問い合わせ

TTLが1sに設定されていたため、キャッシュが消えたので再度IPアドレスを確認しに行きます。

ステップ7.DNS問い合わせに対する返答

攻撃者は、2回目の問い合わせでは攻撃者が用意したサイトのIPアドレスではなく、標的ユーザのプライベートネットワーク内にあるRadio Thermostat CT50のIPアドレスを返答します。

ステップ8.POSTリクエストの受付

攻撃者が標的ユーザのRadio Thermostat CT50のIPアドレスを返したため、標的ユーザは先ほどのPOSTリクエストをRadio Thermostat CT50に対して送ります。

その結果、Radio Thermostat CT50はPOSTリクエストに記載されていたJSON形式の{“tmode”: 1, “a_heat”: 95}を受け付けて、部屋の温度を95℃にする事が出来るのです。

また、この手法を使うと、Radio Thermostat CT50に限らず、標的ユーザのプライベートネットワークに存在するあらゆる機器を操作出来てしまうのです。

 

ここまでDNS Rebindingを悪用した実際の攻撃手法に関して説明してきました。続いて次のセクションでは、DNS Rebindingの影響範囲について説明します。

DNS Rebindingの影響範囲

Brannon Dorsey氏は自身のブログで、Radio Thermostat CT50以外にも人気のあるIoT機器(Google Home、Sonos WiFi Speakersなど)を購入して試してみたところ、「攻撃に成功した」と報告しています。

また、Armis社の研究チームが自社のデバイスナレッジベースのデータを使用して、約5億台以上のデバイスが、DNS Rebindingに対して脆弱であるか調査を実施。

その結果、50%以上のIoT機器が脆弱であったと報告しました。

f:id:anoymask:20180722010746p:plain

 (影響を受けるデバイスとその製造業者。DNS Rebinding Exposes Half a Billion Devices in the Enterpriseより)

f:id:anoymask:20180722012418j:plain

  (Armis社顧客データベース内の脆弱なデバイスタイプの内訳。DNS Rebinding Exposes Half a Billion Devices in the Enterpriseより)

DNS Rebidingに対する対策

※この対策は、「本記事で紹介したDNS Rebindingを成功させる条件」にのみに有効なので注意して下さい。

続いてこのセクションでは、Brannon Dorsey氏のブログに記載されている「ユーザができる対策」について説明していきます。

Cisco社のOpenDNS HomeというフリーのDNSサービスを利用することで、プライベートIPのような不審なIPをフィルタリング出来るようになります。

尚、このサービスを有効にするには、ルータのDNS設定をISPDNSサーバからOpenDNS HomeのDNSサーバへ変更する必要があります。

もし、OpenDNSのようなパブリックDNSサーバを信頼せずに、自分でフィルタリングしたい場合はDnsmasqを使用するか、DD-WRTのようなファームウェアをルータにインストールすると良いでしょう。 

ちなみにBrannon Dorsey氏のブログでは、今回紹介した内容以外にもデモ用のツールが紹介されています。

もし、興味があれば実際にデモ用ツールを動かして見ると面白いでしょう。

 

【参考】

 

Brannon Dorsey氏のブログを読む

(執筆:Anoymask (@UXYEA) | Twitter