- オープンソースの情報窃取マルウェアである SapphireStealer は、2022 年 12 月に初めて公開されて以来、マルウェアの公開リポジトリで頻繁に確認されるようになっています。
- SapphireStealer のような情報窃取マルウェアは、企業のログイン情報などの機密情報を取得するために使用されます。そうした情報は他の攻撃者に転売されることが多く、情報を買った攻撃者が不正アクセスに利用して、スパイ活動やランサムウェアの展開、恐喝行為などの攻撃を行います。
- 複数のグループが SapphireStealer を使用しており、各グループが独自にオリジナルのコードベースに改良や変更を加えてデータ流出の仕組みを追加できるよう機能拡張を図っているので複数の亜種が生まれているというのが Talos の見解(信頼性は中程度)です。
- 多段階の感染プロセスの一環で SapphireStealer が送り込まれることもあるようです。たとえば攻撃者が FUD-Loader のようなオープンソースのマルウェアダウンローダーを利用して、被害に遭う可能性のある人たちに SapphireStealer を送り付けるといったことです。
SapphireStealer がオープンソースで公開され、攻撃者が注目
ここ数年の間に、情報窃取マルウェアは脅威環境全体に広がってきました。非常に古くから存在していた脅威ですが、このところ Cisco Talos は、さまざまな非合法のフォーラムやマーケットプレイスにおいて、新しい情報窃取マルウェアの販売やレンタルが増加している状況を確認しています。情報窃取マルウェアは、金銭的な動機のある攻撃者にとって魅力的な選択肢とみなされることが少なくありません。というのも、情報窃取マルウェアを使用すれば、簡単に機密情報やアカウント関連の詳細情報を侵害して、他の攻撃者に情報を流せるからです。窃取されることが多いのは企業アカウントのログイン情報やアクセストークンなどのデータで、盗まれたデータはその後、企業ネットワークをさらに侵害するために使用されることがあります。多くの場合、情報窃取マルウェアによって生成されたログイン情報のログは収益化され、ログに含まれるネットワークアクセス情報が他の攻撃者に販売されます。その後、情報を買った攻撃者がそれを悪用してネットワークに侵入し、スパイ活動やランサムウェアの展開、恐喝行為などさまざまな目標を達成するために活動を開始する可能性があります。
SapphireStealer は新しい情報窃取マルウェアの一例であり、各種ブラウザのログイン情報データベースや、機密性の高いユーザー情報を含んでいそうなファイルを簡単に窃取することに主眼を置いた設計となっています。SapphireStealer のコードベースは、2022 年 12 月 25 日に GitHub で公開されました。
新しいオープンソースのマルウェアのコードベースがリリースされた後によくあることですが、攻撃者はすぐに行動を起こし、この情報窃取マルウェアで実験的な試みを始めました。追加機能をサポートできるように拡張を図ったほか、他のツールを使用して SapphireStealer の感染検出が難しくなるようにしています。
SapphireStealer の新しくコンパイルされたバージョンは、2023 年 1 月中旬からマルウェアの公開リポジトリにアップロードされ始め、2023 年前半を通して何度もアップロードされたことが確認されています。コンパイル時に生成される、これらのサンプルに関連するアーティファクトを調べると、SapphireStealer のコードベースが現在複数の攻撃者に使用されている状況が見えてきます。すでに複数の亜種が実際に展開されており、時間の経過とともに、さまざまな攻撃者がその効率性と有効性を向上させています。
ほとんどのサンプルはコンパイルのタイムスタンプが偽造されていますが、サンプルが最初に公開リポジトリにアップロードされた日付や、PDB のパスウェイのようなコンパイル時に生成されるアーティファクトによって、マルウェアの活動をクラスタ分けし、別々の開発活動が行われていることを確認できました。
簡単なのに有効な機能を備えた SapphireStealer によるログイン情報とデータの窃取
SapphireStealer は .NET で書かれた情報窃盗マルウェアです。簡単ながら有効な機能が備わっており、感染したシステムから以下のような機密情報を窃取します。
- ホスト情報
- スクリーンショット
- キャッシュされているブラウザのログイン情報
- システムに保存されているファイルのうち、事前に定義しておいたファイル拡張子のリストに一致するファイル
マルウェアが最初に実行されると、システム上で既存のブラウザのプロセスが実行されているかどうかをまず確認します。マルウェアは現在実行中のプロセスリストにクエリを行い、以下のリストに一致するプロセス名を探します。
- chrome
- yandex
- msedge
- opera
一致するプロセスが検出されると、Process.Kill() を使用して終了させます。Google Chrome に対するこのコード実行の例を以下に示します。
次に Chromium.Get() を呼び出して、%APPDATA% または %LOCALAPPDATA% にあるブラウザのデータベースファイルの各ディレクトリをチェックします。マルウェアは、ハードコードされたパスのリストを使用して、以下のブラウザアプリケーションのログイン情報を保存しているデータベースの存在を特定します。
- Chrome
- Opera
- Yandex
- Brave ブラウザ
- Orbitum ブラウザ
- Atom ブラウザ
- Kometa ブラウザ
- Microsoft Edge
- Torch ブラウザ
- Amigo
- Coc Coc
- Comodo Dragon
- Epic Privacy ブラウザ
- Elements ブラウザ
- CentBrowser
- 360 ブラウザ
以下の場所に作業ディレクトリが作成されます。マルウェアはここでデータをステージングし、最終的に流出させます。
%TEMP%\sapphire\work
発見されたログイン情報データベースの内容はすべてダンプされます。ダンプ情報は、マルウェアの作業ディレクトリ内のテキストファイル Passwords.txt に保存されます。
マルウェアは次にシステムのスクリーンショットのキャプチャを試み、同じ作業ディレクトリ内の Screenshot.png というファイルに保存します。
マルウェアの作業ディレクトリには「Files」という新しいサブディレクトリが作成されます。その後、ファイル窃取プログラムが実行され、被害者のデスクトップフォルダ内に保存されているファイルのうち、ファイル拡張子のリストに一致するファイルの検出が試行されます。リストの内容は分析したサンプルによって異なります。以下はリストの一例です。
- .txt
- .doc
- .docx
- .xml
- .img
- .jpg
- .png
ファイル窃取プログラムの実行が完了すると、log.zip という圧縮アーカイブが作成されます。これには、マルウェアの作業ディレクトリに前もって書き込まれていたすべてのログが含まれています。
このデータはその後、メッセージの作成と送信を担う部分のコードに定義されたログイン情報を使用して、Simple Mail Transfer Protocol(SMTP)を介して攻撃者に送信されます。
以下のホスト関連情報が収集され、電子メールのメッセージ本文に記載されます。
- IP アドレス
- ホスト名
- 画面解像度
- OS のバージョンと CPU のアーキテクチャ
- プロセッサ ID
- GPU 情報
ログの流出に成功すると、マルウェアは作成していた作業ディレクトリを削除して実行を終了します。
SapphireStealer を拡張し、データ流出機能を追加
初期のサンプルがマルウェアの公開リポジトリやスキャンプラットフォームにアップロードされ始めて以来、さまざまな攻撃者によっていくつかの注目すべき修正が加えられたことが確認されています。開発努力のほとんどは、データ流出の柔軟性を高めることや、SapphireStealer の新規感染の発生を攻撃者に簡単に通知できるようにすることに注がれているようです。このマルウェアはオープンソースであり、異なる複数の攻撃者が使用しているため、開発活動の多くは各攻撃者が独自に行っており、新しい機能は他の攻撃者に関連するサンプル群には存在しません。
ある事例で確認された SapphireStealer のサンプルでは、前述のプロセスで収集したデータを流出させるために、以前こちらの記事で取り上げた Discord のウェブフック API が使用されていました。
この事例では、Discord のウェブフック URL(SendLog.url)は次のようになっていました。
hxxps[:]//discord[.]com/api/webhooks/1123664977618817094/La_3GaXooH42oGRiy8o7sazh1Cg0V_mzkH67VryfSB1MCOlYee1_JPMCNsfOTji7J9jO
またいくつかの事例で確認された SapphireStealer のサンプルの中に、Telegram の投稿 API を使用してログデータを送信することで新規感染の発生を攻撃者に通知する機能を備えたものがあることも確認されました。
さらに Talos は、SapphireStealer の FileGrabber 機能が収集、流出させる対象のファイル拡張子にはばらつきがあることも確認しています。対象が最小限で、少数のファイル拡張子しか含まれていないものもあれば、攻撃者が取得できるファイル形式が数え切れないほど含まれているものもありました。
同様に、SapphireStealer の初期バージョンは、冗長なコード実行や、同じ処理を何度も繰り返す無駄な実行が目立ち、全体的に非効率であるという特徴がありました。Talos は、SapphireStealer の他のサンプルを時間をかけて分析する中で、マルウェアの処理の効率化、コードの大幅な書き直し、コア機能の改善ために、さまざまな攻撃者が繰り返し対策を講じた証拠を確認しました。
多段階の感染に使用される FUD-Loader
いくつかの事例で、攻撃者が同じ GitHub アカウントで公開されている FUD-Loader というマルウェアダウンローダーを利用していることが確認されました。このダウンローダーは、2023 年 1 月 2 日に初めて GitHub にコミットされました。これは、SapphireStealer のコードが初めてコミットされてまもなくのことです。リリース以来、感染プロセスの初期段階で、攻撃者が管理する配布サーバーから追加のバイナリペイロードを取得するために、さまざまな脅威者によって同ダウンローダーが使用されてきました。
SapphireStealer と同じく、このローダーは .NET で書かれており、処理内容はかなり単純です。HTTP/HTTPS 通信を利用して攻撃者が管理するインフラから追加の実行ファイルを取得し、取得したコンテンツをディスクに保存し、その後、そのコンテンツを実行して感染プロセスを継続することが基本的な役割です。
FUD-Loader が使用されたほとんどの事例では、次のセクションで説明するインフラでホストされている SapphireStealer のバイナリペイロードを同ローダーが取得していたので、同一の攻撃者によって作成されたサンプルであることを特定できました。
さらに、2023 年を通して、DcRat、njRAT、DarkComet、AgentTesla などさまざまな脅威を送り込むために同ダウンローダーが使用されてきた状況も確認しています。
運用セキュリティ(OPSEC)の失敗例
あるマルウェア活動で確認されたサンプル群を分析したところ、健全な運用セキュリティの維持に支障をきたす攻撃者側の失敗がいくつか見られました。サンプルの 1 つには、コンパイル後も以下のプログラムデータベース(PDB)のパスウェイが存在することが確認されました。
C:\Users\roman\OneDrive\Рабочий стол\straler\net452\new_game.pdb
このサンプルは、データ流出に SMTP を使用するように設定されており、ハードコードされた以下のログイン情報を利用していました。
これと同じログイン情報が、Talos が分析した別のサンプルにもハードコードされていました。
この 2 つ目のサンプルには別の PDB が含まれていて、その PDB のパスウェイには特定のタイプミスがありました。
D:\C# proect\Sapphire\obj\Debug\Sapphire.pdb
それより前に分析したサンプルにも同じ PDB のパスウェイがあり、そこにも同じタイプミスが含まれていました。この事例では、攻撃者はデータを流出させるために、個人を特定できる SMTP のアカウント情報をハードコードしていました。
「romanmaslov200」というハンドルネーム/エイリアスのアカウントが他にないか探したところ、人気のビデオゲームストア Steam のアカウントなど、攻撃者のものかもしれないさまざまな個人アカウントが見つかりました。
分析した 3 つのサンプルのうち 2 つは、いろいろな時期に以下の URL でホストされていました。
前述の Steam のアカウントに加え、ロシア語のフリーランスフォーラムでも同じアカウントを確認しました。このアカウントは、フリーランスの Web 開発サービスを宣伝するために使用されていました。ユーザープロファイルには、SapphireStealer のサンプルをホストしていることが確認されたドメインと、ログイン情報データベースを解析してデータを流出させるために取得された、依存関係にある各種コンポーネントも記載されています。
オープンソースのマルウェアのコードベースが容易に入手できるようになったことの副産物の 1 つは、金銭的な動機からサイバー犯罪に参入する障壁が、時が経つにつれて低下し続けていることです。攻撃ライフサイクルの各段階で運用セキュリティを確立することに未熟な個人やグループが実行した攻撃を分析すると、この傾向は明らかです。情報窃取マルウェアを使用した攻撃を行うには、操作に関する専門知識はそれほど必要ではないかもしれません。その一方で、窃取されたデータが後日さらなる攻撃に使用されることが多いため、企業環境に大きな損害を与える可能性があります。
カバレッジ
今回の脅威は、以下の製品で検出してブロックすることが可能です。
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。
この脅威を検出する Snort SID は、62243 ~ 62247 です。
Orbital クエリ
Cisco Secure Endpoint ユーザーは、Orbital Advanced Search を使用して複雑な OSquery を実行し、エンドポイントが特定の脅威に感染しているかどうかを確認できます。この脅威に対応する具体的な OSquery については、こちらをクリックしてください。
IOC(侵入の痕跡)
この調査の IOC は、こちらの GitHub リポジトリでも提供しています。
本稿は 2023 年 08 月 31 日に Talos Group のブログに投稿された「SapphireStealer: Open-source information stealer enables credential and data theft」の抄訳です。