マルウエアLODEINFOの進化

以前のブログで、日本国内の組織を狙ったマルウエアLODEINFOについて紹介しました。JPCERT/CCでは、現在もこのマルウエアを使用した攻撃が活発に行われていることを確認しており、新型コロナウイルスに関連したファイル名などを使って、感染を広げようとする動きが見られます。また、LODEINFOは頻繁にアップデートが行われており、複数の機能が追加・変更されていることを確認しています。
今回は、LODEINFOの一連の攻撃の中で見られた傾向と、アップデート内容について紹介します。

LODEINFOを配信する手口

確認されている全ての攻撃の起点は、添付ファイル付きの標的型攻撃メールです。添付ファイルにはWord文書、またはExcel文書が使用されており、添付ファイルを開いてマクロを有効化することで、内包していたLODEINFOがホスト上に作成、実行されます。 標的型攻撃メールに使用されているメールと添付ファイルの内容は、以下のようなものを確認しています。

  • 新型コロナウイルスを題材にしたもの
  • 日露や日韓の外交を題材にしたもの
  • 企業への履歴書や申し込みを装ったもの

攻撃対象の業種としては、メディア系、公共系を確認しています。また、標的型攻撃メールの送信には、フリーのメールアドレス(Gmail等)を使用している傾向が見られます。

LODEINFOのバージョン

以前のブログで紹介したLODEINFOのバージョンは、v0.1.2でしたが、本ブログ執筆時点で確認している最新バージョンは、v0.3.6となっています。また、JPCERT/CCでは以下のバージョンのLODEINFOが存在することを確認しています。

図 1:バージョンの推移

なお、各バージョンで追加された主な機能としては、以下のようなものを確認しています。

バージョン
機能追加
v0.2.7 データ送受信フォーマットの一部変更
既存コマンドの拡張(ver)
Mutexの作成
v0.3.2 新規コマンドの追加(print)
永続化処理の追加
v0.3.5 新規コマンドの追加(rm、ransom、keylog)

新規コマンドの追加

現時点での最新バージョン(v0.3.6)では、前回のv0.1.2の検体から以下のコマンドが追加されています。

  • print
  • rm
  • ransom
  • keylog

printコマンドは感染ホストのスクリーンキャプチャを取得し、rmコマンドは指定されたファイルの削除を行います。 例えばrmコマンドを実行した場合、ファイル削除後、以下のような実行結果がC&Cサーバ宛てに送信されます。

1590318292|932|080027D50FB0|DESKTOP-J783225C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg: OK.
C:\Users\Public\Pictures\Sample Pictures\Desert.jpg: OK.
C:\Users\Public\Pictures\Sample Pictures\desktop.ini: OK.
C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg: OK.
C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg: OK.
C:\Users\Public\Pictures\Sample Pictures\Koala.jpg: OK.
C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg: OK.
C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg: OK.
C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg: OK.

ransom、keylogコマンドについては、現時点で確認しているバージョンでは未実装となっており、コマンドを実行しても以下のような結果だけがC&Cサーバ宛てに送信されます。

1590318292|932|080027D50FB0|DESKTOP-J783225Not available

ただし、コマンド名から推測すると、将来的にファイルの暗号化やキーログ機能が搭載される可能性があるかもしれません。

図 2:コマンドの一覧

図 3:ransom、keylogコマンド処理部

データ送受信フォーマットの一部変更

LODEINFOは、AESとBASE64を組み合わせてデータの暗号化を行っていますが、データをBASE64デコードした後のオフセット0x45の位置には、AESで暗号化されたデータのサイズが記載されています。

図 4:変更前のデータフォーマット

前回のv0.1.2の検体では、該当部分にデータサイズがそのまま記載されていましたが、v0.2.7以降の検体からは、オフセット0x49の位置に新しく1byteのXORキーが記載されるようになり、オフセット0x45のデータサイズにはXORキーでエンコードされた値が記載されるようになっています。

図 5:変更後のデータフォーマット

図 6:XORの処理部

上記の変更によって、以前に紹介したHTTP POSTリクエストのデータを復号するコードが正常に動作しなくなっているため、以下に対応したコードの一部を記載します。

