論文ファイルに偽装したマルウェアの配布に注意(Kimsuky グループ)

近年、 AhnLab SEcurity intelligence Center(ASEC)は Kimsuky グループが教授を対象に論文審査の要請に偽装したフィッシングメール攻撃の状況を確認した。メールに不正な OLE オブジェクトが挿入された Hangul ドキュメントファイルを添付し、ファイルの実行を誘導した。このドキュメントにはパスワードが設定されており、メールの本文に含まれているパスワードを入力しなければ閲覧できず、ドキュメントを開くと %TEMP%(一時フォルダー) パスに6つのファイルが自動的に作成される。ユーザーが内容をさらに確認するように、ドキュメントの本文に含まれている「もっと見る…」という文章には作成されたファイルのうちの1つである「peice.bat」ファイルを実行するハイパーリンクが挿入されている。ドキュメント閲覧時に作成されるファイルリストは、以下の[表1]の通りである。

 

[図1] 不正な OLE オブジェクトが含まれた Hangul ドキュメントファイル

 

番号 ファイル名 機能
1 app.db 正常に署名された EXE
2 get.db プロセスリスト、インストールされた AV 情報の収集および追加ファイルをダウンロードする PowerShell スクリプト
3 hwp_doc.db 正常なマルウェアハングルドキュメントファイル
4 mnfst.db 1 番(app.db)ファイルが読み込む設定ファイル
5 sch_0514.db 12分毎に2回(get.db)を実行する XML スケジューラーファイル
6 peice.bat 1~5番のファイルに対する作業の実行

[表1] 作成されたファイル

 

「peice.bat」ファイルが実行されると、作成したファイルを特定のパスにコピーする振る舞いを実行し、正確な振る舞いは以下の通りである。

  • 不正な OLE オブジェクトが挿入された Hangul ドキュメントファイルの削除
  • 3番のファイル名を「ロシア・ウクライナ戦争を通じて見るミリタリーテクノロジーと未来の戦争対備方向.hwp」に変更および実行
  • 5番のファイルを「GoogleTransltatorExtendeds」という名前でスケジューラーに登録
  • 1番のファイルを「C:\Users\Public\Music\」パスに「cool.exe」という名前でコピー
  • 4番のファイルを「C:\Users\Public\Music\」パスに「cool.exe.manifest」という名前でコピー
  • 2番のファイルを「C:\Users\Public\Music\」パスに「template.ps1」という名前でコピー

 

5番のファイル「sch_0514.db」は12分ごとに1番のファイル「cool.exe」を実行するように設定されたスケジューラーの XML ファイルである。スケジューラーによって「cool.exe」が実行されると、当該実行ファイルは4番の「cool.exe.manifest」ファイルを読み込む。このファイルから「<!–BEGIN_VBSEDIT_DATA」と「END_VBSEDIT_DATA–>」文字列の間に含まれている BASE64 エンコードデータを抽出してデコードした後、実行するが、この過程で2番の「C:\Users\Public\Music\template.ps1」ファイルを実行する機能が含まれた VBScript が動作する。

 

[図2] (上) 原本設定ファイル (下) デコードされた設定ファイル

 

「template.ps1」はユーザーシステムからプロセスリストとインストールされているアンチウイルス(AV)情報を収集した後、これを「park_年_月_日_時_分_info.ini」形式で保存し、攻撃者の Dropbox に送信する。その後「park_test.db_sent」ファイルを「C:\Users\Public\Music\pol.bat」パスにダウンロードした後実行するが、解析当時はこのファイルは確保されていなかった。

[図3] template.ps1 コードの一部

 

上記の事例とは異なる攻撃で使用された「template.ps1」ファイルも収集したが、このファイルは「jsg_test.db_sent」ファイルを「C:\Users\Public\Music\1.bat」パスにダウンロードした後、実行するが、解析当時「1.bat」ファイルのダウンロードに成功し、C2 でさらなるファイルのダウンロードおよびコピーの振る舞いを実行するため、詳しい内容は以下の[表2]および[表3]で確認できる。

 

番号 振る舞い
1 curl を通じて C2 から「myapp、mnfst、attach、sch_0、vpost、bimage」6 個のファイルをダウンロード
2

“bimage” ファイルを「User_Feed_Synchronization-{0DDC1BD9-E733-425C-B92B-ABAC149AB11232}」という名前でスケジューラーに登録

3

