マルウェア
ブラウザや暗号資産ウォレットを狙う新たな情報窃取型マルウェア「Bandit Stealer」について解説
Go言語で作成された新しい情報窃取型マルウェア「Bandit Stealer」の手口を分析しました。本マルウェアは検知回避の仕組みを備え、被害端末からさまざまなブラウザや暗号資産ウォレットに関わる情報を窃取します。
最近になって「Bandit Stealer」と呼ばれる新たなマルウェアが出現し、さまざまなブラウザや暗号資産ウォレットの情報を窃取する機能に加え、検知回避の仕組みも備えていることから、注目を集めています。マルウェアのコミュニティ内では、Bandit Stealerの利用を呼びかけるプロモーション活動が積極的に展開され、その存在感が高まりつつあります。本稿執筆時点で当該マルウェアの動作環境はWindowsプラットフォームに限定されていますが、クロスプラットフォーム対応のプログラミング言語「Go」で開発されているため、将来的には他のプラットフォームに移植される可能性があります。
本調査で解析した検体は、Go言語で作られた64ビットの実行形式ファイルであり、そのSHA256値は以下のとおりとなっていました。以降、この新たな情報窃取型マルウェアが持つ機能や特徴について詳しく解説します。
050dbd816c222d3c012ba9f2b1308db8e160e7d891f231272f1eacf19d0a0a06
権限昇格
本マルウェアは、権限昇格を行うためにWindowsオペレーティングシステム(OS)が提供するコマンドラインツール「runas.exe」の使用を試みます。「runas.exe」の主な用途は、ログイン中のユーザとは異なるユーザの資格情報や権限によってプログラムやコマンドを実行することです。攻撃者が本ツールの使用に成功した場合、管理者などの高い権限で不正な処理を実行することが可能となり、結果としてセキュリティツールによる検知やブロックといった機能を回避できるようになります。
Microsoft社では、runas.exeにセキュリティ上の制約を設けるなど、不正利用の防止を目的とするさまざまな対策を実施しました。この結果、runas.exeによる権限の行使には、一定の制限が課せられるようになりました。さらにMicrosoft社は、一定の権限を持つ承認済みユーザ以外では上位権限での操作を行使できないように、ユーザアカウント制御(UAC:User Account Control)を強化しました。今回の攻撃者はrunasを用いてBandit Stealerを管理者権限で実行しようとしましたが、その試みは阻止されました。これは、Microsoft社のセキュリティ対策や既存の保護機能が働いた結果として、管理者権限でrunasを利用する際にパスワード入力が要求されたためです。
ユーザはrunas.exeを用いることで、管理者または適切な権限を持つ別ユーザとしてプログラムを実行することが可能です。これにより、プラットフォームレベルのシステムタスクや、重要なアプリケーションに適した安全な環境が確保されます。「runas.exe」は特に、利用中のユーザアカウントがコマンドやアプリケーションの実行に必要な権限を持っていない場面で役立ちます。今回のBandit Stealerは、下記のコマンドラインを通してrunas.exeを利用しました。
runas /user:Administrator <Bandit Stealer自身>
しかし、上記コマンドの実行には認証情報の入力が必要となるため、Bandit Stealerの試みは成功しませんでした。
セキュリティ回避
Bandit Stealerは、自身がサンドボックス環境下に置かれているかを判定するため、下記の文字列をチェックします。サンドボックス環境の場合には動作を変更することで、検知や解析を回避しようとします。
- container
- jail
- KVM
- QEMU
- sandbox
- Virtual Machine
- VirtualBox
- VMware
- Xen
上図の「/proc/self/status」はLinux OS特有のパスであり、Windowsシステムからアクセスしようとしても、エラーが発生します。Linux特有のパスやコマンドが含まれていることより、本マルウェアはまだテスト段階にあり、将来的にはLinux端末を感染させる機能も組み込まれると推測されます。
マルウェア「Bandit Stealer」は、Pastebinの以下のURLからファイルをダウンロードし、それをフォルダ「AppData」配下に「blacklist.txt」の名前で保存します。
hxxps[:]//pastebin[.]com/raw/3fS0MSjN
本ファイル内には、サンドボックスやテスト環境の判定材料として、ハードウェアID、IPアドレス、MACアドレス、ユーザ名、ホスト名、プロセス名などのブラックリストが記載されています。過去の情報窃取ツールにおいても、同じ方式を用いてサンドボックス環境かどうかを判定するものがいくつか確認されています。具体例としては「Creal Stealer」、「Luna Grabber」、「Kyoku Cookie Token Stealer」、「Pegasus Stealer」などが挙げられ、ブラックリストの内容に類似性が見られました。以上より、今回のBandit Stealerは、既存のPython言語による情報窃取ツールをベースに開発されたものと考えられます。Go言語を用いた理由は、検知回避やクロスプラットフォーム対応のためと推測されます。
上述のファイル「blacklist.txt」は、以下のパスの配下に保存されます。
C:\Users\<ユーザ名>\AppData\Roaming
この後、Bandit Stealerは、以下の関数の機能を使用してネットワークインターフェースのアドレス、ハードウェアID(HWID)、ホスト名を取得し、ブラックリストに記載の内容と比較照合します。
bandits.utils.CompareWithBlacklist
MACアドレスの先頭半分(24ビット)は、ネットワークインターフェース製造者やベンダーの識別番号であり、OUI(Organizationally Unique Identifier)と呼ばれています。ブラックリスト中のOUI「00:0c:29」は、サンドボックスやマルウェア解析で使用されるVMware製品に紐づくものであり、仮想マシンなどがこれに相当します。Banit Stealerは、コマンド「wmic csproduct get uuid」を使用して感染端末の一意なハードウェア識別子(UUID)を取得します。本コマンド中のWMIC( Windows Management Instrumentation Command-line)は、Windowsの各種システム情報を取得する仕様の1つです。
本マルウェアは「os_user_Current」によって現在のユーザ名を、「os_hostname」によってデバイス名を取得します。次に、ブラックリスト対象のIPアドレス、MACアドレス、HWID、ユーザ名を確認した上で、マルウェア解析に関連するプロセスを停止する処理に進みます。
Bandit Stealerは、ブラックリスト対象のプロセスを停止する際に、Linux特有のコマンドである「pgrep」や「pkill」を使用します。LinuxやUnix系OSにおいて、これらのコマンドは、特にオーナーのユーザ名やコマンドライン引数を指定して、合致するプロセスを停止する目的で使用されます。コマンド「pgrep」では属性に基づいて稼働中のプロセスID(PID:Process ID)を取得し、コマンド「pkill」では1つまたは複数のプロセスを停止することが可能です。しかし、先述の通り両コマンドはLinux特有のものであり、Windowsでは動作しません。この点でも、本マルウェアは開発途上、またはLinux への移植中である可能性が考えられます。
永続化
Bandit Stealerは不正な処理の永続化を図るため、自動起動用のレジストリエントリを作成します。対象レジストリキーは以下のとおりであり、レジストリ値の名前は「BANDIT STEALER」となります。
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
これにより、感染したシステムが起動または再起動する度に、Bandit Stealerが毎回実行され、永続的に情報窃取が行われるようになります。
被害者の情報を収集
永続化の確立後、Bandit Stealerは被害者の情報を窃取した上で、それを以下のフォルダの配下に保存します。
C:\Users\<ユーザ名>\AppData\Local\ vcinfo
被害者から窃取する情報やその内容を下表に示します。
全情報を取得後、本マルウェアはその結果を以下のフォルダ配下に「USERINFO.txt」の名前で保存します。
C:\Users\<Username>\AppData\Local\vicinfo
Bandit Stealerは、メッセージアプリ「Telegram」のセッション情報を収集します。攻撃者はこれらの情報を用いることで、侵害したアカウントへのなりすましや、私的なメッセージやデータへの不正アクセスを行うことが可能です。
本マルウェアは、ブラウザや暗号資産に関連するさまざまなパスから、個人情報や機密情報を窃取します。これは、金銭的な利益を目的とするものです。チェック対象のブラウザと対応するパスを表2に示します。
被害端末のブラウザから窃取される機密情報を下記に示します。
- ログインデータ
- クッキー情報
- Webの閲覧履歴
- クレジットカード情報
収集対象の暗号資産と対応するパスについて、表3に示します。
さらに本マルウェアは、暗号資産ウォレットに関連するブラウザ拡張機能のパスをチェックします。チェック対象の拡張機能と対応するパスを、それぞれ表4に示します。
被害者の情報を送信
Bandit Stealerは、コマンド「isof -t <ZIPファイルへのパス>」の実行を試みます。「isof」は、Linux環境において、ファイルにアクセス中のプロセスを全て列挙する際に使用されます。攻撃者の意図は、ZIPファイルの内容をサーバやTelegramに送信する前に、当該ファイルにアクセス中の全プロセスを停止させることにあると考えられます。
マルウェアの拡散経路
Bandit Stealerの拡散経路として、不正なWebサイトにアクセスしたユーザが不用意にダウンロードしたか、またはフィッシングメールを介して被害端末に到達した可能性があります。以降、本マルウェアのインストールや起動に際して用いられたさまざまな方式について解説します。
1. 自己解凍アーカイブであるドロッパによってファイル「hot.exe」が起動される。マルウェアとしての不正な処理が全て完了すると、無害なWord文書が開かれる。これは、不正な処理が行われたのではないかというユーザの疑念を取り払い、ただWord文書が開かれただけと思い込ませるための手段である。
以下の親プロセスによって下記ファイルが作成される。
NewWarningNotice.exe(SA256:106a184d39858af7b0264f26fe0fc657a84ccfd87df3a4f55e7060b3c3c1d92d)
- %temp%\RarSFX0\notice.docx(本文書を開く)
- %temp%\RarSFX0\hot.exe(Bandit Stealer)
2. 同じく自己解凍形式であるドロッパによって、ファイル「RUNFIRST.exe」が実行される。マルウェアとしての不正な処理が全て完了すると、無害な実行ファイル「openvpn-gui.exe」が開かれる。
以下の親プロセスによって下記ファイルが作成される。
OpenVpnGUI_unlimited.exe(SHA256:064338e9b9075b48890d9db21fec27a3c7ce10e80abc954ba3777b660eceeacb)
- %TEMP%\RUNFIRST.exe(Bandit Stealer)
- %TEMP%\openvpn-gui.exe
3. 自己解凍形式アーカイブが起動すると、図16のように、アプリケーション「Heartsender」のインストール用メッセージが表示される。Heartsenderはスパム配信ツールの一種であり、大容量のメールを複数の宛先に自動送信する機能を持つ。このHeartsenderを正規な広告やマーケティングに利用することも可能ではあるが、フィッシングや詐欺、マルウェア配信に不正利用されるリスクもあり、通常ユーザがあえて本ツールを用いることは稀と考えられる。今回の攻撃者は、オンラインで購入可能なHeartsenderのインストーラ内にマルウェアを埋めこみ、ユーザを騙す形でこれをインストールさせたと考えられる。
図16の画面上で被害者が「Yes」のボタンを押すと、マルウェアによってBandit Stealerの実体である「Lowkey.exe」が作成、実行される。
以下の親プロセスによって
HeartSender.exe(SHA256:64fe4148c74e0603c198459fd46b3ed3bece8066498f91782b6d98d5c3fc2d01)
Bandit Stealerの以下の実行ファイルが作成される。
%TEMP%\Lowkey.exe
結論
Bandit StealerはWindowsシステム上で動作するように開発されていますが、Linux用コマンドの使用も散見されました。今回の検体から確認されたLinux用コマンドやパスを下記に示します。
- 「pgrep」と「pkill」:ブラックリスト対象のプロセスを停止する目的で使用
- 「isof -t 」:ファイルにアクセス中の全プロセスを検索する目的で使用
- 「/proc/self/status」:Linux OSに特有のパス
上記コマンドは、マルウェアの将来的なクロスプラットフォーム対応に向けて組み込まれたものと推測されます。実際にマルウェアコミュニティ内では、本マルウェアの機能改修やセキュリティパッチが継続的に実施されていく旨が宣伝されています。
IPアドレスやMACアドレスのブラックリストを用いる点で、Bandit Stealerは他の情報窃取ツールとも類似していることが確認されました。特記事項として、ブラックリストは誰にでもアクセスして利用できる形で公開されていました。これは、攻撃者の特定をより一層困難にするものです。分析結果に基づくと、Bandit Stealerとの間に強い関連を示す既知のマルウェアファミリは見られませんでした。そのため、本マルウェアはオリジナルのものと考えられます。また、Bandit Stealerの出現は、マルウェアコミュニティにおける広告の内容とも合致していることが分かりました。
本報告時点で、マルウェア「Bandit Stealer」の背後にいる攻撃グループはまだ特定されていません。これは、Bandit Stealerの出現が最近のことであり、活動状況を示すデータが少ないためです。また、現状では活動の初期段階にあるため、窃取した情報の利用目的や利用法を示す手がかりも得られていません。しかし、可能性としては、身分詐称、金銭的利益の獲得、データ侵害、クレデンシャルスタッフィング攻撃、アカウント乗っ取りなどに利用されるケースが考えられます。
また、ユーザを誘う餌として「Heartsender」が利用された理由についても、明確には分かっていません。調査中、Heartsenderのクラック版が別のWebサイト上で発見されました。今回の検体にもこれが利用された可能性が考えられます。正規な広告やマーケティングを行う企業であるならば、アナリティクス機能や、リアルタイムでのさまざまなコラボレーション機能を備えた別のアプリケーションを用いることの方が多いでしょう。企業や組織またはセキュリティチームでは、アプリケーションのインストール前に、こうした指標を元にダブルチェックすることが特に重要です。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡は、こちらをご参照ください。
参考記事:
New Info Stealer Bandit Stealer Targets Browsers, Wallets
By: Sarah Pearl Camiling, Paul John Bardon
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)