FortiGuard Labs 脅威リサーチ

YouTubeでLummaの亜種を拡散する不正クラック版ソフトウェア

投稿者 Cara Lin | 2024年1月19日
  • Article Contents
投稿者 Cara Lin | 2024年1月19日

影響を受けるプラットフォーム: Microsoft Windows
影響を受けるユーザー:     Microsoft Windowsユーザー
影響:             収集された情報が将来の攻撃に利用される
深刻度:            

FortiGuard Labsは先日、YouTubeチャンネルを使ってLumma Stealerの亜種を配信している脅威グループを発見しました。我々は2023年3月にYouTubeで同種の攻撃手法を確認し、報告しました。通常、これらのYouTube動画では、クラック版アプリケーションに関連したコンテンツを公開しています。そこには類似するインストールガイドが表示され、多くの場合、TinyURLやCuttlyといったサービスを使用して短縮された不正なURLが組み込まれています。攻撃者は単純なWebフィルターのブラックリストを回避するために、不正なサーバーを配置する代わりに、GitHubやMediaFireなどのオープンソースプラットフォームを悪用します。その場合、共有リンク先から新しいプライベート.NETローダーが直接ダウンロードされ、そのローダーが最終的なマルウェアであるLumma Stealerを取得します。

Lumma Stealerが狙っているのは、ユーザーの認証情報、システムの詳細情報、ブラウザのデータ、拡張機能といった機密データです。Lumma Stealerは2022年からダークウェブとTelegramチャンネルで宣伝されており、多数のコマンド&コントロール(C2)サーバーが実環境で確認され、アップデートも複数回行われています。図1はLumma StealerのC2サーバーのテレメトリを示しています。世界各地でその存在が観測され、12月に最多を記録しています。

このブログでは、Lumma Stealerの拡散を助長した各ステージの振る舞いを詳しく解説します。

図1:Lumma StealerのC2のテレメトリ

図2:攻撃フロー

初期感染経路

ハッカーはまず、ユーチューバーのアカウントを侵害し、クラック版ソフトウェアの共有に見せかけて動画をアップロードします。図3の動画説明は、不正なURLが埋め込まれており、ユーザーにZIPファイルのダウンロードを促しています。このZIPファイルには、攻撃の次のステージで使用する不正なコンテンツが含まれています。これらの動画は昨年の初めにアップロードされたものですが、ファイル共有サイトでは定期的にファイルが更新され(図4)、ダウンロード数は増え続けています。これは、ZIPファイルが常に新しく、この方法でマルウェアが効果的に拡散されていることを示しています。

図3:ハッキングされたYouTubeチャンネルと、類似する偽のソフトウェアインストールガイド

図4:MediaFire上で更新された不正ファイル

ZIPファイル「installer_Full_Version_V.1f2.zip」にはLNKファイルが格納されています。このLNKファイルはPowerShellを呼び出し、John1323456が所有するGitHubリポジトリ「New」から.NET実行ファイルをダウンロードします(図6)。URL「hxxp://cutt[.]ly/lwD7B7lp」は、「hxxps://github[.]com/John1323456/New/raw/main/Installer-Install-2023_v0y.6.6[.]exe」を短縮したものです。別の2つのリポジトリ「LNK」と「LNK-Ex」にも.NETローダーが含まれ、最終ペイロードであるインフォスティーラーを拡散します。

図5:不正なLNKファイルの内容

図6:GitHub上の.NET実行ファイル

.NET実行ファイル – Installer-Install-2023_v0y.6.6.exe

プライベート.NETローダーはSmartAssemblyで難読化されています。.NETローダーはまず、システムの環境変数を取得します(図7)。データの数値が正しければ、PowerShellスクリプトの読み込みへと進みます。それ以外の場合はプログラムを終了します。

図7:GetEnvironmentVariables()でシステム情報を取得

図8に示す辞書の構造では、ProcessStartInfoオブジェクトの以下のプロパティが定義されています。これらは不正なコードをひそかに実行し、被害者に疑念を持たれないようにするために使用されます。

  • RedirectStandardInput:このプロパティをtrueに設定すると、プロセスの標準入力ストリームのリダイレクトが有効になります。
  • CreateNoWindow:このプロパティをtrueに設定すると、プロセスは表示ウィンドウを作成せずに起動します。これにより、コマンドプロンプトウィンドウを表示せずにコマンドやスクリプトを実行できます。
  • UseShellExecute:このプロパティをfalseに設定すると、プロセスの実行にユーザーのデフォルトシェルは使用されません。プロセスは直接実行されます。
