:::info 著者:
(1) Daniele Capone, SecSI srl, ナポリ, イタリア (daniele.capone@secsi.io);
(2) Francesco Caturano, ナポリ・フェデリコII大学 電気工学・情報技術学部, ナポリ, イタリア (francesco.caturano@unina.i)
(3) Angelo Delicato, SecSI srl, ナポリ, イタリア (angelo.delicato@secsi.io);
(4) Gaetano Perrone, ナポリ・フェデリコII大学 電気工学・情報技術学部, ナポリ, イタリア (gaetano.perrone@unina.it)
(5) Simon Pietro Romano, ナポリ・フェデリコII大学 電気工学・情報技術学部, ナポリ, イタリア (spromano@unina.it).
:::
要約と I. はじめに
II. 関連研究
III. Dockerized Android: 設計
IV. Dockerized Androidのアーキテクチャ
V. 評価
VI. 結論と今後の展開、および参考文献
このセクションでは、Dockerized Androidプラットフォームをいくつかの側面から評価します。まず、エミュレータ用コアと実機用コアのコンポーネントの機能面での違いを強調し、最も使用されている3つのオペレーティングシステムとの互換性を強調します。次に、Dockerized Androidの実用的な使用例を提供し、セクションIIIで定義された要件のカバレッジについて議論します。
\ 
\ A. エミュレータ用コアと実機用コアの違い
\ 両方のタイプのデバイスで同じ機能を持つシステムを作成するために多大な努力が払われていますが、エミュレーションを使用する場合には制限があります:
\ • SMS ADB送受信機能: エミュレートされたデバイスでは、ADBソフトウェアを通じてSMSメッセージの送受信を自動化することが可能です。明らかに、これは実機では本来できません。したがって、SMSの攻撃シナリオを実装するには、ユーザーが手動でSMSメッセージを送受信する必要があります。この問題に対処するための解決策として、実機にインストールでき、メッセージを自動的に送受信するよう操作できるカスタムAndroidアプリケーションの実現が考えられます。
\ • ネットワーキング: ネットワーキングはエミュレータと実機のフレーバー間でかなり異なります。エミュレータバージョンでは、AVDはDockerコンテナ内に作成されるため、コンテナのIPアドレスを共有します。一方、実機はコンテナを実行するマシンに物理的に接続され、独自のIPアドレスを保持します。
\ • ハードウェア仮想化: ハードウェアコンポーネントについても状況はかなり異なります:GPSやマイクなどの一部のハードウェアデバイスはエミュレートできます。特に、デバイスのGPS位置はADBを通じて設定でき、ホストマシンのマイクはエミュレータと共有できます。現在エミュレートできない他のハードウェアコンポーネントもあります。例えば、Bluetoothなどです。
\ B. クロスプラットフォーム互換性のためのホスト評価
\ 非機能要件NF04(クロスプラットフォーム互換性)は、結果のシステムがどのホストOSからでも使用可能であるべきだと述べています。これはDockerコンテナを実行するマシンのOSを指します。表IIIはLinux、Windows、およびOS Xとの互換性の概要を示しています。
\ 
\ Windowsの問題は、現在、Dockerを使用する最良の方法がWindows Subsystem for Linux(WSL)フレームワークを通じてであることです。残念ながら、WSLはまだネストされた仮想化をサポートしておらず、この機能はDockerコンテナ内でAndroidエミュレータを実行するために必要です。ただし、この機能は今後のWSLリリースで利用可能になる予定です。仮想マシンを使用してWindowsでエミュレータ用コアフレーバーを実行することは可能かもしれませんが、コンテナ化に関連するすべてのパフォーマンス上の利点は失われます。OS Xにも同様の問題があり、現在のところエミュレータ用コアを実行する方法はありません。さらに、OS XではUSBデバイスをDockerコンテナと共有することができません。このため、実機用コアフレーバーを使用する唯一の方法は、Wi-Fi経由でADBを実行するか、Dockerコンテナ内からホストADBに接続することです。
\ このセクションの残りの部分では、エミュレータ用コアと実機用コアの両方を使用して、セキュリティキルチェーンを再現するDockerized Androidの有効性を示します。
\ C. エミュレータ上でのセキュリティ攻撃の再現
\ ここでは、CVE-2018-7661[1]に関連するサンプル脆弱性シナリオに焦点を当てます。このCVEは、アプリケーション「Wi-Fi Baby Monitor」の無料版に関連しています。このアプリケーションは、いわゆるベビーモニター(乳児が発する音を遠隔で聞くために使用される無線システム)として機能するために、2つのデバイスにインストールする必要があります。National Vulnerability Databaseで報告されているように、「バージョン2.02.2以前のWi-Fi Baby Monitor Free & Liteは、TCPポート番号8258および8257への特定のリクエストを介して、リモート攻撃者が音声データを取得することを許可します」。
\ 
\ このアプリケーションのプレミアムバージョンでは、ユーザーがペアリングプロセスで使用するパスワードを指定する機能を提供しています。ネットワークトラフィックを監視することで、以下のことが観察できます:
\ • 初期接続はポート8257で行われます;
\ • ペアリングプロセスを開始するために常に同じシーケンスが送信されます;
\ • ペアリングプロセスの終了時に、ポート8258で新しい接続が開始されます。このポートは音声データの送信に使用されます;
\ • ポート8258に接続した後、ポート8257の他の接続は開いたままで、セッションのハートビートとして使用されます;
\ • ハートビート接続では、クライアントは定期的に16進バイト0x01を送信します(約1秒に1回);
\ 攻撃者が音声データを取得できる概念実証は[21]で提供されています。この概念実証(PoC)は、3つのサービスで構成されるインフラストラクチャの実現を通じて、Dockerized Androidで簡単に再現できます:
\ • core-emulator: 送信者として機能する事前インストールされたBaby Monitorアプリを持つコアコンポーネントのインスタンス;
\ • ui:何が起こっているかを制御するUIコンポーネント;
\ • attacker: PoCの実行に必要なすべての依存関係を自動的にインストールするKali Linuxのカスタマイズバージョン。
\ これは、通信を可能にするために使用されるポートフォワーディング機能を示す完璧な例でもあります。
\ D. 実機でのセキュリティ攻撃の再現
\ 実機では、BlueBorneとして知られるさらなる脆弱性を調査します。「BlueBorne」という用語は、Bluetoothの実装に関連する複数のセキュリティ脆弱性を指します。これらの脆弱性は、IoTセキュリティ企業であるArmis Securityの研究者グループによって2017年9月に発見されました。Armisによると、発見時点で約82億のデバイスがBlueBorne攻撃ベクトルの影響を受ける可能性があり、Android、iOS、Microsoft、およびLinuxのBluetooth実装に影響を与え、スマートフォン、ラップトップ、スマートウォッチなどほぼすべてのBluetoothデバイスタイプに影響を与えます。BlueBorneは、2017年9月12日にBen SeriとGregor Vishnepolskによって発表された論文で詳細に分析されました[22]。攻撃ベクトルの一部として使用できる8つの異なる脆弱性があります。
\ Androidに関しては、BLE(Bluetooth Low Energy)をサポートするデバイスを除いて、すべてのデバイスとバージョン(したがって2017年12月にリリースされたAndroid Oreoより古いバージョン)が上記の脆弱性の影響を受けます。一般的に、脆弱性を悪用するには2つの要件を満たす必要があります:(i) ターゲットデバイスでBluetoothが有効になっていること;(ii) 攻撃者がターゲットデバイスに十分近いこと。Bluetooth機能はコアエミュレータでは利用できないため、問題のキルチェーンは実機でのみ再現できます。
\ 1) Dockerized AndroidでのBlueBorneの完全再現:Dockerized Androidの有効性を示すために、Androidに影響を与える2つのリモートコード実行(RCE)脆弱性、つまりCVE-2017-0781とCVE-2017-0782を悪用するキルチェーンを開発しました。これらの脆弱性は、Armis Security[23]のセキュリティ研究者グループによって発見された「BlueBorne」と定義されたBluetooth脆弱性セットに含まれています。
\ 図4の図は、開発されたキルチェーンの概要を示しています:
\
\ 2) フィッシングメールが被害者のメールボックスに送信されます。
\ 3) 被害者はフィッシングメールを読み、誤ってメール本文に含まれる悪意のあるリンクをクリックします。
\ 4) 悪意のあるリンクにより、攻撃者は被害者のモバイルデバイスに偽のアプリケーションをダウンロードしてインストールする攻撃をトリガーできます。
\ 5) 悪意のある情報は、関連するモバイル情報を攻撃者に送信します。この情報は、2つの脆弱性を悪用するために必要です。
\ 6) 攻撃者は脆弱性を悪用するための悪意のあるペイロードを作成します。
\ 7) 攻撃者はBluetoothコンポーネントの脆弱性を悪用して攻撃を送信し、被害者のデバイスへのリモートアクセスを取得します。
\


