北朝鮮のハッカーは、高度なコードを使って一見無害なmacOSアプリにマルウェアを偽装し、セキュリティチェックを回避して何も知らないユーザーを標的にしている。
Jamf Threat Labsの研究者たちは最近、表面上は無害に見えるmacOSアプリにマルウェアが埋め込まれているのを発見しました。サイバー犯罪者は、人気のアプリ開発ツールFlutterを利用して、一般的なセキュリティ対策をすり抜けるアプリを作成していました。
Googleが開発したFlutterは、macOS、iOS、Androidでシームレスに動作するアプリを作成するための人気ツールとなっています。Flutterのコードベースにより、開発者は一度アプリを開発するだけで、すべてのプラットフォームで一貫した外観を実現できます。
しかし、Flutterの独特な設定は、特に隠れたコードを見つける際に、扱いを難しくすることもあります。典型的なFlutterアプリでは、メインコード(Dartという言語で記述)は「dylib」ファイルにバンドルされており、これはFlutterエンジンによって後で読み込まれる動的ライブラリです。
機能的には優れていますが、このようなコード構造はコードを自然に分かりにくくし、検査を困難にします。ハッカーはこの複雑さを悪用し、検出が困難な方法で悪意のあるコードを隠蔽しました。
macOS Flutter攻撃の仕組み
Jamf Threat Labsは、それぞれ異なるプログラミング環境(Flutter、Go、Python)向けにカスタマイズされた3つのバージョンのマルウェアを発見しました。これら3つはすべて、北朝鮮の管理下にあるとみられる外部サーバーにアクセスし、追加の悪意のあるコマンドを実行するために、同様の手法を使用していました。
Flutterベースのマルウェアは、「暗号通貨取引所の新着アップデート」という偽のアプリを標的としていました。このアプリは単純なゲームのように見え、ユーザーに疑念を抱かせることなくプレイを促していました。
しかし、そのコードには、北朝鮮のサイバー作戦に以前から関連付けられていたドメインに接続する機能が隠されていました。この機能により、アプリは感染したMacを遠隔操作できる悪意のあるスクリプトをさらにダウンロードすることが可能になりました。
Flutterアプリのレイアウト。画像提供:Jamf Labs
一方、Pythonの亜種は単純なメモ帳アプリを装い、疑わしいドメインに接続し、悪意のあるAppleScriptをダウンロードして実行し、被害者のコンピュータをリモート操作しました。このマルウェアの最も懸念される点の一つは、リモートからAppleScriptコマンドを実行できることです。
AppleScriptは、タスクを自動化し、アプリ間の通信を可能にするmacOSのツールです。このマルウェアはAppleScriptを利用してデバイスをリモート制御し、データの取得やマルウェアのインストールといった操作を実行します。注目すべきは、悪意のあるスクリプトが検出を回避するために逆順に記述されていたことです。
macOS Flutterマルウェアから身を守る方法
これらのアプリが実際に攻撃に使用されたという兆候はまだありませんが、マルウェアは現在テスト段階にあるようです。北朝鮮は金融セクターを標的にしてきた歴史があるため、暗号通貨のユーザーや企業が標的となる可能性があります。
ユーザーは可能な限りAppleのMac App Storeからアプリをダウンロードするべきです。そこで入手できるアプリはセキュリティ審査を受けています。App Storeの審査プロセスは、万全ではありませんが、有害なソフトウェアをダウンロードするリスクを軽減します。
macOS では、デフォルトで、App Store と確認済みの開発者からのアプリのみをダウンロードできます。この設定は、設定アプリの「プライバシーとセキュリティ」セクションで設定できます。
セキュリティを維持するためのもう一つの重要なステップは、Appleが頻繁にセキュリティパッチをリリースしているため、macOSとインストール済みのアプリを定期的にアップデートすることです。デバイスとアプリを最新の状態に保つことで、新たに発見された脆弱性から保護することができます。
最後に、仮想通貨関連のアプリには注意が必要です。ハッカーは偽のアプリを使って標的にすることが多いからです。短期間で利益が得られると謳ったり、「話がうますぎる」と謳ったりするアプリには、隠れたリスクが潜んでいる可能性があります。