Lazarus 脅威グループの Volgmer、Scout マルウェア解析レポート

概要
1. Volgmer バックドア解析
…. 1.1. Volgmer 初期バージョン
…….. 1.1.1. Volgmer Dropper 解析
…….. 1.1.2. Volgmer バックドア解析
…. 1.2. Volgmer 後期バージョン
…….. 1.2.1. Volgmer バックドア解析
2. Scout ダウンローダー解析
…. 2.1. Dropper (Volgmer, Scout)
…. 2.2. Scout ダウンローダー解析
…….. 2.2.1. Scout ダウンローダー v1
…….. 2.2.2. Scout ダウンローダー v2
3. 結論
目次

国家レベルのサポートを受けている攻撃グループとして知られた Lazarus 脅威グループは、2009年からの活動が確認されている。初期には主に韓国で活動していたが、2016年以降は全世界の防衛産業、先端産業、金融を攻撃している。Lazarus グループは攻撃プロセスにおいて、主にスピアフィッシング、サプライチェーン攻撃、正常なプログラム詐称などの方式を使用してきた。[1]

近年は、水飲み場型攻撃を利用して韓国国内の防衛産業、人工衛星、ソフトウェア、マスコミなど、多数の企業や機関を攻撃したが、初期侵入方式に韓国国内の金融セキュリティ認証ソフトウェアのセキュリティ脆弱性が使用された。[2] 攻撃者は初期侵入の後にも、ラテラルムーブメントのプロセスにおいて Web セキュリティソフトウェアや企業の財産管理プログラムの脆弱性を悪用したりした。[3] Lazarus グループはマルウェアの配布サーバー、または C&C サーバーに活用する目的で、一般 PC だけでなく、サーバーシステムも攻撃のターゲットにする。 [4] [5]

Lazarus 脅威グループは長い間活動してきたため、様々な攻撃事例が確認されており、各事例ごとに様々なマルウェアが使用されている。特に初期侵入のプロセス以降、感染システムを制御する目的で使用するバックドアマルウェアの種類が非常に多い。AhnLab Security Emergency response Center(ASEC)は、Lazarus グループの攻撃活動を持続的に追跡および解析しており、このブログでは攻撃に使用された代表的なマルウェアの Volgmer と Scout を解析する。

Volgmer は、2014年より Lazarus 脅威グループが使用したバックドアマルウェアである。主にサービスに登録されて動作する Volgmer の特徴は、正常なファイルに偽装する名前でインストールされ、設定データをレジストリキー「HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security」に暗号化して保存するという点である。ASEC では、Volgmer バックドアが2014年以降、複数の変種を経て2021年頃まで攻撃に使用されてきたが、2022年からは Volgmer の代わりに Scout という名前のダウンローダーマルウェアが攻撃に使用されていることを確認した。Scout も実質的な機能は異なるが、基本的な動作の方式は類似しており、ダウンロードするペイロードは感染システムを制御するためのバックドアマルウェアであると推定される。

図1. Scout ダウンローダーの PDB 情報

Scout は、2022年頃から攻撃に使用されており、具体的な攻撃事例が確認されていないケースも多いが、初期侵入プロセスが確認された事例も存在する。例えば、上記で言及した韓国国内の金融セキュリティ認証ソフトウェアのセキュリティ脆弱性を悪用した攻撃事例でも他のマルウェアと一緒に確認された。攻撃対象には、Lazarus グループの一般的な活動と同じく防衛産業、製造業、ICT、金融など、多数の韓国国内企業および機関がある。攻撃者はこのマルウェアを利用して感染システムを制御しており、BYOVD(Bring Your Own Vulnerable Driver、脆弱なドライバモジュールによる攻撃)手法、すなわち、ハードウェアベンダーの脆弱なドライバモジュールを悪用してセキュリティ製品を無力化させた事例も確認された。 [6]

このブログでは、一番最初に確認された Volgmer バックドアの初期バージョンと2017年頃から攻撃に使用された後期バージョンを解析する。その後、Scout ダウンローダーを解析しながら、このインストールに使用された Dropper マルウェアも一緒に取り上げる。

1. Volgmer バックドア解析

Volgmer に関する最も古い記録は、2014年にシマンテック社で公開した「Trojan.Volgmer」マルウェア解析ページと推定される。[7](現在接続不可) その後も Volgmer は持続的に攻撃に使用され、2017年にはアメリカの CISA でも [8](現在接続不可) Lazarus グループのマルウェアを公開しながら Volgmer を言及した。当社の ASD ログによると、シマンテック社で公開した Volgmer マルウェアタイプは最低2014年から2015年まで確認され、類似した変種は2016年まで攻撃に使用された履歴が存在する。

2017年には Volgmer のアップデートバージョンの攻撃事例が初めて確認され、2021年頃まで履歴を確認することができた。このタイプには何点かの差が存在するが、C&C コマンドルーティンを比較した時、2021年に Kaspersky 社が公開した DeFi アプリケーションに偽装した攻撃事例で使用されたバックドアと同じタイプだと言える。[9](英語外部サイト) Volgmer が使用された攻撃事例は、2022年頃に Scout ダウンローダーが登場してからは確認されていない。

ここでは、過去初期バージョンの Volgmer を解析した後、2017年から2020年まで確認された後期バージョンの Volgmer を解析する。初期バージョンの Volgmer は古いマルウェアではあるが、その後のマルウェアと機能の面で類似している点が多いため、簡単に解析するとする。その次に後期バージョンの Volgmer を解析する。このタイプは C&C コマンドルーティンは違うが、動作フローが過去バージョンの Volgmer とほとんど類似しているという点が特徴である。

1.1. Volgmer 初期バージョン

1.1.1. VOLGMER Dropper 解析

Volgmer は DLL 形態のバックドアマルウェアであるため、これをインストールするマルウェアが必要である。初期バージョンの Volgmer からは Dropper が一緒に確認される。Dropper がリソース領域に暗号圧縮された Volgmer を生成し、サービスに登録する方式でインストールする。Dropper は、引数の個数やハングル環境かどうかの有無および Windows OS バージョンなどの情報をチェックし、条件に合わない場合にはメッセージボックスを出力したり自己削除する。自己削除には Batch ファイルを使用するが、「pdm.bat」というファイル名が使用されるという点が特徴である。

