本文へスキップ
Research & Insights

サンズラボは実際のサイバー脅威情報を継続的に収集・分析し、APTをはじめとする高度化攻撃の流れと文脈を追跡しています。 長期にわたり蓄積した大規模な脅威データとCTI運用経験をもとに、 マルウェア、攻撃インフラ、データ流出、AIセキュリティの課題を深く研究します。 実際の脅威から発見した変化と技術的分析結果を、Tech Reportを通じて共有します。

[7月|マルウェア解析レポート]メールで拡散するPureLogsインフォスティーラーとViolet RATの併用を示す痕跡

2025年08月01日脅威分析

サンズラボの脅威分析チームは、毎月マルウェアを選定して分析レポートを作成しています。

サンズラボの脅威分析チームは、毎月マルウェアを選定して分析レポートを作成しています。

専門的な解析で明らかになったマルウェアの特徴、脅威動向、関連情報などを共有し、安全なサイバー環境の実現を目指しています。

マルウェアのさらに詳しい情報は、サイバー脅威インテリジェンスサービス<CTX>でご確認いただけます。



1. 概要

本レポートでは、2025年7月にメールで配布された.NETベースの多段階マルウェアを技術的に解析した。

攻撃者は悪性URLへのアクセスを誘導し、ユーザーに実行ファイルをダウンロードさせる。実行後は、ドロッパー、ダウンローダー、インフォスティーラー、RAT(Remote Access Trojan)からなる多段階構造に沿って感染が進む。実行フロー全体にはメモリ内ロード(ファイルレス実行)が組み合わされ、コード全体の文字列と主要ロジックが難読化されているため、静的解析が困難になっている。


このマルウェアの中核は、情報窃取とシステム制御をそれぞれ担うPureLogsとViolet RATの2つの主要モジュールである。インフォスティーラーであるPureLogsは、システム情報、ブラウザー認証情報、メールクライアントの情報、暗号資産ウォレット、Discordトークン、クリップボード、スクリーンショット、ローカルファイルなど、広範な機密情報を収集し、暗号化・圧縮してC2サーバーへ送信する。続いて実行されるViolet RATは119のコマンド処理機能を内蔵した高度なリモートアクセスツールで、リモートコマンド実行、ファイルシステムの操作、画面・入力の制御、音声再生、DoS(Denial-of-Service)攻撃など、多様な悪意ある動作に対応する。両ペイロードはMaaS(Malware-as-a-Service)¹として配布され、実際の攻撃者は両者を組み合わせ、感染環境で段階的に情報収集とリモート制御を行う。


今回の解析では、ドロッパー、ダウンローダー、PureLogs、Violet RATの4つのモジュールを中心に全体の動作を整理し、各段階で使用される検知回避手法と戦略を詳しく分析した。特にPureLogsとViolet RATの構造的特徴、通信方式、情報収集とコマンド処理の流れに重点を置き、最新のMaaS型マルウェアの脅威を具体的に把握して対策につなげることを目的としている。


¹ MaaS(Malware-as-a-Service):攻撃者が自らマルウェアを開発・配布するのではなく、

開発者が作成したマルウェアや、その生成・配布ツールを借りたり購入したりして利用するサイバー犯罪サービスの形態。




2. マルウェア情報

攻撃者はメールでマルウェアを配布し、「hxxp://176.46.157.32/files/5373782173/QvG0bbo.exe」にアクセスして「QvG0bbo.exe」をダウンロードするよう誘導する。このファイルの実体は「Hypgkdn.exe」という実行ファイルで、実行時に他の悪性コンポーネントをメモリへロードするドロッパーとして動作する。


ドロッパーは実行と同時に内部にハードコードされたバイナリを復号・展開し、DLLを直接メモリへロードする。メモリ上では「AIfA66mqs.dll」という名前でロードされるが、ビルド時のファイル名は「Hjlslg.dll」である。このモジュールはダウンローダーとして動作し、内部にエンコードされたC2サーバーアドレスを復号して通信を試みる。続いてC2から暗号化されたペイロードを受信し、復号・展開した後、内蔵DLLと引数配列を利用して次段階のDLLをメモリ内で実行する。


次に実行される「ClassLibrary4.dll」はインフォスティーラーで、システム環境情報、ブラウザーのログイン情報、メール・FTPクライアントのアカウント、暗号資産ウォレット、Discordトークンなどの機密情報を収集する。また、感染PCのファイルシステムを再帰的に探索し、対象ファイルをメモリ上で圧縮して併せて外部送信する。自己コピーと自己削除によって痕跡を消し、レジストリに自動実行パスを登録して永続化を確保する。その後、ハードコードされたURL「hxxps://rdmfile.eu/install/PoaZWvOtN6wJ」にアクセスし、追加の実行ファイルをダウンロードして実行する。


ダウンロードされる「VioletClient.exe」はRAT(Remote Access Trojan)である。感染システムの情報をC2サーバーへ送信した後、コマンドコードを受信して各種リモート制御を実行する。合計119のコマンド処理機能を備え、リモートコマンド実行、画面・音声の制御、ファイル操作、プロセス管理、情報窃取、ネットワーク攻撃など、幅広い悪意ある動作が可能となっている。


すべてのファイルは.NETベースで、難読化によって解析が困難になっている。以下の表に各コンポーネントの役割を示す。

