Different cookies in glass jar - depositphotos.com
セキュリティ運用

Cookie の窃取: 新たな侵入経路

クラウドサービスや多要素認証を導入する組織が増加しているのに伴い、ID や認証情報に紐付けられた Cookie が、攻撃者によって新たな侵入経路の確保に使われています。

** 本記事は、Cookie stealing: the new perimeter bypass の翻訳です。最新の情報は英語記事をご覧ください。**

認証情報を窃取するマルウェアは、さまざまなサイバー犯罪者や攻撃者が使用するツールキットに不可欠です。最も狙われやすい認証情報はユーザーのアカウント名とパスワードですが、Web ベースのサービスを保護するための多要素認証 (MFA) の導入が進んでいるため、ユーザー名とパスワードを窃取する攻撃の有効性は低下しています。その代わりに、攻撃者が認証情報に関連する Cookie を盗み出し、アクティブセッションや最近の Web セッションを複製することで、MFA を迂回する例が増加しています。

たとえば最新の Emotet ボットネットは、保存されたログイン情報や (時として) クレジットカードの情報など、ブラウザが保存している Cookie やその他の認証情報を狙う多くのマルウェアのうちの 1 つです。Google の Chrome ブラウザは、Emotet が狙う多要素認証 Cookie とクレジットカード情報の保存に同じ暗号化方式を使用しています。

Cookie を狙う攻撃者はさまざまです。サイバー犯罪の最下層では、闇フォーラムで入手した Raccoon Stealer (サービスとしてのマルウェア) や RedLine Stealer (キーロガー、認証情報窃取ツール) といった情報窃取マルウェアをエントリーレベルの攻撃者が使用し、Cookie やその他の認証情報を一括収集して犯罪市場で販売しているようです。

ゲーム開発会社 Electronic Arts の社員から流出した Cookie を販売していたと見られるマーケットプレイス Genesis も、この種のマーケットプレイスの 1 つです。攻撃グループ Lapsus$ のメンバーは、窃取されたセッション Cookie をマーケットプレイスから購入して、EA の Slack インスタンスへのアクセスに利用したと主張しています。攻撃グループは Slack インスタンスで EA の従業員による既存のログインを偽装し、EA の IT チームのメンバーを騙してネットワークアクセスを獲得しました。EA の Slack インスタンスにアクセスしたことで、Lapsus$ はゲームやグラフィックエンジンのソースコードなど、合わせて 780 GB のデータを入手し、このデータを使って EA に対する恐喝を試みました。

サイバー犯罪の上層では、攻撃者がさまざまな方法で Cookie を盗み出すのが確認されています。また、いくつかの例では、ランサムウェアのオペレーターが、より技術力の低い攻撃者と同じ情報窃取マルウェアを使用した証拠も確認されています。しかし、手動で Mimikatz、Metasploit の MeterpreterCobalt Strike など正規の攻撃型セキュリティツールを悪用して Cookie 収集マルウェアを実行したり、ブラウザのキャッシュから Cookie を取得するスクリプトを実行したりする攻撃も頻繁に見受けられます。

また、ブラウザの Cookie ファイルとやり取りする正規のアプリケーションやプロセスも存在します。マルウェア対策ソフト、監査ツール、OS ヘルパーなどが Cookie にアクセスしているのがソフォスのテレメトリで確認されています。たとえば、Bing の壁紙アップデータは、新しいデスクトップの壁紙を取得するために Cookie にアクセスします。しかし、これらの正規ツールを除いても、通常のソフトウェアの動作の枠を外れたアクセスがブラウザ Cookie に対して 1 日あたり数千件も試みられていました。特定の攻撃の開始と対応して、このような活動の検出が急激に増加することがあります。さらに、Cookie を使用する正規のアプリケーションが、Cookie を漏洩させ、攻撃者に対してトークンを露出してしまうこともあります。

Cookie への不正アクセス

Web ブラウザは Cookie をファイルに保存します。たとえば、Mozilla Firefox、Google Chrome、Microsoft Edge は、Cookie をユーザープロファイルフォルダ内の SQLite データベースに保存します。(この種の SQLite ファイルには、これらのブラウザの履歴、Web サイトのログイン情報、自動入力情報が保存されます。)リモートサービスに接続する他のアプリケーションは、独自の Cookie リポジトリを持っていたり、場合によっては Web ブラウザが保持する Cookie にアクセスしたりすることがあります。

データベース内の各 Cookie の中身は、パラメータと値のリストです。リモート Web サイトに対するブラウザセッションを識別するキーや、場合によってはユーザー認証後に Web サイトがブラウザに渡すトークンも保存されています。これらのパラメータと値のペアのうちの 1 つは、Cookie の有効期限、つまり次に更新が必要になるまでの期間を指定しています。

Screenshot of contents of cookies.sqlite
図 1: cookies.sqlite ファイルに保存された Cookie

 

