ssmjp 2019/04 参加記 - 黒塗りのDNS
ssmjpに参加しました
ささみのほん!
— debiru / でびる (@debiru_R) 2019年5月21日
アウトプットしないのは知的な便秘! pic.twitter.com/Dskyy1Ffs3
「ささみjp」のDNSの回に行ってきました。「#ssmjpとは」にちらっと書いてあるけど、新橋で開催されていた勉強会で Shimbashi-Study-Meeting 略して ssmjp らしいです。
- @sischkgさん
- @fj_twtさん
- @tss_ontapさん
「浸透いうな」の @tss_ontap_o さんが「黒塗りのDNS (萎縮編)」をこの ssmjp で発表すると聞いて参加しました。
浸透いうな
ssmjp のDNS回は4月23日にイベントがありましたが、私は、すでに5月も中旬を過ぎた今この記事を書いています。ブログ枠で参加しているのに遅くなって申し訳ない。
5月の上旬に別のイベントでDNSの発表をする予定があったので、その資料をこのブログ記事でも使おうと思って ssmjp のブログ記事を後回しにしてしまったのです。
ということで、DNSのことをほとんど知らない人に向けて「浸透いうな」がどういう意味なのかを垣間見れる「LT資料」を作ったのでご覧ください。
更に、もう少しだけ詳しく何が起こっているのかを書いてみた記事があるのですが、これは「LT資料」を作る前の下書きのようなものなので、現状のバージョンでは理解しづらいかもしれません。今後更新予定です。
このイベントに参加されている人には「浸透いうな」などという必要もないと思いますので、次のセクションの話をしましょう。
ドメイン名を攻撃せよ
ドメイン名とは、例えば debiru.net
です。このドメイン名の管理者は私です。twitter.com
の管理者は Twitter 社です。
ある時に、他人が管理するドメイン名を乗っ取れるでしょうか。例えば http://twitter.com/
にアクセスした人に「私」が作成した偽ページを表示することはできるでしょうか。
ドメイン名の乗っ取りは、サブドメイン名でも構いません。一般に、サブドメイン名は親ドメイン名(頂点ドメイン名)の管理下と考えられます。つまり、hoge.twitter.com
だけでも乗っ取ることができれば「攻撃者」の勝ちです。
ドメイン名を乗っ取るには、DNSを乗っ取ればよいことが思いつきます。ドメイン名の情報(A/AAAAレコード、MXレコードなどの値)を偽装することができれば、利用者には偽装した値が返されるわけですから乗っ取れます。
DNSキャッシュポイズニング攻撃
DNSには「権威DNSサーバ」と「キャッシュサーバ」があります。
例えば、ブラウザの利用者がブラウザにURLを入力したとき、そのURLのホストがドメイン名であった場合には、そのドメイン名に割り当てられているIPアドレスが何かをブラウザは(スタブリゾルバを介して)解決しようとします。
スタブリゾルバは、ローカルのhostsファイルにそのドメイン名のエントリがあればその情報を利用します。なければDNSフルリゾルバ(キャッシュサーバ)に問い合わせて、キャッシュサーバからの応答を利用します。
- ドメイン名の情報(DNSレコード)は、権威DNSサーバに保存されている。
- スタブリゾルバは、キャッシュサーバに問い合わせる。
- キャッシュサーバは、ドメイン名の階層構造に従って、権威DNSサーバを辿って必要な情報を取得する。
ここで言いたいポイントは、スタブリゾルバは権威DNSサーバには直接問い合わせないということです。この話が分からなければ「LT資料」を読んでください。
つまり、ユーザ(ブラウザなどの利用者)が使うキャッシュサーバの情報を偽装・改竄できれば、攻撃者はそのドメイン名を乗っ取れるということです。ここに注目した攻撃がDNSキャッシュボイズニング攻撃です。キャッシュサーバへの毒入れ。具体的な攻撃方法は色々あります。詳しくは http://www.e-ontap.com/internet/ へどうぞ。
ゾーンサーバ乗っ取り
キャッシュサーバではなく、権威DNSサーバ(ゾーンサーバ)を乗っ取ることも考えられます。ドメイン名の登録を行うサービス(ドメイン名レジストラ)が提供するDNS管理サービスを利用している場合、「そのサービスがキャッシュサーバに返す応答」を偽装・改竄してしまえば、結果的にドメイン名を乗っ取ることができそうです。
- ドメイン名レジストラのアカウントを乗っ取る。
- ドメイン名レジストラの不備を利用して、第三者(攻撃者)が他人のドメイン名のゾーンデータを登録してしまう。
- ドメイン名の設定の不備(lame delegation)を利用して、攻撃者がDNSレコードを設定する。
1個目と2個目が可能であった場合、利用者は攻撃を防ぎようがありません。1個目の例としては「VALUE-DOMAINの事例」があります。2個目の例としては「さくらインターネットの事例」があります。
ところで、もし「やっぱり VALUE-DOMAIN なんか使うのは危険だ」などと思った人がいたら注意してください。では一体、どこなら安全なのでしょう。安全なサービスというものが存在するというのは空想かもしれません。それが「黒塗りのDNS」の話です。
3個目は、利用者のミスが存在する場合に、攻撃者が乗っ取れるというものです。信じられないかもしれませんが、クレジットカードの大手である「Visaの事例」がありました。
繰り返し言いますが、これは「Visa〈が〉ひどかった」のではありません。「Visa〈も〉ひどかった」のです。問題のないところがどれだけあるのかはご自身の目で確かめてください。
念の為付け加えておきますが、現在、Visaのサービスに問題があるわけではありません。クレジットカードをご利用の方は本件について心配することはありません。VALUE-DOMAIN も同様です。この記事を理由に「今すぐ VALUE-DOMAIN を使うのをやめるべき」などと考えるのは早計です。
黒塗りのDNS
鈴木常彦先生というのが @tss_ontap さんであって、「黒塗りのDNS」を発表した人であり、Visa の lame delegation 問題を発見して適切に対処した方であり、「DNS温泉」を開催して私にDNSを学習するきっかけを与えてくれた「釘バット」の人です。
語弊があるかもしれませんが、鈴木先生の「黒塗りの話」は次のような経緯がありました。
- 以前は「DNSキャッシュポイズニング」の手法を考察していた。
- 最近は「ゾーンサーバ乗っ取り」の手法がいろいろ見つかってきた。
- そして2019年4月「新たな領域」の攻撃手法を見つけた(黒塗り)。
多くの共用レンタルサーバではDNSを乗っ取るまでもなく、任意のメールを乗っ取り(または盗聴)できるという話です。盗聴の場合、攻撃者が本来の送信先に転送することで利用者は攻撃に気付くことができなくなります(本来の送信元と、転送した元が同一のサーバであるため区別ができない)。
これの怖いところは、twitter.com
を乗っ取るわけではなく、例えば gmail.com
などのメールアドレスの方を乗っ取れるという点です。Twitter を使っているユーザが gmail.com
のメールアドレスでアカウントを作成していた場合にそのアカウントを乗っ取れることを意味します。gmail.com
は例です。どんなメールアドレスでも原理的には乗っ取れます(ゾーンが登録できるという条件付きですが)。
Twitter を例に説明しましたが、実際に Twitter ユーザに対してそのような攻撃はできません。なぜできないかはご自身で考えてみてください。逆に、何ができてしまうのかも考えてください。最後のメッセージはそういうことです。
徳丸さんの記事の最後には、次のような記述があります。
Q5: DNS関係ないじゃん
A5: はい。DNSとは無関係の問題ですが、近隣のテーマだとは思います
すでに説明しましたが、これはもはや「DNSを乗っ取る必要すらなかった」という状況を意味しています(まあ一応、ゾーンの登録をすることでメールの宛先を乗っ取っていますが、従来の毒入れなどとは性質の異なる攻撃方法であると考えた方が分かりやすいと思います)。
もしこの記事をきっかけに、あなたがDNSに興味を持ったのであれば、@tss_ontap(鍵アカウントの方)をフォローすることをオススメします。
ドメイン名の信頼性とは
あなたの管理するドメイン名が乗っ取られないようにすることは大切です。
ところで、あなたのドメイン名があなたのものであることを、利用者はどうやって知ることができるのでしょう。
もし、目の前に twitter.net
というドメイン名があったとして、アクセスしたら Twitter のようなサービスがあったら、あなたはアカウントを登録しますか?
唐突ですが、たこ焼きは好きですか?「築地銀だこ」というお店があります。https://www.gindaco.com/ たこ焼き、おいしそうですね。ぎんだこ・どっとこむ。
後日、「銀だこ」のサイトを見ようとして、http://gindako.com/ にアクセスしたらどうなるでしょう。え?何も問題なくサイトが見られるじゃないかって?
不思議ですね。gindako.com
を管理しているのは「私」なのですが。
おしまい。