「Amazon Dash Button」(以下、Dash Button)はアマゾンジャパンが2016年12月5日に発売したデバイス。ボタンを押すだけで自動的に無線LAN経由でインターネットに接続し、Amazon.co.jpに、特定の商品を注文するデバイスである。利用者は「Amazonプライム」会員に限られており、500円で販売されているが、初回注文時に500円の割り引きが適用されるので、実質無料で利用できる。今回は「IoT開発キットで遊ぼう!」の番外編として、執筆者であるGMOインターネットの技術者、新里祐教氏にDash Buttonを遊んでもらった。後編ではダッシュボタンが通信先を見付けるのに使うDNSを入れ替える「DNSハイジャック」というテクニックを使って、インターネットへの通信をハックしてみる。

 前回、Amazon Dash Button(以下Dash Button)の動作を解析して、ボタンを押したときにプレゼンテーションのスライドをめくるハックを実現した。このときはDash Buttonがボタンを押したときに送信するARPを監視した。いわば、LAN内の通信をハックしたといえる。今回はDash Buttonのインターネットへの通信をハックしてみる。正しいサーバーと通信していると思い込ませてボタンの動作を監視する。

Amazon Dash Button
Amazon Dash Button
[画像のクリックで拡大表示]
Amazon Dash Buttonの内部基板
Amazon Dash Buttonの内部基板
[画像のクリックで拡大表示]
「Amazon Dash Button」はボタンを押すだけで特定の商品をAmazon.co.jpに発注できるデバイス(左)、中身は500円で販売されているとは思えないほど高機能だ(右)
▼ARP 無線LANやイーサネットにおける所在地であるMACアドレスを知る仕組み。インターネットのアドレスであるIPアドレスは、無線LANが利用するMACアドレスに変換しないと通信できない。ARPはAddress Resolution Protocolの略。

違うサーバーに接続させる

 Dash Buttonに「正しいサーバーと通信していた」と思い込ませるには、Dash Buttonの通信の宛先を変更する必要がある。具体的には「dash-buttun-jp.amazon.com」だと詐称するサーバーを動かして、そこで通信を完了させてしまえばよい。そのためにはDNSサーバーを動かし、dash-buttun-jp.amazon.comのIPアドレスを正規なDNSサーバーの代わりに答えてしまえばよい。

DNSで宛先を変えて状態を取得する
[画像のクリックで拡大表示]
DNSで宛先を変えて状態を取得する
▼DNSサーバー IPネットワークで名前解決をするためのサーバー。DNSはDomain Name Systemの略。