暗号化された設定データは実行中に復号化されるが、これには C&C サーバーアドレスなどの設定データが含まれるレジストリキーやサービス登録に使用する文字列、自己削除に使用される「pdm.bat」ファイルの内容などがある。復号化に使用される0x10バイトサイズのキーには、最近までも Lazarus グループの下位グループである Andariel グループのマルウェアを使用したりする。[10]

  • Key : 74 61 51 04 77 32 54 45 89 95 12 52 12 02 32 73

Volgmer の特徴の一つは、生成する Volgmer DLL ファイルの名前、登録するサービスの名前と説明などの文字列を特定のロジックに従ってランダムに生成するという点である。この文字列は、復号化された設定データに存在する以下の文字列を組み合わせて生成される。

  • 文字列 A : svc, mgmt, mgr, enum, app, bg, c, d, ex, f, g, h, i, k, l, m, net, o, p, q, rm, sec, ti, up, vol, win, dc, ud
  • 文字列 B : Service, Management, Manager, Enumerator, Application, Background, Control, Desktop, Extension, Function, Group, Host, Intelligent, Key, Layer, Multimedia, Network, Operation, Portable, Quality, Remote, Security, TCP/IP, User Profile, Volume, Windows, Device, Update

例えば、ファイル名は「文字列 A」項目から4つを組み合わせて「hlrmenum.dll」という名前で生成し、サービス関連項目は「文字列 B」項目から4つを組み合わせて以下のように使用する。

  • サービス名 : “[Host Layer Remote Enumerator]”
  • サービス Description : “The [Host Layer Remote Enumerator] is an essential service for management of Windows System. If the service is stopped or disabled, Windows will be able to damaged seriously.”
  • サービス DLL のパス : “C:\Windows\system32{hlrmenum}.dll”

Volgmer の Dropper は、リソース領域の「MYRES」項目を解凍して Volgmer DLL ファイルと設定ファイルを取得する。このファイルは ZIP 圧縮アルゴリズムで圧縮されており、以下のようなパスワードで暗号圧縮されている。

  • 圧縮パスワード : “!1234567890 dghtdhtrhgfjnui$%^^&fdt”
図2. リソース領域に存在する暗号圧縮された DLL と設定ファイル

Dropper は Volgmer DLL を %SystemDirectory% パスに生成した後、メモ帳(notepad.exe)ファイルの時間情報と同じように設定する。このような時間情報の操作(Timestamp Changes)手法は、タイムライン解析を回避する目的で使用される代表的なアンチフォレンジック手法の一つである。Lazarus グループは攻撃プロセスにおいて、時間情報の操作手法の他にもファイル削除、データ隠ぺいなど、様々なアンチフォレンジック手法を使用している。これは最近までも続いている。[11]

解凍された設定ファイルは、設定データを復号化する時に使用したアルゴリズムと同じ方式で暗号化され、レジストリキーに書き込まれる。その後、このデータは Volgmer が読み込んできて復号化に使用するが、C&C サーバーのアドレスが含まれている。ここまでのプロセスが終わると、生成したサービスの設定データを利用して Volgmer をサービスに登録して実行する。

  • レジストリキー – 1 : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / 125463f3-2a9c-bdf0-d890-5a98b08d8898
  • レジストリキー – 2 : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / f0012345-2a9c-bdf8-345d-345d67b542a1
1.1.2. VOLGMER バックドア解析

サービスで動作中の Volgmer は、上記のレジストリ値を復号化して設定データを取得する。設定データは以下のようにシグネチャ文字列の「cgi_config」と ID、そして C&C サーバーアドレスで構成されている。Dropper が生成する時の ID 値は NULL データだが、以降に Volgmer が感染システムのハードウェア情報を利用して ID 値を作成する。

オフセット サイズ データ
0x00 0x0A “cgi_config”
0x0A 0x08 Victim ID
0x12 0x04 1つ目 C&C サーバーの IP アドレス
0x16 0x04 1つ目 C&C サーバーのポート番号
0x1A 0x04 2つ目 C&C サーバーの IP アドレス
0x1E 0x04 2つ目 C&C サーバーのポート番号
表1. 設定データ

Volgmer は、設定データに存在する C&C サーバーリストのうち一つを取得して C&C サーバーに接続する。そして HTTP パケットを送信するが、サービスおよびファイル名の生成時と同じように、文字列をランダムに組み合わせて生成する。HTTP リクエストメソッドは「GET」、「POST」、「HEAD」のうち一つを選択し、User Agent 文字列も8個のうち一つを選択する。Volgmer の特徴の一つは、User Agent 文字列から「Mozilla」の代わりに「Mozillar」という誤字が確認されるという点である。ここまでのプロセスが終わると、ランダムに選択した HTTP パケットを送信する。その後、RIPEMD-160 ハッシュを利用して C&C サーバーとの検証プロセスを実行する。

図3. HTTP パケット生成に使用される文字列

C&C サーバーとの検証が完了すると、2回に渡って感染システムの情報を送信する。1回目は、現在動作中のシステムが仮想マシンかどうかの有無および現在動作中のセキュリティプログラム、インストールされたソフトウェアなどの情報である。

オフセット サイズ データ
0x00 0x08 ID
0x08 0x08 NULL
0x10 0x04 実行 Flag
0x14 0x04 時刻
0x18 0x04 仮想マシン環境有無のチェック
0x1C 0x04 インストールされたソフトウェアのチェック
0x20 0x04 セキュリティプログラムのチェック
0x24 0x04 デバッグ有無のチェック
0x28 0x04 svchost.exe プロセスで動作中かどうかのチェック
表2. C&C サーバーに送信するデータ – 1

次に、コンピューター名、ネットワーク情報、ハードウェア情報、言語、インストールされたアンチウイルス、動作中のサービスなど、様々な情報を収集して C&C サーバーに送信する。動作中のサービスとしては、現在 Listen 中のポートを通してチェックするが、その対象には FTP、SSH、DNS、HTTP、SMB、RDP、MS-SQL、VNC などがある。