ファイル名(コンパイルタイムスタンプ)

説明と役割

Hypgkdn.exe (2084-07-09)

ドロッパー。Hjlslg.dllを復号してメモリにロード

Hjlslg.dll (2025-07-06)

ダウンローダー。C2からClassLibrary4.dllを受信してメモリにロード

ClassLibrary4.dll (2025-07-06)

インフォスティーラー。情報の収集・外部送信後、VioletClient.exeをダウンロードして実行

VioletClient.exe (2025-07-03)

RAT。C2のコマンドを受信して実行

[表1]マルウェアの構成ファイルと各モジュールの役割


このように、解析対象はドロッパー、ダウンローダー、インフォスティーラー、RATへと続く多段階の感染構造を持ち、各段階でファイルレス実行、外部ペイロードのロード、自動実行登録など、マルウェアでよく使われる手法を利用する。攻撃者は機能をペイロードごとに階層化し、攻撃の目的に応じて柔軟に拡張できるよう設計している。特にインフォスティーラーからRATへ移行する流れは、被害者のPCの完全な掌握につながるため、極めて高いセキュリティリスクを伴う。




3. マルウェアの動作順序

解析対象は、ドロッパー、ダウンローダー、インフォスティーラー、RATの多段階構造に沿って順に悪意ある動作を実行する。攻撃者はメールに悪性URL「hxxp://176.46.157.32/files/5373782173/QvG0bbo.exe」を埋め込み、クリックを誘って最初の実行ファイル「Hypgkdn.exe」をダウンロードさせる。ユーザーが実行すると、内部にハードコードされたダウンローダー「Hjlslg.dll」を復号してメモリへロードする。ダウンローダーはC2サーバー(144.172.91.41:8805、TCP)から暗号化されたインフォスティーラー「ClassLibrary4.dll」を受信し、復号・展開してメモリへロードする。


ロードされたインフォスティーラーは、システム情報、ブラウザー認証情報、メール・FTPクライアントのアカウント、暗号資産ウォレット、Discordトークン、クリップボード、スクリーンショット、ローカルファイルなどの機密情報を収集する。収集した情報はシリアライズと暗号化を経てC2サーバーへ送信される。また、実行中の「Hypgkdn.exe」を%APPDATA%にコピーし、レジストリの自動実行項目「HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」を登録して永続化する。その後、元の実行ファイルを削除して痕跡を消し、外部URL「hxxps://rdmfile.eu/install/PoaZWvOtN6wJ」にアクセスしてRATペイロード「VioletClient.exe」をダウンロードし、実行する。


RATは実行直後にシステム情報、セキュリティ製品の一覧、ユーザー環境情報を収集し、C2サーバー(144.172.91.41:7708、TCP)へ送信してコマンドを待機する。サーバーは合計119のコマンドを送信でき、マルウェアはこれらによってリモートコマンド実行、ファイルシステム操作、画面・入力の制御、音声再生、プロセス管理、情報窃取、ネットワーク攻撃などを実行する。


このように機能をモジュール化して実行し、暗号化・圧縮したペイロードをメモリ内でロードすることで、検知回避に適した構造を実現している。情報窃取の直後にリモート制御が続く設計は、攻撃者が収集情報を基に追加操作を行う余地を生み、潜在的な危険性を高める。



[図1]マルウェアの動作フロー




4. マルウェア解析

解析対象のファイルはすべて難読化されていた。本書では、難読化を解除した逆コンパイルコードを基に各機能を説明する。


4.1. Hypgkdn.exe(ドロッパー)

4.1.1. ペイロードの復号とメモリ内ロード

「Hypgkdn.exe」はハードコードされたAESキーとIVを使用し、暗号化されたペイロードバイナリを復号する。攻撃者はBase64でエンコードしたキーとIVをコード内に埋め込み、復号ルーチンで使用している。復号後のペイロードはさらにGZip形式で圧縮されており、展開すると.NETバイナリ「Hjlslg.dll」が現れる。ドロッパーはこのアセンブリをディスクに保存せずメモリへロードし、「HN94DoyCexiOXenFms.vJy7OW7XF5hyR53H4r.AIfA66mqs」型を探して動的に実行する。このファイルレス実行はディスクベースの検知を回避し、解析を困難にする。



[図2]ハードコードされたペイロードの復号、メモリ内ロード、動的実行の流れ


4.2. Hjlslg.dll(ダウンローダー)

4.2.1. 初期設定値の復号

「Hjlslg.dll」は実行時にハードコードされたBase64文字列を復号し、デシリアライズして初期設定値をメモリへロードする。この方法で、C2サーバーの情報と各種実行パラメーターをコード内に隠している。復元された設定には、C2サーバーのIPアドレス(144.172.91.41)とポート番号(0x00002265)などが含まれる。



[図3]デバッグによる復号済みC2のIPアドレス・ポート情報の確認


4.2.2. 多重起動の防止と解析回避

「Hjlslg.dll」は初期設定値から抽出した文字列をハッシュ化してミューテックス名を生成する。同じミューテックスが存在すると即座に終了し、同一PCでの同時実行を防止する。



[図4]ミューテックスによる多重起動防止ロジック


さらに各種の解析環境検知手法を用い、以下の条件のいずれかが検出されると、実行中のプロセスを即座に終了する設計になっている。