from Crypto.Cipher import AES
from base64 import urlsafe_b64decode
from binascii import a2b_hex


def decypt_lodeinfo_data(enc_data: str, key: bytes, iv: bytes) -> bytes:
    header_b64 = enc_data[:0x1C]
    header = urlsafe_b64decode(header_b64.replace(".", "="))

    ## decode with base64
    postdata_size = int.from_bytes(header[0x10:0x14], byteorder="little")
    postdata_b64 = enc_data[0x1C:0x1C+postdata_size]
    postdata = urlsafe_b64decode(postdata_b64.replace(".", "="))

    ## decrypt with AES
    cipher = AES.new(key, AES.MODE_CBC, iv)
    xor_key = postdata[0x34]
    decrypt_size = int.from_bytes([b ^ xor_key for b in postdata[0x30:0x34]],byteorder="little")
    dec_data = cipher.decrypt(postdata[0x35:0x35+decrypt_size])

    ## remove junk bytes
    junk_size = dec_data[-1]
    dec_data = dec_data[:decrypt_size-junk_size]

    return dec_data


encrypted_data = "njgGCEgbkXQIgexSrDm3O7QAAADuSiTM6xoP8ResYAybhHoRx9W-Ulw_ealn9gIEjvsZzqQXG8vn3QYoIfmNmO4viy0rFkZGRkaN6IX4HXa-cdyoRLWkIYxVPI9Ciu8sDP1PK0x6gDH556OYX8GMdejk40daIbiwY3ERd0qL8jRawpwBHht7Sps_hwoZfeks-ly5sw2Y9RqtUQ.."

KEY = a2b_hex("7306ED96A7D75BAB94C4F15AAF0A9E61690F0E300FEA9135764C206580DF2970")
IV = a2b_hex("D5C5376805264812B3ED88BE4A614A1A")

decrypted_data = decypt_lodeinfo_data(encrypted_data, KEY ,IV)
print("Decrypted Data: ", bytes.hex(decrypted_data))

LODEINFOの起動方法の変化

以前のLODEINFOでは、Word文書のマクロを有効化した際に、LODEINFOのDLLファイルをホスト上に作成し、rundll32.exe を使って実行していました。しかし、v0.3.2以降からは、DLLファイルと一緒に正規のWindows実行ファイルを作成し、DLLサイドローディングを使ってLODEINFOを実行するように手法が変わっています。

図 7:起動方法の変化(左: rundll32.exeによる実行、右: DLLサイドローディングによる実行)

LODEINFOの通信特徴

LODEINFOはUser-Agentが検体内部でハードコードされており、v0.2.7までは以下が使用されています。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36

また、v0.3.2以降では以下が使用されています。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363

C&Cサーバのインフラには、様々な国のISPが利用されています。

図 8:C&Cサーバのインフラ分布

おわりに

マルウエアLODEINFOの開発は頻繁に行われており、同様に攻撃も継続して確認されています。 今後もこのマルウエアを使用した攻撃が続く可能性がありますので、引き続き注意が必要です。

なお、今回解説した検体のハッシュ値をAppendix A、新たに確認した通信先をAppendix Bに記載しています。 Appendix Bの通信先に対して通信が発生していないかをご確認ください。

インシデントレスポンスグループ 喜野 孝太、佐條 研

Appendix A 検体のハッシュ値

  • 65433fd59c87acb8d55ea4f90a47e07fea86222795d015fe03fba18717700849 (v0.3.6)
  • 8c062fef5a04f34f4553b5db57cd1a56df8a667260d6ff741f67583aed0d4701 (v0.3.5)
  • 1cc809788663e6491fce42c758ca3e52e35177b83c6f3d1b3ab0d319a350d77d (v0.3.2)

Appendix B 通信先

  • 103.27.184.27
  • 103.140.187.183
  • 103.204.172.210
  • 133.130.121.44
  • 167.179.101.46
  • 167.179.112.74
  • 172.105.232.89
  • 194.68.27.49
  • www.amebaoor.net
≪ 前へ
トップに戻る
次へ ≫