脅威リサーチ

暗号通貨ウォレットと認証情報を狙う新たなマルウェア

投稿者 Xiaopeng Zhang | 2021年7月29日

貴重な暗号通貨がサイバー攻撃によって失われてしまうかもしれない。本ブログでは、デバイスから暗号通貨ウォレットと認証情報を盗むよう設計された新しいマルウェアについて解説しています。どのようなフィッシングメールが使用され、どのように情報が抜き取られるのかがわかるような内容となっています。

FortiGuard Labs Threat Research Report

影響を受けるプラットフォーム: Microsoft Windows
影響を受ける対象:       Windowsユーザー
影響:             被害者のコンピュータから機密情報を収集
深刻度:            クリティカル

FortiGuard Labsチームは最近、迷惑メールに悪意のあるMicrosoft Word文書を添付して、受信者に開封を求める旧来の手法を利用した新しいフィッシングキャンペーンをモニタリングしました。ただし、このフィッシングキャンペーンの詳細な調査を実施したところ、感染した被害者のデバイスから暗号通貨ウォレットと認証情報を盗むよう設計された、Word文書を使用して配布される新しいマルウェアであることがわかりました。このマルウェアは、既知のマルウェアファミリーのいずれにも属していないと考えられたため、マルウェアサンプル内にコンパイルされている定数文字列から「dmechant」と名付けました。

この新しいマルウェアに関する今回の分析の発見を通して、Word文書からの起動方法、被害者のデバイスへの実行ファイルの展開方法、検索する機密情報の種類、および盗難データをSMTPプロトコルを介して攻撃者に送信する方法などが明らかになりました。

FortiGuard Labsが取得したEメールとWord文書

このスパムメールは、購買担当マネージャーから送信された緊急の注文に関するリマインダーのように見えます。受信者は、添付のWord文書の資料を確認し、できるだけ早くメールに返信するよう求められています。

図1.1:取得したフィッシングメール

他のフィッシングキャンペーンに使用されるWord文書と同様に、このWord文書には悪意のあるマクロが含まれています。Wordを開くとセキュリティ警告バーが表示され、Wordを開く危険性がユーザーに通知されます。

図1.2:添付されたWord文書の内容

興味深いことに、この文書の内容はスペイン語で書かれています。ここからの推測で、このキャンペーンはさまざまな地域をターゲットにしており、誤った文書が添付されたか、この警告を隠蔽するために意図的に行われたと考えることができます。いずれにせよ、Google Translateを使用すると、次のように英語に翻訳されました。

古いMicrosoft Office Wordのバージョンで作成された文書です

この内容を表示するには、黄色のバーで「編集を有効にする」をクリックした後、「コンテンツを有効にする」をクリックしてください

「コンテンツを有効にする」ボタンをクリックすると、この不正なマクロが実行されます。このマクロには、Document_Open()と呼ばれるVBAの関数が含まれています。これは、このマクロに組み込まれている関数で、ドキュメントを開くと自動的に呼び出されます。次に、他の関数を呼び出して、%temp%フォルダ内のファイル(rtbdxsdcb.js)にJS(JavaScript)コードを抽出します。その後、この「JS」ファイルを実行して、マクロの動作は終了します。

図1.3は、マクロのVBAコードのスクリーンショットで、抽出されるJSコードと、ローカルファイルのrtbdxsdcb.jsへの書き込みプロセス、および実行されるJSコードが表示されています。

ご覧の通り、次のShell関数が呼び出され、JSファイルを実行するコマンドが実行されます。

cmd.exe /start %Temp%\rtbdxsdcb.js

図1.3:JSコード、JSファイル、およびJSファイルの実行

JSコードを見てみると、このコードは高度に難読化されていることがわかりました。これによって、主なタスクは以下のURLを要求することだと分析できます。

hxxps[:]//cdn[.]discordapp[.]com/attachments/789415918744764447/857131714521202688/blessed[.]exe

これによって、実行ファイルが%Temp%の中にダウンロードされ、erbxcb.exeとして保存されます。これがこのマルウェアのペイロードファイルです。その後、WScript.Shellオブジェクトを作成し、感染したデバイス上で、ペイロードの実行ファイルを起動します。

ステージⅠ:ペイロード実行ファイルの起動

ペイロードファイルerbxcb.exeは、被害者を混乱させるため、PDF文書に偽装しています。図2.1は、このファイルの外観を示しています。

図2.1:ダウンロードした実行ファイルのerbxcb.exe

起動すると、erbxcb.exe はPEファイルから圧縮データのブロックを読み込み、「%Temp%\arwtfgxjpx80」という名前のローカルファイルに解凍します。(これは後で説明する暗号化されたPEファイルです)。コードは引き続き、スタックメモリ内に動的に抽出され、実行されます。

抽出されたコードが実行する主な内容は次のとおりです。

1.    erbxcb.exeを新しく作成されたフォルダ(%AppData%\bplg)にコピーし、名前を「aoqn.exe」に変更します。図2.2にあるように、関数を呼び出してこの実行ファイルを新しい場所にコピーしようとしています(「call 12F675」の部分、引数はソースファイルとターゲットファイル)。