[図5]サンドボックス解析モジュール(SbieDll.dll、cuckoomon.dll)の有無による検知



[図6]WMIでBIOS情報(version、SerialNumber)を照会し、VMwareなどの仮想マシンを検知



[図7]親プロセス名(cmd)による解析環境の確認



[図8]VMware関連システムファイル(vmGuestLib.dll)の有無による検知



[図9]WMIで取得したシステム製造元とモデル名に基づく仮想マシンの検知



[図10]解像度情報に基づいて解析環境を識別する条件判定



[図11]オペレーティングシステムが64ビットかどうかに基づく解析環境の検知



[図12]ユーザーアカウント名(john、annaなど)による解析環境の検知条件


4.2.3. C2通信とペイロードの処理

「Hjlslg.dll」はTCPソケットを作成してC2サーバーと直接通信し、大量のデータを処理するため送受信バッファーを通常より大きい5MBに設定する。初期設定に含まれるIPアドレス(144.172.91.41)とポート番号(8805)を使用して接続する。



[図13]TCPソケットの作成と送受信バッファーの5MB設定


接続後はヘルスチェックでセッション状態を確認する。特定のバイト値を送受信し、サーバーが正常に応答するかを調べる。



[図14]単一バイトの送受信によるサーバー接続のヘルスチェック


ペイロード受信時は、まずサーバーが送る4バイトのサイズ情報を読み取って実際の長さを把握し、その長さ分のデータを受信する。受信データは初期設定から取得したキーを使用して3DESで復号し、GZip展開後にデシリアライズする。復元されたオブジェクトには別のバイト配列形式のペイロードが含まれており、同じ3DES復号と展開を経て、最終的な.NETアセンブリ「ClassLibrary4.dll」を取得する。



[図15]ペイロードのサイズ確認後、全データをブロック単位で受信する処理


ダウンローダーは取得したアセンブリをディスクに保存せず直接メモリへロードし、最初のpublicクラスにある最初のpublicメソッドを実行する。この際、通信で更新された設定値をシリアライズし、メソッドの引数として渡す。この処理もファイルレスで実行されるため、ファイルベースのセキュリティ製品による検知を回避し、解析を困難にする。


4.3. ClassLibrary4.dll (PureLogs)

4.3.1. システム情報の収集

「ClassLibrary4.dll」はまず引数として受け取った設定値のバイト配列をデシリアライズし、ローカルシステムの各種情報を収集して、外部送信用の1つのオブジェクトにまとめる。収集項目は次のとおりである。


- バージョン情報:内部にハードコードされた文字列で、PureLogsのバージョンを表す。

- 実行フラグ:設定値に含まれるBoolean値から設定し、内部の実行条件や分岐処理に使用する。

- 実行時刻:現在の日時を記録し、収集時点を明確にする。

- コンピューター名(MachineName):OSに設定されたシステム名を取得する。

- ユーザー・システム識別子:WMIで取得したハードウェア情報(BaseBoard SerialNumber、ProcessorId、Processor Name)を組み合わせ、MD5ハッシュを計算し、その一部を切り出して固有識別子とする。その後、ユーザーアカウント名を結合して最終的な識別文字列を生成する。

- 実行パス:現在実行中のマルウェアのフルパスを取得する。

- OS情報:OS名とアーキテクチャ情報を組み合わせ、システム環境を把握する。

- インストール済みアンチウイルス:登録された製品名を照会し、セキュリティソフトウェアの有無を確認する。

- スクリーンショット:現在の画面を取得し、JPEG形式のバイト配列に変換する。

- クリップボード文字列:クリップボードに保存されたテキストを読み取る。

- CPU・GPU名:搭載されたCPUとGPUのモデル名を照会し、ハードウェア環境の把握と仮想環境の識別に使用する。

- 物理メモリサイズ:搭載RAMの容量をGB単位で測定する。

- 画面解像度:現在の解像度(横×縦)を確認する。

- IPv4アドレスとゲートウェイIP:ローカルネットワークのアドレスとデフォルトゲートウェイ情報を収集する。

- 初回実行の判定:「Software\<고유 식별자>」に該当するレジストリキーの有無を確認する。固有識別子は先に生成したシステム識別子と同じで、このキーが存在しなければ初回実行と判断する。



[図16]システム情報収集用オブジェクトの作成と主要収集項目の構成


攻撃者はこの情報を基に被害者の環境を詳しく分析し、条件に合うコマンドを送ったり、環境に合わせた攻撃を行ったりする。特にシステム識別子、クリップボード、スクリーンショットは情報窃取の主要な対象となる。


4.3.2. ブラウザー情報の収集

システム情報の収集後、インフォスティーラーはブラウザー・アプリケーションの認証情報、暗号資産ウォレット、Discordトークンを非同期で収集する。各ルーチンは個別のスレッドで同時に実行され、最終的にすべての収集情報がシステム情報とともに外部送信される。



[図17]ブラウザー、アプリケーション、暗号資産ウォレット、Discord情報を収集する非同期ルーチン


ブラウザー情報の収集では、事前定義された一覧に基づき、各ブラウザーのインストール状況とユーザープロファイルディレクトリ「User Data」の有無を確認する。Chrome、Edge、Firefoxなどの主要ブラウザーに加え、多数のChromium/Gecko系派生ブラウザーも含まれる。探索対象のパスはハードコードされた文字列として管理され、対象ブラウザーは次のとおりである。

