正規ソフトウェアに隠されたSectopRAT(トロイの木馬)亜種で被害者のコンピュータをリモート制御する手口

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「正規ソフトウェアに埋め込まれたSectopRAT亜種の分析」を再編集したものです。

米国時間2026年9月24日に掲載されたフォーティネットブログの抄訳です。

影響を受けるプラットフォーム:Microsoft Windows
影響を受けるユーザー    :Windowsユーザー
影響            :被害者のコンピュータを完全にリモートに制御
深刻度           :高

FortiGuardインシデントレスポンス(FGIR)チームは新たに、SectopRATを使用して被害者のデバイスを制御していた侵入事案を調査しました。

SectopRAT(ArechClient2とも呼ばれる)は、複数の制御コマンドを通じてさまざまな機能を実行する、.NETベースのリモートアクセス型トロイの木馬(RAT)です。SectopRATの機能には、被害者のデバイスからの機密データの収集、画面のキャプチャ、プロセスやファイルのリモート管理、ボットの制御、その他のデバイスのリモート管理などがあります。

分析した事案では、SectopRATのペイロードが、デジタルオーディオワークステーション(DAW)を長年開発しているイタリア企業が開発した正規プログラムに隠されていました。

本ブログでは、SectopRATのペイロードを隠蔽および抽出するために使用された手法、収集可能な情報、および侵害されたデバイスをリモートから制御するためにサーバーが使用するコマンドについて詳しく解説します。

悪意のあるフォルダの分析

図1は、正規ソフトウェアと悪意のあるコンポーネントが含まれているフォルダを示しています。このフォルダには、EXEファイル1つ、DBファイル2つ、複数のDLLファイルが含まれています。

図1:正規ソフトウェアのフォルダに隠されているSectopRATのペイロード

SectopRATのペイロードは暗号化され、「pool.db」ファイルに埋め込まれています。「ReportDump.exe」は、正規ソフトウェアのコンポーネントであり、その名前から、クラッシュやエラーを報告するためのコンポーネントであると考えられます。実行されると、必要なDLLを読み込みます。

「sdkcra.dll」は、SectopRATのペイロードを抽出するマルウェアの処理を開始するDLLです。

「ReportDump.exe」は、被害者のシステムでスケジュールタスクとして設定されており、Windowsタスクスケジューラによって自動的に起動されるようになっていました。

「ReportDump.exe」が起動すると、デフォルトで「FrameworkBase.dll」が読み込まれます。悪意のあるサンプルでは、「FrameworkBase.dll」が改ざんされ、「FrameworkBase.dll」のインポートアドレステーブル(IAT)に
「sdkcra.dll」を追加することで、悪意のある「sdkcra.dll」が読み込まれる仕組みになっています。

図2では、通常のインストール環境にある「FrameworkBase.dll」のIATと、悪意のあるサンプルのフォルダにある改ざんされたバージョンのIATを比較しています。

図2:正規の「FrameworkBase.dll」と改ざんされた「FrameworkBase.dll」のIATの比較

これらの調査結果から、これはサプライチェーン攻撃ではないと考えられます。調査で得られた証拠からは、「FrameworkBase.dll」を改変し、悪意のある「sdkcra.dll」をインポートモジュールとして追加することで、正規ソフトウェアが改ざんされたことが示されています。

さらに、「C:\ProgramData」の下に悪意のあるフォルダがあることも確認しました。この場所は、ソフトウェアの通常のインストール先ではありません。

現時点では、ベンダーが侵害されたバージョンのソフトウェアを配信したことを示す証拠は確認されていません。

暗号化されたASMコードを実行する「sdkcra.dll」

「sdkcra.dll」のエントリポイント関数が呼び出されると、「IconUserUserDx()」というエクスポート関数の1つを実行するスレッドを作成します。

この関数は、以下の処理を実行します。

・このマルウェアは、SDL3.dllからエクスポートされた関数であるSDL_IOFromFile() APIを使用して、「Activation.Desktop.db」ファイルから暗号化されたデータを読み取ります。暗号化されたデータは「Activation.Desktop.db」ファイルのオフセット0x36E93から始まり、長さは0x533B3バイトです。

・次に、復号関数を呼び出してデータをASMコードに復号します(図3を参照)。

図3:暗号化されたデータをASMコードに復号

