攻撃グループLuoYuが使用するマルウェアWinDealer

2021年1月28日に開催されたJSAC2021で、2014年から活動が確認されている韓国や日本の組織をターゲットにした攻撃グループ「LuoYu」についての発表がありました[1][2]。今回は、JPCERT/CCが確認したLuoYuが使用するマルウェアWinDealerについてご紹介します。

マルウェアWinDealerの概要

マルウェアWinDealerは、感染したPCの各種情報を窃取し、C2サーバーへ送信する情報窃取型のマルウェアです。マルウェアの動作概要を図1に示しています。

図1:マルウェアWinDealerの動作概要


マルウェアWinDealerは起動初期にC:\ProgramData配下のファイルから設定情報をロードし、DLLモジュールを自身のメモリ上に展開します。マルウェアの機能として、PCの機器情報、ネットワーク設定、SNSアプリなどのデータを窃取し、%TEMP%配下に“.a”という拡張子でファイルを保存します。その後、保存されたファイルをC2サーバーへ送信します。
以降では、WinDealerの以下の機能について解説します。

  • 設定情報の読み込み方法
  • C2サーバーとの通信
  • 窃取したデータの加工と送信処理
  • メモリ上に展開されるモジュールの機能

設定情報の読み込み方法

マルウェアWinDealerの設定情報は、C:\ProgramData配下に複数のファイルに分かれて保存されており、実行時に読み込まれます。設定情報は、鍵を“b6a7%7486”としたXORベースのエンコードがされています。設定情報の各ファイルパスとその内容についてはAppendix Aをご覧ください。図2は、設定情報を読み込んだ際のデータをデコードする関数です。

図2:設定情報が格納されているファイルのデコード関数


C2サーバーとの通信

マルウェアWinDealerは下記の設定情報ファイルが存在した場合、それらのファイルから通信先を読み込み、C2サーバーと通信します。

  • C:\ProgramData\ad5f82e8
  • C:\ProgramData\1c76cbfe
  • C:\ProgramData\9c3b6294

それらのファイルが存在しなかった場合、WinDealerは以下に示すどちらかの範囲のランダムなIPアドレスへ通信(宛先ポート6999/UDPか55556/TCP)します。一定時間ごとに、もう片方の範囲のランダムなIPアドレスへと通信先が切り替わることを確認しています。

  • 113.62.0.0 - 113.63.255.255
  • 111.120.0.0 - 111.123.255.255

C2サーバーとの通信フローを図3に示します。はじめにAESの鍵をRSA暗号にて暗号化し、配送します。二回目以降の通信では、配送したAES鍵を用いて窃取されたデータを暗号化し、一定間隔で送信します。その後、C2サーバーから送られてくるコマンドを受信し、コマンド実行結果を同じくAES鍵で暗号化し、送信します。また、この通信フロー以外の通信として、www[.]microsoftcomという現時点で存在しないドメインに対する通信や、icanhazip[.]comへの通信が確認されています。

図3:C2サーバーとの通信フロー


図4にAES鍵配送時の通信内容の例を示します。AES鍵とその鍵のCRC32チェックサムの値をRSA1024bitの公開鍵によって暗号化後、配送されます。なお、公開鍵は検体内にハードコードされており、類似検体でも同じ公開鍵がハードコードされていることを確認しています。

図4:AES鍵配送時の通信内容の例


2回目以降の通信では初回の通信で配送された、動的に生成されたAES鍵を用いてAES128bitのECBモードによってデータの暗号化を行い、通信します。なお、送受信の詳しいフォーマットについてはAppendix B をご参照ください。

窃取したデータの加工と送信

マルウェアWinDealerでは窃取した各種データを%TEMP%配下のフォルダーへ“.a”ファイルとして加工し、AESによる暗号化後に送信する機能を確認しています。データの窃取から送信までの流れを図5に示しています。各種データの窃取から加工までをモジュールが行い、C2サーバーへの送信をWinDealer本体が行います。

図5:マルウェアWinDealer本体とモジュールによるデータ送信までの流れ


モジュールによる“.a”ファイルの生成についてコードの一部を図6に示しています。

図6: DLLモジュールによる“.a”ファイルの生成部分


一度、窃取した各種データを“.t”の拡張子でファイルを作成し、“.a”の拡張子にリネームすることで“.a”ファイルが作成されることを確認しています。なお、加工される前の各種データはデータの種類に応じたディレクトリに保存されており、“.a”ファイルを作成する際にそれらのディレクトリから取り出されます。各ディレクトリの詳細についてはAppendix Eをご参照ください。
生成されるファイルへのアクセス時には図7に示す“YYYY”を鍵としたXORベースの関数によってエンコード・デコード処理が行われた後に書き込みや読み込みの処理が行われています。

図7:“.a”ファイルアクセス時のXORベースエンコードを行う関数


メモリ上に展開されるモジュールの機能

マルウェアWinDealerは起動初期に図8に示すように検体内にエンコードされたPE形式のDLLモジュールをメモリ上に展開し、実行します。