Chrome, ChromeBeta, ChromeSxS, ChromeDev, ChromeUnstable, ChromeCanary, Chrome(x86), ChromeBeta(x86), ChromeSxS(x86), GChromeDev(x86), ChromeUnstable(x86), ChromeCanary(x86), Chromium, Edge, Brave, EpicPrivacy, Amigo, Vivaldi, Kometa, Orbitum, Mail.Ru Atom, ComodoDragon, Torch, Comodo, 360ChromeX, Slimjet, 360, 360 SE6, 360 SE, 360 Secure, Maxthon3, Maxthon5, Maxthon, QQ, K-Meleon, Xpom, Lenovo, Xvast, Go!, Safer Secure, Sputnik, Nichrome, CocCoc, Uran, Chromodo, 7Star, Chedot, Cent, Iridium, Elements, Citrio, Sleipnir5 ChromiumViewer, QIP Surf, Liebao, Coowon, ChromePlus, RafotechMustang, Suhba, TorBro, RockMelt, Bromium, Twinkstar, iTop Private, CCleaner, AcWeb, CoolNovo, Baidu Spark, SRWare Iron, Titan, AVAST, AVG, UC, UR, Blisk, Flock, CryptoTab, Sidekick, Swing, Superbird, SalamWeb, Ghost, Netbox, GarenaPlus, Kinza, Insomniac, ViaSat, NaverWhale, Falkon, Sogou, Opera, Opera GX, OperaNeon, OperaCryptoDeveloper, Yandex, YandexBrowserCanary, YandexBrowserDeveloper, YandexBrowserBeta, YandexBrowserTech, YandexBrowserSxS, Firefox, SeaMonkey, Waterfox, Waterfox Classic, K-Meleon, Thunderbird, IceDragon, Cyberfox, BlackHawk, Pale Moon, Basilisk, BitTube, SlimBrowser, LibreWolf, Mercury

114種類ものブラウザーを対象とすることで、幅広いユーザー環境での情報窃取を試みる。インストールが確認されたブラウザーでは各プロファイルディレクトリを探索し、閲覧履歴、ログイン情報、セッションCookieなどを抽出して、他の収集情報とともに送信する。


4.3.3. アプリケーション情報の収集

メールクライアント、FTPツール、メッセンジャー、VPN、ダウンロードマネージャーなど、さまざまなアプリケーションから機密性の高いユーザーデータを収集する。アプリケーションごとの専用ルーチンで設定ファイルやレジストリを探索し、得られた情報を他の収集項目とともに外部送信する。対象アプリケーションと収集方法は次のとおりである。

アプリケーション

収集情報

Foxmail

アカウント設定ファイルから保存済みメールアドレス、パスワード、受信・送信サーバーのアドレスを復号して収集

MailBird

アカウントのデータベースファイルからサーバーアドレス、ユーザー名、パスワード、OAuth2認証トークンを復号して収集

MailMaster

ローカルデータディレクトリからアカウント情報と設定ファイルを収集して圧縮

Outlook

プロファイルを保存するレジストリからメールアドレス、サーバーアドレス、ユーザー名、パスワードを復号して収集

FileZilla

設定ファイルから保存済みFTPホスト、ポート、ユーザー名、パスワードを復号して収集

WinSCP 2

レジストリのセッション設定からFTP/SFTPホストアドレス、ユーザー名、パスワードを復号して収集

Steam

インストール先とレジストリ情報を基に、ログインアカウントID、ゲーム一覧、セッションCookie、設定ファイルを収集して圧縮

Pidgin

メッセンジャーの設定ファイルから保存済みプロトコル、ユーザー名、パスワードを平文で収集

Signal

デスクトップアプリケーションの設定ファイルとデータベースファイルを圧縮して収集

Telegram

インストール先の「tdata」ディレクトリにある設定・認証データを圧縮して収集

OpenVPN

「profiles」ディレクトリ内の「.ovpn」設定ファイルを圧縮して収集

ProtonVPN

「user.config」内のアカウント情報と認証トークンを復号・圧縮して収集

IDM (Internet Download Manager)

レジストリ設定からユーザーのメールアドレス、名前、シリアルキーを収集

Ngrok

設定ファイル「ngrok.yml」を平文で収集

OBS Studio

設定ディレクトリから配信設定(「profile」)のデータを圧縮して収集

[表2]アプリケーション別のデータ収集方法


4.3.4. 暗号資産ウォレット情報の収集

ローカルにインストールされた暗号資産ウォレットのデータを収集するため、ハードコードされたパスを基にファイルとフォルダーを探索する。対象はウォレットのデータフォルダー全体、または特定の設定・キーファイルで、存在する場合は圧縮して他の収集情報とともに送信する。対象は次の2種類に分類される。


- ウォレットのデータフォルダー全体:インストール先にある全データを収集し、ZIP圧縮する

Qtum, DashCore, Litecoin, Bitcoin, Dogecoin, Coinomi, Armory, Bytecoin, MultiBit, Exodus, Ethereum, Electrum, ElectrumLTC, AtomicWallet, Guarda, WalletWasabi, ElectronCash, Sparrow, IOCoin, PPCoin, BBQCoin, Mincoin, DevCoin, YACoin, Franko, FreiCoin, InfiniteCoin, GoldCoinGLD, Binance, Terracoin, DaedalusMainnet, MyMonero, MyCrypto, Bisq, Bisq_db, Bisq_keys, Zap, Simpleos, Neon, bitmonero, Etherwall