オフセット データ
0x0000 IP アドレス
0x0004 コンピューター名
0x0084 CPU 情報
0x0184 プロセッサの数
0x0188 Windows バージョン
0x02D0 MAC アドレス
0x02D6 マルウェア名
0x0316 マルウェアファイル名
0x0358 Sleep 時間
0x035C インストールされた AntiVirus
0x0360 Locale 情報
0x03E0 使用中のサービスリスト
0x03E8 “DING”
0x03EC “PADD”
0x03F0 “INGX”
0x03F4 “XPAD”
表3. C&C サーバーに送信するデータ – 2

その後 Volgmer は、C&C サーバーからコマンドを渡されてファイルタスク、コマンド実行、リバースシェルなどの機能を実行できるようになる。

コマンド 機能
0x1000 システム情報の送信
0x1009 C&C アドレスリストの変更(レジストリキー)
0x100A C&C アドレスリストの送信
0x100B ファイルのダウンロード
0x100C ファイルのアップロードおよび削除
0x100D ファイルのアップロード
0x100E ファイル実行
0x100F ファイルのダウンロードおよび実行
0x1010 ファイルの削除
0x1011 Sleep 時間の設定
0x1012 リバースシェル
表4. C&C コマンド

初期バージョンの Volgmer には変種も存在する。C&C コマンドルーティンは同じだが、設定データで使用されるシグネチャ文字列に「cgi_config」の代わりに「config_reg」が使用された点や設定データが保存されるレジストリキーが以下のような値に変更された点が代表的な差である。

図4. 変更されたシグネチャ文字列
  • レジストリキー – 1 : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / 2d54931A-47A9-b749-8e23-311921741dcd
  • レジストリキー – 2 : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / c72a93f5-47e6-4a2a-b13e-6AFE0479cb01

1.2. Volgmer 後期バージョン

2017年からは新しいタイプの Volgmer が使用された。初期タイプと C&C コマンドルーティンに差は存在するが、設定データをレジストリキー「HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security」に暗号化し、保存して使用するという代表的な特徴の他にも様々な共通点が存在する。例えば、サービス DLL 形態であるため、Dropper がサービスで登録して動作するという点や、特定の文字列をランダムに組み合わせて Volgmer DLL のファイル名やサービス登録時に使用する文字列を生成するという点などである。

ここで取り上げる後期バージョンの Volgmer は、2021年に Kaspersky 社で公開したレポートのバックドアと C&C コマンドルーティンが同じである。[12](英語外部サイト)  様々なバックドアを使用する Lazarus グループの特性上、韓国国内の攻撃で主に使用していたバックドアを他の攻撃にも変更して使用したものと推定される。ここでは、後期バージョンの Volgmer バックドア DLL を解析するが、これをインストールする Dropper と推定されるマルウェアは後述する Scout 解析項目で一緒に取り上げるとする。

1.2.1. VOLGMER バックドア解析

後期バージョンの Volgmer は、特定のレジストリキーに保存された設定データを復号化して C&C アドレスを取得する。後に取り上げるが、Dropper マルウェアは Volgmer バックドアを生成する時、特定の文字列をランダムに組み合わせてファイル名を作る。また、生成したファイル名の前4文字に対する Hex 値を設定データを保存するレジストリ値に設定する。そのため、Volgmer は実行中に自身のファイル名の前4文字を参考にして下記のようなレジストリ値を読み込む。

  • レジストリキー : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / [ファイル名の前4文字]-5903-ed41-902f-e93a29dafef5

読み込んできたデータは RC4 アルゴリズムを利用して復号化する。後期バージョンの Volgmer はすべて RC4 アルゴリズムを使用するが、復号化の方式によって大きく2種類に分類される。一つは直接的に具現した RC4 アルゴリズムを使用するタイプであり、もう一つは Crypto API を利用して SHA-1 ハッシュを取得した後、その値で RC4 復号化を実行するタイプである。直接 RC4 アルゴリズムを具現した方式は、4バイトのキーを利用して復号化するが、Crypto API を利用するルーティンは、4バイトのキーを利用して SHA-1 ハッシュを取得した後、これを RC4 キーで使用する。この時、SHA-1 値の最初の0x10サイズが RC4 アルゴリズムのキーで使用されるが、例えると、「DE A7 00 00」値の SHA-1 ハッシュは「8f919e6d8970faede0b10cfd5f82da53a83ca34d」だが、「8766fe8380b144907efa286a814c2241」が RC4 キー値で使用される。

図5. SHA-1 ハッシュと RC4 アルゴリズムを利用した復号化ルーティン
  • RC4 キー(直接具現) : E2 28 00 00
  • RC4 キー(Crypto API) : DE A7 00 00

Volgmer は設定データに存在する C&C サーバーアドレスのうち一つを選択して接続を試みる。後期バージョンの Volgmer と後に取り上げる Scout ダウンローダーは、HTTP プロトコルを利用して C&C サーバーと通信するが、確認された C&C アドレスはすべて https アドレスが使用された。C&C サーバーとの初回接続時やコマンドを渡される時に POST メソッドを利用するが、時点によって違うパラメータが使用されてきた。最も最近と言える2020年頃以降の Volgmer には、2021年 Kaspersky 社のレポートと類似したパラメータが使用された。しかし、このブログで言及する期間とタイプは、攻撃事例が確認されたケースのみを意味しており、実際確認されていない事例によっては異なる場合がある。

