北朝鮮のサポートを受けていると知られた Kimsuky 脅威グループは2013年から活動している。初期には韓国の北朝鮮関連研究機関などに対して攻撃を行ったが、2014年には韓国のエネルギー機関への攻撃が、2017年以降には韓国以外の国家への攻撃が確認されている。主にスピアフィッシング攻撃を通して国防、防衛産業、マスコミ、外交、国家機関、学術分野を攻撃しており、組織の内部情報および技術の窃取を目的とする。[1](韓国語で提供)
Kimsuky 脅威グループが初期侵入後にインストールするマルウェアは、感染システムを操作するためのバックドアや感染システムに存在するプライベートな情報を窃取するためのインフォスティーラータイプが主である。攻撃には xRAT(Quasar RAT)のようなオープンソースベースのマルウェアや直接製作したマルウェアが使用されたりしたが、正常なツールを利用して感染システムを操作することもあった。
Kimsuky グループは、攻撃のプロセスでこのようなマルウェア以外にも遠隔操作をサポートする様々なツールを一緒に使用することが特徴である。遠隔操作のために最も多く使用される方式は RDP(Remote Desktop Protocol)であり、RDP がインストールされていない環境では、オープンソースツールの RDP Wrapper をインストールすることもある。すでにインストールされているかインストールした後には、RDP 接続のためにユーザーアカウントを追加したり、追加したアカウントを隠蔽して RDP マルチセッションを設定するマルウェアを追加で使用したりする。[2]
もちろん、RDP 以外にも公開されたマルウェアの TinyNuke やオープンソース VNC ツールの TightVNC をカスタマイズして攻撃に使用した事例も確認される。VNC は仮想ネットワークコンピューティング(Virtual Network Computing)と呼ばれる技術で、RDP と同じく遠隔で他のコンピュータを操作する画面制御システムである。[3] 以外にも、Google Chrome Web ブラウザがサポートする Chrome リモートデスクトップをインストールして感染システムを操作した事例も存在する。[4]

ここでは、Kimsuky グループがスピアフィッシングと推定される攻撃を通して BabyShark をインストールし、その後、各種 RDP 関連マルウェアをインストールした最新事例を取り上げる。攻撃に使用されたツールは、担当する機能自体は過去の事例と類似しているが、PDB 情報を通して新たに製作し、攻撃に使用していると推定される。

以外にも新たなマルウェアが確認されたが、マルウェア製作時に攻撃者が使用した名前は「RevClient」であった。このマルウェアは、C&C サーバーから攻撃者のコマンドを受けて動作しており、コマンドに応じてユーザーアカウントを追加したり、ポートフォワーディング機能を有効化することができる。
1. 初期侵入段階
初回配布方式は確認されていないが、スピアフィッシング攻撃が使用されたと推定される。感染システムからは、過去の ASEC ブログ「ドキュメントビューアに偽装した不正なバッチファイル(*.bat)が拡散中(Kimsuky)」[5]で紹介した事例と同じく「hwp.bat」ファイルが使用された履歴が確認された。BAT マルウェアは WMIC コマンドを利用してアンチウィルスを確認し、追加でスクリプトマルウェアをインストールする。

攻撃者は初回感染の後にもマルウェアと C&C サーバーアドレスを変更しながら、持続的に感染システムの情報を窃取した。インストールされた代表的なマルウェアとしては、キーロガーを担う「k.ps1」と、これを実行する「OneNote.vbs」ファイルが存在する。「k.ps1」ファイルは、ロギングしたデータを「%APPDATA%\k.log」ファイルに保存する。


この他にもローダーマルウェアの「pow.ps1」と、エンコードされたデータファイルの「desktop.r7u」も確認された。「pow.ps1」は、「%APPDATA%\Microsoft\desktop.r7u」パスのファイルを復号化し、メモリ上で実行する。復号化された「desktop.r7u」はインジェクターマルウェアである。同じパスに「desktop.r3u」ファイルが存在する場合、これを復号化して正常なプログラムの「MSBuild.exe」にインジェクションする機能を担う。ファイルは確保できなかったが、過去の類似した攻撃事例では復号化された「desktop.r3u」ファイルが xRAT であり、Huntress 社のレポートによると KimJongRAT が使用されたという。[6](英語外部サイト)