- 個別の設定・キーファイル:インストール先にある特定のファイルを収集し、ZIP圧縮する

Electrum_config, ElectronCash_config, Sparrow_config, AtomicDEX, Binance_wallet_config


これらのフォルダーとファイルのパスはコード内にハードコードされている。探索で見つかったファイルは、サイズが60MBを超えない場合にのみ収集する。収集ファイルはすべてメモリ内で圧縮し、ディスクに書き込まず送信する。


4.3.5. Discordトークンとユーザー情報の収集

Discordデスクトップクライアントのローカルデータフォルダーを探索して認証トークンを収集し、それを使って追加のユーザー情報とサーバー情報を取得する。単なる情報窃取にとどまらず、被害者のDiscordアカウントへ直接アクセスできる設計である。まず、以下のパスにあるDiscordインストールディレクトリから「Local Storage\leveldb」サブフォルダーを探索する。

“%AppData%\Discord”, “%AppData%\DiscordCanary”, “%AppData%\DiscordPTB”, “%AppData%\DiscordDevelopment”, “%AppData%\Lightcord”

LevelDBフォルダー内の「.log」と「.ldb」ファイルから、次の正規表現でトークンを抽出する。

-通常トークン: [\\w-]{24}\\.[\\w-]{6}\\.[\\w-]{27}

-MFAトークン: mfa\\.[\\w-]{84}


抽出したトークンの重複を除いた後、Discord公式APIを呼び出して次の情報を収集する。

URL

収集項目

備考

hxxps://discordapp.com/api/v9/users/@me

ユーザー名(username)、電話番号(phone)、メールアドレス(email)

電話番号(phone)は応答に含まれなかった

hxxps://discordapp.com/api/v9/users/@me/guilds

サーバーID、サーバー名(name)、サーバー所有者かどうか(owner)


[表3]Discord APIによるユーザー・サーバー情報の収集項目


API呼び出し時は「Authorization」ヘッダーに抽出したトークンをそのまま挿入し、認証手続きを迂回する。実際のユーザーセッションを偽装するため、二要素認証を設定していないアカウントでは即時の乗っ取りにつながり得る。


4.3.6. ファイル探索とメモリ内圧縮による収集

ローカルファイルシステムを探索してファイルを収集し、メモリ上でZIP圧縮して外部へ送信する。有効なディレクトリは再帰的に探索し、個別のファイルパスは直接圧縮対象に含める。この際、アクセスの危険性が高い、または不要な以下のディレクトリは対象から除外する。

Windows、ProgramData、Program Files、Program Files (x86)、各ドライブのごみ箱

探索したファイルはすべてメモリ上でZIP圧縮する。ディスク上に一時ファイルを作成せず痕跡を残さない設計で、セキュリティ製品による検知を回避する。


4.3.7. 収集情報の送信

収集情報は2回に分けて送信する。まずブラウザー、アプリケーション、暗号資産ウォレット、Discordのテキストベースの情報を送り、続いてファイルシステムから収集した圧縮ファイルデータを送る。TCPソケットを作成し、実行時の引数に含まれるIPアドレス(144.172.91.41)とポート番号(8805)でC2サーバーに接続する。直後に固定のバイト値を送受信するヘルスチェックでセッションの正常性を確認し、次の手順で情報を送信する。


①. 送信データのシリアライズ

送信対象のオブジェクトをProtobuf形式でシリアライズし、バイト配列に変換する。


②. システム情報を含むパケットの送信

システム情報とシリアライズ済みデータの長さを含む新しいオブジェクトを作成し、再度シリアライズして圧縮・暗号化する。暗号化後のデータ長を先に送信し、続いて本体を送る。受信側が全体のサイズを正確に把握し、適切に分割・処理できるようにするためである。



[図18]圧縮・暗号化したデータの送信手順


③. GUIDベースの識別子の送信

GUID文字列からハイフンを除いた値を、同じ方法でシリアライズ・圧縮・暗号化して送信する。



[図19]GUIDベースの識別子の送信


④. データのストリーミング送信

シリアライズした収集データを一定サイズのブロックに分割し、各ブロックにGUID識別子とデータのインデックスを含める。ブロックごとに圧縮・暗号化して順に送信し、途中に短い待機時間を設けて安定性を高める。



[図20]収集情報のブロック単位でのストリーミング送信


⑤. 送信完了パケットの送信

最後に同じGUIDをもう一度送信し、転送完了をサーバーに通知する。


4.3.8. 永続化と痕跡の除去

感染環境で継続的に実行するため、レジストリ登録、実行ファイルのコピー、自己削除を行う。

まずシステム情報から生成した固有識別子を「HKEY_CURRENT_USER\Software\」のサブキーとして登録し、感染の痕跡を管理する。実行中のファイルが%WINDIR%または%APPDATA%にない場合、自身を%APPDATA%にコピーし、非表示ウィンドウで次のPowerShellコマンドを実行して自動実行項目を登録する。

Remove-ItemProperty -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name '<파일명>';

New-ItemProperty -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name '<파일명>' -Value '“<%APPDATA%로 복사된 경로>“' -PropertyType 'String'