期間 パラメータフォーマット
2017 ~ 2019 secgb=[param1]&secdata=[param2]
2019 sessions=[param1]&secinfo=[param2]
2020 jsessid=[param1]&cookie=[param2]
表5. C&C サーバーに対する HTTP リクエストフォーマット
図6. C&C サーバーとの認証プロセスで使用されるパケット
期間 リクエスト種類 パラメータ #1 パラメータ #1構造 パラメータ #2 パラメータ #2構造
2017~
2019
初回接続 secgb Random (0x9) secdata message ID – “60D49D98” (0x08),
victim ID (0x08),
Random (0x8)
+ C&C アドレス (Base64)
C&C 通信 secgb Random (0x9) secdata message ID – “60D49D99” (0x08),
victim ID (0x08),
Random (0x8)
+ 0x60D49D94 (RC4)
結果の伝達 secgb Random (0x9) secdata message ID – “60D49D99” など (0x08),
victim ID (0x08),
Random (0x8)
+ Data (RC4)
2019 初回接続 sessions Random (0x6) secinfo message ID – “60D49D98” (0x08),
victim ID (0x08),
Random (0x8)
+ C&C アドレス (Base64)
C&C 通信 sessions Random (0x6) secinfo message ID – “60D49D99” (0x08),
victim ID (0x08),
Random (0x8)
+ 0x60D49D94 (RC4)
結果の伝達 sessions Random (0x6) secinfo “60D49D99” (0x08),
victim ID (0x08),
Random (0x8)
+ Data (RC4)
2020~ 初回接続 cookie Random (0x10)
+ 0x60D49D94 (Base64)
+ Random (0x10)
jsessid message ID – “60D49D99” (0x08),
victim ID (0x08),
Random (0x8)
C&C 通信 cookie Random (0x10)
+ 0x60D49D94 (RC4)
+ Random (0x10)
jsessid message ID – “60D49D99” (0x08),
victim ID (0x08),
Random (0x8)
結果の伝達 cookie Random (0x10)
+ Data (RC4)
+ Random (0x10)
jsessid message ID – “60D49D99” (0x08),
victim ID (0x08),
Random (0x8)
表6. 引数パラメータ

C&C サーバーとの初回通信では、message ID 「60D49D98」が使用され、データでは C&C サーバーのアドレスを Base64 で暗号化して送信する。その後、コマンドを渡されるために 0x60D49D94 値を message ID 「60D49D99」と一緒に送信する。0x60D49D94 値は、リクエストだけでなく応答にも使用されるが、Volgmer が C&C サーバーとの通信を検証する方式として復号化された応答値が 0x60D49D94 であるかをチェックするためである。

message ID 機能
60D49D98 接続確立
60D49D99 コマンドリクエスト
60D49DB6 システム情報の送信
表7. msg ID の種類

初回認証時にはデータの暗号化に Base64 アルゴリズムが使用されるが、以降には暗号化および復号化に RC4 アルゴリズムが使用される。Volgmer は RC4 アルゴリズムを直接具現して使用することもあり、Crypto API を利用するタイプも存在する。それぞれのタイプによって使用される RC4 キーが異なることが特徴である。

  • RC4 キー(直接具現) : 8D 52 00 00
  • RC4 キー(Crypto API) : A3 D5 00 00

Volgmer は感染システムを制御するための機能を提供しており、これは一般的なバックドアマルウェアと同じである。以下は特定の Volgmer バックドアに対するコマンドリストであり、後期バージョンに分類された Volgmer タイプのコマンドは大半が同じである。

コマンド 機能
0x60D49D94 基本応答
0x60D49D95 Default
0x60D49D97 デフォルト値で待機時間設定
0x60D49D9F 渡された値で待機時間設定
0x60D49DA0 システム情報の送信(コンピューター名、Windows バージョン、アーキテクチャ、IP 情報など)
0x60D49DA1 ドライブ情報の照会
0x60D49DA2 ファイルリストの照会
0x60D49DA3 プロセスリストの照会
0x60D49DA4 プロセスの終了
0x60D49DA5 現在タスクパスの設定
0x60D49DA6 スキャニング(渡されたアドレスに接続)
0x60D49DA7 時間情報の操作
0x60D49DA8 リバースシェル
0x60D49DA9 ファイルの削除
0x60D49DAA プログラムの実行
0x60D49DAB プログラムの実行(特定の権限で実行)
0x60D49DAC プログラムの実行(管理者権限)
0x60D49DAD ファイルのダウンロード
0x60D49DAE ファイル内容の送信
0x60D49DAF ファイルの送信(cab フォーマットで圧縮)
0x60D49DB0 ディレクトリの照会
0x60D49DB1 設定データの送信
0x60D49DB2 設定データのダウンロードおよび適用
0x60D49DB3 現在時刻を設定データに適用
0x60D49DB4 Sleep
0x60D49DB5 情報の送信(モジュール名など)
0x60D49DB7 「CMb*.a-p」ファイルの削除および終了
表8. コマンドリスト

特徴としては上記でも言及したように、Lazarus グループがよく使用する時間情報の操作手法とファイルの削除手法をコマンドでサポートするという点が挙げられる。時間情報の操作コマンドは、C&C サーバーから渡された特定パスのファイルの時間情報を一緒に渡された違うパスのファイルの時間情報に変更するコマンドである。ファイルの削除コマンドは単にファイルを削除する代わりに、「0x5F 00 00 00 00 …」値で上書きしてから削除することで以降の復旧を不可能にする方式である。

図7. 削除する前に上書きされたファイル

最近 PebbleDash が別の攻撃グループで使用された履歴が確認されたが、基本的には Lazarus グループが使用すると知られているバックドアマルウェアである。PebbleDash は、新しいドライブやセッションが生成される時、待機ルーティンを終えて C&C サーバーと通信、すなわち、有効化する機能をサポートする。これは PebbleDash が C&C サーバーとの通信プロセスで基本的に長い待機時間を要するため、感染システムの変化にリアルタイムで対応することが難しいためである。このような機能は Lazarus グループの他のバックドアマルウェアからも確認されるが、Volgmer が代表的な例である。他にも OpenCarrot バックドアがこの機能をサポートしたという事例が SentinelOne 社のレポートで確認された。[13](英語外部サイト)

Volgmer が定期的に削除するファイルの中には「BIT*.tmp」ファイルがあるが、これはファイルの送信機能を担当する 0x60D49DAF コマンドを実行しながら生成される CAB ファイルを削除するためと推定される。しかし、0x60D49DB7 コマンドで削除する「CMb*.a-p」という名前のファイルは、現在解析対象の Volgmer 単独では確認されない。

2. Scout ダウンローダー解析

Volgmer は、2014年を始めとして約2021年頃まで攻撃に使用された。2022年からは Volgmer と類似しているが、バックドア機能の代わりに外部から別のマルウェアをダウンロードしてメモリ上で実行するダウンローダータイプのマルウェアが確認される。ダウンロードしたペイロードは確保できなかったが、Volgmer の活動時期が終わった後から確認されるという点、C&C サーバーとの通信方式、設定データのロード方式が同じで、類似した Dropper によって生成された履歴が存在するという点が特徴である。