図8:エンコードされたモジュールデータ


はじめに自身のファイルパスを取得し、ファイルから0xFF3456FF00のバイト列を検索し、検索されたバイト列のオフセット0xEからデータを抽出します。その後、検索されたバイト列のオフセット0x4の値を用いて図9のXORをベースとしたデコードルーチンを介してDLLモジュールがメモリ上に展開され、実行されます。

図9:モジュールのデコード部分


展開されたDLLモジュールのDLL名は、MozillaDll.dllとなっています。また、Export関数は以下の3つがあります。

  • AutoGetSystemInfo:各種データの窃取
  • GetConfigInfo:設定情報の設定
  • partInitOpt:コマンドの設定

展開されたDLLモジュールは、以下の内容を常時監視し、確認した関連ファイルを別名ファイルとして保存したり、送信するデータとして取得したりします。

  • USBメモリに保存されたファイル
  • マイドキュメントやデスクトップ、ゴミ箱配下のファイル
  • 各種SNSアプリケーションに関連するフォルダー配下のファイル

なお、C2サーバーから受け取るコマンドとその内容の詳細についてはAppendix Dをご参照ください。

おわりに

今回は、攻撃グループLuoYuが使用するマルウェアWinDealerについて紹介しましたが、LuoYuはこれ以外にもさまざまなプラットフォームで動作するマルウェアを使用することで知られています。新しいマルウェアが確認された際は、報告したいと思います。
なお、今回解説したマルウェアの類似検体についてSHA256ハッシュ値をAppendix Fに記載しています。

インシデントレスポンスグループ 増渕 維摩

参考情報

[1] “LuoYu” The eavesdropper sneaking in multiple platforms
https://jsac.jpcert.or.jp/archive/2021/pdf/JSAC2021_301_shui-leon_en.pdf

[2] Japan Security Analyst Conference 2021 開催レポート ~3RD TRACK~
https://blogs.jpcert.or.jp/ja/2021/02/jsac2021report1.html

Appendix A WinDealerの設定情報

表 A:設定情報の一覧

ファイルパス マルウェア内での識別文字列 内容
C:\ProgramData\923b5fd7

remark

-

C:\ProgramData\ad5f82e8

remotedomain

ドメイン名

C:\ProgramData\8fe4c114

password

-

C:\ProgramData\1c76cbfe

remoteip

通信先のIP

C:\ProgramData\9c3b6294

reverseip

通信先のIP再設定値

C:\ProgramData\789406d0

-

ダミーのホストへの接続結果

C:\ProgramData\c25549fe

otherinfo

-

C:\ProgramData\f46d373b

-

起動時に作成

C:\ProgramData\windows.inf

-

-

C:\ProgramData\Destro

-

runキーに登録する名前情報

Appendix B WinDealer送受信データの内容

B-1:初回送信データフォーマット

オフセット

長さ(byte)

内容

0x00

4

0x91DA8106

0x04

4

0x439FC7CE

0x08

4

識別ID

0x0C

1

設定ファイル"789406d0"の内容で決定

0x0D

3

0x001400

0x10

128

AES鍵+AES鍵のCRC32値をRSAで暗号化したデータ

B-2:2回目以降の送信データフォーマット

オフセット

長さ(byte)

内容

0x00

4

0x91DA8106

0x04

4

0x439FC7CE

0x08

4

識別ID

0x0C

1

設定ファイル"789406d0"の内容で決定

0x0D

1

Type

0x0E

2

0x1400

0x10

1

長さ(オフセット0x10以降はAESで暗号化)

0x11

1

0x6

0x12

1

remarkの長さ

0x13

 

remark

-

1

0x3

-

1

passwordの長さ

-

-

password

-

1

0x5

-

1

otherinfoの長さ

-

-

otherinfo

-

-

システム情報

B-3:受信データフォーマット

オフセット

長さ(byte)

内容

0x00

4

0x91DA8106

0x04

4

0x439FC7CE

0x0D

1

コマンド(オフセット0x0D以降はAESで暗号化)

0x10

2

コマンドデータの長さ

0x12

2

未使用

0x14

2

未使用

0x16

2

未使用

0x18

コマンドデータの長さ

コマンドデータ

Appendix C WinDealerコマンド一覧

C:コマンド一覧

パラメーター文字列※

内容

0x06

content-length: 2

uninstall

0x09

content-length, filename, time

%TEMP%配下のファイル削除

0xC

filename, flg

CreateProcess

0x1F

speed

各Sleep timeの設定

0x2D

filepath

指定ファイルの内容取得

0x50

filename, md5

指定ファイルの削除

0x51

filepos,filename, filelen, block, md5

指定ファイルへ書き込み

0x5A

datastate

"C:\ProgramData\windows.inf"への書き込み

0x5B

-

レジストリへ永続化設定

0x5C

list

プロセスチェック、永続化設定

0x5D

yes

{HKCU}\\Softwaware\MicrosoftのSTypeに値を設定