図8:ProcessStartInfo辞書

この後、ProcessStartInfoオブジェクトを使用してPowerShellプロセスが起動され、プロセスの標準入力にPowerShellスクリプトが渡されます。コードの一部と新たに生成されたプロセスを図9に示します。

図9:プロセスの作成とPowerShellスクリプトの読み込み

プライベート.NETローダーのPowerShellコードの一部を図10に示します。このスクリプトはサーバーのIPアドレスをBase64でエンコードし、4つのサーバーを格納します。さらに、システムの日付を確認し、暗号化されたバイナリデータの取得に適したIPを選択します。分析を困難にするため、スクリプトには無関係なコードが大量に挿入されています。図11は、最初のサーバー176[.]113[.]115[.]224:29983からダウンロードされたデータをキャプチャしたものです。

図10:サーバーからダウンロードされた暗号化データ

図11:リモートサーバーから取得された暗号化データ

データを受け取ると、スクリプトはAES CBCを使用してそれを復号し、GZip解凍して次のステージのDLLファイルを取得します。続いて、「[System.Reflection.Assembly]::Load()」で所定のメソッドと型を指定し、DLLファイルを呼び出します(図12)。

図12:次のステージで使用する復号データの読み込み

DLLファイル:Agacantwhitey.dll

図13に示すターゲット関数「PerkyRiggal」は、システムや環境を検査する上で極めて重要です。Resourcesセクションには、Lumma Stealerの最終ペイロードを復号するためにさまざまなPNGファイルが使用されています。検知を回避するために、このファイルでは「BygoLarchen」メソッドを使ってすべての文字列がエンコードされています。図14に示す関数は、事前定義されたキー文字列でターゲットテキストをデコードします。

図13:Agacantwhitey.dll内のターゲットメソッドとリソース

図14:文字列をデコードするメソッド

VMおよびデバッグ対策のため、以下の項目がチェックされます。

  • 「GetForegroundWindow」を呼び出してユーザーのアクティブウィンドウを確認し、リモートデバッガーを示す所定の文字列、すなわち「x32dbg」、「x64dbg」、「windbg」、「ollydbg」、「dnspy」、「immunity debugger」、「hyperdbg」、「debug」、「debugger」、「cheat engine」、「cheatengine」、「ida」が含まれているかどうか調べる。
  • セキュリティアプライアンスまたはサンドボックスに関係するモジュール「SbieDll.dll」(Sandboxie)、「cmdvrt64.dll」(Comodo Antivirus)、「cuckoomon.dll」(Cuckoo Sandbox)、「SxIn.dll」(360 Total Security)を確認する。次に、wine_get_unix_file_nameを探し、分析環境でWineが使用されているかどうか判断する。
  • サンドボックスユーザー名に「Johnson」、「Miller」、「malware」、「maltest」、「CurrentUser」、「Sandbox」、「virus」、「John Doe」、「test user」、「sand box」、「WDAGUtilityAccount」が含まれていないか確認する。
  • WMIクエリ「Select * from Win32_ComputerSystem」を使用して主要な仮想化プラットフォームの有無を判断し、製造元やモデルなどコンピューターシステムの情報を取得する。次に、製造元名(「innotek gmbh」(VirtualBoxと関係)、「microsoft corporation」(多くはHyper-Vと関係)など)とモデル名「VirtualBox」および「vmware」を確認する。さらに、ディレクトリ「C:\Program Files\VMware」と「C:\Program Files\oracle\virtualbox guest additions」も確認する。
  • フォルダ「C:\Windows\system32」に、仮想環境の存在を意味する「balloon.sys」、「netkvm.sys」、「vioinput」、「viofs.sys」、「vioser.sys」、「VBoxMouse.sys」、「VBoxGuest.sys」、「VBoxSF.sys」、「VBoxVideo.sys」、「vmmouse.sys」、「vboxogl.dll」の各ファイルがあるかどうか確認する。
  • システムサービス「vmbus」、「VMBusHID」、「hyperkbd」を確認する。
  • プロセス名「vboxservice」、「VGAuthService」、「vmusrvc」、「qemu-ga」を確認する。

すべての環境チェックが完了すると、プログラムはリソースデータを復号し、「SuspendThread」関数を呼び出します。この関数は、スレッドを「一時停止」状態にするために使用されます。これはペイロードの挿入プロセスにおいて非常に重要な手順です(図15)。

図15:最終ペイロードの挿入

Lumma Stealerの亜種

