Security blog by Ierae Security,Inc.

脆弱性診断技術や関連情報を発信するブログメディア

PHDays8 CTF参戦レポート

2018年5月15日(火)・16日(水)の2日間、ロシア・モスクワにて世界のデジタル技術におけるセキュリティに関する国際会議『PHDays *』が開かれました。
主催者は、ロシアを拠点に情報セキュリティ分野に特化したソフトウェア開発を手がけるPositive Technologies。2011年から毎年開催されており、今回が8回目となります。地元ロシアの企業の他、IBM・マイクロソフト・カスペルスキー・トレンドマイクロ・マカフィー・シスコシステムズなど、そうそうたる企業がスポンサーおよびパートナーとして名を連ねています。

*「Positive Hack Days」の略

会場では、数々のフォーラムやエキシビションの他にミニコンサートやゲーム大会などが開かれ、大いに盛り上がりを見せました。
同時に開催されたCTFでは、テーマ別に構成された計15のチャレンジに1,000人以上のエンジニアが参加し、熱戦を展開。
弊社エンジニアは、次世代の電力量計として我が国でも普及が進むスマートメーターをテーマとしたCTFに参加し、初出場ながら2位に入賞することができました。

当エントリーでは、その模様をご紹介します。

CTFの概要

スマートメーターが設置された住宅、太陽光発電システム、余剰電力の売電先である変電所、EV(電気自動車)を充電するスタンドなどが存在する街で、電力の「発電」「消費」「売電」という一連の電気の流れをいかにハッキングするかによって順位を競います。


屋上に太陽光発電パネルを設置した二つの住宅の間で変電所が稼働中。左の住宅では、パネルとスマートメーター(白い箱)がシリアル-Ethernetで接続されており、その間には太陽光発電のON/OFFを切り替える機器(透明の小さな箱)が設置されている。

会場には、スマートメーターをはじめとする機器が、実際の街をイメージしやすい形でレイアウトされています。住宅内のスマートメーターをはじめ、すべての機器が実際にロシア国内で使用されている製品です。

勝敗の基準ですが、単にセキュリティの脆弱性を突いてハッキングに成功するか否かではなく、ハッキングによって量が改竄された電力の売却金額で順位が決まります。いかに多くの電力量=売電金額を稼ぐかは、参加者の技術とアイデア次第です。

以下、攻撃対象について、個々に説明していきましょう。

スマートメーター

住宅の屋上に太陽光発電パネルがあり、スマートメーターとシリアル-Ethernetで接続しています。また、太陽光発電のON/OFFの切り替えは、Raspberry Piベースでつくられた機器で行います。


太陽光発電のON/OFFを切り替える機器(Raspberry Piベース)。脇を通る白い線上のランプが点灯し、発電がON状態であることを示している。

まずは、電気の流れの中で川上にあたる発電システムを乗っ取ります。そのためにRaspberry Pi機器のハッキングが必要になりますが、こちらは辞書攻撃によりパスワードの取得に成功しました。

次に、電気の発電・消費・売電をコントロールするスマートメーターへの侵入を試みます。これについては、スマートメーターが市販のものということで、そのメーカー名と型番からある程度の情報を得られます。そこで、入手した仕様書に記載のあった管理ツールを当方のPCにダウンロード。これを用いて、既知のIPアドレスからスマートメーターにアクセスします。


スマートメーター。今回のCTF用につくられたものではなく、既にロシア国内で既に実用に供されている製品。

管理ツールではいろいろなパラメーターを操作してみましたが、そのうち使用量のパラメーターを操作することで電気の使用量を自在にコントロールできることが判明。これにより、例えば実際は電気を消費しているのに使用量をマイナスにし、電力会社への売電を捏造して報酬を得ることが可能になります。


スマートメーターの設定画面。電力の計算方法をはじめ、細部に至るまで設定が可能。

