本ブログ記事は、2022年4月21日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。
ロシアのアンダーグラウンドマーケットで台頭してきた BlackGuard は、最新の .NET ベースのインフォスティーラです。他のインフォスティーラほど幅広い機能を持ちませんが、ウェブブラウザー、暗号通貨サービス、コールドウォレット(資産をオフラインで保管してセキュリティを高めた暗号通貨ウォレット)に対応しています。
BlackGuard は、ArkeiやBHunt Scavengerと同様に、被害者のデバイスから重要な情報を抽出する機能を備えています。さらに、VPN クライアント、インスタントメッセージングサービス、FTP クライアント、VoIP サービスをターゲットにします。
BlackGuard は、最近のマルウェアのトレンドにのって、MaaS (Malware-as-a-Service)として販売と配布がされています。背後にいる脅威グループは、月額のサブスクリプションと生涯パスの両方を提供しています(「生涯」は「作者が逮捕されるまで」と読み替えてください)。
BlackGuard を最初に発見したのはZScaler の研究者らでしたが、弊社のアナリストがその細部を知るために詳しく調査したところ、価値の高いターゲットを評価する機能やデフォルトブラウザーのチェックなど、それまでに報告されていなかった機能が発見されました。このブログには、脅威アクターの販売スレッドから拾ったスクリーンショットも掲載しています。
CylancePROTECT® がBlackGuard Infostealer を予想防御でブロックする様子は、次の動画をご確認ください。
オペレーティングシステム
リスクと影響
技術的解析
BlackGuard インフォスティーラは、古く廃れた脅威が残していった隙間にうまく収まっています。他のマルウェア作者なら相当の追加料金を請求するような難読化を、比較的低価格で提供しています。また、使いやすく、さまざまなフォーラムで販売されているため入手も容易です。
耐解析チェック
BlackGuard は、実行時に耐解析チェックと耐検知チェックを行い、サンドボックス内で動作しているかどうかや、特定の種類のアンチウイルスソフトウェアがインストールされているデバイス上で動作しているかどうかを確認します。次の表に挙げた動的リンクライブラリ(.DLL: Dynamic-Link Library)の存在を検知すると、実行して検知されることを防ぐために、自身を停止しようとします。
DLL 名 |
アプリケーション名 |
SbieDll.dll |
Sandboxieサンドボックス |
SxIn.dll |
360 Total Security |
Sf2.dll |
Avast Antivirus |
snxhk.dll |
Avast Antivirus |
cmdvrt32.dll |
COMODO Internet Security |
また、BlackGuard は、「IP-Whois」クエリを行って、被害者のおおまかな所在地を特定します。一部のサンプルでは、この機能を利用して特定の東欧諸国での実行を中止しています。このことは、作者の所在地に関する疑念を裏付けていると思われます。
私たちが解析したサンプルでは、被害者の所在地が次の国である場合に実行を止めています。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
文字列の難読化
BlackGuard は、人間にも読みやすい .NET というプログラミング言語で作成されています。このような透明性を損なうために、「"Obfuscar」という .NET 用難読化ツールを使っています。難読化によりソースコードが人間にとって理解困難な形になるためマルウェアによく使われますが、クラックや海賊版作成につながる不正な解析を防ぐ目的で合法なソフトウェア開発でも使われます。
Obfuscar は、BlackGuard のすべての文字列データを 1 つのバイト配列に変換し、それに XOR 演算を適用することで、静的解析中に文字列が発見されることを防いでいます。XOR 暗号は、暗号によく使用される単純な加法的暗号です。
このバイト配列は、実行時に難読化を解除されます。元の文字列参照は、すべて関数呼び出しに置き換えられます。ここで使われる関数は、先ほどのバイト配列から、指定されたインデックスと長さで文字列を取り出します。この処理を下の図 1 に示します。
一部のケースでは、文字列がさらに Base64 エンコードされており、バイト配列から取り出した後にデコードが必要となります。これは特に、不審な行動の疑念を持たれやすい文字列に対して行われていました。
そのような文字列は悪意のある重要な機能を含んでいるため、このレイヤーが追加されたことの理由は、デコードされた状態の文字列があまり長時間メモリ上に存在しないようにするためと思われます。このように難読化を強化することで、メモリスキャナーや他の検知ベースのアンチウイルスシステムによって悪意のある活動が捕捉される可能性が低くなります。
図 1 – 文字列難読化解除の詳細
情報の窃取
BlackGuard は、耐解析チェックをすべて終えると、フォルダを %AppData% に作成して、そこに盗んだ情報を保存します。%AppData%に作成して、そこに盗んだ情報を保存します。
フォルダを作成した後は、情報窃取機能の使用を始めます。下の図 2 のように、このマルウェアは、さまざまな情報窃取の目的を、それぞれ別々の関数で実行するように設計されています。解読が終わると、各関数を脅威アクターが達成したい目標に対応付けることができます。
図 2 – 中核となる情報窃取関数の詳細
VPN
BlackGuard は、OpenVPN と NordVPN の 2 種類のよく使用されている仮想プライベートネットワーク(VPN)を探します。一般的なインストールパスから両アプリケーションを見つけようとします。さらに、両アプリケーションのユーザーデータからユーザー名とパスワードを探します。
被害者のデバイスの情報
BlackGuard は、複数の関数を呼び出して被害者のデバイスからデータを収集し、「information.txt」という名前のファイルに保存します。次のデータが標的となります。
- IP アドレス
- 国と地域
- ハードウェア ID (HWID)
- オペレーティングシステム(OS)
- ログデータ(感染に関するもの)
また、知らないうちに同意なくスクリーンショットを撮る関数もあります。これは、メインの情報窃取関数で一度だけ実行されます。スクリーンショットは、「Screen.Png」という名前で「information.txt」とともに%AppData% ディレクトリに保存されます。
ブラウザー
BlackGuard は、他の多くの最新のインフォスティーラと同様に、保存されているブラウザー情報を取得してログイン認証情報を盗む機能を備えています。
以下の情報をユーザーのブラウザーから見つけようとします。
- ログイン名
- 自動入力情報
- URL と履歴
- ダウンロードパス
ブラウザーごとに情報の保存場所と保存方法が異なるため、以下のような代表的なブラウザーからの情報窃取に対応する関数を備えています。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージングアプリケーション
BlackGuard は、一般的なインスタントメッセンジャー(IM)アプリケーションも秘密情報窃取の標的としています。このために、アプリケーションごとの %AppData% ディレクトリに保存されている情報を読み出します。
ブラウザーデータの場合と同様に、各インスタントメッセージングアプリケーションは別々の場所にデータを保存するため、アプリごとにそれを検索する組み込みの関数を備えています。
いくつか例を見てみましょう。
- Telegram 用の収集関数の場合、%AppData% をチェックしてから Telegram.exe の存在を確認し、さらにこのメッセンジャーが生成してローカルに保存した %tdata% フォルダもチェックします。
- Pidgin 用の場合、「accounts.xml」ファイルを読み出して、プロトコル、ログイン名、パスワードをコピーします。
他のメッセージングアプリケーションからデータを盗む方法はもっと大雑把なもので、各アプリのアプリケーションフォルダから、すべてのファイルをコピーするだけです。
アプリケーション名 |
アプリケーションパス |
Telegram |
%AppData%\Telegram Desktop\tdata |
Pidgin |
%AppData%\.purple\accounts.xml |
Tox |
%AppData%\Tox |
Element |
%AppData%\Element\Local Stroage\leveldb |
Signal |
%AppData%\Signal\Local Storage\\leveldb |
Proxifier |
%AppData%\Proxifier4\Profiles |
各バージョンの Discord
Discord は、毎月 1 億 5 千万人のアクティブユーザーがいる世界的に非常に人気のある VoIP (Voice-over-IP)サービスとなり、マルウェア作者が注目する分野としては比較的新しいものとなっています。
BlackGuard は、被害者のマシンに Discord が存在するかどうかを、さまざまなバージョンに対して確認してから、パスワードやアカウントを求めてローカルに保存されているユーザーデータを持ち出します。
名前 |
パス |
Discord |
Discord\\Local Storage\\leveldb |
Discord PTB (Public Test Build) |
Discord PTB\\Local Storage\\leveldb |
Discord Canary |
Discord Canary\\leveldb |
暗号通貨
BlackGuard の主な目的は、暗号通貨を盗むことです。BlackGuard が目指しているのは、Arkei インフォスティーラと同様に、暗号アプリケーション、暗号サービス、暗号ウォレットのすべての側面に対応し、被害者のマシン上で利用可能な暗号関連の標的をすべて攻撃することです。
BlackGuard が標的とする暗号関連のリソースは次の通りです。
暗号ウォレットアプリケーション
ウォレット名 |
アプリケーションパス |
Zcash |
\\Zcash |
Armory |
\\Armory |
Jaxx |
\\com.liberty.jaxx\\IndexedDB\\file__0.indexeddb.leveldb |
Exodus |
\\Exodus\\exodus.wallet |
Ethereum |
\\Ethereum\\keystore |
Electrum |
\\Electrum\\wallets |
AtomicWallet |
\\atomic\\Local Storage\\leveldb |
Guarda |
\\Guarda\\Local Storage\\leveldb |
Zap |
\\Zap\\Local Storage\\leveldb |
Binance |
\\Binance\\Local Storage\\leveldb |
atomic_qt |
\\atomic_qt\\config |
Frame |
\\Frame\\Local Storage\\leveldb |
Io.solarwallet.app |
\\io.solarwallet.app\\Local Storage\\leveldb |
TokenPocket |
\\TokenPocket\\Local Storage\\leveldb |
Litecoin |
\\Litecoin |
Dash |
\\DashCore |
Chrome のウォレット
ハードコードされている名前 |
ハードコードされているパス |
拡張機能の ID とリンク |
Chrome_Binance |
\Google\Chrome\User Data\Default\Local ExtensionSettings\fhbohimaelbohpjbbldcngcnapndodjp\ |
|
Chrome_Bitapp |
\Google\Chrome\User Data\Default\Local ExtensionSettings\fihkakfobkmkjojpchpfgcmhfjnmnfpi |
|
Chrome_Coin98 |
\Google\Chrome\User Data\Default\Local ExtensionSettings\aeachknmefphepccionboohckonoeemg\ |
|
Chrome_Equal |
\Google\Chrome\User Data\Default\Local ExtensionSettings\nkbihfbeogaeaoehlefnkodbefgpgknn\ |
|
Chrome_Guild |
\Google\Chrome\User Data\Default\Local ExtensionSettings\nanjmdknhkinifnkgdcggcfnhdaammmj\ |
|
Chrome_Iconex |
\Google\Chrome\User Data\Default\Local ExtensionSettings\flpiciilemghbmfalicajoolhkkenfel\ |
|
Chrome_Math |
\Google\Chrome\User Data\Default\Local ExtensionSettings\afbcbjpbpfadlkmhmclhkeeodmamcflc\ |
|
Chrome_Mobox |
\Google\Chrome\User Data\Default\Local ExtensionSettings\fcckkdbjnoikooededlapcalpionmalo\ |
|
Chrome_Phantom |
\Google\Chrome\User Data\Default\Local ExtensionSettings\bfnaelmomeimhlpmgjnjophhpkkoljpa\ |
|
Chrome_Tron |
\Google\Chrome\User Data\Default\Local ExtensionSettings\ibnejdfjmmkpcnlpebklmnkoeoihofec\ |
|
Chrome_XinPay |
\Google\Chrome\User Data\Default\Local ExtensionSettings\bocpokimicclpaiekenaeelehdjllofo\ |
|
Chrome_Ton |
\Google\Chrome\User Data\Default\Local ExtensionSettings\nphplpgoakhhjchkkhmiggakijnkhfnd\ |
|
Chrome_Metamask |
\Google\Chrome\User Data\Default\Local ExtensionSettings\nkbihfbeogaeaoehlefnkodbefgpgknn\ |
|
Chrome_Sollet |
\Google\Chrome\User Data\Default\Local ExtensionSettings\fhmfendgdocmcbmfikdcogofphimnkno\ |
|
Chrome_Slope |
\Google\Chrome\User Data\Default\Local ExtensionSettings\pocmplpaccanhmnllbbkpgfliimjljgo\ |
|
Chrome_Starc |
\Google\Chrome\User Data\Default\Local ExtensionSettings\mfhbebgoclkghebffdldpobeajmbecfk\ |
|
Chrome_Swash |
\Google\Chrome\User Data\Default\Local ExtensionSettings\cmndjbecilbocjfkibfbifhngkdmjgog\ |
|
Chrome_Finnie |
\Google\Chrome\User Data\Default\Local ExtensionSettings\cjmkndjhnagcfbpiemnkdpomccnjblmj\ |
|
Chrome_Keplr |
\Google\Chrome\User Data\Default\Local ExtensionSettings\dmkamcknogkgcdfhhbddcghachkejeap\ |
|
Chrome_Crocobit |
\Google\Chrome\User Data\Default\Local ExtensionSettings\pnlfjmlcjdjgkddecgincndfgegkecke\ |
|
Chrome_Oxygen |
\Google\Chrome\User Data\Default\Local ExtensionSettings\fhilaheimglignddkjgofkcbgekhenbh\ |
|
Chrome_Nifty |
\Google\Chrome\User Data\Default\Local ExtensionSettings\jbdaocneiiinmjbjlgalhcelgbejmnid\ |
|
Chrome_Liquality |
\Google\Chrome\User Data\Default\Local ExtensionSettings\kpfopkelmapcoipemfendmdcghnegimn\ |
Edge のウォレット
ハードコードされている名前 |
ハードコードされているパス |
拡張機能 ID |
Edge_Auvitas |
\Microsoft\Edge\User Data\Default\Local Extension Settings\ klfhbdnlcfcaccoakhceodhldjojboga\ |
|
Edge_Math |
\Microsoft\Edge\User Data\Default\Local Extension Settings\ dfeccadlilpndjjohbjdblepmjeahlmm\ |
|
Edge_Metamask |
\Microsoft\Edge\User Data\Default\Local Extension Settings\ ejbalbakoplchlghecdalmeeeajnimhm\ |
|
Edge_MTV |
\Microsoft\Edge\User Data\Default\Local Extension Settings\ oooiblbdpdlecigodndinbpfopomaegl\ |
Oooiblbdpdlecigodndinbpfopomaegl (No longer present) |
Edge_Rabet |
\Microsoft\Edge\User Data\Default\Local Extension Settings\ aanjhgiamnacdfnlfnmgehjikagdbafd\ |
|
Edge_Ronin |
\Microsoft\Edge\User Data\Default\Local Extension Settings\ bblmcdckkhkhfhhpfcchlpalebmonecp\ |
bblmcdckkhkhfhhpfcchlpalebmonecp (Relisted Link) |
Edge_Yoroi |
\Microsoft\Edge\User Data\Default\Local Extension Settings\ akoiaibnepcedcplijmiamnaigbepmcb\ |
FTP クライアント
また、BlackGuard は、FileZilla と WinSCP という 2 つの有名な FTP (File Transfer Protocol)サービスを、被害者のデバイスから見つけ出そうとします。どちらも、執筆時点で 1 億人以上のアクティブダウンロードがある人気のフリーウェアアプリケーションです。
BlackGuard は、被害者の最近および現在の FTP サーバーに関連したローカルに保存されている情報を取得しようとします。これは、被害者が転送や操作をした価値のありそうなデータへのアクセスを可能にするために行われます。
高価値ターゲットの評価
脅威アクターは、BlackGuard のサンプルを作成する際に、マルウェアが注目する文字列のリストを指定することができます。これらの文字列は、各サンプルのバイナリのリソースセクションにあり、BlackGuard の最終的な情報収集処理の中でトークン化されます。
そして、収集したすべてのデータから、これらの文字列への参照を探します。一致した文字列は、持ち出すことのできたデータを確認する際に、価値の高い標的として注目されます。
以上の行動は、下の図 3 と図 4 のコードの中に確認できます。
図 4 – 高価値ターゲットの評価(その 2)
これらの文字列はサンプルの作成時に指定されるため、出回っているサンプルによってある程度の違いがあります。トークン化された文字列のうち、私たちが発見したものは、暗号通貨、バンキング、アンチウイルスベンダーのウェブサイトに関連しています。
複数のサンプルでリソースを調査し、標的とされていることが非常に多い文字列のリストを作成しました。
文字列 |
カテゴリ |
admin |
Administration |
ads.google.com |
Advertising |
kaspersky.com |
Antivirus |
avast.ru |
Antivirus |
malwarebytes.com |
Antivirus |
chase.com |
Banking |
santander.com |
Banking |
www.hsbc.com |
Banking |
www.wellsfargo.com |
Banking |
www.jpmorgan.com |
Banking |
blockchain.com |
Cryptocurrency |
gate.io |
Cryptocurrency |
bitpapa.com |
Cryptocurrency |
coinpayments |
Cryptocurrency |
ton.org |
Cryptocurrency |
btc.com |
Cryptocurrency |
block.io |
Cryptocurrency |
coinbase.com |
Cryptocurrency |
payeer.com |
Cryptocurrency |
crypto.com |
Cryptocurrency |
paypal.com |
Online Commerce |
facebook.com |
Social Media |
$#!3301)&(*&$&*$#!234)&(*&$&*$#!234)& |
Unknown |
&(*&$&*$#!3301)&(*&$&*$#!234)&(*&$&*$#!234)&(*&$&*$#!234) |
Unknown |
一致したものは「search_link.txt」に書き込まれ、一時的な %AppData% ディレクトリに、その他の盗んだ情報とともに保存されます。
作者が販売スレッドに投稿したスクリーンショットを見ると、一致したものがコマンドアンドコントロール(C2)パネルに表示されている様子を確認できます(図 5)。
図 5 – BlackGuard の C2 パネルのスクリーンショット
C2 への持ち出し
BlackGuard は、収集した情報をすべて %AppData% にある自身の一時ディレクトリにコピーしてから、ランダムに生成した名前の RAR アーカイブに収めます。
ファイル名の生成には、前に要求した IP 情報をもとにして記録した被害者の国の名前を使用し、それに擬似ランダムな文字列を連結しています。
この文字列は、「aytdgirlzxcvbnmasdfghjklqwertyuiopAABBFFGKKDS」という文字集合から生成されます。
例: (Ireland)_[SrqFrBDjypKrrielGGoFAkAFt].rar
図 6 – 擬似ランダムな RAR ファイル名の生成
次に、作成された RAR ファイルが C2 サーバーに POST リクエストで送信されます(図 7)。このリクエストには、以下のような、価値のある標的を簡単に特定できるようにする基本的な情報が含まれます。
|
|
|
|
|
|
|
|
|
|
|
図 8 – データの POST リクエスト
上の例では、RAR アーカイブのファイル名を期待通りに生成することができませんでした。これは、マルウェア解析がオフラインの閉じた環境で行われたためで、IP アドレスを収集できず、そこから特定する国名がファイル名にありません(図 6、図 8)。
POST リクエストで送信されるファイル
項目 |
説明 |
Browsers (ディレクトリ) |
Opera、Edge、Chrome から収集したデータ。クッキー、ダウンロード、履歴、高価値ターゲットの検索結果を含む。 |
Chrome_wallet (ディレクトリ) |
Chrome Wallet 拡張機能から収集したデータ(上のリストから) |
Edge_wallet (ディレクトリ) |
Edge Wallet 拡張機能から収集したデータ(上のリストから) |
Files (ディレクトリ) |
ユーザーのプロファイルから収集したファイル(デスクトップ、ドキュメントなど) |
Telegram (ディレクトリ) |
盗んだ Telegram データ |
Information.txt |
国、HWid、OS、ログの日付に関する情報が含まれる。 |
Screen.png |
ユーザーのデスクトップのスクリーンショット |
結論
インフォスティーラが進化するにつれ、そのマーケットも進化します。図 9 に見られるように、BlackGuard は発展途上にある複雑な脅威です。
図 9 :マルウェアの作者による更新ログ(ロシア語からの翻訳)
この脅威の人気が高まり、MaaS 商品として広く配布されるようになると、攻撃ベクトルも変化し、典型的な攻撃の図式に当てはめることは困難になります。各攻撃がターゲットの要件に合わせてカスタマイズされることが多いため、被害者の環境にどのように出現するかを知ることは困難です。手頃な価格なので、初心者がわずかな料金で高度なマルウェアを使用できます。
最近では、使いやすさや利便性から、金融情報や暗号通貨のデータを自分のデバイスに保存することが一般的になっています。このことから、こういったデバイスからの情報窃取が、利益を追求する脅威アクターにとって極めて魅力的な仕事になっています。これは、ターゲットが個人の場合にも大企業の一部の場合にも当てはまります。
BlackGuard は暗号通貨のデータとウォレット情報に狙いを定めているため、暗号通貨のヘビーユーザーにとって、より効果的なセキュリティ対策をエンドポイントに導入することが非常に重要となります。
YARA ルール
以下の YARA ルールは、この記事で説明した脅威を捕捉するために BlackBerry の Research & Intelligence Team が作成しました。
import "pe" rule Mal_Infostealer_Win32_BlackGuard strings: $b1 = "upche" wide |
侵入の痕跡 (IOC)
C2 Domains: |
BlackBerry によるサポート
もしBlackGuard Infostealer のような脅威にさらされているなら、BlackBerry にお任せください。現在 BlackBerry 製品を利用していなくても問題ありません。 BlackBerry の
インシデント対応チーム は、世界的に活躍するコンサルタントから構成され、ランサムウェアや持続的標的型攻撃(APT)など、さまざまなインシデントへの対応と封じ込めのサービスを専門としています。
弊社はグローバルコンサルティングチームを常に待機させており、ご希望があれば、24 時間サポートと現地支援を提供できます。次の URL からご相談ください。https://www.blackberry.com/ja/jp/forms/enterprise/contact-us
・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us
・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows
・サイバーセキュリティチームによるコンサルティング: https://www.blackberry.com/ja/jp/services/blackberry-cybersecurity-consulting/overview
・BlackBerry Japan:https://www.blackberry.com/ja/jp