マルウェア
Macのキーチェーンデータを窃取する手口:マルウェアに感染させたフリーのアプリを使用
本ブログでは、フリーアプリを改変して作られたマルウェアについて報告します。攻撃者がこのフリーアプリを容易に改変できた理由として、ソースコードが公開されていた点が挙げられます。
近年のマルウェアは容易に拡散し、さまざまなユーザの端末を感染させます。その多くは、フリーの正規アプリケーションに偽装した状態でファイル共有サイト上に展開されます。これを見たユーザは、資金を節約したいという願望にも押され、当該ファイルをダウンロードするかも知れません。しかし、そこにはセキュリティリスクが存在します。マルウェア本体だけでなく、マルウェアに感染したフリーのアプリもまた、ダウンロードした端末に対して害を及ぼします。
本ブログでは、フリーアプリを改変して作られたマルウェアについて報告します。攻撃者がこのフリーアプリを容易に改変できた理由として、ソースコードが公開されていた点が挙げられます。はじめに、本マルウェアの目的であるキーチェーンデータの窃取について説明します。
キーチェーンの概要
キーチェーンはmacOS用のパスワード管理システムであり、macOS 8.6で初めて導入され、現在でも使用されています。このシステムを用いることで、パスワードや秘密鍵、証明書、秘密のメモなど、さまざまな容量を持った機密保護データの保管が可能になります。
今回は、こうした重要なデータを狙うマルウェアの存在についてアップル製品のユーザに注意喚起し、さらにその拡散を防ぐという目的のもと、調査を実施しました。
アプリケーションの詳細
今回攻撃者が利用した正規の無料ツールは、macOS用のアプリケーション「ResignTool」です。本ツールは主に、iOSまたはiPad端末用アーカイブである「.IPA」ファイルの署名情報を書き換える目的で使用されます。「.IPA」はiOS端末にインストール可能です。
ResignToolは利便性に優れ、オープンソースでGitHubにも公開されているため、攻撃者からは情報窃取の有用な手段として見られています。
配布形態とインストール
今回の検体は、マルウェア判定サイト「Virus Total」で見つかり、トレンドマイクロが設定したルールの1つに適合しました。これが攻撃活動に使用されたという報告はまだありませんでしたが、Virus Total上には「archive.pkg」の名前でアップロードされていました。「.PKG」ファイルは、macOS用のインストーラファイルです。本ファイルの内容を、図1に示します。
「archive.pkg」のインストールが完了すると、専用のスクリプトが実行されます。
一連のインストール処理が終わると、下記のファイルが作成されます。
/Library/LaunchDaemons/com.apple.googlechrome.plist(「~/Library/Google/Plug-ins/Google」の永続化に使用)
~/Library/LaunchAgents/com.apple.googleserver.plist(「~/Library/Google/Plug-ins/Google」の永続化に使用)
~/Library/Google/Plug-ins/Google(SHA256値:16758a57928f9d31c76d0ace8f89b4367d849ccbf20441845af32e2768209a81)
この後マルウェアは、Gatekeeperの制御を回避するため、「xattr -c -r ~/Library/Google/Plug-ins/Google」のコマンドを用いることで、「Google」の検疫属性を削除します。
機能の実行
マルウェアとしての機能を実行するのは以下のMach-Oバイナリであり、これによって、被害者のキーチェーンデータが窃取されます。
Applications\ResignTool.app\Contents\MacOS\ResignTool
インストールの完了後、マルウェアはシステムから機密情報の窃取を開始します。具体的には、アプリケーションが起動したタイミングで下記のデータを収集し、それを以下のコマンドコントロール(C&C:Command and Control)のサーバ宛てにHTTP POSTリクエストで送信します。
hxxps[:]//usa.4jrb7xn8rxsn8o4lghk7lx6vnvnvazva.com/
- シリアル番号:感染したシステムのシリアル番号
- 識別子:識別情報として埋め込まれる一意の文字列(今回調査した検体の場合は「USA_APP」)
C&Cサーバ側がメッセージへの応答データを返却すると、マルウェアは、システムからキーチェーンデータを窃取します。下図に示す通り、C&Cサーバは、「newdev」、「newid」、「gogogo」の文字列に応答することが期待されます。
この後マルウェアは、下記ディレクトリの内容から、キーチェーンデータを検索します。
/Library/Keychains
~/Keychains
~/MobileDevice/Provisioning Profiles
検索対象とするファイルの拡張子は下記の通りです。
keychain
keychain-db
mobileprovision
マルウェアは条件に一致するファイルのデータを取得し、それを暗号化用ライブラリ「JKEncrypt」によって「3DES 256」のアルゴリズムで暗号化します。この際、鍵データとして「YpXOUCzTA1ZPhn9HUE0iQX4r」を、初期ベクトルとして「yNJ48AGX」を使用します。暗号化したデータは、C&CサーバにHTTP POSTリクエストで送信します。本マルウェアが用いた暗号化手段は、あまり一般的に見られるものではありません。JKEncryptの詳細については、こちらをご参照ください。
暗号化が終わると、下記メッセージボックスを表示して、ユーザにパスワードの入力を求めます。
感染した端末上でユーザが入力したパスワードは、暗号化されてC&CサーバにHTTP POSTコマンドで送信されます。送信されたパスワードは、当該ユーザのキーチェーンデータを復号する目的で利用される可能性があります。
マルウェアによる機密情報の窃取が完了すると、大元のアプリ「ResignTool」本来の機能が稼働します。
ドロップされるもう1つのファイル「~/Library/Google/Plug-ins/Google」も、これまでに解説したResign Toolバイナリ同様、キーチェーンを窃取する機能を備えています。加えて、10分間隔でC&Cサーバとの通信を維持する処理も組み込まれています。この処理に該当するコードを図13に示します。
コード署名およびその他の情報
Apple環境で利用可能なアプリケーションは通常、App Storeで配布されています。しかし、App Storeで配布するアプリは一定の基準を満たす必要があります。ResignToolのようなソフトウェアについては、それが正規なアプリケーションであることを示す適切な認定をAppleから受ける他、開発者の身分情報に相当する「Developer ID」も必要になります。ResignToolの「.pkg」ファイルは、「fenghua he(32W7BZNTSV)」というDeveloper IDで署名されていました。しかし、このアプリケーションはオープンソースで開発されているため、下図の通り、攻撃者の手で容易に改変される可能性があります。
特記事項として、今回の攻撃者は、識別者情報「com.injoy.ResignTool」によるアドホック署名をResignToolのMach-Oバイナリに付与していたことが分かりました。
結論
オープンソースアプリケーションやファイル共有Webサイトはコスト削減の手段として有用ですが、その一方で警戒心を持つことも重要です。今回の調査では、フリーのアプリケーションを求めるユーザの端末を感染させる目的で、オープンソースのアプリケーションが不正使用されている実態を解明しました。
Web上でアプリケーションを探す際は、不審なファイルを誤ってダウンロードしないように、そのサイトが確かに正規のものであるか確認することを推奨します。そうすることで、望ましくないプログラムや脅威がシステム内に紛れ込むような事態を回避できます。また、ご利用のApple端末を保護するため、アプリケーションやファイルを防御する製品またはサービスの導入を推奨します。トレンドマイクロの「Mobile Security」は、ダウンロード対象のアプリやファイルに脅威が含まれていないかを検証できます。また、「ウイルスバスター™ for Mac」はMac端末をスキャンしてマルウェアを阻止することで、ユーザによる業務への好ましくない影響を排除することが可能です。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)はこちらで確認してください。
MITRE ATT&CK Tactics and Techniques
MITRE ATT&CK Tactics and Techniquesはこちらで確認してください。
参考記事:
「Pilfered Keys: Free App Infected by Malware Steals Keychain Data」
By: Luis Magisa, Qi Sun
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)