・次に、stp_aim_x64_vc15.dllのエクスポート関数であるlicense()が呼び出され、復号されたASMコードが渡されます。実行時に、license()はEnumSystemCodePagesW() APIを呼び出してこのASMコードを実行します。

EnumSystemCodePagesW()のlpCodePageEnumProcパラメータには、復号されたASMコードのアドレスが設定されています。このパラメータには、インストールされている各コードページについてWindowsが呼び出すコールバック関数へのポインタを指定するようになっています。マルウェアは、復号されたASMコードをコールバック関数として指定することで、EnumSystemCodePagesW()を悪用してコードを実行します。

SectopRATのペイロードを復号するASMコード

ASMコードから呼び出されるすべてのAPIは隠蔽されており、それぞれに対応するAPIハッシュコードを使用して、実行時に動的に解決されます。悪意のあるASMコードは、こうしたAPIを合計187個呼び出します。

図4は、ASMコードが2BEF5CF()関数を呼び出し、187個のAPIの1つであるHeapCreate() APIを取得する方法を示しています。APIハッシュコードは「0xD4F82AF2C9BFE9DC」、DLLモジュールのハッシュコードは「0x6562B75966F9220」です。

図4:マルウェアがHeapCreate() APIを解決する

図5に示すように、復号されたASMコードは、CreateFileW() APIとReadFile() APIを使用して、「pool.db」ファイルから暗号化されたデータを読み取ります。

図5:マルウェアが2つのAPIを使用して「pool.db」ファイルから暗号化されたデータを読み取る

ASMコードは続いて、「pool.db」ファイルから読み取ったデータ内のオフセット0x1DC18の位置を特定します。次に、バイトキー0xBCとデータサイズ0xE5A00を指定してカスタム復号関数を呼び出し、データを復号してSectopRATのペイロードを復元します(図6を参照)。

図6:SectopRATのペイロードがメモリ内で復号される

図7は、PE解析ツールのCFF ExplorerでダンプしたSectopRATのペイロードファイルを分析した結果を示しています。SectopRATのペイロードファイルは、64ビットの.NET実行ファイル(EXE)であることが確認されます。

図7:SectopRATのペイロード

ASMコードは、mscoreei.dll、clr.dll、およびその他の必要なモジュールを読み込んで、.NETランタイム環境を初期化します。.NETランタイム環境の初期化が完了すると、ASMコードはSectopRATのペイロードのエントリポイントメソッドを呼び出します。

SectopRATペイロードの詳細な分析

難読化されたSectopRATのペイロード

SectopRATは非常に高度な難読化が施されています。クラス、メソッド、変数には、ランダムに生成された名前が付けられています。また、メソッド内では制御フローの平坦化も使用されています。

さらに、このマルウェアは.NETコード全体で「calli」命令を使用しています。通常のメソッドを名前で呼び出すのとは異なり、メソッドポインターを介してメソッドを呼び出します。これにより、アナリストによるリバースエンジニアリングが困難になります。図8は、上記で説明した難読化手法を示しています。

図8:SectopRATのペイロードで使用されている難読化手法

C2サーバー情報の取得

マルウェアのC2サーバー情報は暗号化され、リソースセクションに保存されています。初期化中に、マルウェアは、それぞれに対応するインデックスを指定してメソッドを呼び出すことで、C2サーバーのIPアドレスとポートを復号します。

この亜種では、ハードコードされたC2サーバーのIPアドレスは「98.142.252[.]140」、TCPポートは「15847」です。図9は、復号されたIPアドレスを示しています。

図9:復号されたC2サーバーのIPアドレス

続いてSectopRATは、C2サーバーへの接続を試みます。C2サーバーが利用できない場合、マルウェアは12個のバックアップドメインのいずれかにHTTP POSTリクエストを送信し、代替のC2 IPアドレスの取得を試みます。バックアップドメインの完全なリストは、このブログの「IOC(Indicators of Compromise:侵害指標)」のセクションに記載されています。

Googleの検索結果によると、これら12個のバックアップドメインは、Binance Coin(BNB)のクリプトマイニングに関連しているようです。ただし、攻撃者がこれらのドメインのいずれかを侵害したかどうかは明らかではありません。

図10は、バックアップドメインからのHTTPレスポンスからC2サーバーのIPアドレスを復元する方法を示しています。「result」キーの値は、16進数文字列としてエンコードされています。