Cookie が狙われる理由は非常に明快です。Web サービスの認証に関連する Cookie は、「pass the cookie」攻撃に利用できるからです。この攻撃では、Cookie が最初に発行された正規ユーザーに攻撃者がなりすまし、ログイン認証を迂回して Web サービスにアクセスしようとします。pass the cookie 攻撃は、ローカルに保存された認証ハッシュを使用して、パスワードを解読することなくネットワークリソースにアクセスする「pass the hash」攻撃に類似しています。

図 2: 正規の Web サービスの流れと…
Pass the cookie 攻撃による認証迂回

Pass the cookie 攻撃は、ビジネスメール詐欺、クラウドデータストアへのアクセス、乗っ取った Slack セッションを使用して別の被害者にマルウェアをダウンロードさせる、アクセスに利用可能なデータの窃取など、Web サービス (AWS や Azure など)、SaaS、関係するサービスの悪用へと発展する可能性があります。その結果、さらなるデータの漏洩やラテラルムーブメントが発生します。

多くの Web ベースのアプリケーションは、セッションのなりすましを防ぐため、リクエスト元の IP アドレスをセッションが開始された場所と照合するなど、追加の確認を行っています。しかし、同じネットワーク内から攻撃者が手動で Cookie を使用した場合、上記のような対策だけでは悪用を阻止できない可能性があります。また、デスクトップとモバイルを併用するために作られたアプリケーションは位置情報の一貫性をそれほど重視しないかもしれません。

Cookie を窃取する攻撃の中には、標的自身のブラウザ内から完全にリモートで行われるものがあります。HTML インジェクション攻撃は、脆弱な Web ページに挿入されたコードを利用して、他のサービスの Cookie を悪用します。この攻撃により、攻撃者は標的のサービス上のプロファイル情報にアクセスし、パスワードや電子メールを変更します。

Cookie の「まとめ買い」

多くの場合、マルウェアのオペレーターは、有料のダウンロードサービスやその他の非標的型アプローチを用いて、低コストかつ少ない労力で、できるだけ多くの被害者の Cookie やその他の認証情報を収集しようとします。この種類の認証情報窃取ツールの配信は、 Raccoon Stealer やその他のマルウェア攻撃がサービスとしてのドロッパーを通じて配信されている (リンク先: 英語) のと非常によく似ています。

ISO や ZIP ファイル内のマルウェアパッケージは、検索結果の上位にくるように調整された悪意のある Web サイトで、海賊版または「クラックされた」商用ソフトウェアパッケージのインストーラーを装っています。ISO ベースの配信パッケージは、マルウェアのスパムメール攻撃において、悪意のあるドキュメントに代わって広範に使用されています。Microsoft が最近、インターネットから取得した Office ファイル内のマクロをブロックしたからです。

ある大学のネットワークで確認された「サービスとしてのダウンロード」の事例では、海賊版の商用ソフトウェアを装った Web サイトからダウンロードされた偽のソフトウェアインストーラーにマルウェアが隠されていました。ユーザーがダウンロードしたインストーラーは 300 MB の ISO ファイルでした。大容量の ISO ファイルは、主にマルウェア検出ソフトによるファイルスキャンを妨害する目的で使用されます。

この ISO ファイルには、他のソフトウェアパッケージから流用されたソフトウェアインストールユーティリティである BLENDERINSTALLER3.0.EXE が含まれていました。このドロッパーは、PowerShell コマンドと AutoIT (マルウェアのオペレーターが頻繁に悪用する正規のツール) で作成した実行ファイルを使用して複数のファイルをインストールし、ISO ファイルからマルウェアを抽出して、Discord のコンテンツ配信ネットワークから追加のマルウェアファイルをダウンロードします。マルウェアパッケージはその後、(.NET フレームワークの .jsc.exe を使用して) .NET プロセスから一連のコマンドを注入し、Chrome から Cookie とログインデータの両方を取得します。

図 3: 偽のインストーラーによってインストールされた情報窃取ツールによる Cookie 窃取

 

手の込んだ攻撃

また、悪意のあるスパムは、特定の業界や地域の組織を標的にし、細工された添付ファイルとともに使用されることが多いようです。2021 年 10 月に、トルコのある人物が、XZ アーカイブファイルが添付された電子メールを受け取りました。このアーカイブファイルには「ürün örnekleri resmi pdf.exe (トルコ語で「製品サンプル画像 pdf.exe」)」という偽装された実行ファイルが含まれていました。この実行ファイルは、Delphi (BobSoft Mini Delphi) というプログラミング言語で書かれた自己解凍型のマルウェアドロッパーでした。

このドロッパーは、実行されると複数の実行ファイルを順番にインストールします。最初にインストールされるのは正規の Microsoft Visual Studio コンポーネント (msbuild.exe) です。MSBuild は通常、コーディングプロジェクトのコンパイルと実行に使用されます。スクリプトを含むプロジェクトファイルまたは XML ファイルをコマンドラインで MSBuild に渡すと、MSBuild は渡されたスクリプトを実行します。ファイルそのものは信頼性の高い Microsoft のバイナリであるため、マルウェアであることを隠すためにドロッパーに内蔵されることがあります。

次にインストールされる実行ファイルは、Discord のコンテンツ配信ネットワークから取得され、復号化されます。中身は情報窃取ツールである Phoenix キーロガーです。また、C# で書かれたリモートアクセスツールである QuasarRat も、途中の段階でドロップされます。