このコマンドは既存のRun項目を削除して新しいパスを登録し、永続化を確保する。%APPDATA%への自己コピー後、非表示ウィンドウで次のPowerShellコマンドを実行し、元の実行ファイルを削除する。

Start-Sleep -Seconds 10; Remove-Item -Path '<현재 실행 경로>' -Force


4.3.9. ペイロードのダウンロードと実行

外部サーバーから追加ペイロードをダウンロードし、ローカルに保存して実行する機能も備える。TLS 1.2を明示的に設定してHTTPS通信を行い、「hxxps://rdmfile.eu/install/PoaZWvOtN6wJ」から実行ファイルを取得する。%TEMP%ディレクトリにランダムな名前と「.exe」拡張子で保存し、直ちに実行する。



[図21]HTTPSによる外部ファイルのダウンロードと保存



[図22]rdmfile.euサーバーからダウンロードされたファイル


4.4. VioletClient.exe (Violet RAT)

「VioletClient.exe」はコード全体に文字列の難読化を適用している。ファイルパス、レジストリパス、実行コマンドなどの主要文字列をBase64でエンコードして埋め込み、実行時に元の値へ戻す。この方法は静的解析を妨げるために使われる。



[図23]Base64文字列で難読化されたコード


4.4.1. 多重起動の防止と永続化

RATは多重起動を防ぎ、再起動後も自動実行するために複数の永続化手法を使用する。まず「tR1utZz9FykzeKjC」というミューテックスを作成し、同じミューテックスを持つインスタンスが存在すると即座に終了することで、同一PCでの同時実行を防ぐ。



[図24]Base64文字列を復号し、多重起動防止用のミューテックス名として使用


続いて実行中のファイルを次の2か所にコピーし、自動実行を設定する。

- Startupフォルダー

「%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup」にファイルをコピーし、Windows起動時に自動実行するよう設定する。



[図25]実行ファイルをStartupフォルダーにコピーし、起動時の自動実行を設定


- %APPDATA%パス

同じファイルを%APPDATA%にコピーし、レジストリの「SOFTWARE\Microsoft\Windows\CurrentVersion\Run」キーにそのファイル名を登録する。これにより、ユーザーがログインするたびに悪性ファイルが自動実行される。



[図26]実行ファイルをappdataへコピーし、レジストリ登録によって自動実行を設定


ミューテックスによる多重起動防止と、StartupフォルダーおよびRunキーへの登録を併用し、複数の経路で永続化を確保する。これらはマルウェアでよく見られる手法で、残存し続ける能力を高める。


4.4.2. C2設定

RATはC2サーバーと通信するため、2種類のアドレス設定方式を実装している。

1つは外部URLからIPアドレスとポートを動的に取得する方式で、もう1つはコード内にハードコードされた値を直接使用する静的設定方式である。


外部URLを使う方式では、WebRequestで攻撃者指定のWebページにアクセスし、応答から「IP:Port」形式の文字列を解析する。HTTPリクエストにはGETを使用し、User-Agentを「Mozilla/5.0」に手動設定して通常のブラウザー通信に偽装する。受信文字列は空白の有無とコロンの有無で選別し、有効ならIPとポートを分離して内部変数に格納する。


この方法ではマルウェアを再配布せずにC2アドレスを変更でき、検知回避と長期運用に有利となる。特にPastebinなどのサービスを利用すると、静的検知をさらに回避しやすくなる。



[図27]外部URLの「IP:Port」文字列を解析し、C2アドレスを動的に設定


ただし、解析したサンプルでは外部URLの処理が条件分岐によって無効化され、URLフィールドに「%PasteUrl%」が設定されているため、この機能は正常に動作しない。そのため、ハードコードされた文字列を復号する静的方式でC2情報を設定する。



[図28]XORキー(mOZNSBt)を用いてBase64形式のIP・Port文字列を復号する静的C2設定処理


復号後に設定されるC2のIPアドレスは144.172.91.41、ポート番号は7708である。IPはインフォスティーラーと同じだが、ポートは異なる。


4.4.3. C2コマンドの処理

サーバーのコマンドを受信・処理するために独立したスレッドを作成し、継続的な通信ループを実行する。ループは無限に繰り返され、各反復で1〜5秒のランダムな待機時間を設ける。ループ開始時にC2接続用リソースを初期化し、TCPソケットで144.172.91.41:7708への接続を試みる。



[図29]無限ループによる通信スレッド


C2への接続に成功すると、クライアントは感染システムの情報を文字列にまとめる。

文字列は13項目で構成され、HWID、ユーザー名、OS名とサービスパック、管理者権限の有無、実行ファイル名、インストール済みアンチウイルス、ビデオキャプチャーデバイスの有無などを含む。各項目を「<Violet>」で区切って連結し、AESで暗号化してサーバーへ送信する。暗号化済みバイト配列の長さを文字列に変換し、ヌル文字(\0)を付けて送信ヘッダーとする。全体の構造は「[長さ + '\0'][暗号化されたメッセージ本体]」となる。



[図30]感染システム情報の文字列生成


その後、サーバーがクライアントにコマンドデータを送信する。

送信形式はシステム情報と同じ「[長さ + '\0'][メッセージ本体]」構造である。受信データをコマンドキューに登録し、別スレッドで処理する。各コマンドは「<Violet>」で区切られた文字列で、最初の項目がコマンドコード、それ以降が実行に必要なパラメーターとなる。