0x5E

otherinfo

"c25549fe"へ書き込み

0x60

headsign, 1, 2

"789406d0"へ書き込み

0x61

reverseip

"9c3b6294"へ書き込み

0x63

-

設定情報の取得

0x64

-

timeの読み込み

0x66

remoteip, remark, password

各設定ファイル書き込み

0x67

sessionid:

-

0x8F

Hkey, subkey, valuename, classesroot, currentuser, localmachine, users, currentconfig

RegQueryValueの実行

0xAA

pname

スクリーンキャプチャ

0xAB

-

スクリーンキャプチャ関連の設定

0xAD

-

スクリーンキャプチャ関連の設定

※パラメーター文字列:受信したコマンドデータからこれらの文字列をパースし、コマンドのパラメーターとして使用している

Appendix D 展開されるモジュールのコマンド一覧

D:コマンド一覧

パラメーター文字列※

内容

0x02

-

スクリーンキャプチャ関連

0x03

bootdir, filetype

フォルダー・ファイル情報

0x05

filename, monitortype, begpos, block

ファイル送信

0x07

-

ドライブ情報の取得

0x0A

-

lnkファイルの設定

0x0D

-

コマンド0xC0, 0xC5, 0xC3, 0xC1, 0xC2, 0xC4, 0xC6をそれぞれ実行

0x12

freq, storetm, quality, type

パラメーターの設定

0x1E

srhdir, srhcont, srhnum, sessid

-

0x28

filename

ファイル情報の取得

0x29

filefilter, settype, usbfilter, checkdirfilter

モニター用パラメーターの設定

0x2A

monitortype, monitorvalue

モニター結果のファイル取得

0x2B

-

-

0x30

-

"c:\windows", "c:\program files"等の内容を"~BF24"へ書き込み

0x32

freq, storetm

パラメーターの設定

0x3E

file

%TEMP%配下にjpegファイルを作成

0x65

filename, fileoffset

指定ファイルとオフセットから内容を取得

0x69

filename, delete, yes

指定ファイルの削除

0x7A

cmdtype, command: ,reset, downfile, getmypath, dealmd5

cmd.exeの実行

0x7B

session, command, reset, downfile, exit, getmypath

リモートシェルを実行

0xC0

-

プロセス一覧を"28e4-20a6acec"へ書き込み

0xC1

-

アプリ一覧を"28e4-20a6acec"へ書き込み

0xC2

-

キーボード情報を"28e4-20a6acec"へ書き込み

0xC3

-

SNSに関連するレジストリ内容を"28e4-20a6acec"へ書き込み

0xC4

-

Skype, QQ, WeChat, wangwangの設定情報を"28e4-20a6acec"へ書き込み

0xC5

-

MACアドレス等を"28e4-20a6acec"へ書き込み

0xC6

-

ネットワーク設定を"28e4-20a6acec"へ書き込み

※パラメーター文字列:受信したコマンドデータからこれらの文字列をパースし、コマンドのパラメーターとして使用している

Appendix E 生成されるディレクトリ一覧

E:ディレクトリ一覧

ID

パス

マルウェア内での識別文字列

なし

%TEMP%\\~FEFEFE

-

0x01

%TEMP%\\070a-cf37dcf5

-

0x02

%TEMP%\\d0c8-b9baa92f

audio

0x03

%TEMP%\\~B5D9

keylog

0x04

%TEMP%\\632c-0ef22957

-

0x05

%TEMP%\\8e98-fb8010fb

filelist

0x06

%TEMP%\\7a4a-90e18681

-

0x07

%TEMP%\\d4a5-30d3fff6

-

0x08

%TEMP%\\d4dc-3165f4cf

-

0x09

%TEMP%\\~CE14

monitortype

0x0A

%TEMP%\\~CE2E

-

0x0B

%TEMP%\\~B5BE

skypeaudio

0x0C

%TEMP%\\~B61A

skypeshoot

0x0E

%TEMP%\\5a7e-42ccdb67

-

0x0F

%TEMP%\\~BF24

browser

0x10

%TEMP%\\65ce-731bffbb

md5filter

0x11

%TEMP%\\~BF34

browsercookie

0x12

%TEMP%\\28e4-20a6acec

systeminfo

0x61

%TEMP%\\~FFFE

otherfile

0x62

%TEMP%\\FFFF

otherdata

0x63

%TEMP%\\63ae-a20cf808

-

Appendix F 類似検体のSHA256ハッシュ値

  • EXE形式
    • 1e9fc7f32bd5522dd0222932eb9f1d8bd0a2e132c7b46cfcc622ad97831e6128
    • b9f526eea625eec1ddab25a0fc9bd847f37c9189750499c446471b7a52204d5a
  • DLL形式
    • 0c365d9730a10f1a3680d24214682f79f88aa2a2a602d3d80ef4c1712210ab07
    • 2eef273af0c768b514db6159d7772054d27a6fa8bc3d862df74de75741dbfb9c
≪ 前へ
トップに戻る