脆弱なIoTシステムの設置にはご用心、「Black Hat USA 2021」講演レポート【前編】
カプセルホテルのIoTをハッキング、うるさい隣人をだまらせる方法
2021年09月24日 09時30分更新
便利で安価なIoTデバイスが身の回りに増えた昨今、ホテルなど不特定多数が共用する施設においても、そうしたIoTデバイスを使ったサービスが増えつつある。しかし、設計段階でセキュリティ要件を十分検討しないまま製造されてしまったIoTデバイスも数多く、導入する側がセキュリティ対策を見落としたまま脆弱な状態で運用されているケースも少なくない。
今年8月に開催されたセキュリティカンファレンス「Black Hat USA 2021」では、そんな“IoT問題”の一例を紹介した講演セッションがあった。今回の前編記事ではその内容を紹介する。また後編記事では、その講演内容を筆者が現地で検証した結果をご報告し、この問題について考察してみたい。
快適なカプセルホテルに宿泊、のはずが……?
今をさかのぼること2年前。仏セキュリティ企業LEXFOのセキュリティコンサルタントであるキャスパー氏(ハンドルネーム)は長期休暇をとって、とある国へ観光旅行に出かけた。宿泊先はカプセルホテルだ。
最新鋭のそのカプセルホテルでは、極小サイズの部屋でも快適に過ごせる工夫が凝らされていた。1人で寝泊まりするぶんには十分だ(おまけに安い!)と気にいった同氏は、そのまま数日間連泊し、そこを拠点として観光を楽しむことに決めた。
だが、夜中の2時に問題が発生する。隣のカプセルで電話が鳴り、隣の宿泊客が声高に話し始めたのだ。その宿泊客はキャスパー氏と同じく連泊中。“休暇中の睡眠は大事にしたい派”であるキャスパー氏は、意を決して隣室へ出向き、声のトーンを少し落としてくれるようお願いした。
幸い、隣の宿泊客は二つ返事で快諾。安心したキャスパー氏。しかし、数日後の明け方にまた電話が鳴り、隣人は以前と変わらぬ大きな声で会話にいそしんでいた。まったく、勘弁してよ……。
さすがにイラッとしたキャスパー氏。そんな氏の目に、チェックイン時に渡された「iPod touch」が飛び込んでくる。このカプセルホテルでは、iPod touchにインストールされたリモコンアプリを使って、カプセル内の照明やファンのオン/オフ、ベッドのリクライニングなどが操作できる仕組みになっている。
Black Hatなどのセキュリティカンファレンスでは、ホテルの客室用iPadやインターネット対応テレビなど、IoT機器の脆弱性やバグを指摘、報告する講演がこれまで多数行われてきた。ひょっとしたらここにも脆弱性があり、隣人にいたずらができるかも……。
キャスパー氏はおもむろにベッドに起き上がり、調査を開始した。
IoTコントローラーのWi-Fiが脆弱な「WEP」設定
iPod touchのアプリでカプセル内の機器を操作できるということは、BluetoothかWi-Fiでコントローラーと通信しているはずだ。キャスパー氏はカプセル内を物色するかたわら、Wi-Fiスキャンを実行した。その結果、アクセスポイントモードで動作するNasnos社製のWi-Fiコントローラー「CS8700」が合計119台動いていることが確認できた。
CS8700は、照明調光器や電動カーテンといった複数のデバイスをWi-Fi経由でコントロールできるようにする市販製品である。「119台」の数字はホテルのカプセル数と同じなので、カプセルごとにコントローラーが設置されているようだ。
Web検索でCS8700のマニュアルを探し当てると「既存のWi-Fiネットワーク環境がない場合」と「ある場合」の設置例が図示されている。今回の場合、各カプセルのコントローラーがアクセスポイントとして個別にSSIDを持っているため、前者の構成を取っていると考えられる。つまり、各カプセル用に用意されたiPod touchが、カプセル内のコントローラーと直接Wi-Fi接続しているはずだ。
さらに詳しい設定情報が見られないかと、キャスパー氏はiPod touchの本体機能へのアクセスを試みた。だが、フロントで渡されたiPod touchはiOSの「アクセスガイド」機能でパスコードロックされており、リモコン専用アプリ以外は起動しないようになっている。ロックを解除しなければホーム画面は表示できず、ほかのアプリを起動したり設定を見たりすることはできない。もちろん、ホテルがパスコードを教えてくれるわけもない。
ただし、アクセスガイド機能にも抜け道があった。iPod touchのバッテリが消耗していったん電源が切れたあと、再起動すると、アクセスガイドは無効化された状態で立ち上がる。つまりバッテリ切れの状態に追い込めば、iOSの設定を見ることができる。キャスパー氏はこの手法でアクセスガイドを回避し、Wi-Fi設定をチェックした。すると「ホテル内のWi-Fi」と「CS8700のWi-Fi」の2つが設定されていた。
そしてもう1つ、重要な発見があった。CS8700コントローラーへのWi-Fi接続に使われている暗号化方式が「WEP」だったのだ。WEPは無線LANの古い暗号化方式であり、接続パスワード(WEPキー)は英数字5文字または13文字しか使えないため、ツールを使えば簡単に解析できてしまう。そのため現在はWEPではなく、より強固な強い暗号化方式(WPA2、WPA3)の使用が強く推奨されている。
「WEPであれば、アクセスポイントとデバイスの間の暗号化通信を8万パケットほどキャプチャすればWEPキーを解析できる」。そう考えたキャスパー氏は、アクセスポイントであるCS8700に大量のARPリクエストを実行するJavaScriptを作成し、iPod touchに仕込んで実行。しばらくするとWEPキー解読に必要な量のパケットがたまり、ほどなくして解読に成功した。このWEPキーを使って、自分のカプセル内にあるCS8700に接続できることも確認した。
機器の操作コマンドや設定変更を調べてみる
続いてキャスパー氏は、iPod touchの専用アプリからコントローラーにどのような操作命令(コマンド)が送信されているのか、双方の間で流れるトラフィックを調べてみることにした。
とはいえ旅行中の身であり、高度な機材を持ち合わせているわけではない。ここでは手持ちのAndroidスマホやノートPCを組み合わせて、即席のMITM(Man In The Middle)環境を作り上げた。iPod touchとCS8700の間を流れるすべてのトラフィックを、中間にあるノートPCで傍受する仕組みだ。通信が暗号化されていなければ、アプリの操作ボタンをタップするたびに送信されるコマンドが観察できるはずだ。
実際にトラフィックを観察してみると、CS8700はTCP 8000番ポートで操作コマンドを受け付けており、接続時の認証や通信の暗号化は特に行われていないことがわかった。つまり、手元にあるiPod touchが隣のカプセルにあるCS8700にWi-Fi接続できれば、そのまま操作できてしまうわけだ。さらに操作コマンドもすべて把握できたので、自動操作するスクリプトも簡単に書けてしまう。
これと並行して、Google Playストアで一般公開されている専用アプリも入手し、機能を精査したうえでリバースエンジニアリングも試みた。ここでも新たな発見があった。
このアプリには、CS8700にコントロール対象の機器を登録する機能がある。その設定情報は、アプリからCS8700のUDP 988番ポート(Simple-WiFi UARTのRemote Configuration Serviceポート)宛てに送信されるのだが、ここにも認証の仕組みはなかった。つまりこのコントローラーは、同じネットワークに接続された不特定多数のアプリから設定変更を受け付けてしまう仕組みである。先ほどと同じようにして設定変更の通信を解析すれば、CS8700にひも付けられたコントロール対象機器を書き換えることも簡単にできそうだ。