<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=939333007162424&amp;ev=PageView&amp;noscript=1">

RoKRAT Shellcodeとステガノグラフィベースの脅威分析およびEDR対応策

 

◈  重要なポイント(Key Findings)

  • APT37 GroupのRoKRATマルウェアが新たな形で登場
  • 暗号化されたshellcodeメソッドを2つのステップで挿入して、分析の妨害を試みる
  • 写真ファイルの中にマルウェアを隠すステガノグラフィ手法の発見
  • セキュリティ製品による検知を回避するためにFileless攻撃を継続的に実行
  • エンドポイントの異常動作を検知するために最適化された効率的なEDRを使ったセキュリティ管理システムの構築が必要

 

 

1. 概要(Overview)

Genians Security Center(GSC)は、分析中にAPT37グループが使用する新しい形式のマルウェアを発見しました。彼らが使用する最も一般的なタイプは「RoKRAT」と呼ばれます。脅威アクター(Threat Actor)は、拡張子がLNKのショートカットファイル内の「Cmd」または「PowerShell」コマンドを攻撃に使っています。

現在、この攻撃は韓国でも引き続き観察されるほど活発に活動しています。それほど、効果的な攻撃手法として見ています。したがって、複数の業務用デバイスを持つ企業や政府機関、団体のセキュリティ管理者は、脅威に対するさまざまな攻撃の種類と手法を常に認識する必要があります。

ショートカットファイルの基本アイコンには小さな矢印が含まれており、ある程度目視区別が可能です。もちろん、ユーザーが自分で作成したショートカットフォルダやファイルはほとんど正常なので、絶対に誤解してはいけません。もし、メールの添付ファイルやSNSなどのメッセンジャーで受け取った圧縮ファイルの内部にショートカットファイルがあれば、それは十中八九マルウェアである可能性が高いです。このようにセキュリティ責任者は、最新の脅威の流入過程やファイル拡張子の概念、アイコンの固有の特徴などを理解する必要があります。

これにより、定期的な社内セキュリティトレーニングとケースシェアリングを通じて従業員のセキュリティ認識レベルを向上させることができます。さらに、EDRまたはMDRサービスの導入により、より体系的で効率的な脅威管理システムを運営できます。このレポートは、最新のケースに基づいて脅威を効果的に防御するためのインサイトの確保と防御戦略の確立に必要な技術分析資料として活用できます。  

 

 

2. 背景(Background)

GeniansはAPT37グループの様々な脅威活動を分析し、サイバー脅威対応のための脅威インテリジェンスレポートを提供しています。

タイプ別の実際のケース分析により、高度標的型攻撃(APT)の変化と流れが把握できます。北朝鮮連携だけでなく、中国、ロシアなど国家背後のハッキング組織の脅威は日々高まっています。従来知られている攻撃ツールも引き続き発展しており、これに対する多様な分析と研究が重要となる傾向です。


攻撃シナリオ

[図2-1]攻撃シナリオ

 

 

3. 技術的分析 (Technical Analysis)


3-1.ショートカット(Shortcut)LNK分析

悪意のあるファイルは「国家情報と防諜原稿.zip」圧縮ファイルを通じて配布されました。圧縮ファイルの内側に、「国家情報と防諜原稿.lnk」という名前のショートカットファイルが含まれています。

そのショートカットファイルのサイズは約54MB(54,160,170Bytes)で異常に大きいことがわかります。なぜなら、コード内部におとり用正常文書とともにRoKRAT Shellcodeなどが隠れているからです。 

通常のショートカットファイルは単純なテキスト情報(ファイルのパス、アイコン情報など)を保存するため、最大数十キロバイト(KB)程度です。

 

配布された悪意のあるファイルの画面

[図3-1]配布された悪意のあるファイルの画面

「国家情報と防諜原稿.lnk」ファイル内に隠された属性情報を抽出すると、次のようになります。

 

LNKファイルの構造とコードの相関分析

[図3-2] LNKファイルの構造とコードの相関分析

 

ショートカットファイルには4つのデータが含まれています。

  • おとり(Decoy)用の通常のHWP文書ファイル
  • Shellcode(ttf01.dat)
  • Powershellコマンド(ttf02.dat)
  • バッチファイルコマンド(ttf03.bat)