この攻撃手法ですが、CTFの運営サイドは容易なものと考えていなかったようです。これは、一人の参加者がスマートメーターに一つのポートを経由してアクセスしてしまうと、他の参加者はいくらポートスキャンをしてポートの空きを見つけても実際には接続できないためです。管理ツールを入手できたところで、スマートメーターにアクセスできなければ何もできないのと同じです。

それでも、デフォルトのパスワードを使って管理画面に入りRebootをかけることで、すべてがリセットされます。そうしてスマートメーターが再起動した直後の10秒間に接続できなかったポートへいち早くアクセスすれば、パスワードなしでも攻撃ができるようになります。

この攻略方法については、ロシアでも著名なITセキュリティ関連のWebサイトで取り上げられ、後でインタビューが掲載されることとなりました。

EVの充電スタンド

事前に与えられている情報は、機器固有のIPアドレスのみ。先述のスマートメーターや当CTFの参加者が属するネットワークとは、別のネットワークに属しています。


カラフルなデザインが目を引く、EVの充電スタンド。フランスの大手重電メーカー、シュナイダーエレクトリック社が『EVLink』というブランドで市場展開している。

そこで、まずは充電スタンドが属しているネットワークへの接続を試みます。空きポートを調べたうえで接続し、そのネットワーク内に立っているWebサーバからネットワークの管理画面にアクセスします。これは、よくある無線LANルーターの親機やモバイルルーターの管理画面と似たようなものです。

次に、ユーザー名とパスワードを調べます。管理画面のページのソースやログインなしでも見られるページなどをあたると、ログインが不要のディレクトリに設定ファイルが保管されていることが判明。早速そのファイルを開いたところ、「ユーザー名+パスワードのハッシュ値」らしき形式で記載されている文字列がいくつか目に留まりました。ユーザー名は充電スタンドのメーカー、パスワードは簡単な数字の羅列です。
それを使ってログインに成功し、管理画面を詳しく見てみたところ、EVや充電に関してさまざまな偽装が可能なことが判明しました。具体的には次のとおりです。


充電スタンド『EVlink』へログイン後の画面。

●EVと充電スタンドとの接続

EVの急速充電に関わる規格として、『CHAdeMO(チャデモ)』というものがあります。この規格に対応したEVの充電プラグと充電スタンドのソケットを接続すると、通常はロックがかかりますが、このロックを解除できなくすることができます。
他には、自分の後に充電ソケットを接続したEVに対して、ウイルスファイルを送信するなどの攻撃を仕掛けることも可能です。

●充電時の認証

充電スタンドにはカードリーダーが装着されていますが、ここでカード情報を読み取ることにより、特定のカードにのみ充電→課金がされるようになっています。ところが、本来は認証されないカードでも他人のカード情報を用いて充電ができるようになります。
また、「マスターカード」と呼ばれる管理用のカードの情報を入手し、それを悪用して充電し放題にすることもできます。

●充電状況

通常はEVのバッテリー残量を計測し、不足分の電力量を計算して充電を行いますが、この仕組みを解除して過充電を行えるようにします。
また、実際には充電を行っていないのに行ったことにして、不当な課金を発生させることも可能です。

変電所

電力を買う、いわゆる受電設備にあたります。こちらにもスマートメーターが設置されており、攻撃の対象となります。


変電所内のスマートメーター。こちらも既に実用に供されているもの。

システムはLinuxベース。取扱説明書を一読したところ、ログインできるユーザーが4つ用意されていることが判明しました。ひとまず、権限の最も低いユーザー名でログイン。ネットワーク上にあるConfigファイルをダウンロードし、改変を加えてアップロードすれば、侵入は可能です。

ここでDoS攻撃を仕掛けることも可能な状況でしたが、他の参加者の取り組みを妨害するのは禁止。売った電力の量=報酬の額で勝敗が決まることもあり、そうしたことは行いませんでした。

どの攻撃対象も、既にロシア国内で実際に使われている機器とのこと。「そんな物の脆弱性を暴露して大丈夫なの?」と思われるかもしれませんが、そもそもこのCTF自体「現在実用化されているスマートメーター関連システムの脆弱性を啓発すること」に主眼が置かれています。人工的につくられたセキュリティホールを攻撃させることで参加者の技術力を試す一般的なCTFとは、運営の目的が異なるのです。