2. 追加ペイロードのインストール
一定期間後に BabyShark の C&C サーバーアドレスが変更された点から、攻撃者が BabyShark の初回インストール後にも持続的に BabyShark をアップデートしたという点が確認できる。BabyShark だけでも感染システムの情報を収集できるが、攻撃者は以降に RDP 関連マルウェアを追加でインストールした。
2.1. インジェクター
インストールされたマルウェアの中で「process.exe」は、上記で取り上げたインジェクターマルウェア、すなわち、複合化された「desktop.r7u」とほぼ同じである。実際、2つのマルウェアの PDB 情報を確認すると、類似性を確認できる。
- 復号化された desktop.r7u の PDB 情報 : H:\Hollow\csharp process hollowing_complete_offset\csharp process hollowing_complete_offset\process\process\obj\x86\Release\process.pdb
- Process.exe の PDB 情報 : G:\0726_Rev_hollowing\csharp process hollowing_complete_offset\process\process\obj\x86\Release\process.pdb
異なる点としては、復号化の対象が %APPDATA% パスに存在する「CustomVerification.DIC」ファイルという点と、インジェクションの対象プロセスが「powershell_ise.exe」という点がある。「CustomVerification.DIC」ファイルは確認されなかったが、類似する時点で xRAT が攻撃に使用された事例が存在するため、Kimsuky グループが主に使用するマルウェアのうち一つであると推定される。
2.2. RDP サービス変更
以外にも攻撃者は「multiple.exe」という名前のマルウェアをインストールした。このマルウェアは、ユーザーアカウントを追加し、RDP を有効化する。また、マルチセッション機能をサポートする。マルウェアは、先に RDP サービスを終了した後、RDP サービスを担う「termsrv.dll」を変更できるように権限を与える。その後、「termsrv.dll」ファイルを「termsrv.pdb」という名前に変更し、すでに %APPDATA% パスに存在する「termsrv.dll」を %SystemDirectory% パスにコピーする。

一般的に Windows デスクトップ環境では、サーバーと違って RDP 接続に一つのセッションのみをサポートする。したがって、違うユーザーでも一つのシステムには一つのセッションのみをサポートするため、もし攻撃者が遠隔でシステムに接続する場合、既存のユーザーの接続が切断されてしまう。Mimikatz や Kimsuky グループの他のマルウェアは、現在実行中の RDP サービスプロセスのメモリをパッチし、これを回避する。
しかし、現在攻撃に使用されたマルウェアには、既存の正常な「termsrv.dll」を直接パッチした「termsrv.dll」ファイルに変更する方式が使用された。先に攻撃者が %APPDATA% パスに作成した「termsrv.dll」は、正常な「termsrv.dll」ファイルと比較してみると、CDefPolicy::Query() 関数がパッチされていることが分かる。
- 正常な termsrv.dll の CDefPolicy::Query() 関数ルーティン : 39 81 3C 06 00 00 0F 84 E7 43 01 00
- パッチされた termsrv.dll の CDefPolicy::Query() 関数ルーティン : B8 00 01 00 00 89 81 38 06 00 00 90
ここまでのプロセスが終わると、以降には感染システムを操作するためのアカウントとして「IIS_USER」という名前のアカウントを作成し、管理者グループに登録する。アカウントが追加されると、ログオン時に追加されたアカウントが一緒に表示されるため、システムのユーザーがこれを認知することができる。これを防止するため、マルウェアは作成した「IIS_USER」アカウントを SpecialAccounts に登録し、ログオン時にも表示されないようにする。

- multiple.exe の PDB 情報 – 1 : Z:\5-program\multiple\multisession_complete\multisession_complete\Release\x64\Multisession.pdb
- multiple.exe の PDB 情報 – 2 : G:\0711_uac_multiple_work\multisession_complete\multisession_complete\x64\Release\Multisession.pdb
2.3. RevClient
RevClient は RDP 関連マルウェアで、C&C サーバーからコマンドを渡されて動作するが、コマンドに応じてユーザーアカウントタスクおよびポートフォワーディングを実行することができる。以下は攻撃に使用された RevClient の設定データであり、このマルウェアが「1.0」バージョンということが確認できる。ミューテックス名には「ZhengReversePC」という文字列が使用されたことが特徴である。実質的な設定データは Base64 で暗号化された「AllSettings」文字列に含まれている。

Base64 文字列を復号化すると、残りの設定データも確認できる。
設定 | データ |
---|---|
バージョン | “1.0” |
ミューテックス | “ZhengReversePC” |
Host IP | 5.61.59[.]53 |
Host Port | 0 |
MSTSC (RDP) IP | 127.0.0.2 |
MSTSC (RDP) Port | 3389 |
Main (C&C) Port | 2086 |
C&C アドレスは Host IP アドレスと Main Port を組み合わせて作成し、接続する。その後、感染システムに関する基本的な情報を収集して伝達した後、応答を通して設定やコマンドを渡される。
- C&C アドレス : 5.61.59[.]53:2086
項目 | データ |
---|---|
シグネチャ文字列 | “NAT” |
感染システムの情報 | [User Name]@[PC Name]を Base64 で暗号化した文字列 |
OS 情報 | OS 情報 |
バージョン | “1.0” |
Host Port | 最初には0を持ち、その後、C&C サーバーから伝達される。 |
応答は「;」をデリミタとし、4つに分けられているが、コマンドに応じて使用する項目が決められている。最初の応答では4番項目の Host Port 番号が伝達されると推定される。その後の応答からは3番項目のコマンド番号と一緒に追加のデータが伝達される。
応答 | データ |
---|---|
ユーザーアカウント名 | ユーザーアカウントの追加および削除に使用(Base64 暗号化) |
ユーザーアカウントのパスワード | ユーザーアカウントの追加に使用(Base64 暗号化) |
コマンド | コマンド番号 |
Host Port | ポートフォワーディング用のポート番号 |