おとりファイルを除くデータの実行フローは次のとおりです。

  • ttf03.bat -> ttf02.dat -> ttf01.dat

 

コード実行のフロー

[図3-3]コード実行のフロー

「ttf03.bat」バッチファイルを介して分離されたPowerShellコマンドが順次実行されます。そして、「ttf02.dat」ファイルを介してshellcodeブ​​ロック「ttf01.dat」ファイルを読み込み、XOR演算を実行します。

 

$exeFile = Get-Content -path $exePath -encoding byte
$len = $exeFile.count
$newExeFile = New-Object Byte[] $len
$xK = '3'

for ($i = 0; $i -lt $len; $i++) {
    $newExeFile[$i] = $exeFile[$i] -bxor $xK[0]
}

[表3-1] XOR演算ロジック

 

PowerShellで$ xK = 「3」として宣言された文字列の最初の文字は、ASCIIコード値として0x33(10進数51)に対応し、これはXOR演算で使用されるキー値として機能します。

各バイトは $exeFile[$i] -bxor $xK[0] を介して XOR ロジックにデコードされます。

手動でデコード操作を実行するには、次のPowerShellコマンドを使用できます。これにより、「ttf01.dat_decode」ファイルを取得できます。

 

$key = '3'
$keyByte = [byte][char]$key

$inputFile = "D:\ttf01.dat"
$outputFile = "D:\ttf01.dat_decode"

$encodedBytes = Get-Content -Path $inputFile -Encoding Byte
$decodedBytes = New-Object Byte[] $encodedBytes.Length

for ($i = 0; $i -lt $encodedBytes.Length; $i++) {
    $decodedBytes[$i] = $encodedBytes[$i] -bxor $keyByte
}

[IO.File]::WriteAllBytes($outputFile, $decodedBytes)
Write-Host "XOR decoding complete. Output saved to: $outputFile"

[表3-2]PowerShell XORファイルの変換コマンド

 

逐次コード分析のために手動デコードを便利に進めることができます。

 

PowerShell手動デコード変換の例

[図3-4]PowerShell手動デコード変換の例

 

変換されたコードを比較すると、典型的なShellcodeブ​​ロックを持っています。詳細なShellcode分析のためにコードデバッグを実行し、ペイロード(Payload)確認のプロセスが必要になります。

 

Shellcodeの比較画面

[図3-5]Shellcodeの比較画面

 

3-2.シェルコード(Shellcode)分析

Shellcodeデバッグプロセスにより、XOR 変換ロジックを確認できます。

 

XOR変換のプロセス

[図3-6] XOR変換のプロセス

 

実際の元のShellcodeデータをベースにオフセット00000590番地から0xAE 1バイトへのXOR変換が行われます。

変換されたデータは32ビットEXE実行ファイルで、Time Date Stampの値は「2025-04-21 00:39:59(UTC)」です。脅威アクターは、韓国標準時(UTC+9)午前9時39分にマルウェアを作成したと推定します。

そのファイルで「Program Database(PDB)」情報を確認できます。 PDBファイルは、WindowsでVisual Studioなどでプログラムをビルドしたときに生成されるデバッグ情報ファイルです。このファイルには、実行ファイル(EXE)または動的ライブラリ(DLL)のシンボル情報(symbol information)、ソースコードのマッピング、変数名、関数名などのデバッグに必要な情報が含まれています。

マルウェアに存在するPDB情報は、開発者のさまざまな情報を把握するために活用され、類似の亜種に対する手がかりとしても使用できます。

  • プログラムローカルパス
  • プロジェクト名
  • 開発者の情報
  • マルウェアの種類
  • マルウェアのバージョンなど

 

DebugDataのPDBパス情報

[図3-7]DebugDataのPDBパス情報

 

この情報には「InjectShellcode」文字列データが含まれており、開発者の意図を予測することができます。

 

D:\Work\Util\InjectShellcode\Release\InjectShellcode.pdb

[表3-3] PDB文字列の情報

 

多くのRoKRAT亜種の中に「InjectShellcode」文字列が見つかったのは今回が初めてです。これは、Anti-Virus製品の検知やマルウェアの分析を難しくすることが目的です。

 

