ASEC
  • マルウェアの情報
  • AhnLab 検知
  • 総計
  • 対応ガイド
  • AhnLab
Posted By ATCP , 2024년 04월 15일

「なぜ君がそこで出てくる?」Notepad++ plugin を改ざんした package マルウェア(WikiLoader)

AhnLab SEcurity intelligence Center(ASEC)は最近、Notepad++ の基本 plugin である「mimeTools.dll」が改ざんされて配布された状況を確認した。この不正な mimeTools.dll ファイルは、特定バージョンの Notepad++ package インストーラに含まれており、正常な package ファイルであるかのように偽装した。mimeTools は、以下の画像のように Base64 などのエンコード機能を実行するモジュールであり、ユーザーが別途で追加せずとも基本的に含まれている。 mimeTools.dll は Notepad++ の基本 plugin であるだけに、Notepad++ を実行すると自動的にロードされる。攻撃者はこの点を悪用し、一種の DLL Hijacking 手法を使ったものと確認される。すなわち、ユーザーは notepad++.exe を実行しただけにもかかわらず、mimeTools.dll が自動的にロードされ、マルウェアが動作する。
[図1] Notepad++ の plugin である MIME Tools
攻撃者は、mimeTools.dll に暗号化された不正な ShellCode とこれを復号化および実行するコードを追加した。以下は、正常な Notepad++ の package と不正な package の内部に含まれたファイルを比較した画像である。続いて確認するが、このうち certificate.pem ファイルが不正な ShellCode を含むファイルである。
[図2] 公式 package と不正な package 内部のファイル比較
また、mimeTools.dll が提供する機能(Export)はそのまま実装されており、DllEntryPoint だけコードが違うという特徴がある。すなわち、不正な mimeTools.dll はユーザーが特定の機能を実行しなくても DLL がロードされる瞬間、不正な振る舞いを開始するということである。
[図3] 正常な mimeTools.dll と不正な mimeTools.dll の EntryPoint 比較
このマルウェアは、以下の図式のような実行フローを持つ。
  1. 不正な振る舞いは、ユーザーが Notepad++ を実行すると同時に、mimeTools.dll がロードされて始まる。
  2. mimeTools.dll で certificate.pem ファイルを ShellCode で復号化して実行する。
  3. その後、BingMaps.dll->GetBingMapsFactory() 関数の内部コードを不正な ShellCode で上書きする。
  4. 上書きされた ShellCode は、再び explorer.exe に Thread Injection を実行する。
  5. 最終的には、C2 サーバーから追加の ShellCode をダウンロードして実行する。
[図4] マルウェアのフロー図式

0. Indirect Syscall

このマルウェアは、実行時点で多数の Indirect Syscall 手法を使用した。これはアンチウイルス製品を回避するための手法であり、過去に ASEC ブログでも紹介したことが[1]ある。
[図5] Indirect Syscall
上記の図のように jmp 文を利用して syscall に分岐するが、jmp 文は正確に syscall 部分を示しており、この syscall を呼び出すために必要な因子値を直接セットする。このような方式を利用して ntdll をフックし、Native API をモニタリングしているアンチウイルス製品を回避する。

1. ShellCode の復号化&実行

復号化された ShellCode は、最初に実行された Notepad++ プロセスの領域に生成される。この領域には、10分ほどの時間遅延ロジックが存在するが、RCX 値を修正して簡単に回避することができるため、この記事では特に扱わないことにする。
[図6] certificate.pem ファイルの復号化プロセス
[図7] 復号化された ShellCode
certificate.pem ファイルに存在する Binary は、Crypt32.dll、BCrypt.dll の2つのモジュールを活用して ShellCode に形を変える。

1. Base64 Decoding 2. AES Decrypt (key: wqviIfew62w0zgP97yw9G2nqlHFKkggQ)

[図 8] ShellCode で実行フローの切り替え
その後、ShellCodeが生成された領域に実行権限を付与し、jmp 文を通して実行フローが切り替わる。

2. BingMaps.dll 改ざん

BingMaps.dll の EntryPoint を改ざんし、Export 関数である GetBingMapsFactory() の内部コードを ShellCode で上書きする。
[図 9] BingMaps.dll->EntryPoint 改ざん
[図 10] BingMaps.dll->GetBingMapsFactory() 改ざん
その後、以下のような手順で BingMaps.dll->GetBingMapsFactory() に実行フローが転換される。

1. NtCreateThreadEx() 2. NtGetContextThread() 3. NtSetContextThread() : Set RIP 4. ResumeThread()

Thread 生成後、NtGetContextThread() を利用してこの Thread のレジスタ値を取得し、RIP レジスタを GetBingMapsFactory(ShellCode で上書きされた領域)でセットする。
[図11] 改ざんされた GetBingMapsFactory() を RIP でセット

3. 改ざんされた GetBingMapsFactory()

