ラック・セキュリティごった煮ブログ

セキュリティエンジニアがエンジニアの方に向けて、 セキュリティやIT技術に関する情報を発信していくアカウントです。

【お知らせ】2021年5月10日~リニューアルオープン!今後はこちらで新しい記事を公開します。

株式会社ラックのセキュリティエンジニアが、 エンジニアの方向けにセキュリティやIT技術に関する情報を発信するブログです。(編集:株式会社ラック・デジタルペンテスト部)
当ウェブサイトをご利用の際には、こちらの「サイトのご利用条件」をご確認ください。

デジタルペンテスト部提供サービス:ペネトレーションテスト

船舶のGPS・AISシステムへの攻撃手法~レッドチーム演習の先生をやってきた!~

しゅーとです。先日、日本で初となる実運航船を用いたサイバー攻撃への船舶防御演習を実施しました。実際に動いている船に対して本気でスプーフィング攻撃を仕掛け、船員がどのように対応するかを考える非常にアツいイベントです。

演習の概要は広島商高専様のプレスリリースをご参照ください。

www.hiroshima-cmt.ac.jp

私は演習で利用する攻撃技術の検討や攻撃ツールの開発、2日目の演習でのレッドチーム(攻撃役)を担当しました。また1日目には受講者への座学のほか、PCを用いて攻撃を行うハンズオンセミナーも行いました。

本記事では私が担当した講義や船舶防御演習の流れを通して、世界でもあまり知られていない船舶への特有の攻撃手法について解説します。

航行を支援するECDISへの攻撃

ブリッジにあるECDISの例*1

船舶には、航行に欠かせない動力や舵のほか、航行を支援する様々な電子機器が存在します。中でもECDIS(電子海図表示装置・エクディス)は重要なもので、物理的な紙海図にかわる電子装置として多数の大型船舶に導入されています。

ECDISは紙海図を単に置き換えるものではなく、レーダーによる障害物や、GPS(GNSS)による自船情報、そしてAISで得られた他船情報を画面上に重畳表示する機能が存在し、船員は画面と目視情報を組み合わせて航行を行います。

AISは船舶間、または船舶・地上局間で船の速度や目的地、船体情報をVHF帯の無線でやりとりする仕組みで、ECDISはAISによって周囲の船舶情報や交通情報を受け取ることができます。

GPS・AIS情報を地図に重畳表示したときの画面。中央の赤い船がGPSによりマッピングされた自船で、周囲の三角(黄・緑)アイコンはAISによりマッピングされた他船

GPS受信機・AIS受信機との接続にはシリアルケーブルによる直接接続方式のほか、新しい船舶においてはTCP/IPでLAN接続されることも増えてきています。

ここで重要になるのがECDISのセキュリティです。ECDISには自船や予定コースが細かく表示されているため、これらが見られなくなると航行に多大な影響を与えます。そのため攻撃者は船舶の航行を妨害するためにECDISに表示される情報をデタラメにしようと企てます。また後述しますが、これらに関連した攻撃の被害事例も実際に複数存在します。

私がまず検討したのはECDISへの攻撃経路です。ECDISの可用性・信頼性を侵害する攻撃といえば、単にECDISという機器そのものや、ECDISアプリケーションが搭載されているホストOS(Windows等)の脆弱性を突いた攻撃が考えられます。しかしそのシナリオだと単なる社内ネットワークのようなレッドチーム演習で終わってしまいます。そこで今回の演習では船舶特有の攻撃として、ECDISに送信されるGPS・AISの通信を侵害し、偽情報を送信することに決めました。

実際の被害事例

GPS・AISともに船舶での被害事例・攻撃事例が存在します。GPSについては現在では陸上・海上問わず日常的に攻撃が行われていますが、海上で船舶が被害を受けた有名な事例として、2017年の黒海上のGPSスプーフィング攻撃が知られています*2

参考文献では、ロシアがアメリカのGPS誘導ミサイルの対抗として各地でGPSスプーフィングをしていることが攻撃の背景として説明されています。つまり攻撃を受けた民間船は電子戦の"とばっちり"を受けた形です。

スプーフィングされた偽座標が空港であることから、その意図にはミサイルだけではなく民生用ドローンを利用した攻撃への対処もあると考えられます。民生用ドローンには空港や人口密集地域を対象に飛行禁止区域が設定され、区域内に入ると自動で着陸するようにプログラミングされています。これを意図的にDoSとして発生させるために座標を空港にしているのでしょう。

この事例をはじめ、今では紛争地域周辺の船舶が毎日のようにGPSスプーフィング攻撃を受けており、アメリカ連邦海事局が注意喚起を出している状況です*3

AISについては明確な被害事例は見つからなかったものの、電子戦演習によるAISスプーフィング攻撃を複数の受信局でキャッチした事例がありました*4

著者は一連のスプーフィングを海軍の電子戦の演習によるものではないかと考察していますが、この先自律運航船・無人航行が現実になるにつれ、攻撃者の目的によっては民間船にもこういった被害が発生することも十分考えられます。

偽電波経由とマルウェア経由

先ほど説明した被害事例はいずれも偽電波を経由した攻撃でしたが、信憑性は確かではないものの、マルウェア経由でECDIS等の機器が攻撃を受けたと思われる事例も存在しています。

ECDISに接続されるGPS・AIS受信機は各電波を受信しますが、受信後はNMEAデータと呼ばれるテキストデータに変換しECDISに送信します。ECDISはNMEAデータをもとに画面上に自船・他船情報を表示する流れとなります。

この経路中で攻撃者が侵害するとなると、被害事例のように物理的に船に近づいてNMEAデータのもととなる偽電波を発信するか、マルウェア等で船内ネットワークに侵入して偽NMEAデータを送信するかの2つのシナリオが考えられます。

