マルウエアLODEINFOの進化
以前のブログで、日本国内の組織を狙ったマルウエアLODEINFOについて紹介しました。JPCERT/CCでは、現在もこのマルウエアを使用した攻撃が活発に行われていることを確認しており、新型コロナウイルスに関連したファイル名などを使って、感染を広げようとする動きが見られます。また、LODEINFOは頻繁にアップデートが行われており、複数の機能が追加・変更されていることを確認しています。
今回は、LODEINFOの一連の攻撃の中で見られた傾向と、アップデート内容について紹介します。
LODEINFOを配信する手口
確認されている全ての攻撃の起点は、添付ファイル付きの標的型攻撃メールです。添付ファイルにはWord文書、またはExcel文書が使用されており、添付ファイルを開いてマクロを有効化することで、内包していたLODEINFOがホスト上に作成、実行されます。 標的型攻撃メールに使用されているメールと添付ファイルの内容は、以下のようなものを確認しています。
- 新型コロナウイルスを題材にしたもの
- 日露や日韓の外交を題材にしたもの
- 企業への履歴書や申し込みを装ったもの
攻撃対象の業種としては、メディア系、公共系を確認しています。また、標的型攻撃メールの送信には、フリーのメールアドレス(Gmail等)を使用している傾向が見られます。
LODEINFOのバージョン
以前のブログで紹介したLODEINFOのバージョンは、v0.1.2でしたが、本ブログ執筆時点で確認している最新バージョンは、v0.3.6となっています。また、JPCERT/CCでは以下のバージョンのLODEINFOが存在することを確認しています。
なお、各バージョンで追加された主な機能としては、以下のようなものを確認しています。
バージョン |
機能追加 |
---|---|
v0.2.7 | データ送受信フォーマットの一部変更 |
既存コマンドの拡張(ver) | |
Mutexの作成 | |
v0.3.2 | 新規コマンドの追加(print) |
永続化処理の追加 | |
v0.3.5 | 新規コマンドの追加(rm、ransom、keylog) |
新規コマンドの追加
現時点での最新バージョン(v0.3.6)では、前回のv0.1.2の検体から以下のコマンドが追加されています。
- 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
ただし、コマンド名から推測すると、将来的にファイルの暗号化やキーログ機能が搭載される可能性があるかもしれません。
データ送受信フォーマットの一部変更
LODEINFOは、AESとBASE64を組み合わせてデータの暗号化を行っていますが、データをBASE64デコードした後のオフセット0x45の位置には、AESで暗号化されたデータのサイズが記載されています。
前回のv0.1.2の検体では、該当部分にデータサイズがそのまま記載されていましたが、v0.2.7以降の検体からは、オフセット0x49の位置に新しく1byteのXORキーが記載されるようになり、オフセット0x45のデータサイズには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を実行するように手法が変わっています。
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が利用されています。
おわりに
マルウエア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