このマルウェアはルーティン上、大きく2種類で分類されるが、2022年の上半期に集中的に確認されたタイプと、2022年の下半期から2023年まで配布されているタイプがある。2つ目のタイプは1つ目のタイプに比べると、若干のルーティンが追加されている。上記の PDB 情報でも言及したように、「Scout」というキーワードと v2.x バージョンが明示されていることから、2022年の上半期に配布された Scout の改善されたバージョンと推定される。そのため、ここでは2022年の上半期に配布されたタイプを Scout v1、そして2022年の下半期から2023年まで確認されているタイプを Scout v2 で分類する。しかし、このブログで言及する期間とタイプは、攻撃事例が確認されたケースのみを意味しており、実際確認されていない事例によっては異なる場合がある。

大半のマルウェアは、Windows 環境でユーザーに認知されずにバックグラウンドで動作するため、Character User Interface(CUI)で製作される。Scout ダウンローダーは、Graphical User Interface(GUI)プログラムと同じようにウィンドウを生成して動作するという点が特徴である。もちろん、ウィンドウサイズを0に設定するため、実際にはユーザーに気づかれない。これは製作者がマルウェアを正常なプログラムに見せかけるためであると推定される。

図8.「Windows」という名前のウィンドウを生成するルーティン

設定データをレジストリキーに保存する Volgmer バックドアと違って、Scout ダウンローダーは設定データがファイル末尾の Overlay 領域に存在するタイプもある。この場合、Scout は引数で渡された文字列を復号化キーで使用する。

図9. Overlay に存在する設定データ

ここでは Scout ダウンローダーを解析するが、そのために先に Scout をインストールする Dropper マルウェアを取り上げる。この Dropper は、ファイル末尾の Overaly 領域に RC4 アルゴリズムで暗号化された実際のマルウェアとレジストリ値を持っており、引数で渡された文字列を RC4 キーで使用してこれを復号化する。引数は確認できなかったが、当社の ASD ログから Scout を生成したログが確認された。

図10. Scout を生成する Dropper マルウェア

2021年頃に確認された同じタイプの Dropper マルウェアを確認すると、Volgmer バックドアが使用するレジストリキー設定のルーティンがあるが、レジストリ値の暗号化に使用された RC4 キーも同じである。この点から、攻撃者は2021年までは Volgmer バックドアをインストールしたが、2022年からは同じ Dropper を利用して Scout ダウンローダーをインストールしたということが確認できる。

2.1. Dropper (Volgmer, Scout)

Dropper マルウェアは、生成するマルウェアによって Volgmer Dropper と Scout Dropper で分類されるが、設定データを書き込むレジストリキーと設定データを暗号化する RC4 キーの差だけが存在し、実質的なルーティンは同じである。代わりに、マルウェアをインストールする方式によってインジェクタータイプとサービス登録タイプに分類される。

インジェクタータイプの Dropper は、過去の初期バージョンの Volgmer Dropper と同じようにランダムな方式でファイル名を生成するが、ファイル名には2~5文字のランダムな文字列を生成した後、後ろに「svc」、「mgr」、「mgmt」文字列のうち一つをランダムに選択して追加する。もし、生成されたファイル名が「bnsvc.dll」である場合、前の4文字に対する Hex 値を設定データが保存されるレジストリ値で設定する。例えば、「bnsv」は Hex 値で「62 6E 73 76」であり、この場合、Volgmer および Scout の設定データが保存されるレジストリ値は以下の通りである。

  • Volgmer : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / “626e7376-5903-ed41-902f-e93a29dafef5”
  • Scout : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / “626e7376-2790-10f2-dd2a-d92f482d094f”

その後、引数で渡された文字列を RC4 キーで使用し、ファイル末尾の Overlay 領域に追加された暗号化された DLL、すなわち、Volgmer または Scout を復号化し、%SystemDirectory% パスに上記で作成した名前で生成する。C&C アドレスが含まれた設定データも復号化され、上記で生成したレジストリ値に保存される。%SystemDirectory% パスに生成されたマルウェアは、ファイルの時間情報が最近に設定されているため、電卓、すなわち calc.exe ファイルの時間情報に変更する。

ここまでのプロセスが終了すると、正常に動作するかは確かではないが、セキュリティパッケージのレジストリ設定にこのサービスを登録し、lsass.exe プロセスに生成した DLL をインジェクションする。

  • セキュリティパッケージレジストリキー : HKLM\SYSTEM\CurrentControlSet\Control\Lsa / Security Packages

サービス登録タイプは名前の生成ルーティンからその差が存在するが、最初に以下のレジストリキーから netsvcs サービスグループを取得した後、それぞれのサービスを「HKLM\SYSTEM\CurrentControlSet\Services\」項目で検索し、現在登録されていないサービスを選択する。

  • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost / netsvcs

もし、選択したサービスが「LogonHours」である場合、netsvcs サービスに登録するが、サービス DLL は「s」が追加された「LogonHourss.dll」の名前で %SystemDirectory% パスに生成する。

図11. サービス登録ルーティン

2.2. Scout ダウンローダー解析

2.2.1. SCOUT ダウンローダー V1

Scout は Volgmer と同じように、ファイル名ベースで暗号化された設定データが保存されたレジストリ値を照会する。暗号化アルゴリズムには RC4 が使用され、確認された Scout はすべて Crypto API を利用して設定データを復号化した。

  • レジストリキー : HKLM\SYSTEM\CurrentControlSet\Control\WMI\Security / [ファイル名の前4文字]-2790-10f2-dd2a-d92f482d094f
  • RC4 キー(Crypto API) : F9 A3 DE 48

設定データの復号化後には、上記で言及したように「Windows」という名前のウィンドウを生成するが、実質的なルーティンは登録したプロシージャに具現されている。Scout は、それぞれの機能をウィンドウメッセージベースで具現していることが特徴である。例えば、最初は SendMessageW() API を利用して0x5450メッセージを送信する。このメッセージでは0x5451メッセージに分岐し、0x5451メッセージでは C&C サーバーに接続して認証の成功有無によって分岐が分かれる。