“myapp, mnfst, attach” ファイルをそれぞれ「%APPDATA%\microsoft\windows」パスに以下の名前でコピー

“myapp” : default_an.vbs

“mnfst” : default_an.ps1

“attach” : default_an.exe

4

“sch_0, vpost” ファイルをそれぞれ「%APPDATA%\AnyDesk」パスに以下の名前でコピー

“sch_0” : service.conf

“vpost” : system.conf

[表2] “1.bat” 機能

番号 ファイル名 (変更されたファイル名) 機能
1 myapp (default_an.vbs)

C:\Users\Public\Videos\default_an.ps1 を実行する VBScript

2 mnfst (default_an.ps1) 5秒ごとに default_an.exe を実行し、ウィンドウおよびトレイアイコンを非表示にする処理
3 attach (default_an.exe) 正常な AnyDesk ファイル
4 sch_0 (service.conf) AnyDesk 接続に必要なキーとソルト手法が適用されたハッシュ化されたパスワードが含まれた設定ファイル
5 vpost (system.conf) AnyDesk 接続 ID と設定値が含まれたファイル
6 bimage default_an.vbs を実行するスケジューラー XML ファイル

[表3] ファイルごとの機能

「1.bat」ファイルがダウンロードするすべてのファイルは「%APPDATA%\Microsoft\Windows」パスにコピーされるが、実際にダウンロードされたファイルは「C:\Users\Public\Videos」パスに設定されており、柔軟に実行されない。攻撃者の意図と異なり、誤って製作されたものと判断される。すべてのファイルパスが同じように設定されていると仮定した場合、「default_an.ps1」ファイルがスケジューラーによって実行されると正常な AnyDesk 実行ファイルである「default_an.exe」を実行し、このとき AnyDesk のトレイアイコンとウィンドウを非表示に処理することで、ユーザーが認知できないようにした。

AnyDesk は基本的に実行時「%APPDATA%\Anydesk」フォルダーに「service.conf」、「system.conf」などの設定ファイルを作成するが、攻撃者はこの設定ファイルを自分が設定したファイルに置き換えることでユーザーのシステムにアクセスしようとする意図を持っていると判断される。

[図4] Anydesk 設定ファイル

 

AnyDesk が正常に実行されても、PowerShell スクリプトによってトレイアイコンとウィンドウが非表示に処理されるため、ユーザーはプロセスリストを直接確認しない限り、遠隔操作が行われている事実に気づきにくい。下記の[図5]で左側のイメージはトレイアイコンが表示されている状態であり、右側のイメージはトレイアイコンだけでなく、接続時に表示されるウィンドウと AnyDesk メイン画面も表示されない様子を見せている。

※下の写真は設定ファイルで接続 ID が「1 699 290 623」に設定されているが、パスワードは不明のため、任意のパスワードに変更して接続した写真である。

[図5] (左) 一般的な AnyDesk 接続画面 (右) 隠蔽処理された AnyDesk 接続画面

 

Kimsuky グループは過去より他人を詐称し、特定の人を対象とした APT 攻撃を持続的に遂行してきた。最近では、正常なソフトウェアを攻撃に悪用したり、Google や Dropbox などの共有ドライブを C2(Command and Control) の保存庫として活用する事例が徐々に増加している。本事例のように、このような APT 攻撃は主に対象者の業務や関心事と関連した内容で偽装されているため、ユーザーがマルウェアに感染する危険性が高い。そのため、出所が不明なファイルは実行を控え、ファイルの拡張子を必ず確認するなど、特に注意を払う必要がある。

 

MD5

50d4e3470232d90718d61e760a7a62fb
6a84a14dd79396f85abd0e7a536d97fc
7183295e6311ebaaea7794d8123a715e
79573759208d78816316546a9c1f0aec
873579b92d618bf2ed3f67b7a01d7f7a
URL

http[:]//103[.]149[.]98[.]230/pprb/0220_pprb_man_1/an/d[.]php?newpa=myapp
http[:]//103[.]149[.]98[.]230/pprb/0220_pprb_man_1/an/d[.]php?newpa=myappfest
https[:]//niva[.]serverpit[.]com/anlab/d[.]php?newpa=attach
https[:]//niva[.]serverpit[.]com/anlab/d[.]php?newpa=bimage
https[:]//niva[.]serverpit[.]com/anlab/d[.]php?newpa=mnfst
FQDN

niva[.]serverpit[.]com
IP

103[.]130[.]212[.]116
103[.]149[.]98[.]230