図10:HTTPレスポンスからC2サーバーのIPアドレスを復元する

16進数文字列をASCIIに変換すると、「START」と「FINISH」というキーワードの間にBase64エンコードされたBLOBが現れます。Base64デコードを行うと、AESで暗号化されたIPアドレス(56 26 … FF 31)が復元されます。次にマルウェアはデータを復号し、C2サーバーのIPアドレスを復元します。

レスポンスパケットから復元されたC2サーバーのIPアドレスは、コード内にハードコードされた値「98.142.252[.]140」と一致します。

SectopRATの通信と制御コマンド

C2サーバーへの接続に成功すると、SectopRATはC2サーバーとの通信を開始します。図11に示すように、C2サーバーはまずSectopRATにパケットを送信します。このパケットを例として、SectopRATのパケット構造を詳しく見ていきます。

C2サーバーとSectopRATの間で交換されるすべてのパケットは、AESで暗号化されています。

図11:暗号化されたSectopRATパケット

・パケットサイズ:各パケットの先頭5バイト(赤色で表示した部分)には、その後に続く暗号化データのサイズを表す変換値が含まれています。実際のサイズを復元するには、次の式を使用します。「data」はパケットを示します。

data[0]*100000000 + data[1]*1000000 + data[2]*10000 + data[3]*100 + data[4]

この例では、5バイトは「00 00 00 01 5C」です。上記の式を使用すると、結果は0+0+0+1*100+0x5C=0xC0となります。したがって、5バイトに続くデータのサイズは0xC0バイトです。

・IV:次の10Hバイト(8C EE … 3D 1B、黄色で表示した部分)には、AES復号に使用されるIVが格納されています。

・暗号化されたコマンド:残りのデータは、AESで暗号化されたペイロードです。

パケットの暗号化と復号に使用されるAESキーは、SectopRATのペイロードにハードコードされています。

AES復号後の平文データは、図12に示すようにJSON形式になっています。

図12:復号されたC2サーバーのパケット

「Type」キーの値によって、制御コマンドが指定されます。図12は、「InitMessage」の復号された制御コマンドパケットを示しています。

分析によると、今回のSectopRAT亜種は以下の29種類の制御コマンドをサポートしていることが確認されました。

「UpdAllCvsmDebug」、 「ParticipantList」、「BotURL」、「StopCapture」、「UnInstall」、「CaptureRequest」、「GetBrowserKeys", 「ConnectToBot」、「FileManager」、「SessionID」、「ShellJoinCommand」、「InitMessageOld」、「SetApp」、「ProcessManager」、「RestartBot」、「InitMessage」、「ControlInt」、「RestartPC」、「SendCookieFile」、「ExportData」、「SetColorDep」、「EncryptionStatus」、「FullscreenRequest」、「InitOtherModules」、「InitStealer」、「ServerAfkSystem」、「DeployBrowserKey」、「LocalPluginInitModule」、および「OneStartOneBlad」。

これらの制御コマンドを使用して、SectopRATは次の機能を実行します。

・システムのリモート管理
・画面キャプチャとディスプレイのリモート制御
・ブラウザの認証情報とCookieの窃取
・データの外部送信
・プロセスとファイルの管理
・リモートシェルの実行
・システムの再起動
・ボットの管理

「DeployBrowserKey」コマンドによる機密データの窃取

SectopRATはC2サーバーから「DeployBrowserKey」コマンドを受信すると、侵害されたデバイスから機密データの収集を開始します。SectopRATがWebブラウザからデータを抽出できるように、マルウェアは「WbElevation.dll」という追加モジュールを「hxxp://98.142.252[.]140:9000/wmglb」からダウンロードします。このモジュールは、実行時にリソースから復号されます。

このSectopRAT亜種は、認証情報、関連URL、自動入力データ、保存されたクレジットカード情報、およびWebブラウザのCookieを窃取します。また、マルウェアはメールクライアントやゲームアプリケーションから認証情報を収集します。さらに、特定の暗号通貨ウォレットのブラウザ拡張機能や、インストールされているウォレットソフトウェアを標的とし、ウォレットデータを窃取します。

侵害されたソフトウェアは、次のように分類できます。

