ファイア・アイは8月18日、Masque Attack(マスク攻撃)を悪用する11種類のiOSアプリを発見し、iOSを標的とするマルウェアが非脱獄版iOSデバイスに適用される事例を確認したと発表した。

Masque Attackを悪用するアプリは、WhatsAppやTwitter、Facebook、Facebook Messenger、WeChat、Google Chrome、Viber、Blackberry Messenger、Skype、Telegram、VKといった人気のSNSやメッセージアプリがリバース・エンジニアリングされたもの。Hacking Team社に対する攻撃ツールから見つかった。

正規版との違いは、機密情報を窃取してリモートサーバと通信をするためのバイナリが追加されていること。バンドル識別子がすべてApp Storeで公開中の正規アプリと同一であり、バージョンが8.1.3以前のiOSデバイスにおいては正規アプリに取って代わることが可能だという。

これらの偽装された悪意のあるアプリでは、バンドル識別子を遠隔から設定できる。8.1.3以降のiOS端末であれば、Masque Attackの脆弱性は修正済み(バンドル識別子が同一のアプリは互いに置き換え不可能)であるが、攻撃者はバンドル識別子を用いてアプリを導入できる。このスキームでは、EnPublic攻撃が再び使用されている。

再パッケージ化されたFacebookアプリのランタイム動作

正規アプリの実行ファイルに注入されたdylib

悪意あるMasque Attackアプリは、MachO形式のLC_LOAD_DYLIBコマンドを悪用し、悪意あるdylib(=「_PkgSign」)を正規の実行ファイルに注入する。このdylibは悪意あるコアロジックを実装している。

Masque Attackアプリはそれぞれ本質的に異なるため、情報窃取に際してdylibは異なるメソッドをフックする必要がある。悪意あるdylibは、リモートサーバが制御する悪意ある動作を管理するため、「TIGI000」で始まるIDとカスタマイズ済みのクラスをそれぞれのMasque Attackアプリに割り当てる。

Masque Attackの各アプリのバンドル識別子に対する、ハンドラークラスの割り当て

注入後のdylibは正規の実行ファイル内で、38種類のクラスによる機密性の高い52種類の関数をフックする。フック対象のクラスのメソッドはすべて、正規アプリの主要関数に対応する。例えば、WhatsAppのメッセージを傍受するには、[SKPConversation OnMessage:andMessageobjectid:]が、WeChatの会話を録音するには[VideoVoipCallerView OnBeginTalk:]がフックされる。

WhatsAppのメッセージ傍受で使用されるメソッドのフック・サンプル

注入後のdylibは、アプリの実行ファイルの一部として機能する。アプリのコンテナ内の全データを読み取り/修正することで機密情報を収集し、リモートサーバに送信することが可能となる。

具体的な内容は、「Skype、WeChatなどの音声通話の録音」「Skype、WhatsApp、Facebookメッセンジャーなどのテキストメッセージの傍受」「ChromeでのWebサイト閲覧履歴」「通話内容」「SMS/iMessageの内容」「バックグラウンドで記録された高精度GPS座標」「連絡先情報」「写真」。

dylibのデータ・アップロード機能は、標的となったユーザーからのアップロードに限られ、dylibはリモートサーバにIMEIを送信することで、ターゲット・デバイスが攻撃対象としてふさわしいかどうかを検証している。その後サーバはデータを窃取するかどうか指示する。

同社は「SKIP-LICENSE」鍵がキーチェーン内で「1」に設定されている場合、検証を迂回するロジックがあることを発見し、これにより、被害者が有用だと判断された場合は、ローカルの共謀者がこの値を「1」に設定することで、情報の窃取を強制できる。

リモートサーバにアップロードされたJSONデータ

最後に、すべてのデータはJSON形式でリアセンブルされ、リモートサーバに送信される。itemsのフィールドには、通信アプリのチャットデータ、位置情報、通話履歴など、さまざまな種類のデータが格納されている。

リモートサーバと悪意ある動作は、URL経由で構成が可能であり、再パッケージされた各サンプルでは、カスタマイズされたURLスキームがInfo.plistファイルに追加されている。

悪意あるdylibは「application:openURL:sourceApplication:annotation:」関数をフックすることで、URLスキームが開かれた際の構成データを解析できる。構成データはJSON形式でのシリアル化、Base64によるエンコードをへて、カスタマイズされたURLスキームの直後に添付される。

攻撃者は、デバイス上のSMS/メール/Webページを通じ、ターゲットとなった被害者がこうしたURLをクリックするよう誘導するとともに、リモートサーバなどのターゲットの構成をカスタマイズできる。

同社は、「iOSデバイスをターゲットとする高度な攻撃が台頭しつつあることが判明した」とし、すべてのiOSユーザーに対し、デバイスのiOSを常に最新版にすること、アプリのダウンロード・プロセスに細心の注意を払うことを呼び掛けている。