苦労したこと

メンバーの中にロシア語に明るい者が一人しかおらず、いきなり言葉の壁に直面することになりました。ドキュメント等の一部は英語で記されているとはいえ、問題の意図や回答方法はロシア語ですので、読んで理解するうえでは出遅れの要因となりました。

それが如実に現れたのが、EVの充電スタンドのハッキング。機器ごとにさまざまな脆弱性と攻撃手法を見つけましたが、それらはいずれもCTFでの順位を上げることに直接つながる要素ではありませんでした。あくまで「電力を電力会社に売って得られる報酬の額」によって順位が決まるものであり、充電スタンドのシステムを乗っ取ること自体は評価の対象になりません。

実は、我々はずっと首位を走っていたのですが、終了まで残り10分のところで地元・ロシアのチームに逆転を許す形となりました。ハッキングした機器の数では我々が上回っていましたが、不正に発生させた電力量が大きい(=より多くのポイント数を稼げる)変電所をハッキングしたことで、我々を上回ったのです。

「ロシア語を理解できていれば、もう少し良い戦いができたのに……」と、今でも悔しさが残ります。


電気の使用量の推移を示したグラフ。左下と右下の表は、各チームのスコアを示したもの。

戦いを振り返って

今までスマートメーター関連のセキュリティ診断で実績を有していなかった我々にとって、EVや充電スタンドがはらむ脆弱性を認識できたのは収穫でした。今後この分野においてもサービスを展開していくうえで、貴重な経験ができたと思っています。特に、充電スタンドからここまで容易にハッキングができてしまうというのは、大きな発見でした。

一般に、ITの世界では製品やサービスの利便性が増すほどリスクも高くなります。ソフトウェアが多機能になれば、その分バグが増えやすくなるのと同じです。
スマートメーターと同じく電力関連でいえば、PLC(高速電力線搬送通信)では家庭のコンセントに専用のアダプターを挿すことでインターネットへの接続が可能になります。これは、家庭内LANが電力線を経由したハッキングの危険に晒されることをも意味します。住宅内の電気配線が外部からの侵入者を招くなど、昔であれば考えられなかったことです。

今回、CTFへの参加を通じてスマートメーター関連のセキュリティ技術でノウハウを吸収し、しかも初出場ながら2位を確保することができたのは、今後の我々の事業展開を考えるうえで大きな転換点になったと考えています。

ちなみに、PHDaysのCTFに参加した日本人は、我々が唯一でした。これは、中国・北京で開催された『DEF CON China』(5月11~13日)と日程が重なったためです。『DEF CON』のほうが歴史が長く、セキュリティ関連のイベントとして世界的に有名です。それに、モスクワよりも北京のほうが日本から近く、滞在期間が15日以内であればビザ不要というのも理由の一つでしょう。

今後の展望

来年は、スマートメーターではなく原子力発電所のCTFに参加する予定です。

原発といえば、ちょっと興味深い話があります。
ロシアでは、原発のメーカーがリリースを前にした自社の技術や製品をCTFの攻撃対象として開放します。「ハッカーの皆さん、もしセキュリティホールがあればどうぞ攻撃してください」という訳です。言い方を変えれば、ゼロデイ攻撃を厭わないということです。これによって、腕利きのエンジニア達から無料でセキュリティ関連の脆弱性を指摘してもらえて、品質改善に役立てることができますから。日本でも行われているバグバウンティ(脆弱性報奨金制度)と同じですね。
日本ではどうでしょうか。大手メーカーがそこまでオープンな動きをすることは、まずありません。技術情報は基本的に社外秘にして、大々的に外部の力を借りた形での品質管理は行わないですよね。これこそ、国民性の違いだと思います。

あと1年で言葉の問題をどうクリアするか悩ましいところですが(笑)、来年のCTFでどんなことができるか今から楽しみです。