Lumma Stealerは、ユーザーのコンピューターから機密情報を窃取するマルウェアの一種です。その標的はシステムのデータ、ブラウザ、暗号通貨のウォレット、ブラウザの拡張機能などです。このマルウェアはC言語で記述され、地下フォーラムで販売されています。検知や分析を回避するために、さまざまな難読化技術が使用されています。Lumma Stealerは、コマンド&コントロール(C2)サーバーに接続して円滑に命令をやり取りし、盗み出したデータを送信します。

C2サーバーとの通信方法を図16に示します。接続可能な最初のサーバーを確認すると、Lumma Stealerはハードコードされたユーザーエージェント「Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36」とパラメーター「act=life」を使用してPOSTメッセージを送信し、チェックインします。これに対応するコードを図17に示します。

図16:C2サーバーリストの解決

図17:C2サーバーへのチェックインメッセージの送信

続いて、Lumma IDと「act=receive-message」と共にPOSTリクエストを送信します(図18)。この後、窃取され圧縮されたデータが、URI「/api」のC2サーバーにアップロードされます。Lumma Stealerのバージョンは「4.0」のままですが、最近、検知回避を強化するために、HTTPSを使用するように持ち出し機能がアップデートされました。

図18:C2サーバーへのPOSTリクエストとLumma ID「JVryU4--LNK」

図19:ZIPファイル

結論

今回の攻撃では、攻撃者はYouTubeチャンネルを悪用してLumma Stealerを拡散しています。細工されたインストール(ZIP)ファイルは、アプリケーションをインストールしようとするユーザーの意思を悪用し、ユーザーが躊躇なくインストールファイルをクリックするよう誘導することで、ペイロードを配信するための有効なおとりとして機能します。攻撃でオープンソースWebサイトのURLが使用されているのは、ユーザーに気づかれにくくするためです。攻撃者はさらに、プライベート.NETローダーを展開し、環境チェックやVMおよびデバッグ対策用のさまざまな関数を実行します。出所不明なアプリケーションには十分に用心し、信頼できる安全な発信元の正規のアプリケーションを使用するようにしてください。

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

FortiGuardアンチウイルスは、このブログで解説したマルウェアを、以下の不正プログラムとして検知しブロックします。

W32/Stealer.QLD!tr
MSIL/Agent.WML!tr
MSIL/Kryptik.BJF!tr
LNK/Agent.WML!tr

FortiGate、FortiMail、FortiClient、FortiEDRは、FortiGuardアンチウイルスサービスをサポートしています。これらの各ソリューションには、FortiGuardアンチウイルスエンジンが含まれています。したがって、最新の保護機能を備えたこれらの製品をお使いのお客様は、脅威から保護されています。

不正なURLは、FortiGuard Webフィルタリングサービスによって「悪意のあるWebサイト」として識別されます。

フォーティネットでは、無料でご利用いただけるサイバーセキュリティトレーニングのFortinet Certified Fundamentals(FCF)もお勧めしています。このトレーニングは、エンドユーザーが今日の脅威情勢を認識し、基本的なサイバーセキュリティの概念と技術を習得することを目的としています。

FortiGuard IPレピュテーションおよびアンチボットネットセキュリティサービスは、フォーティネット分散ネットワークから不正な送信元のIPデータを集約し、攻撃を事前にブロックします。この分散ネットワークでは、脅威センサー、CERT、MITER、協力関係にある他社、その他のグローバルソースが連携し、悪意ある送信元に関する最新の脅威インテリジェンスを提供しています。

組織がLumma Stealerやその他のサイバーセキュリティ攻撃を受けていると思われる場合は、フォーティネットのグローバルFortiGuardインシデントレスポンスチームまでご連絡ください。

IOC(Indicators of Compromise:侵害指標)

IPアドレス

176[.]113[.]115[.]224
176[.]113[.]115[.]226
176[.]113[.]115[.]227
176[.]113[.]115[.]229
176[.]113[.]115[.]232

ホスト名

Netovrema[.]pw
opposesicknessopw[.]pw
politefrightenpowoa[.]pw
chincenterblandwka[.]pw

ファイル

48cbeb1b1ca0a7b3a9f6ac56273fbaf85e78c534e26fb2bca1152ecd7542af54
483672a00ea676236ea423c91d576542dc572be864a4162df031faf35897a532
01a23f8f59455eb97f55086c21be934e6e5db07e64acb6e63c8d358b763dab4f
7603c6dd9edca615d6dc3599970c203555b57e2cab208d87545188b57aa2c6b1