図12. ウィンドウメッセージベースのルーティン
Message 番号 機能
0x5450 開始ルーティン
0x5451 C&C サーバー接続および認証
0x5452 追加ペイロードのダウンロードおよびメモリで実行(PE)
0x5453 C&C サーバーアドレスの再設定後 C&C 接続再試行
0x546D C&C 接続再試行
表9.各メッセージの機能 – Scout v1

Volgmer とは違って、初期の Scout は一つのパラメータを持ち、「param」文字列が使用された。また、ダウンローダーであるため、使用される message ID は「184D0382」、「0E8AFD28」の2個と単純である。初回認証プロセスでは、「cqce」という文字列が暗号化されて送信されるということが特徴であり、C&C サーバー検証に成功するためには渡されたデータが「1111」文字列でなければならない。

リクエスト種類 パラメータ パラメータ構造 データ構造
初回接続 param Random (0x8),
victim ID (0x08),
message ID – “184D0382” (0x08),
データ (Base64)
Random (0x4), “cqce”, C&C アドレス
ダウンロード param Random (0x8),
victim ID (0x08),
message ID – “0E8AFD28” (0x08),
データ (RC4)
Random (0x4), 設定データ
表10. C&C サーバーに対する HTTP リクエストフォーマット
図13. C&C サーバーとの認証プロセスで使用されるパケット

C&C サーバーとの通信に使用される RC4 キーには、設定データを復号化する時に使用される4バイトサイズのキー値の代わりに、0x20バイトサイズのキーが使用される。ダウンロードプロセスでは、先にダウンロードするペイロードのサイズを渡されるが、この時に0x20バイトサイズの RC4 キーが使用される。次に、そのサイズ分の暗号化されたペイロードをダウンロードする時、0x20バイトサイズの NULL データ値が RC4 キーで使用される。

  • RC4 キー(Crypto API) : 54 A6 BA C3 13 98 DB 1A 62 45 23 12 A8 83 71 82 4E 74 D2 38 00 00 00 00 00 00 00 00 00 00 00 00

ダウンロードされて RC4 キーで復号化されたペイロードは、「MZ」シグネチャをチェックした後、メモリ上で実行する。

2.2.2. SCOUT ダウンローダー V2

2022年の下半期からは過去のタイプと比較して若干のルーティンが追加された形態が確認されているが、実質的な機能は同じである。このタイプの中には PDB 情報が残っているマルウェアも多数存在するが、これによって攻撃者がマルウェアに Scout という名前を付けたことが確認できる。

Y:\Development\RT\Windows\Scout\Scout v2.1\Engine\Engine\x64\Penetrator\Engine.pdb
Y:\Development\RT\Windows\Scout\Scout v2.1\Engine\Engine\x64\Lsass\Engine.pdb
Y:\Development\RT\Windows\Scout\Scout v2.1\Engine\Engine\x64\Netsvc\Engine.pdb
Z:\Development\RT\Windows\Scout\Scout v2.2\Engine\Engine\x64\Netsvc\Engine.pdb
Z:\Development\RT\Windows\Scout\Scout v2.3\Engine\Engine\x64\Lsass\Engine.pdb

Scout v2.x バージョンは過去の Scout に比較すると、さらに多いコマンド、すなわち、メッセージをサポートする。過去の Scout のウィンドウメッセージは単純な流れを見せていたが、v2.x バージョンでは C&C サーバーからメッセージをダウンロードしてコマンドで使用した。そのため、追加ペイロードをダウンロードする機能の他に、設定データを変更するコマンドも実行できる。また、前のバージョンでは C&C サーバーに「cqce」文字列を暗号化して送信した。v2.x バージョンでは、初回に「bqce」文字列を送信するが、C&C サーバーから渡されたメッセージコマンドによって「fqce」、「eqce」、「dqce」、「cqce」値を渡すこともできる。

Message 番号 機能
0x5450 開始ルーティン。C&C サーバー接続および認証。 (Flag : “bqce”)
0x5451 メッセージのダウンロード。
0x5452 追加ペイロードのダウンロードおよびメモリで実行(Shellcode)。メッセージのダウンロード。
0x5453 設定データのダウンロード。
0x5454 設定データの変更。
0x5455 追加ペイロードのダウンロードおよびメモリで実行(PE)。
0x5456 追加ペイロードのダウンロードおよびインジェクション(PE)。
0x5457 C&C 接続再試行。 (Flag : “eqce”)
0x5458 C&C 接続再試行。 (Flag : “fqce”)
0x5459 自己削除。
0x545A C&C 接続再試行。 (Flag : “cqce”)
0x545B C&C 接続再試行。 (Flag : “dqce”)
表11. 各メッセージの機能 – Scout v2
図14. 追加されたウィンドウメッセージ

過去のバージョンと比べた時、C&C サーバーとの通信方式は、v2.2 バージョンまで過去のタイプと同じ「param」パラメータが使用された。v2.3 からはパラメータで「jsessionid」が使用され、RC4 キー値も変更された。

リクエスト種類 パラメータ パラメータ構造 データ構造
初回接続 jsessionid Random (0x5),
victim ID (0x08),
message ID – “184D0382” (0x08)
+ データ (Base64)
Flag, C&C アドレス
コマンドのダウンロード jsessionid Random (0x5),
victim ID (0x08),
message ID – “0E8AFD28” (0x08)
設定のダウンロード jsessionid Random (0x5),
victim ID (0x08),
message ID – “0E8AFD28” (0x08)
+ データ (RC4)
設定データ
表12. C&C サーバーに対する HTTP リクエストフォーマット
  • RC4 キー(param) : 54 A8 BA C3 E3 98 DB 1A 6D 45 23 12 A8 83 71 82 4E 74 D2 38 00 00 00 00 00 00 00 00 00 00 00 00
  • RC4 キー(jsessionid) : 73 D3 FE CC 23 AA 74 BA 53 47 88 32 73 11 19 AC FF D3 14 08 00 00 00 00 00 00 00 00 00 00 00 00

3. 結論