コマンド | データ |
---|---|
100 | ポートフォワーディング開始 |
200 | ユーザーアカウントの削除 |
300 | ユーザーアカウントの追加および隠蔽 |
400 | ポートフォワーディング終了および Host Port 初期化 |
500 | ポートフォワーディング終了 |
「100」コマンドが渡されると、前に伝達された Host Port 番号を組み合わせて 5.61.59[.]53:(HostPort) アドレスに接続した後、このアドレスと 127.0.0.2:3389 アドレスを接続する。一般的に RDP 関連のポートフォワーディングツールは、外部から攻撃者が NAT 環境に直接アクセスできない点を克服するために使用される。すなわち、リバース接続方式で攻撃者のアドレスに先に接続した後、感染システムの RDP ポートに接続して2つの通信を仲介する。

RevClient は上記の「multiple.exe」と類似した機能が具現された NewConcurrentRDPatcher() 関数が具現されている。異なる点としては、すでにパッチされた「termsrv.dll」ファイルを変更する「multiple.exe」とは違い、NewConcurrentRDPatcher() 関数は Windows バージョンによって直接「termsrv.dll」ファイルをパッチし、変更するという点がある。NewConcurrentRDPatcher() 関数を実行するルーティンは存在しないが、RevClient の違うバージョンでは C&C サーバーのコマンドを通して、または初期化ルーティンでこのタスクを実行すると見られる。

3. 結論
Kimsuky 脅威グループは、感染システムを操作して情報を窃取するため、持続的に RDP を悪用している。それ以外にも RDP は、総当たり攻撃および辞書攻撃を利用した初期侵入プロセスやラテラルムーブメントプロセスで使用できる。RDP は Windows システムに基本的にインストールされているサービスの一つであるため、これを検知したり予防するためには適切な管理が必要である。
ユーザーは、疑わしいメールを受信した場合は添付ファイルを開かないようにしなければならず、外部からプログラムをインストールする時は公式ホームページから購入、またはダウンロードすることを推奨する。そして、アカウントのパスワードを複雑な形式で使用し、定期的に変更しなければならない。
また、V3 を最新バージョンにアップデートしてマルウェアへの感染を事前に遮断できるように注意を払わなければならない上、エンドポイントセキュリティ製品(V3)だけでなく、MDS のようなサンドボックスベースの APT ソリューションを導入してサイバー攻撃の被害を予防しなければならない。
AhnLab MDS サンドボックスでは、RDP をパッチしてマルチセッションを有効化するマルウェアを「Execution/MDP.Command.M10645」の検知名で検知している。


ファイル検知
– Trojan/Win.Agent.C5502241 (2023.10.08.03)
– Trojan/Win.Injector.C5502245 (2023.10.08.03)
– Backdoor/Win.RevClient.R609964 (2023.10.08.03)
– Trojan/Win.Agent.R5502241 (2023.10.08.03)
– Backdoor/PowerShell.XRatLoader.SC192386 (2023.09.13.00)
– Trojan/VBS.KeylogLoader.SC192383 (2023.09.13.00)
– Keylogger/PowerShell.Agent (2023.09.13.00)
– Data/BIN.Encoded (2023.09.13.00)
振る舞い検知
– Execution/MDP.Command.M10645
AMSI 検知
– Trojan/Win.Injector.C5485760
IOC
MD5
– ad9a3e893abdac7549a7d66ca32142e8 : Keylogger ランチャー – BabyShark (OneNote.vbs)
– 116a71365b83cc38211ccfc8059b363e : Keylogger – BabyShark (k.ps1)
– c8d589ac5c872b12e502ec1fc2fee0c7 : Loader – BabyShark (pow.ps1)
– 0d6717c3fa713c5f5f5cb0539b94b84f : Injector – BabyShark (desktop.r7u)
– 0d691673af913dc0942e55548f6e2e4e : Injector (process.exe)
– 2dbe8e89310b42e295bfdf3aad955ba9 : RDP Pacher (multiple.exe)
– 7313dc4d9d6228e442fc6ef9ba5a1b9a : RDP Pacher (multiple.exe)
– be2f73a637258aa872bdf548daf55336 : RevClient (RevClient.exe)
– 02804d632675b2a3711e19ef217a2877 : RevClient (RevClient_x86.exe)
C&C
– hxxps://onessearth[.]online/up/upload_dotm.php : BabyShark
– hxxps://powsecme[.]co/up/upload_dotm.php : BabyShark
– 5.61.59[.]53:2086 : RevClient
サンドボックスベースの動的解析で未知の脅威を検知および対応する AhnLab MDS に関する詳しい情報は AhnLab の公式 HP で確認できる。
Categories:AhnLab 検知