mspaint.exeプロセスメモリインジェクションのルーチン

[図3-8] mspaint.exeプロセスメモリインジェクションのルーチン

 

「InjectShellcode」モジュールは、CreateProcessW API関数を介してハードコードされた「C:\Windows\SysWOW64」パスに存在する「mspaint.exe」プロセスを生成します。ここで、「mspaint.exe」ファイルはWindows標準のペイントプログラムです。

ちなみに、64ビットは互換性を考慮するためにWindows-32-on-Windows-64(WOW64)サブシステムを使用して、変更なしで32ビットプログラムを実行します。ただし、Windows 11の最新バージョンでは、「mspaint.exe」は「SysWOW64」または「System32」パスにないです。これは、UWP(Universal Windows Platform)アプリに切り変わったためです。転換された時点は正確に知られていませんが、2024年10月前後に何度も累積的なアップデートでクラシックのペイントプログラムが削除されたというユーザーエクスペリエンスが報告されたことがあります。

そのため、一部の環境では、「SysWOW64」パスでハードコードされた「mspaint.exe」プロセスインジェクション手法が失敗し、マルウェアが正しく機能しなくなります。

「SysWOW64」パスに「mspaint.exe」ファイルが存在する場合は、仮想メモリスペースを割り当ててデータを書き込みます。このとき「xmmword_403018」配列のデータ 「325869FF25798BC277BF22DEB1DEB967h」から「0xDA000」(892,928)バイト分だけ書きます。

そして、「xmmword_402170」配列のデータとXOR演算を実行します。このとき使用されるデータは「3232323232323232323232323232323232h」です。 XOR演算が実行されたデータは、2番目のShellcode構造を持ちます。

 

Shellcodeデコードのルーチン

[図3-9]Shellcodeデコードのルーチン

 

このShellcodeは、eaxがターゲットとするオフセット000590番地からbl値の「0xD6」キーとXOR演算を繰り返し実行します。

XOR演算が完了すると、32ビットEXE実行ファイルに変換されます。このファイルがRoKRATの亜種です。

 

XOR演算前後の結果比較

[図3-10]XOR演算前後の結果比較

 

ちなみに、2025年07月20日には「北朝鮮離脱民の成功した渡韓および定着のためのアカデミー運営.lnk」ファイル名を持つ亜種が発見されました。

このタイプは、「C:\Windows\SysWOW64」パスに存在する「mspaint.exe」プロセスの代わりに「notepad.exe」ファイル名に変更されました。そして「Weapon」フォルダパスから悪意のあるファイルを開発しました。

 

D:\Work\Weapon\InjectShellcode\Release\InjectShellcode.pdb

[表3-4]PDB文字列の情報

 

「Weapon」フォルダは、2025年02月03日「Kメッセンジャーとして流布された「APT37」グループの悪性HWP事例分析」レポートの[図12]でも同様に発見されたことがあります。

 

 3-3. RoKRAT分析

XOR演算後に変換された最終モジュールはAPT37グループが使用するRoKRATの亜種として確認されました。 RoKRATについては「Operation. ToyBox Story」レポートなどでも何度も紹介したことがありますので、詳細は前の内容を参考にしてください。

今回の亜種の場合も従来のものと大きな差がない、典型的なRoKRAT機能を行います。今回のモジュールでも固有の識別子文字列(--wwjaughalvncjwiajs–)がそのまま使われました。この文字列は、RoKRATタイプがC2で書き込むクラウドAPIを要求するときにContent-Typeに含める固定値として知られています。

RoKRATモジュールは、感染されたデバイスの基本的なコンピュータ情報と文書ファイル、スクリーンショットなどを収集し、合法的なクラウドサービスに漏洩しようとします。

  • api.pcloud.com
  • cloud-api.yandex.net
  • api.dropboxapi.com

脅威アクターはShellcodeおよびFilelessベースでこのモジュールをロードしていますが、そのせいか内部の機能は大きく変更せず使っています。

 

RoKRAT内部の文字列

[図3-11]RoKRAT内部の文字列

 

さらに、無料のクラウドストレージをC2サーバーとして継続的に悪用しています。