Webブラウザ
Chromium、Google Chrome、ChromePlus、Iridium Browser、7Star、Cent Browser、Chedot、Vivaldi、Kometa、Elements Browser、Epic Privacy Browser、Uran (uCozMedia)、Uran、Sleipnir 5 (Chromium Viewer)、Citrio、Coowon、Liebao Browser (Cheetah Browser)、QIP Surf、Orbitum、Comodo Dragon、Amigo、Torch Browser、Yandex Browser、Comodo Browser、360 Secure Browser、Maxthon 3、Sputnik Browser、Nichrome、Coc Coc Browser、Chromodo、Atom Browser (Mail.ru Atom)、Brave Browser、Microsoft Edge、CryptoTab Browser、Mozilla Firefox、Waterfox、K-Meleon、Comodo IceDragon、Cyberfox、BlackHawk Browser、Pale Moon

メールクライアント
Thunderbird

ブラウザ拡張機能のウォレット
MetaMask、Chain Browser Wallet、TronLink、Coinbase Wallet

デスクトップウォレットソフトウェア
Atomic Wallet、Exodus、Electrum、Daedalus Mainnet

その他

Battle.NET、Steam、NVIDIA GeForce Experience

図13は、現在の分析環境のMicrosoft Edgeブラウザから収集された認証情報の内容を示しています。

図13:Microsoft Edgeブラウザから収集された認証情報

以下に、収集された機密情報を含むJSONデータの生成例を示します。

{"Type":"ConnectionType",
"ConnectionType":"Client",
"SessionID":"A12BA3A3DCD70E02F89253C9EC78B11F",
"BotName":"win10(-)",
"BuildID":"gfh33",
"BotOS":"Microsoft Windows 10 Pro",
"URLData":"aHR0cHM6Ly9sb2dpbi5nb29nbGU [ … ] XVsdA0K",
"UIP":"NONE",
"BuildVersion":"103"}

・「ConnectionType」はコマンド名です。
・「SessionID」は現在のセッションを示します。
・「BotName」には、被害者のユーザー名が格納されています。
・「BuildID」と「BuildVersion」には、このSectopRATペイロードの情報が含まれます。
・「BotOS」には、被害者のOSに関する情報が含まれます。
・「URLData」には、被害者のマシンから収集された機密データをBase64エンコードした文字列が含まれます。
・SectopRATは、JSONデータ全体をAESアルゴリズムで暗号化した後、暗号化されたデータをC2サーバーに送信します。図14は、収集した機密データを含み、C2サーバーに送信された暗号化パケットを示しています。データサイズは、9*100 + 0x2C = 0x3B0です。

図14:C2サーバーに送信された、収集された機密データ

SectopRATを削除する「UnInstall」コマンド

図15は、マルウェアが「UnInstall」コマンドを受信した後、SectopRATが自身の実行ファイルを削除する方法を示しています。このコマンドは、ボット管理に分類されます。

図15:「UnInstall」コマンドの実行

「processStartInfo」オブジェクトに含まれる値に基づいて、SectopRATは次のコマンドを実行します。

 cmd.exe /C choice /C Y /N /D Y /T 6 & Del {the full path of the current process}

このマルウェアは「calli」命令を使用して、System.Diagnostics.Process Start(System.Diagnostics.ProcessStartInfo)のメソッドポインターを呼び出し、コマンドを実行するパラメータとしてこのコマンドを渡します。

「choice」コマンドによって6秒間の遅延が発生し、その後に「Del」コマンドが実行されます。これにより、現在実行中のSectopRATプロセスが終了するか、その他の方法で実行ファイルのロックが解除されてから、その削除が試行されます。6秒間の遅延後、マルウェアはSectopRATが実行されている実行ファイルを削除します。

結論

今回のSectopRAT亜種の分析から、攻撃者がリモートアクセス型トロイの木馬(RAT)を隠蔽して検知を回避する手法が明らかになりました。マルウェアは多段階ローダーを使用してファイルからペイロードを抽出した後、APIハッシュ、間接的な関数呼び出し、メモリ内ロードなどの手法を使用して、最終的な.NETペイロードを実行します。

SectopRATは実行されると、C2サーバーとの暗号化通信を確立します。C2サーバーは29種類の制御コマンドに対応しており、侵害されたシステムをリモートから管理できます。これらの機能には、プロセスとファイルの管理、画面キャプチャ、リモートコマンドの実行、システムの再起動、マルウェアの削除などがあります。また、マルウェアはWebブラウザ、メールアプリケーション、ゲームプラットフォーム、暗号通貨ウォレットから機密情報を収集できます。

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