図2.2:ファイルコピー関数

2.    コピーしたファイルは、システムレジストリの自動実行グループに追加されます。これを行うことで、RegOpenKeyExW()やRegSetValueExW()などの複数のAPIを呼び出します。図2.3は、自動実行アイテムが追加された状態のシステムレジストリのスクリーンショットで、Windows起動時にこのマルウェアを実行できるようになります。

図2.3:システムレジストリの追加された自動実行アイテムを表示

3.    次に、上記で説明した解凍されたファイル「%Temp%\ arwtfgxjpx80」をメモリに読み込み、関数を呼び出して復号化します。その結果、メモリ上に実行可能なPEファイルを抽出することができます。

この動的なコードによって、現在のプロセス(erbxcb.exe)の複製が一時停止した状態で作成されます(CREATE_SUSPENDEDフラグを使用してAPIのCreateProcessW()を呼び出す)。このようにして、新たに作成された2つ目のプロセスに、PEファイルを展開し、復号化します。次に、復号化されたPEファイルの各セクションを2つ目のプロセスに転送して、既存のコードを上書きします。APIのSetThreadContext()を呼び出すことで、展開されたPEファイルに2つ目のプロセスのエントリポイントを設定し、ResumeThread()を呼び出して、展開されたPEファイルを2つ目のプロセス内で実行させます。

最後に、1つ目のプロセスの動的コードから、APIのExitProcess()を呼び出してこのプログラムを終了します。

ステージⅡ :本物のマルウェアは2つ目のプロセス内で実行

2つ目のプロセス内で実行される復号化されたPEファイルは、MS Visual Basic 5.0-6.0の言語で記述されており、パッカーは使用していないと分析できます。そして、ここでPEファイルをローカルファイルにダンプしました。図3.1は解析ツールのExeinfo PEの検出結果を示しています。

図3.1:復号化されたPEファイルの検出結果

実行すると、まず、被害者のデバイスの基本情報である現在のシステム時間、Windowsバージョン、ユーザー名、コンピュータ名などが収集されます。この情報は、盗難された他のデータと一緒に攻撃者に送信されます。

次に、「%AppData%\Microsoft\Windows\Templates」をホームフォルダに設定し、その場所に、抽出されたファイル、収集されたブラウザプロファイルや暗号通貨ウォレットのデータなどの一時ファイルの一部を配置します。

暗号通貨ウォレットデータの収集

このマルウェアは、感染したデバイスから暗号化ウォレットのプロファイルを収集することに重点を置いています(インストールされている場合)。このマルウェアには10種類の暗号通貨ウォレットのインスタンスが事前に定義されており、図3.2の下部に示すとおり、デフォルトプロファイルのフォルダパスが動的に紐付けられます。

暗号通貨ウォレットのソフトウェアには次のものが含まれます:Zcash、Armory、Bytecoin、Jaxx Liberty、Exodus、Ethereum、Electrum、Atomic、Guarda、Coinomi

図3.2:暗号通貨ウォレットのフルパスリスト

暗号通貨ウォレットが検出されると、ウォレットのプロファイルデータが含まれるフォルダ全体(図3.2にあるとおり、サブフォルダやファイルのパスを含む)をホームフォルダ(「%AppData%\Microsoft\Windows\Templates」)にコピーします。次に、コピーしたプロファイルフォルダを「CryptoWallets.zip」という名前のZIP形式のアーカイブに圧縮し、最終的に、Eメールの添付ファイルの形で攻撃者に送信します。

ここで判断できた範囲では、攻撃者は、ビットコインのプライベートキー、ビットコインのアドレス、暗号通貨ウォレットのアドレス、その他の重要情報を取得することができています。

抽出したEXEファイルを実行して、保存されている認証情報を収集

また、Resourceセクションから.Net Frameworkで記述されたEXEファイル(「sdedffggdg.exe」)も抽出します。このマルウェアは事前定義されたブラウザから認証情報を収集し、ホームフォルダの下にcredentials.txtファイルを新たに作成し、収集した情報を保存します。

図3.3は、抽出された.netのEXEファイル(「sdedffggdg.exe」)を実行した後のcredentials.txtファイルの例で、私のテスト用デバイスのGoogle Chromeブラウザから収集された認証情報を示しています。

図3.3:Chromeに保存されている認証情報が収集されている

「sdedffggdg.exe」は、保存されている認証情報を、以下の定義済みのブラウザから収集することができます(インストールされている場合):「Chrome」、「Opera」、「Yandex」、「360 Browser」、「Comodo Dragon」、「CoolNovo」、「SRWare Iron」、「Torch Browser」、「Brave Browser」、「Iridium Browser」、「7Star」、「Amigo」、「CentBrowser」、「Chedot」、「CocCoc」、「Elements Browser」、「Epic Privacy Browser」、「Kometa」、「Orbitum」、「Sputnik」、「uCozMedia」、「Vivaldi」、「Sleipnir 6」、「Citrio」、「Coowon」、「Liebao Browser」、「QIP Surf」、「Edge Chromium」

保存されているその他の認証情報の収集