[図31]受信コマンド文字列の分解とコマンドコードの処理



コマンドコードは合計119種類あり、機能は次のように分類される。

  • ファイルシステム操作:ファイル・フォルダーの作成、削除、名前変更、コピー、移動、任意バイナリのドロップ・実行など
  • プロセス・システム制御:CMDコマンドの実行、管理者権限への昇格、クリップボード監視、キーロギング関連の制御など
  • 画面・入力制御:スクリーンショットの取得、マウスカーソルの移動、クリックイベント、キーボードイベントなど
  • ネットワーク・リモート制御:Flood攻撃、ARPスプーフィング、スニッフィング、TCPトンネリング・リバースシェルの設置、コマンド結果のサーバー送信など
  • ローカルリソースのドロップ・実行:アセンブリのロードとメソッド実行、PEファイルのドロップと実行など
  • 情報収集・外部送信:アクティブウィンドウ情報の収集、システム環境情報の暗号化送信、パスワード・メールの抽出など
  • マルチメディア制御:音声の再生・停止、画像サムネイルの生成・送信など


このコマンド体系は単純なリモート操作を超え、感染システム全体を完全に掌握できるよう設計されており、長期的な悪意ある活動に悪用される高いリスクを伴う。コマンド実行後もソケット接続を維持し、約10〜15秒間隔で暗号化した「PING?」メッセージを送り、C2セッションを継続する。




5. 収集・外部送信される情報

分類

詳細情報

対象プログラム/技術

システム情報

- 現在の日時

- コンピューター名とユーザー名

- OS名とアーキテクチャ

- アンチウイルスソフトウェア名

- スクリーンショット

- クリップボードに保存された文字列

- CPUとGPUの名前

- メモリ容量

- 画面解像度

- IPv4アドレス

- Windowsサービスパック名

- Video Capture Driverの有無


ブラウザー

- ユーザープロファイルごとのデータ

Chrome, ChromeBeta, ChromeSxS, ChromeDev, ChromeUnstable, ChromeCanary, Chrome(x86), ChromeBeta(x86), ChromeSxS(x86), GChromeDev(x86), ChromeUnstable(x86), ChromeCanary(x86), Chromium, Edge, Brave, EpicPrivacy, Amigo, Vivaldi, Kometa, Orbitum, Mail.Ru Atom, ComodoDragon, Torch, Comodo, 360ChromeX, Slimjet, 360, 360 SE6, 360 SE, 360 Secure, Maxthon3, Maxthon5, Maxthon, QQ, K-Meleon, Xpom, Lenovo, Xvast, Go!, Safer Secure, Sputnik, Nichrome, CocCoc, Uran, Chromodo, 7Star, Chedot, Cent, Iridium, Elements, Citrio, Sleipnir5 ChromiumViewer, QIP Surf, Liebao, Coowon, ChromePlus, RafotechMustang, Suhba, TorBro, RockMelt, Bromium, Twinkstar, iTop Private, CCleaner, AcWeb, CoolNovo, Baidu Spark, SRWare Iron, Titan, AVAST, AVG, UC, UR, Blisk, Flock, CryptoTab, Sidekick, Swing, Superbird, SalamWeb, Ghost, Netbox, GarenaPlus, Kinza, Insomniac, ViaSat, NaverWhale, Falkon, Sogou, Opera, Opera GX, OperaNeon, OperaCryptoDeveloper, Yandex, YandexBrowserCanary, YandexBrowserDeveloper, YandexBrowserBeta, YandexBrowserTech, YandexBrowserSxS, Firefox, SeaMonkey, Waterfox, Waterfox Classic, K-Meleon, Thunderbird, IceDragon, Cyberfox, BlackHawk, Pale Moon, Basilisk, BitTube, SlimBrowser, LibreWolf, Mercury

メールクライアント

- メールアドレス

- サーバーアドレス

- パスワード

- ユーザー名

Foxmail, MailBird, MailMaster, Outlook

FTPクライアント

- ホスト

- ポート

- ユーザー名

- パスワード

FileZilla, WinSCP 2

その他のプログラム

# Steam

- アカウントID、ゲーム一覧、セッションCookie、設定ファイル

# Pidgin

- プロトコル、ユーザー名、パスワード

# Signal

- 設定ファイルとDBファイル

# Telegram

- 設定・認証データ

# OpenVPN

- 「.ovpn」設定ファイル

# ProtonVPN

- アカウント情報、認証トークン

# IDM

- メールアドレス、名前、シリアルキー

# Ngrok

- 「ngrok.yml」設定ファイル

# OBS Studio

- 配信設定ファイル

# Discord

- トークン、ユーザー・サーバー情報

Steam, Pidgin, Signal, Telegram, OpenVPN, ProtonVPN, IDM, Ngrok, OBS Studio, Discord

暗号資産ウォレット

- ウォレットのデータフォルダー全体

- 設定・キーファイル

# ウォレットデータ