BingMaps.dll の GetBingMaps Factory() 関数は、前のプロセスで ShellCode で上書きされた。新しい Thread から始まったこの関数では、VM などの解析環境を認識してプロセスを終了するプロセスが存在し、explorer.exe に Thread を挿入する役割を実行する。
[図 12] プロセス名をベースにした Hash マッチ
このコードは、ランタイムに実行中であるすべてのプロセス名を対象に一文字ずつ SHIFT、XOR 演算を行い簡単な Hash 値を生成する。生成された Hash 値は、自身が特定のプロセスが存在するかを確認するために使用され、Hash が一致すると追加で不正な振る舞いを実行せずに終了する。終了対象となるプロセス名のうち、確認されたリストは以下の通りである。
  • VGAuthService.exe
  • vmtoolsd.exe
  • ProcessHacker.exe
  • x64dbg.exe
  • PE-bear.exe
  • CFF Explorer.exe
  • Autoruns.exe
  • procexp.exe
  • procexp64.exe
  • Procmon.exe
  • Procmon64.exe
  • tcpview.exe
  • Dbgview.exe
  • portmon.exe
「explorer.exe」プロセスの場合、不正な振る舞いに必要な情報(PID)を追加で収集し、保管する。保管された explorer の PID は、その後 explorer.exe に更なる ShellCode を生成する際に使用され、手順は以下の通りである。

1. NtAllocateVirtualMemory() : explorer.exe 内部に領域を割り当てる 2. NtWriteVirtualMemory() : その領域に ShellCode を挿入する 3. NtCreateThreadEx() : 挿入された ShellCode を Thread で実行する

この後からは、explorer.exe のメモリ領域でマルウェアが実行される。
[図13] explorer.exe 領域に挿入された ShellCode

4. Explorer.exe (Injected)

ここからは本格的に不正な振る舞いが始まる。C2 に接続して追加の ShellCode をダウンロードして実行する。
[図14] Rebuild する前の C2 文字列
C2 と通信するプロセスで使われる文字列は、特定の関数を経て URL  に変わることになる。奇数番目の文字だけをつなぎ合わせる非常に簡単な過程を通して、C2 URL 文字列を獲得できる。収集された C2 は、本記事の下にある IoC タブで確認できる。
[図15] System 情報を Request Header に追加
C2 に Get Request を送る前にHeader に追加される内容で、ユーザーの PC から収集した情報が Base64 エンコードされて攻撃者に伝達される。この時に収集される情報は、以下の通りである。
  • Computer Name
  • User Name
  • Whether the current user is a member of the Administrator’s group
  • Language
  • System Time
[図16] response で ShellCode 抽出
C2 通信後、response で特定の文字列(“on><!–gmail “)の offset を探すプロセスが追加で確認された。この Offset で追加の ShellCode を復号化し、この ShellCode に jmp する。現在、C2 URL に接続することはできるが、この Offset の追加 ShellCode は空の状態である。
[図17] C2 のアウトラインと内部コード
接続される C2 は、解析時点に WordPress のログインページであると確認された。このマルウェアが初めて配布された当時、C2 のアウトラインが Wiki サイトと確認されたため「WikiLoader」と名付けられた。 今回は、様々な言語対応と強力な plugin 機能などで多くのユーザーが愛用している Notepad++ にマルウェアが挿入されたケースについて取り扱った。このように、ソフトウェアを公式配布サイトからダウンロードする習慣は非常に重要であり、クラックバージョンやその他の出所が不明なソフトウェアを使用する際には特に注意する必要がある。
ファイル検知 – Trojan/Win.WikiLoader.C5594131 – Trojan/Win.WikiLoader.R642896 – Trojan/Bin.ShellCode IoC [MD5] – c4ac3b4ce7aa4ca1234d2d3787323de2 : package file(npp.8.6.3.portable.x64.zip) – 6136ce65b22f59b9f8e564863820720b : mimeTools.dll – fe4237ab7847f3c235406b9ac90ca845 : certificate.pem – d29f25c4b162f6a19d4c6b96a540648c : package file(npp.8.6.4.portable.x64.zip) – 8b7a358005eff6c44d66e44f5b266d33 : mimeTools.dll – d5ea5ad8678f362bac86875cad47ba21 : certificate.pem [C&C] – hxxps://car***************.com/wp-content/themes/twentytwentytwo/nnzknr.php?id=1 – hxxps://pro**********.net/wp-content/themes/twentytwentythree/hyhnv3.php?id=1 – hxxps://www.era********.eu/wp-content/themes/twentytwentyfour/dqyzqp.php?id=1 – hxxps://www.mar**********.it/wp-content/themes/twentytwentyfour/c2hitq.php?id=1 – hxxps://osa*******.com/wp-content/themes/twentytwentythree/ovqugo.php?id=1 – hxxps://www.ala************.com/wp-content/themes/twentytwentyfour/34uo7s.php?id=1 – hxxps://13*******.org/wp-content/themes/twentytwentythree/t51kkf.php?id=1 – hxxps://alt**************.com/wp-content/themes/twentytwentyfour/c9wfar.php?id=1 – hxxps://www.am*******.com/wp-content/themes/twentyten/b9un4f.php?id=1 – hxxps://lu*******************.com/wp-content/themes/twentytwentytwo/pam8oa.php?id=1 – hxxps://www.yu*******.de/wp-content/themes/twentytwentytwo/n2gd2t.php?id=1

関連 IoC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム「AhnLab TIP」サブスクリプションサービスを通して確認できる。

Categories: マルウェアの情報

Tagged as: DLL Hijacking, mimeTools.dll, notepad++, WikiLoader

Redis サーバーを通してインストールされる Metasploit の Meterpreter
Linux システムの攻撃に使用される Pupy RAT の解析

Archives

  • Facebook
  • RSS Feed
follow us in feedly
 

Loading Comments...