Lazarus グループはスピアフィッシング、サプライチェーン攻撃など、様々な攻撃ベクトルを使用するため、非常に脅威的である。また、全世界的に活発に活動している攻撃グループの一つでもある。最近は、初期侵入プロセスで韓国国内の金融セキュリティ認証ソフトウェアのセキュリティ脆弱性を悪用したり、ラテラルムーブメントプロセスでも Web セキュリティソフトウェアや企業の資産管理プログラムの脆弱性を悪用したりした。

企業のセキュリティ担当者は、攻撃対象領域管理(Attack Surface Management)を通して攻撃者にさらされる恐れのある資産を識別すると同時に、最新のセキュリティパッチなどの管理を持続的に行うべきである。ユーザーは出どころがはっきりしないメールの添付ファイルや、Web ページでダウンロードした実行ファイルにとりわけ注意する必要がある。そして OS およびインターネットブラウザ等のプログラムの最新パッチや V3 を最新バージョンにアップデートし、このようなマルウェアの感染を事前に遮断できるよう注意を払わなければならない。

ファイル検知
– Backdoor/Win.Lazardoor.C5233133 (2022.09.07.00)
– Backdoor/Win32.Agent.C3351518 (2019.07.25.00)
– Backdoor/Win32.Agent.R283184 (2019.07.25.00)
– Backdoor/Win64.Agent.C3371791 (2019.08.08.03)
– Data/BIN.Encoded (2022.10.05.00)
– Data/BIN.Encoded (2023.03.08.00)
– Data/BIN.EncPe (2022.09.07.00)
– Dropper/Win.Agent.C5499468 (2023.10.02.00)
– Dropper/Win32.Agent.C3371843 (2019.08.08.03)
– Dropper/Win64.Agent.C3371802 (2019.08.08.03)
– Malware/Win64.Generic.C4065063 (2020.04.16.07)
– Trojan/Win.Lazardoor.C4979367 (2022.02.24.02)
– Trojan/Win.Lazardoor.C4979368 (2022.02.24.03)
– Trojan/Win.Lazardoor.C5037872 (2022.03.31.00)
– Trojan/Win.Lazardoor.R474265 (2022.02.24.03)
– Trojan/Win.Lazardoor.R482731 (2022.04.07.01)
– Trojan/Win.Lazardoor.R495643 (2022.06.04.00)
– Trojan/Win.Lazardoor.R500179 (2022.06.24.00)
– Trojan/Win.LazarLoader.C5194304 (2022.07.06.01)
– Trojan/Win.LazarLoader.C5196326 (2022.07.06.03)
– Trojan/Win.LazarLoader.C5196363 (2022.07.06.04)
– Trojan/Win.LazarLoader.C5196414 (2022.07.07.00)
– Trojan/Win.LazarLoader.C5201772 (2022.07.11.03)
– Trojan/Win.LazarLoader.C5210732 (2022.07.19.00)
– Trojan/Win.LazarLoader.C5211408 (2022.07.20.01)
– Trojan/Win.LazarLoader.C5233120 (2022.09.07.00)
– Trojan/Win.LazarLoader.R480766 (2022.03.31.00)
– Trojan/Win.LazarLoader.R491208 (2022.05.10.02)
– Trojan/Win.LazarLoader.R500065 (2022.06.22.03)
– Trojan/Win.LazarLoader.R501218 (2022.06.28.03)
– Trojan/Win.Scout.R536659 (2022.11.30.00)
– Trojan/Win32.Agent.C876729 (2015.06.03.00)
– Trojan/Win32.Agent.R128643 (2014.12.17.00)
– Trojan/Win32.Akdoor.C3450548 (2019.08.29.04)
– Trojan/Win32.Backdoor.R174379 (2016.02.16.05)
– Trojan/Win32.Dllbot.C715400 (2015.02.12.04)
– Trojan/Win32.Ghost.C695717 (2015.01.27.05)
– Trojan/Win64.Agent.R274329 (2019.06.04.03)
– Trojan/Win64.Akdoor.R289258 (2019.08.29.00)

振る舞い検知
– Execution/MDP.Behavior.M10661

IOC
ファイルハッシュの一部と確認された C&C アドレスリストは AhnLab TIP で公開する予定である。

