macOS向けInfoStealerを技術的に解説してみた
はじめに
この記事は、Finatext Advent Calendar 2025 の20日目の記事です。
24卒でFinatext platform teamに入りセキュリティやコーポレートITの仕事をさせていただいているsadaです。
今回のブログではブラウザを狙うInfoStealerについて技術的な側面から記述してみようと思います。
2025年、証券口座のアカウント乗っ取りが社会問題となりました。
乗っ取りの手段としては、証券会社を装ったフィッシングや、InfoStealer(インフォスティーラー)と呼ばれる情報窃取型マルウェアが主と考えられています。
このうちフィッシングについてはその基本的な仕組みをご存知の方も多いと思います。
InfoStealer自体は特に目新しい手段ではありません。しかし近年、macOSの利用者が増加し、エンタープライズ企業で開発環境として利用されることも多いため、標的となるケースが増えています。
そこで今回は、macOSを狙ったInfoStealerがブラウザ経由でどのように情報を摂取するのか、技術的な解説を試みたいと思います。
なお、マクニカさんなど国内のセキュリティ会社からもInfoStealerに関する解説記事が出ていますので、リアルワールドでの全体的な概念図などを含めた内容については、ぜひこれらのブログも参照されてください。
InfoStealer とは?
InfoStealer は、情報を窃取することを目的としたマルウェアの総称です。このタイプのマル
ウェアに感染すると、ブラウザ内に保存された認証情報や Cookie、閲覧履歴、デバイスの情報、
保存されたドキュメントなどが盗まれる恐れがあります。感染方法は多岐に渡り、ブラウザの
Update を装ったサイトや、PDF に扮したショートカットファイルを介してインストールさせる
ものなどがあります。以下では一般的な InfoStealer がどのような情報を窃取するかについて記
述します。
一般的な InfoStealer が窃取する情報
InfoStealer には、LummaC2 や Redline、Meta Stealer、AMOS など様々な種類が存在して
います。マルウェアの種類によって窃取される情報は異なりますが、代表的なものを以下に列挙
します。
• ブラウザに保存された情報
• デバイスの情報
• インストールされたアプリの一覧
• 端末上に保存されたドキュメント
• スクリーンショット
• 暗号資産のウォレット
• クリップボードの情報
認証情報や Cookie、閲覧履歴はブラウザに保存されている情報に含まれます。窃取された情報
は総称してログとして呼ばれ、InfoStealer の C2 サーバ上で閲覧・ダウンロードができます。
ブラウザがデータを保存する仕組み
この章ではApple シリコンの macOS で作動する Chromeに限ってどのようにデータを保存するかについて言及します。
ブラウザが取り扱う様々な機微情報は暗号化された状態でローカルに保存されます。この機
微情報の暗号化を行うためには秘密鍵が必要ですが、その秘密鍵は主に Keychain Services が
使用されます。これは Apple が提供する組み込みのセキュア・ストレージシステムで、パスワー
ド、証明書、暗号化キーなどの機微情報を暗号化してローカルに保存し、アクセスを保護します。
ブラウザは、パスワード、クッキー、セッション情報などの機微データを、通常SQLiteデータ
ベースに保存します。Chrome の場合、~/Library/Application Support/Google/Chrome/Default/ Login Data に保存します。
これらのデータは、平文ではなく暗号化された状態で格納されます。データ自体は、AES アルゴリズムを使用して暗号化されます。Chrome では AES-128-CBC を使います。この暗号化には秘密鍵が必要です。この秘密鍵は、PBKDF2 などの関数を使って、固定のソルトとイテレーションから派生されます。
次に、秘密鍵の保護(Keychain Services の役割)について述べます。
派生に必要なマスター・パスワードは、Keychain Services を使ってさらに暗号化され、ユー
ザーのキーチェーンに保存されます。Chrome の場合「Chrome Safe Storage」というエント
リとして保存されます。 Keychain Services は macOS のユーザー認証、つまりパスワードや
Touch ID/Face ID などと連動してアクセスを制限します。
ブラウザがこのパスワードにアクセスするには、ユーザーの認証を求められる場合がありま
す。 これにより、秘密鍵はディスク上に平文で残らず、他のプロセスからの不正アクセス防止な
どのOSレベルの保護を受けられます。KeychainはAES-256などの強力な暗号化を内部で使用
し、macOS の Secure Enclaveとも連携可能です。
キーチェーン項目を Optic ID、Face ID、または Touch ID で保護して、認証成功、またはデ
バイスパスコードまたはアカウントパスワードでのみ Secure Enclave によってロック解除さ
れるようにすることもできます。
アプリのデベロッパは、 キーチェーン項目をロック解除するために Face ID、Touch ID、パ
スコード、またはパスワードを要求する前に、ユーザによってパスコードまたはパスワードが設
定されているかどうかを確認する API を使用します。
Keychain を用いたブラウザデータ暗号/復号のための秘密鍵の暗号化
前述の通り macOS の Chrome では、ブラウザデータの暗号化/復号に使用する秘密鍵を、
Keychain Services で保護します。これは、秘密鍵自体をさらに暗号化してローカルに保存し、
ユーザーの認証を必要とする仕組みです。簡易的なイメージとして、以下のように流れます。