したがって、企業や政府機関、団体のセキュリティ管理者は、外部クラウドへのアクセス履歴も慎重に確認する必要があります。

 

Dropbox APIとAccess Tokenの値

[図3-12]Dropbox APIとAccess Tokenの値

 

今回は2つのDropbox Access Token Keyが使用されました。対応するKey値は以下の通りで、現在は削除された(revoke)状態です。

  • hFkFeKn8jJIAAAAAAAAAAZr14zutJmQzoOx-g5k9SV9vy7phb9QiNCIEO7SAp1Ch
  • gYQs1sJ0etEAAAAAAAAAAUsEYLCFpEUR38u0SxDzsfL2F8ZCLokJPGpPsq4OTNUX

2025年07月20日に発見された亜種のトークン値は以下の通りです。

  • Q54LEwmIgyAAAAAAAAAIAImytoGW3__MIEynCsFRSwohgvHI_fjViYK5ZfrG28teC
  • 1yLixfRbcDAAAAAAAAAACJoZNYUJ5tQzE6jjb-mhXhqWZBRYWi8NJQ349sxGdkt_

 

3-4. C2 Dropbox 加入者情報

Dropbox API サービスと Access Token で確認してみると、加入者の履歴情報を一部照会できます。これにより、脅威アクター(Threat Actor)のメール情報などを識別できます。

 

  "email": "nusli.vakil@yandex.com",
  "email_verified": true,
  "disabled": false,
  "country": "US",
  "locale": "en",

"email": "reddy.kappeta@yandex.com",
  "email_verified": true,
  "disabled": false,
  "country": "US",
  "locale": "en",

  "email": "leon24609@gmail.com",
  "email_verified": true,
  "disabled": false,
  "country": "GB",
  "locale": "ko",

 "email": "leon91729@zoho.com",
  "email_verified": true,
  "disabled": false,
  "country": "JP",
  "locale": "ko",

 [表 3-5]Dropbox加入者の履歴情報

 

Linkdin加入者の画面(プロファイルはモザイク加工)

[図3-13]Linkdin加入者の画面(プロファイルはモザイク加工)

 

どちらの加入者情報も、ロシアのYandexメールアカウントを使用しました。メールに使用されたIDを検索してみると、Linkedinが出てきますが、同じ人だと断定することはできません。

ただし、APT37の背後にある脅威の行為者→脅威アクターがクラウドストレージに参加するときに登録するメー​​ルアドレスがLinkedInで継続的に観察されることは非常に興味深いところです。これに関する内容は「Operation. ToyBox Story」レポートに記載されています。

 

 

4. 写真の隠れ技法(Hiding Techniques in Images)


4-1.ステガノグラフィ手法のRoKRAT発見 

2025年07月上旬に、Multiple Provider Router DLLのように偽装したRoKRAT Loader形式が多数識別されました。元のファイル名は「mpr.dll」で、32Bit DLLの亜種はすべて類似の機能を持っています。

一部はHWP文書ファイルに悪意のある OLE を挿入して攻撃に使われたものと確認されます。

 

悪性HWPファイル内部構造の解析画面

[図4-1]悪意のあるHWP文書ファイル内部構造の解析画面

 

ドキュメント内に「BIN001.OLE」、「BIN002.OLE」オブジェクトが存在します。 1 つはSysinternalsで配布される「ShellRunas.exe」ファイルです。そしてもう一つは「credui.dll」です。

実際の悪意のあるHWP文書ファイルが実行され、内部に挿入されたハイパーリンクをクリックすると、一時フォルダ(%Temp%)パスに作成された「ShellRunas.exe」を実行するかどうかが表示されます。もし実行を許可すると、一緒に作成された「credui.dll」マルウェアがロードされます。これは典型的なDLL Side-Loading手法です。

類似のケースで確認されたDLL Side-Loading方式は次のとおりです。このdllファイルたちはマルウェアです。

  • ShellRunas.exe
    • credui.dll
  • AccessEnum.exe
    • mpr.dll
  • Hhc.exe
    • hha.dll

「credui.dll」モジュールは、DropBoxドライブに存在する「Father.jpg」イメージをダウンロードしてメモリにロードします。興味深いのは、JPEG画像フォーマットの内部にRoKRATモジュールを隠しておいたところで、この手法は通常「ステガノグラフィ(Steganography)」と言われます。