偽電波のデモ

偽電波を使ったシナリオは、電波法の兼ね合いや同じ海域を航行する他船への影響を鑑み、1日目の座学で講師デモのみ行いました。

GPSのスプーフィングには中部大学の海老沼拓史先生が開発・公開されているGPS-SDR-SIMをリアルタイム送信できるよう改造したものを利用し、AISのスプーフィングではNMEAデータをビットストリーム信号に変換するツールを自作し、GNU Radioで送信するようにしました。

GPSは仕様として衛星からの電波出力が微弱で受信機でアンプされる特性のため、微弱な出力でもスプーフィングを行うことができます。今回は電磁波シールドとアッテネータを併用することで安全にデモを行うことが可能でした。

しかしAISの偽電波デモは、事前検証の段階で受信のために一定の電波強度が必要であることがわかったため、安全のために同軸ケーブルで送信機・受信機を有線接続することでお茶を濁しました。

1日目の座学の様子

GPSスプーフィングによってECDISとスマホの現在地が関西国際空港に変更された

偽NMEAデータを作成しての攻撃体験

マルウェア経由のシナリオは、1日目のハンズオンセミナーおよび2日目のレッドチーム演習で行いました。このシナリオは内部ネットワークから偽NMEAデータを送信することでECDISを騙します。

GPSとAISは同じNMEAデータフォーマットを利用するものの、そのペイロードは大きく異なります。以下はGPSのGGAセンテンスです。

$GNGGA,070917.00,3542.00772,N,13946.47986,E,1,06,1.33,72.6,M,39.4,M,,*7F

詳細は割愛しますが、GPS受信機からこのようなデータがECDISに送信されることで、ECDISの画面上に自船位置がマッピングされます。GPSのNMEAデータには緯度経度が記載されており(3~6番目フィールド)、可読性があります。

次はAISのVDMセンテンスの例です。

!AIVDM,1,1,,B,16K2wu00299OOmrCK3gVpUOB0HI7,0*50

ECDISがこのデータを受け取ると画面上の特定座標に他船が出現します。GPSのNMEAデータと異なり、ペイロード部が特定の方式によってエンコードされています。そのため可読性がありません。

これらのNMEAデータには規格として電子署名が含まれないため、なりすましが容易という弱点が存在します。よってECDISはネットワーク上からNMEAデータを受け取った場合、NMEAデータが全て正しいものであるとして画面上にマッピングされるのです。座標をヨーロッパに設定したGPSのNMEAデータをECDISに送信すると、たとえ日本にいても画面上の自船がヨーロッパにワープしますし、AISの偽NMEAデータを送信すると、架空の船舶が画面上に表示されることになります。

1日目のハンズオンセミナーでは、NMEAデータの詳細なフォーマットや、船員が困る攻撃の考え方などの攻撃理論を説明。受講者は説明をもとにGPS・AISのNMEAデータを作成し、仮想マシン上のECDISに送信することで攻撃者目線を体験しました。

また攻撃だけではなく、GPS受信機やSDR受信機を利用してのGPS・AIS電波の受信体験の時間も設け、電波や変調などの要素技術の理解を促しました。

見晴らしの良い窓際でAIS電波を受信している様子

実運航船へのスプーフィング攻撃

船に掲げられた横断幕

2日目はいよいよ実運航船への攻撃実践、レッドチーム演習です。演習ではGPSスプーフィング攻撃で自船位置を変更させたり、AISスプーフィング攻撃で大量の架空船舶を出現させました。なお攻撃に際しては関係各所に予め通達の上、安全に配慮しています。

レッドチーム演習は複数回行われました。高専生は複数人でグループにわかれ、インシデントレスポンス役とレッドチーム役の両方を行い、攻撃と防御の両面を深く学びました。

当日の演習を含めた2日間の様子は広島商高専様が作成された10分弱の動画にまとまっています。とても面白いのでぜひご覧ください。

www.youtube.com

下は当日行ったAISスプーフィング攻撃の例です。ターゲットの座標周囲に大量の架空船舶を出現させ、船の運航を混乱させます。

このほか、ターゲットに対して無数の架空船舶が向かってくるような攻撃も行いました。現実ではバレないようにターゲットを誘導するようなスプーフィング攻撃を行うことも考えられますが、今回はインシデントレスポンス演習も行う関係上、あえてターゲットが攻撃を受けたことがわかりやすいようにしています。

またスプーフィング攻撃を受けた際のインシデントレスポンスも高専生が行いました。別の時間で自分で行ったスプーフィング攻撃を別のグループから同じように受けることで、防御側の対応も学びました。

後日行われた高専生の成果報告会では、攻撃者視点に立った攻撃のアイデアや、それに対抗するためのインシデントレスポンスの対応案、そして堅牢な船舶システムや運用方法が次々と提案されました。その中には斬新ですぐにでも実現すべき案もあり、高専生にとってこの2日間の演習が非常に有意義な時間になったと思います。

おわりに

日本初の実運航船を使った船舶防御演習の、レッドチームの舞台裏を解説しました。自作攻撃ツールは当日まで自らの手では一度も本物の船に試していなかったので不安でしたが、当日は無事攻撃が成功したので安心しました。

ここには書いていない具体的な攻撃手法を詳細に解説したいところですが、長くなるので割愛します。デモや詳細な説明をご希望の方は別途お問い合わせください。

なおAISスプーフィングについては過去のごった煮ブログで私が詳細を解説しているので、興味のある方はぜひご覧ください。

devblog.lac.co.jp

国立高等専門学校機構高専広島商船、仙台、高知、木更津、石川)様、一般社団法人日本舶用工業会様、そして参加された高専生の方々、ありがとうございました。また演習に際しては広島商高専様に多大なご協力を賜りました。本当にありがとうございました。