Qtum, DashCore, Litecoin, Bitcoin, Dogecoin, Coinomi, Armory, Bytecoin, MultiBit, Exodus, Ethereum, Electrum, ElectrumLTC, AtomicWallet, Guarda, WalletWasabi, ElectronCash, Sparrow, IOCoin, PPCoin, BBQCoin, Mincoin, DevCoin, YACoin, Franko, FreiCoin, InfiniteCoin, GoldCoinGLD, Binance, Terracoin, DaedalusMainnet, MyMonero, MyCrypto, Bisq, Bisq_db, Bisq_keys, Zap, Simpleos, Neon, bitmonero, Etherwall

# 設定・キーファイル

Electrum_config, Electrum_config, Electrum_config, ElectronCash_config, Sparrow_config, AtomicDEX, Binance_wallet_config

ファイル

# 以下のパスを除くすべてのファイル

- Windows

- ProgramData

- Program Files

- Program Fils (x86)

- ごみ箱





6. 結論

本レポートで解析したのは、ドロッパー、ダウンローダー、インフォスティーラー、RATからなる.NETベースの多段階マルウェアであり、情報窃取とリモート制御を順に実行する複合構造を持つ。攻撃者はメール本文に悪性URLを挿入し、ドロッパーとして動作する実行ファイルをユーザーにダウンロードさせる。ドロッパーは暗号化されたダウンローダーDLLを内蔵し、復号後、ディスクへ書き込まず直接メモリへロードして実行する。ダウンローダーはC2と通信してインフォスティーラーのペイロードを受信し、メモリ上で復号・実行する。インフォスティーラーまでの流れは典型的なファイルレス方式で、感染痕跡を最小化して検知を困難にする。一方、その後のRATは別の実行ファイルとしてディスクに保存され、新しいプロセスで明示的に起動されるため、攻撃全体がメモリ内だけで完結するわけではない。


インフォスティーラーモジュール「ClassLibrary4.dll」は、内部文字列「v4.0.1.」、収集項目、ファイル名、コード構造を総合すると、PureCoderが提供する商用MaaS(Malware-as-a-Service)型のPureLogs Stealerと識別される。システム情報、ブラウザー認証情報、メール・FTPアカウント、暗号資産ウォレット、Discordトークン、クリップボード、スクリーンショット、ローカルファイルなどを収集し、暗号化・圧縮してC2へ送信する。送信後は自動実行登録と自己削除によって感染痕跡を隠し、永続化を確保する。



[図32]PureLogsの公式販売ページ


続いて実行されるRATモジュール「VioletClient.exe」は、コード全体の「<Violet>」文字列、システム情報の文字列「Violet v4.5」、基本的なビルド構造から、商用MaaS型のViolet RATと識別される。コマンド処理方式、通信構造、文字列形式も公式配布版と高い類似性を示す。



[図33]Violet RATの公式販売ページ


両モジュールは開発者と販売経路が異なる独立したMaaS製品であり、攻撃者が別々に入手して組み合わせ、情報窃取とリモート制御を段階的に実行する構造を作っている。特にインフォスティーラーが収集するシステム情報、アカウント認証情報、ネットワーク環境などは、後続のRATがコマンドを実行する際の有用な基礎情報となり、被害者システムの精密な制御と標的を絞った操作を可能にする。RATは119のコマンドに対応する高度なリモート制御ツールで、コマンド実行、ファイル操作、画面・入力制御、音声再生、DLLインジェクション、情報窃取、DoS攻撃などを備える。暗号化された非同期通信により、リアルタイムのコマンド受信と継続的な制御が可能である。この幅広い能力は、情報収集を超えて能動的な侵害行為や長期的なシステム支配を実行できることを意味し、資産に深刻なセキュリティ脅威をもたらす。


今回の事例は、機能ごとにペイロードを分け、商用MaaSマルウェアを組み合わせて構成されている。攻撃者は難読化、メモリ内ロード、自動実行登録、自己削除などの検知回避手法を用い、ペイロードを柔軟に組み合わせられるため、今後の変種や再拡散の可能性も高い。ユーザーのセキュリティ意識向上に加え、メールによる配布の阻止とファイルレスマルウェア対策の点検が必要である。MaaS流通経路のインテリジェンス収集、配布サイトの遮断、マルウェアコミュニティの監視も並行して行う必要がある。


さらに、サンズラボの脅威インテリジェンスプラットフォームCTXでも「exe.trojan.msil」として識別され、関連ハッシュ、C2のIP、URLなど各種IoCが収集された。CTXでは、マルウェア間の関連性、攻撃グループ、関連キャンペーンなど、本レポートに含まれない追加情報も確認でき、類似脅威の検知と追跡に活用できる。



[図34]サンズラボCTXプラットフォームの検知結果画面




7. IoC情報

7.1. SHA-256ハッシュ

35EC950215AB50445813E2BABEF90DAFE6C2F7E6DD4E8A70418CB48AB61358EA

Hypgkdn.exe

3651B5D148ACE48C188214D90CCD71F59BAFBE0775D60B0B84CA9E746784B898

Hjlslg.dll

27CA9CFCA6823DC688916E7EE6628571B4D3ED163E9EB2FAD54CD998AB096013

ClassLibrary4.dll

571B2E2B153C4ADE6AD779B107280E830540D08D889E097580197B5703B84DED

VioletClient.exe


7.2. IP

TCP 144.172.91.41:8805

TCP 144.172.91.41:7708


7.3. URL

hxxp://176.46.157.32/files/5373782173/QvG0bbo.exe

hxxps://rdmfile.eu/install/PoaZWvOtN6wJ