2つの形式のイメージファイルで偽装された手口が発見されましたが、内部のマルウェアパターンは同じです。そこで、「mpr.dll」モジュールに偽装されたマルウェアをベースに分析します。

 

イメージファイル偽装のマルウェア事例

[図4-2]イメージファイル偽装のマルウェア事例

 

「mpr.dll」ファイルの内部に「MYIMAGEFILE」という名前のリソース(Resources)が含まれていることがわかります。一見リソース名だけを見たときは、イメージファイルが挿入されているかのように解釈されます。 

 

 

「mpr.dll」リソース領域の画面

[図4-3]「mpr.dll」リソース領域の画面

 

 このファイルはリソースを見つけてそのデータをロードし、SHGetKnownFolderPath関数を介して%LOCALAPPDATA%パスに「version1.0.tmp」ファイルを保存します。

 

リソースデータ生成の関数

[図4-4]リソースデータ作成の関数

 

そして、LoadLibraryW関数を介して「version1.0.tmp」ファイルをロードします。

 

ライブラリロードの関数

[図4-5]ライブラリロードの関数

 

ファイルのロードが行われると、そのDLL内の関数アドレスを取得します。

  • OpenURL
  • GetMyFirstResult
  • Set_InstallKey
  • Check_Installed
  • ProtectMe

「version1.0.tmp」ファイルの内部にも「MYIMAGEFILE」という名前のリソースが含まれています。そして実際にはJPEG画像フォーマットのヘッダを持っています。

 

「version1.0.tmp」リソース領域の画面

[図4-6]「version1.0.tmp」リソース領域の画面

 

リソースを抽出して確認してみると、実際に有効なJPEG Exif(Exchangeable image file format)ヘッダを持っています。そして、JPEG画像ファイルには、実際の特定の人物の顔が含まれています。 

ところで、分析結果「version1.0.tmp」ファイルは、イメージファイルリソース内のデータを0xAA Key値でXOR演算するロジックが発見されました。演算後に変換されたオフセット0x4201位置にはShellcodeデータが観察されました。

 

イメージファイルとShellcode

[図4-7]イメージファイルとShellcode

 

こうして取得したShellcodeデータは、内部ルーチンを介して0x29 Key値でXOR演算がもう一度実行されます。この操作により、内部に隠されているRoKRATモジュールが表示されます。

このようにイメージファイルヘッダを持っていますが、デコード処理を経て内部にマルウェアがロードされます。典型的なステガノグラフィ手法の形をとっています。

 

XOR演算の実行ルーチン

[図4-8]XOR演算の実行ルーチン

 

ここで使用されているRoKRAT機能を分析した結果、2つのクラウドアクセストークン値が識別されました。

  • pCloud
    • U1XD7ZzVoRYfYDIfLZhPK7ykZ43rMhs5ej88WQ78GctvXupdkFGXy
  • Yandex
    • y0_AgAAAAB6OAV_AAzOMAAAAAEZECSQAAAy5BcMOOVPsYKi_OfJu8GQ3fWpZA

このトークン値は、2023年から2024年にすでに使用された履歴が確認されました。

 

 

5. 結論と対応 (Conclusion)

Genian EDR管理者は、脅威の流れを可視性高く把握することができます。ステガノグラフィ手法を使用したケースでは、リソース領域内に存在していた「version1.0.tmp」ファイルが生成されるプロセスを簡単に把握できます。

拡張子はtmpファイルですが、「rundll32.exe」親プロセスで実行されていることを確認できます。

 

リソースに含まれるDLL作成後の実行画面

[図5-1]リソースに含まれるDLL作成後の実行画面

 

mspaint.exeプロセスにShellcodeを挿入(Injection)してファイルレス(Fileless)形式で攻撃を実行すると、シグネチャまたはパターンベースのセキュリティ製品で検知が難しい可能性があります。

 

mspaint.exeプロセスにインジェクションして通信するフロー

[図5-2] mspaint.exeプロセスにインジェクションして通信するフロー

 

EDR(Endpoint Detection and Response)を使用すると、ShellcodeとDropbox APIを使用した外部通信の行為をすばやく識別できます。