フォーティネットのお客様は、FortiGuardのWebフィルタリング、アンチウイルスサービスによって、この攻撃キャンペーンから以下のように保護されています。

このキャンペーンで使用されているURLは、FortiGuard Webフィルタリングサービスにより、「悪意のあるWebサイト」として識別されます。

FortiGuardアンチウイルスサービスは、関連するDLLファイルとDBファイル、およびファイルレスのSectopRATのペイロードを、以下のアンチウイルスシグネチャで検知します。

W64/SectopRAT.EDF4!tr
W64/SectopRAT.0846!tr
W64/SectopRAT.FD6A!tr
W64/ShellcodeRunner.BTO!tr


Fortinet FortiGate、FortiMail、FortiClient、およびFortiEDRはFortiGuardアンチウイルスサービスをサポートしており、各ソリューションにFortiGuardアンチウイルスエンジンが組み込まれています。そのため、これらの製品のお客様は、最新の保護機能を既に利用されています。

新たな脅威に関する最新情報を受け取るには、FortiGuard Labsのアラートサービスに登録してください。

また、無料のNSEトレーニング:NSE 1 – 情報セキュリティ意識向上を受講することをお勧めします。このトレーニングにはインターネットの脅威に関するモジュールが含まれており、エンドユーザーは各種のフィッシング攻撃を識別して自らを保護する方法を学習できます。

FortiPhishフィッシングシミュレーションサービスは、フォーティネットセキュリティ意識向上トレーニングサービスと連携し、実際のフィッシング攻撃シナリオを用いて、従業員が一般的なソーシャルエンジニアリング手法に対処できるようにトレーニングおよびテストします。これらのサービスは、ユーザーが不審なコンテンツを認識し適切に対応する能力を向上させることで、特に注意力が散漫になりやすい状況や緊急性を煽る攻撃に対する耐性を高め、フィッシング攻撃やマルウェア攻撃のリスクを低減できるように支援します。

このようなサイバーセキュリティの脅威の影響を受けていることが疑われる場合は、グローバルFortiGuardインシデントレスポンスチームにお問い合わせください。

MITRE ATT&CKの手法

手法ID 手法の名前
 T1027 ファイルや情報の難読化
 T1140 ファイル / 情報の難読化解除 / 復号
 T1059.003 Windowsコマンドシェル
 T1070.004 ファイルの削除
 T1555.003 Webブラウザの認証情報
 T1113 画面キャプチャ
 T1005 ローカルシステムのデータ
 T1573 暗号化されたチャネル
T1008 フォールバックチャネル
T1071.001 Webプロトコル

IOC(Indicators of Compromise:侵害指標)

C2サーバーのIPアドレスとポート
98.142.252[.]140:15847

バックアップドメインリスト
hxxps://bsc-dataseed1.binance[.]org/
hxxps://bsc-dataseed2.binance[.]org/
hxxps://bsc-dataseed3.binance[.]org/
hxxps://bsc-dataseed4.binance[.]org/
hxxps://bsc-dataseed1.defibit[.]io/
hxxps://bsc-dataseed2.defibit[.]io/
hxxps://bsc-dataseed3.defibit[.]io/
hxxps://bsc-dataseed4.defibit[.]io/
hxxps://bsc-dataseed1.ninicoin[.]io/
hxxps://bsc-dataseed2.ninicoin[.]io/
hxxps://bsc-dataseed3.ninicoin[.]io/
hxxps://bsc-dataseed4.ninicoin[.]io/

URL
hxxp://98.142.252[.]140:9000/wmglb

関連するサンプルのSHA-256
FrameworkBase.dll
48D3ECBB9E0B6BABE6E53E2082A076BAD07EF61CCD98DCC8B9E4F390B937788B
sdkcra.dll
37FCBCB21D16866784050682C58424C91D3A736F6FD599271FA6E53CF5CA8A92
Activation.Desktop.db
EFA07701570983909EF923EA79BB032F19FD9DAC0B819FA0E4F6B1161A4CC221
pool.db
95F6ABD3C43EF4B33CD61D054527233DD2CE705804D44A04BE96CFB73BB52E3A

■関連サイト

本記事はアフィリエイトプログラムによる収益を得ている場合があります