MD5
– 1ecd83ee7e4cfc8fed7ceb998e75b996 : Volgmer Dropper 初期バージョン Type 1
– 35f9cfe5110471a82e330d904c97466a : Volgmer Backdoor 初期バージョン Type 1 (civolmgmt.dll)
– 5dd1ccc8fb2a5615bf5656721339efed : Volgmer Backdoor 初期バージョン Type 1 (divolenum.dll)
– 9a5fa5c5f3915b2297a1c379be9979f0 : Volgmer Backdoor 初期バージョン Type 1 (fqrmsvc.dll)
– a545f548b09fdf61405f5cc07e4a7fa1 : Volgmer Backdoor 初期バージョン Type 1
– eb9db98914207815d763e2e5cfbe96b9 : Volgmer Backdoor 初期バージョン Type 1 (bgmsecenum.dll)
– fe32303e69b201f9934248cc06b32ef8 : Volgmer Backdoor 初期バージョン Type 1 (xkupsvc.dll)
– 85b6e4ea8707149b48e41454cbd0d5ad : Volgmer Dropper 初期バージョン Type 2
– 64965a88e819fb93dbabafc4e3ad7b6c : Volgmer Backdoor 初期バージョン Type 2 (idefsrv.dll)
– 6da7d8aec65436e1350f1c0dfc4016b7 : Volgmer Backdoor 初期バージョン Type 2
– e3d03829cbec1a8cca56c6ae730ba9a8 : Volgmer Backdoor 初期バージョン Type 2 (hssvc.dll)
– 0171c4a0a53188fe6f9c3dfcc5722be6 : Volgmer Backdoor 後期バージョン (sbiimgr.dll)
– 17eacf4b4ae2ca4b07672dcc12e4d66d : Volgmer Backdoor 後期バージョン (eqpkamgmt.dll)
– 1e2acecce7b5e9045b07d65e9e8afe1f : Volgmer Backdoor 後期バージョン (Irmons.dll)
– 226cc1f17c4625837b37b5976acbd68e : Volgmer Backdoor 後期バージョン (Exwtr.dll)
– 3e6119ebfacd1d88acbd2ca460c70b49 : Volgmer Backdoor 後期バージョン (helpsvcs.dll)
– 4753679cef5162000233d69330208420 : Volgmer Backdoor 後期バージョン (olesvc.bin)
– 5473fa2c5823fbab2b94e8d5c44bc7b4 : Volgmer Backdoor 後期バージョン (NWCWorkstations.dll)
– 570a4253ae80ee8c2b6b23386e273f3a : Volgmer Backdoor 後期バージョン (Nlas.dll)
– 5c87373eef090bed525b80aef398ee8a : Volgmer Backdoor 後期バージョン
– 693afaedf740492df2a09dfcc08a3dff : Volgmer Backdoor 後期バージョン (ddmgr.dll)
– 6e21cc6669ada41e48b369b64ec5f37b : Volgmer Backdoor 後期バージョン (ntmgr.dll)
– 72756e6ebb8274d9352d8d1e7e505906 : Volgmer Backdoor 後期バージョン (fhcmgr.dll)
– 8b3ec4b9c7ad20af418e89ca6066a3ad : Volgmer Backdoor 後期バージョン (xbmgr.dll)
– 947124467bd04b7624d9b31e02b5ee7f : Volgmer Backdoor 後期バージョン (hgiezmgmt.dll)
– 9a87f19609f28d7f7d76f9759864bd08 : Volgmer Backdoor 後期バージョン
– b1225fa644eebafba07f0f5e404bd4fd : Volgmer Backdoor 後期バージョン (lrmons.dll)
– cf2ff5b59c638a06d8b81159b9a435ea : Volgmer Backdoor 後期バージョン (tzmgr.dll)
– d52b5d8c20964333f79ff1bce3385d0b : Volgmer Backdoor 後期バージョン (bqmgr.dll)
– e273803ae6724a714b970dd86ca1acd0 : Volgmer Backdoor 後期バージョン (fnsysN.dll)
– ea5d322648ff108b1c9cbdd1ef4a5959 : Volgmer Backdoor 後期バージョン (ntmgr.dll)
– 44fa8daa347ef5dd107bf123b4688797 : Volgmer Dropper 後期バージョン (ExwtrSvc.exe)
– 7f953c6988d829c9c4ac2002572c9055 : Volgmer Dropper 後期バージョン (ExwtrSvc.exe)
– c2ab2a8ffdc18c24080e889a634ef279 : Volgmer Dropper 後期バージョン (fmSysM.exe)
– 05bb1d8b7e62f4305d97042f07c64679 : Scout Downloader v1 (Comms.db)
– 0b78347acf76d4bb66212bf9a41b9fb9 : Scout Downloader v1 (gpklmgmt.dll)
– 0ed86587124f08325cd8f3d3d2556292 : Scout Downloader v1 (bnsvc.dll)
– 35943aa640e122fcb127b2bfd6e29816 : Scout Downloader v1 (helpsvcs.dll)
– 394b05394ebb9b239a063a6b5839edb9 : Scout Downloader v1 (oxmgmt.dll)
– 5496adcd712d4378950ba62ad4c2423b : Scout Downloader v1 (gokimgmt.dll)
– 64cac69ab1e9108e0035f9ce38b47db7 : Scout Downloader v1 (bnsvc.dll)
– 695e5b8dc9615ec603fe2cbb7326a50f : Scout Downloader v1 (helpsvcs.dll)
– c07e04d388fb394ac190aace51c03c33 : Scout Downloader v1 (helpsvcs.dll)
– c41eb1ea59fab31147c5b107cc1c5a51 : Scout Downloader v1 (tfbgmmgmt.dll)
– cc5a8a15d5808002e62d5daf2d4f31b3 : Scout Downloader v1 (Comms.bin)
– 0b746394c9d23654577f4c0f2a39a543 : Scout Downloader v2 (mib.cfg)
– 225cdc9b452b6d5a3f7616dcc9333d7d : Scout Downloader v2 (Keys.dat)
– 43f218d3a4b2199468b00a0b43f51c79 : Scout Downloader v2 (wdsvc.dll)
– 4b1f1db4f169ca6b57015b313d665045 : Scout Downloader v2 (olesvc.bin)
– 80d34f9ca10b0e8b49c02139e4615b7a : Scout Downloader v2 (NWCWorkstations.dll)
– 855e26d530e69ddc77bb19561fb19d90 : Scout Downloader v2 (mib.bin)
– 9ec3a4257564658f651896abc608680e : Scout Downloader v2 (SRServices.dll)
– a76624578ed42cceba81c76660977562 : Scout Downloader v2 (eppagent.bin)
– b517e7ad07d1182feb4b8f61549ff233 : Scout Downloader v2 (usoshared.bin)
– fa868a38ceeb46ee9cf8bd441a67ae27 : Scout Downloader v2 (ose.bin)
– 1f1a3fe0a31bd0b17bc63967de0ccc29 : Scout Downloader v2 – Encoded (configmanager.tlb)
– fa3e49c877a95f37fd25dbd62f9e274c : Scout Downloader v2 – Encoded (event.dat)
– 202a7eec39951e1c0b1c9d0a2e24a4c4 : Loader – Scout Downloader v2 (helpsvcs.dll)
– b457e8e9d92a1b31a4e2197037711783 : Loader – Scout Downloader v2 (wpnsvc.dll)
– 8543667917a318001d0e331aeae3fb9b : Config – Scout Downloader v2 (C_68656c.NLS)
– c16a6178a4910c6f3263a01929f306b9 : Scout Downloader v2 (C_77706e.NLS)
– 1c89fb4aee20020bfd75713264df97cd : Dropper – Scout Downloader
– 76f02ab112b8e077544d0c0a6e0c428a : Dropper – Scout Downloader (wAgent.dat)
– 7ba37d662f19bef27c3da2fd2cee0e3a : Dropper – Scout Downloader (wAgent.dat)
– 7f0e773397808b4328ad11d6948a683f : Dropper – Scout Downloader (Comms.bin)
– bf5d815597018fe7f3dfb52d4f7e1f65 : Dropper – Scout Downloader

関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム「AhnLab TIP」サブスクリプションサービスを通して確認できる。

5 1 vote
評価する
Subscribe
Notify of
guest

0 コメント
Inline Feedbacks
View all comments