このマルウェアは、上記のブラウザ以外にも、インストールされているOutlook、CoreFTP、FileZilla、NordVPN、FoxMail、Thunderbirdなどの他のソフトウェアクライアント、およびFirefox、Waterfox、K-Meleon、Cyberfox、BlackHawkなどの類似のブラウザからも保存されている認証情報を収集します。

図3.4:デバッガ上の収集された認証情報のスクリーンショット

図3.4に示すメモリでは、調査用マシン上のFileZillaアプリケーションから収集された直後の認証情報の例を確認できます。認証情報の各グループは、URL、ユーザー名、パスワード、アプリケーションで構成されます。認証情報の各グループは「=============================」で区切られます。

ステージⅢ:SMTPを利用して収集したデータを攻撃者に送信

このマルウェアは、盗難した機密情報を含むEメールを作成し送信するための独自の関数があり、CDO.Messageオブジェクトを作成して使用します。

図4.1は、この関数のコードスニペットを示しています(キーコードのみを掲載)。

図4.1:抜き取りEメールを生成するコードスニペット

ご覧のとおり、rtcCreateObject2()を呼び出してCDO.Messageオブジェクトを作成した後、EメールのFrom、To、Subject、TextBody、およびAddAttachmentの各フィールドをセットしています。

Subject(件名)は、キーワードの後に、被害者のコンピュータ名、ユーザー名が続きます。キーワードの文字列は、暗号通貨ウォレットのプロファイルの場合は「CryptoWallets」、認証情報の場合は「Passwords」、キーロガーデータの場合は「Keylogger」のいずれかになります(この機能は、このバージョンでは有効化されていませんでした)。

Eメールを作成した後、CDO.MessageのSend()関数を呼び出して、攻撃者のアドレスにEメールを送信します。

SMTPプロトコルを使用してこれらのEメールを送信する2つの例を以下に示します。

図4.2は、添付ファイルのCryptoWallets.zipに暗号通貨ウォレットのプロファイルを含めてEメールを攻撃者に送信しています。添付ファイルはbase64でエンコードされます。

図4.2:収集した暗号通貨ウォレットのプロファイルを送信するSMTPパケットの例

図4.3は盗難された認証情報を送信する様子を示しています。テキストボディには基本情報、盗難した認証情報が含まれ、添付ファイルには収集したブラウザプロファイルが含まれ、保存されている認証情報が入っています。添付ファイルもbase64でエンコードされます。

図4.3:盗難した認証情報データを送信するパケットの例

結論

この記事では、最初にFortiGuard Labsが捕捉したフィッシングメール、添付のWord文書を詳細に説明しました。次に、マクロによってJSファイルが抽出 / 実行され、マルウェアのペイロードの実行ファイルがダウンロードされる過程を紹介しました。

また、マルウェアが自動実行グループに追加され、2つ目のプロセスで実行する様子を紹介しました。また、このマルウェアの主なタスクである、感染したデバイスから機密情報を収集する方法、機密情報の種類(暗号通貨ウォレットのプロファイル情報、ブラウザやクライアントの認証情報など)、および収集したデータをSMTPプロトコルを使用して攻撃者に送信する方法を紹介しました。

このブログでは多くのプロセスについて言及しました。図5.1に示している私が撮ったプロセスツリーのスクリーンショットを確認すると、Word文書を開いたときに開始される関連プロセスの関係性を適切に把握できます。関係するプロセスは、WINWORD.EXE、cmd.exe、WScript.exe、erbxcb.exe、およびsdedffggdg.exeです。

図5.1:Word文書を開いた後のプロセスツリー

フォーティネットのソリューション

本マルウェアは、フォーティネットのお客様の場合はすでに以下のとおり、FortiGuardのWeb フィルタリング、AntiVirus、FortiEDRおよびCDR(Content Disarm & Reconstruction:コンテンツ無害化)サービスによって保護されています。

FortiGuardのWebフィルタリングサービスは、ダウンロード用のURLを「不正なWebサイト」として評価します。

Word文書とダウンロードした実行ファイルは「VBS/Agent.4885!tr」および「W32/Kryptik.J!tr」として検出され、FortiGuardアンチウイルスサービスによってブロックされます。

FortiMailユーザーはFortiGuardアンチウイルスによって保護されており、元のWord文書はフィッシングメールの悪意のある添付ファイルとして検出されます。また、CDRサービスにより追加的な保護が可能で、Office文書内のすべてのマクロの脅威を無害化することができます。

ダウンロードされた実行ファイルは、FortiEDRにより、振る舞いに基づいて「悪意のあるもの」として検出されます。

IOC (Indicators of Compromise:侵害指標)

URLs:

hxxps[:]//cdn[.]discordapp[.]com/attachments/789415918744764447/857131714521202688/blessed.exe

SHA-256のサンプル:

[Ncc June Purchase -Contract 0262320216486488574.doc]

105D9496D4F80AE5EF3C7642F55117B65A10398AFE5FF9C30D706FA9873CFD6A

[erbxcb.exe or aoqn.exe]

9C7023EFB920442DFD73D96D303A1B2CFB53A727F2B6B55DE8B4D25BC90FE95E