秘密鍵を用いたデータ保護
ここでは、上記の Keychain から取得した秘密鍵を使って、実際のパスワードやクッキーなど のブラウザデータを暗号化します。データは SQLite データベースの Login Data ファイルに保存されます。簡易的なイメージとして、以下のように流れます。

InfoStealer によるブラウザデータ窃取の仕組み
これまでの内容を整理しながら、「なぜInfoStealerがブラウザのデータを窃取できるのか」を macOS の Keychain を中心にまとめます。
Keychainのアイテムは、ブラウザが実行されたユーザーアカウントと同じコンテキストで動作するアプリケーションであればSecurity.frameworkのAPIであるSecItemCopyMatching()を使って容易にクエリ・復号できます。InfoStealerは、ブラウザと同じユーザー権限で実行される限りKeychain にアクセス可能です。 これにより、ユーザーがKeychainをアンロックした状態で、バックグラウンドからパスワードやcookieをdumpできます。
ユーザーに気づかれにくいのは、Keychain のアクセスがシステムレベルの API コールとして処理され、明示的なユーザー通知が発生しないためです。
実際の例として、Atomic Stealer のような macOS 向け InfoStealer は、この API を悪用して Chrome や Safari の保存パスワードを一括抽出します。
Odyssey など一部の InfoStealer は、Keychain だけでなく、ブラウザの SQLite データベース からもデータを直接読み取り、Keychain 経由の暗号化部分を復号します。これにより、Session Cookie や SSH key、GitHub Token なども同時に盗み出せます。
根本的な問題
InfoStealerによる攻撃が成立する根本的な原因は、ユーザー自身がアプリの実行やアクセスを許可してしまうことにあります。
ブラウザが保存した暗号化データは、暗号鍵を macOSが提供する Keychainに依存しているため、厳密には「ブラウザだけが復号できる」ようには設計されていません。
macOS の セキュリティモデルでは、Keychain アクセスは主にユーザーセッションとアプリの keychain-access-groupsというentitlementで制御されます。通常、アプリは自分自身が作成した Keychain 項目にのみアクセスできます。
しかし、近年の InfoStealer 型マルウェアは、ユーザーを騙して実行させることで Keychain API(SecItem系 API)を正規アプリとして利用し、ユーザーが保存したインターネットサービスのID/パスワードなどブラウザに保存されている認証情報を窃取しようとします。
Apple は macOS Ventura 以降で entitlements の強化や一部の Keychain アクセス要件の見直しを行っていますが、ユーザーが許可したアプリが Keychain やブラウザデータへアクセスできるという基本モデルは変わらないため、依然として InfoStealer の攻撃対象になり得ます。
よって、これはKeychainの設計上の欠陥というよりも、macOSが採用している「ユーザーの判断を信頼する」という利便性重視のセキュリティモデルを悪用した攻撃です。AppleはmacOS Ventura以降でTCCの保護対象拡大や Keychainアクセス要件の見直しを進めていますが、ユーザーが許可したアプリがKeychainやブラウザデータへアクセスできるという基本モデルは変わっていません。そのため、最終的にはユーザー自身が不審なアプリを実行しない、安易に許可を与えないという判断が重要な防御策となります。
まとめ
今回は、macOSを狙ったInfoStealerについて技術的な解説をしてみました。
マルウェア、ランサムウェア、InfoStealer、フィッシング、ブラウザのセキュリティといった分野は、エンジニアにとって避けては通れないテーマです。
この記事が、開発に携わる皆様の新たな探求のきっかけとなれば幸いです。
Discussion