orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

AmazonのDNSトラフィック乗っ取り 仕組みについて解説

f:id:orangeitems:20180425134011j:plain

 

Route53のトラフィック乗っ取り

AmazonのRoute53がトラフィック乗っ取りの被害に遭った、と聞くとぎょっとした人が多いのではないでしょうか。AWSの利用者は多いですからね。攻撃の仕組みについて解説します。

www.itmedia.co.jp

AWSのクラウドベースのDNSサービスである「Route 53」のDNSトラフィックが何者かに乗っ取られ、「MyEtherWallet.com」のユーザーが仮想通貨を盗まれる事件が発生した。

 

解説

まず、この問題に関して利用された攻撃手法は「BGPハイジャック」という名前であることをおぼえてください。BGPとはネットワークの中で、ルーティング情報(経路情報)を交換するためのプロトコルです。BGPにて世界中のルーターが会話をすることによって、世界中どんなところにでも、インターネットがつながっていればパケットを届けることができるのです。例えば日本のルーターからブラジルのルーターにデータを届けるとして、直接回線がつながっているわけではないので、日本のルーターから隣接するルーターに転送し、バケツリレーの結果最終的にブラジルに届きます。隣接するルーターは複数あるので、このネットワーク向けのパケットはこちら、というふうな情報をルーター間で普段からやり取りしているのです。

次に、今回Route53が被害に遭っているので、AWSに何か脆弱性があったのかという勘違いをされる方も多いと思うのですが、AWS側には何の非もありません。というのは、ユーザーとRoute53の経路の中で、悪意を持った第三者が誤ったBGPを流し、Route53の経路をねじまげたからです。ということはRoute53に届くまでに攻撃は完結するので、Route53にはどうしようもないのです。これを経路の間で攻撃をすることから、中間者攻撃と言います。中間者攻撃をBGPを使って実施することで、BGPを受け取ったルーターに誤って攻撃者のルーターに流させようとしたわけです。これがBGPハイジャックです。

BGPハイジャックは大昔から起きている攻撃です。詳しい資料を置いておきます。

tech.nikkeibp.co.jp

この例は、パキスタン国内での例ですが、今回のRoute53の一件も全く同じ仕組みが使われていると思われます。ただし今回はYoutubeではなくRoute53のDNSサーバーのアドレスだけだったという話です。

さて、今回のMyEtherWallet.comのフィッシングページリダイレクトについて注目します。Route53への経路が乗っ取られるとなぜ、フィッシングページの話になるのでしょう。通常、ユーザーのDNSサーバーは、Route53ではなくプロバイダー指定のものです。であればRoute53は関係がないはずですが。

この疑問については、1つのことを理解すれば解決します。MyEtherWallet.comのWhois情報を確認します。

Domain Name: MYETHERWALLET.COM
Registry Domain ID: 1953919808_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.godaddy.com
Registrar URL: http://www.godaddy.com
Updated Date: 2018-03-16T01:44:32Z
Creation Date: 2015-08-19T02:37:43Z
Registry Expiry Date: 2022-08-19T02:37:43Z
Registrar: GoDaddy.com, LLC
Registrar IANA ID: 146
(中略)
Name Server: NS-1007.AWSDNS-61.NET
Name Server: NS-1498.AWSDNS-59.ORG
Name Server: NS-1993.AWSDNS-57.CO.UK
Name Server: NS-73.AWSDNS-09.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/

このとおり、Whois上にこのドメインの権威サーバーは、Route53上にあると明記されています。それぞれIPアドレスに変換すると、205.251.195.239、205.251.197.218、205.251.199.201、205.251.192.73です。そうですね、205.251.192.0/21のサブネットのルーティングを捻じ曲げれば、事は済みそうです。

(追記)205.251.192.0/24、205.251.193.0/24、205.251.195.0/24、205.251.197.0/24、
205.251.199.0/24について、ルーティングが流れたようです。こちらのツイート参照のこと。

※注1 ネットワークアドレスを修正しました(2018/4/26 10:54)id:Caldさんご指摘ありがとうございます。
※注2 ソースをもとに再修正しました。id:sora_hさんありがとうございます。このあたり難しい。

そして、捻じ曲げた先に、上記のすべてのIPアドレスのエイリアスを付けたDNSサーバーを立てておいて、このDNSサーバーに、MyEtherWallet.comのドメインレコードを登録します。そのAレコードに、フィッシングサイトへのIPアドレスをしてしておく。

そうすると、他のDNSサーバーはMyEtherWallet.comのレコードをキャッシュしていない限り、この偽DNSサーバーに問い合わせにくるので、フィッシングサイトのIPアドレスを返します。これで偽DNSサーバーの回答は世界中に伝染していくわけです。

フィッシングサイトのサーバーのSSL証明書まで本家から盗んで使っていたら完璧な所業ですが、さすがに今回はそこまではできなかったようで、偽の証明書を食わされているので証明書エラーがブラウザに出たようです。それを気にしないユーザーが騙されて、そこから先はフィッシングの被害に遭った、ということになります。

 

対策は?

ユーザー側とすれば、SSL証明書頼みとなります。この場合、ドメイン名は正しいので注意が必要です。怪しいと思ったら利用を中止しつつ、運営者に直接連絡したほうが良いと思います。

日本においては、JPNICを中心に各ISPと、BGPハイジャックが検知できる対策を行っています。

internet.watch.impress.co.jp

※「BGPsecの最新動向」が最新の状況です

 

現時点でのざっくりした解釈としては、BGPハイジャックに100%の対策が打てることはなく、攻撃はいつ発生しても不思議ではないと理解すべきだと思います。

古くからある攻撃のため、日本においてはかなり対策が進んでいますが、一歩海外に出ると対応できていないところもありそうです。

 

まとめ

今回の攻撃がAWS(Route53)を絡めているため、情報収集されている方も多いと思いまとめました。ご参考まで。