デバイスで採証されたマルウェアを詳細にリバース(Reversing)して分析するには、多くの時間が必要です。ただし、EDRを介してマルウェア固有の動作フローをすばやく把握することは、SoC(Security Operations Center)内の脅威アナリストにとって非常に役立ちます。

マルウェアの流れを可視性のあるフローで提供することは、脅威アナリストにとって非常に重要なツールです。これにはいくつかの主な利点があります。

  • 攻撃の全体的な流れを理解
    • EDRを介して収集されたデータを可視化すると、マルウェアがシステム内でどのように配布され感染するかを明確に理解できます。これは攻撃の全体的な流れを理解するのに非常に役立ちます。
  • 感染経路の分析
    • 視覚的なデータ分析により、悪意のあるファイルがシステム内でどの経路を介して配布されたかを判断できます。これは、脅威アクターがとった特定の攻撃ベクトルを理解するのに役立ちます。
  • 脅威検出と対応の強化
    • EDRの可視化は、脅威を迅速に検知して対応するために不可欠です。特に、悪性活動のパターンを特定し、迅速に反応してダメージを最小限に抑えるのに役立ちます。
  • マルウェアの分類と特性を評価
    • マルウェアの種類と特性を視覚的に分析することで、悪意のあるコードの動作原理と機能を理解するのに役立ちます。これは防御戦略を開発し、同様の攻撃を防ぐのに重要な基盤となります。
  • レポートの作成と記録
    • EDR可視化は、脅威分析の結果をより明確に文書化し、レポートに書き込むのに役立ちます。これはセキュリティチーム間の効果的なコミュニケーションを促進し、将来のイベント対応の記録として活用することができます。

まとめると、EDRによるマルウェアの視覚的な分析は、脅威アナリストが攻撃の詳細な内容を深く理解し、効果的に対応するのに大きく役に立ちます。

 

クラウドベースのC2通信イベント調査の画面

[図5-3]クラウドベースのC2通信イベント調査の画面

 

Genian EDRは、合法的なクラウドサービスを悪用したC2通信記録もMITRE ATT&CK Techniqueタグを付けているため、セキュリティ管理者が脅威の可能性を判断するのに役立ちます。

RoKRATは、Dropbox、Google Drive、Yandex Diskなどのクラウドサービスで偽装されたCommand & Control(C2)通信を使っています。そのため、セキュリティソリューションでの検知が難しく、長期間にわたって隠蔽されたアクションが可能です。

特に、ファイルレス形式でメモリ上で動作し、ディスクに痕跡をほとんど残さないため、従来のアンチウィルスやログベースの検知では危険性を把握することが困難です。このように、秘密で継続的な攻撃にはEDRを活用した対応が不可欠です。システムに侵入した後に実行するスクリプトの実行、プロセスの作成、ネットワーク接続の試みなどの様々な攻撃行為をリアルタイムで監視して検知できるためです。

RoKRATの脅威は進化を重ねており、最新の亜種は一般的なアンチウィルス(Anti-Virus)やSIEMシステムだけでは検知と対応が難しい高度化された標的型攻撃(APT)用マルウェアです。したがって、次のような理由でEDRベースの対応が必須です。

  • リアルタイム異常行為検出(XBA)と分析
  • 攻撃前のプロセスの視覚的な理解
  • 迅速なネットワーク分離と対応策の検討
  • 今後の類似攻撃防止のためのデータ蓄積 

 

 

6.セキュリティ侵害インジケーター (IoC, Indicator of Compromise)

  • MD5

a2ee8d2aa9f79551eb5dd8f9610ad557

ae7e18a62abb7f93b657276dcae985b9

d5fe744b9623a0cc7f0ef6464c5530da

f6d72abf9ca654a20bbaf23ea1c10a55

fd9099005f133f95a5b699ab30a2f79b

5ed95cde6c29432a4f7dc48602f82734

16a8aaaf2e3125668e6bfb1705a065f9

64d729d0290e2c8ceaa6e38fa68e80e9

443a00feeb3beaea02b2fbcd4302a3c9

e13c3a38ca58fb0fa9da753e857dd3d5

e4813c34fe2327de1a94c51e630213d1