その後 1 週間にわたって、攻撃者はインストールした QuasarRAT を使用して Phoenix を起動し、MSBuild を通じてコマンドを実行しました。MSBuild で構築・実行されたコマンドは、標的マシン上の Cookie ファイルにアクセスしました。

図 4: Malspam / Phoenix キーロガーによる Cookie の窃取

標的型攻撃

Cookie の窃取は、ただ自動的に行われる活動であるとは限りません。攻撃者が標的のネットワークにより深く侵入するための足がかりになる場合もあります。このような場合、攻撃者はネットワーク上の拠点を利用してエクスプロイトツールを展開し、そのツールを使ってアクセスを拡散させます。重要なデータのネットワークからクラウドサービスへの移行が進むにつれて、攻撃者は、Cookie の窃取や Web ログインデータのスクレイピングを行う際にこれらのサービスへのラテラルムーブメントも行うようになりました。

ソフォスでは、この種の攻撃を 2022 年 6 月に確認しています。この攻撃では Cobalt Strike と Meterpreter が数か月前からの攻撃と平行して Cookie を盗んでいました。この事例では、攻撃者は特に Microsoft Edge ブラウザの Cookie を標的にしていました。まず、攻撃者は Impacket エクスプロイトキットを使い、Windows の SMB ファイル転送を通じて侵入した最初の地点からネットワーク内の標的のコンピューターに Cobalt Strike と Meterpreter をドロップして、拡散させました。

図 5: 手動で Cookie を盗み出す攻撃のシーケンス

次に、攻撃者は Impacket ベースの他の侵入でも確認された Perl スクリプトファイル (「c」と名付けられています) とバッチファイル (execute.exe) とともに、正規の Perl スクリプトインタプリタのコピーを標的のシステム上にドロップしました。さらに、Meterpreter を使ってインタプリタに次のようなコマンド文字列を渡しました。

c:\\windows\\vss\\perl.exe -type c ^> \\\\127.0.0.1\\C$\\__output 2^>^&1 > C:\\WINDOWS\\TEMP\\execute.bat & C:\\WINDOWS\\system32\\cmd.exe
/Q /c C:\\WINDOWS\\TEMP\\execute.bat & del C:\\WINDOWS\\TEMP\\execute.bat

Perl スクリプトは標的のマシン上の Cookie ファイルにアクセスし、その中身を _output という名前の一時ファイルに出力します。バッチファイルは主に _output の中身を攻撃者に転送し、Perl スクリプトを削除します。残りのシェルコマンドは画面出力をオフにし、バッチファイルを削除し、コマンドシェルを終了させます。

より安全な Cookie の保存

上記の 3 つの事例は、Cookie を盗み出すサイバー攻撃のほんの一部に過ぎません。情報窃取型マルウェアは Cookie の窃取機能も備えるようになってきており、窃取した Cookie の販売をビジネスとして成立させるマーケットプレイスが成功を収めています。さらに、Cookie の窃取に焦点を当てた攻撃も増加しており、既存の、あるいは有用なツールとしてインストールされた正規の実行ファイルを悪用するため、単純なマルウェア対策では活動を検知できない可能性があります。

もし多くのアプリケーションで長期間のアクセス Cookie が使用されていなければ、Cookie の窃取はこれほどの脅威にはならないでしょう。たとえば、Slack では永続的な Cookie とセッション固有の Cookie を組み合わせてユーザーの身元確認と認証を行っています。セッション Cookie はブラウザを閉じると消去されますが、一部の環境ではこれらのアプリケーション (Slack など) が無期限に開かれたままになっています。これらの Cookie は、有効期限が切れる前に窃取され、悪用される可能性があります。多要素認証に紐付けられたシングルサインオントークンも同様に、ユーザーがセッションを閉じない限り、潜在的な脅威になり得ます。

ブラウザの Cookie やその他の認証情報を定期的に消去することで、ブラウザのプロファイルに関するファイルを用いて攻撃できる範囲を狭めることができます。また、組織は一部の Web ベースのプラットフォームで管理ツールを使用して、 Cookie の有効期限を短縮できます。

しかし、Cookie ポリシーの強化にはデメリットも存在します。Cookie の有効期限を短縮することは、ユーザーによる再認証の手間を増やすことを意味します。また、Electron や同様の開発プラットフォームをベースにしたクライアントを活用している一部の Web ベースのアプリケーションは、独自の方式で Cookie を扱っています。そのため、たとえば Web ブラウザを介さずに直接狙われる可能性のある、独自の Cookie 保存方式が使用されていることがあります。

ソフォス製品は、スクリプトや信頼できないプログラムによる Cookie の悪用を防ぐために複数の挙動検出ルールを使用し、メモリや挙動を検出することで、情報窃取型マルウェアを検出します。

本記事で紹介した攻撃のセキュリティ侵害の痕跡 (IoC) は、SophosLabs の Github ページで公開されています。

Sophos X-Ops は、本記事への貢献について、SophosLabs の Felix Weyne に謝意を表します。