RDP を利用して感染システムを操作する Kimsuky 脅威グループ

北朝鮮のサポートを受けていると知られた 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]

図1. Chrome リモートデスクトップをインストールするマルウェア

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

図2. インジェクターマルウェアの PDB 情報

以外にも新たなマルウェアが確認されたが、マルウェア製作時に攻撃者が使用した名前はRevClient」であった。このマルウェアは、C&C サーバーから攻撃者のコマンドを受けて動作しており、コマンドに応じてユーザーアカウントを追加したり、ポートフォワーディング機能を有効化することができる。

1. 初期侵入段階

初回配布方式は確認されていないが、スピアフィッシング攻撃が使用されたと推定される。感染システムからは、過去の ASEC ブログ「ドキュメントビューアに偽装した不正なバッチファイル(*.bat)が拡散中(Kimsuky)」[5]で紹介した事例と同じく「hwp.bat」ファイルが使用された履歴が確認された。BAT マルウェアは WMIC コマンドを利用してアンチウィルスを確認し、追加でスクリプトマルウェアをインストールする。

図3. 攻撃に使用された hwp.bat ファイル

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

図4. 窃取した情報のアップロードに使用されたアドレス
図5. Kimsuky グループのキーロガーマルウェア

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

図6. desktop.r3u を復号化してインジェクションするルーティン

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% パスにコピーする。

図7. マルチセッションをサポートするため、パッチされた termsrv.dll に変更するルーティン

一般的に 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 に登録し、ログオン時にも表示されないようにする。

図8. ユーザーアカウントを登録し、隠蔽するコマンド
  • 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」文字列に含まれている。

図9. RevClient の設定データ

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
表1. RevClient の設定データ

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 サーバーから伝達される。
表2. C&C サーバーに伝達するデータ

応答は「;」をデリミタとし、4つに分けられているが、コマンドに応じて使用する項目が決められている。最初の応答では4番項目の Host Port 番号が伝達されると推定される。その後の応答からは3番項目のコマンド番号と一緒に追加のデータが伝達される。

応答 データ
ユーザーアカウント名 ユーザーアカウントの追加および削除に使用(Base64 暗号化)
ユーザーアカウントのパスワード ユーザーアカウントの追加に使用(Base64 暗号化)
コマンド コマンド番号
Host Port ポートフォワーディング用のポート番号
表3. コマンド構造
図10. コマンド実行ルーティン
コマンド データ
100 ポートフォワーディング開始
200 ユーザーアカウントの削除
300 ユーザーアカウントの追加および隠蔽
400 ポートフォワーディング終了および Host Port 初期化
500 ポートフォワーディング終了
表4. コマンドリスト

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

図11. ポートフォワーディングルーティン

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

図12. RevClient の RDP パッチルーティン

3. 結論

Kimsuky 脅威グループは、感染システムを操作して情報を窃取するため、持続的に RDP を悪用している。それ以外にも RDP は、総当たり攻撃および辞書攻撃を利用した初期侵入プロセスやラテラルムーブメントプロセスで使用できる。RDP は Windows システムに基本的にインストールされているサービスの一つであるため、これを検知したり予防するためには適切な管理が必要である。

ユーザーは、疑わしいメールを受信した場合は添付ファイルを開かないようにしなければならず、外部からプログラムをインストールする時は公式ホームページから購入、またはダウンロードすることを推奨する。そして、アカウントのパスワードを複雑な形式で使用し、定期的に変更しなければならない。

また、V3 を最新バージョンにアップデートしてマルウェアへの感染を事前に遮断できるように注意を払わなければならない上、エンドポイントセキュリティ製品(V3)だけでなく、MDS のようなサンドボックスベースの APT ソリューションを導入してサイバー攻撃の被害を予防しなければならない。

AhnLab MDS サンドボックスでは、RDP をパッチしてマルチセッションを有効化するマルウェアを「Execution/MDP.Command.M10645」の検知名で検知している。

図13. AhnLab MDS 製品のマルウェア検知画面
図14. ファイル所有権変更の振る舞い検知

ファイル検知
– 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 検知

Tagged as:,,

5 2 votes
評価する
Subscribe
Notify of
guest

2 コメント
Inline Feedbacks
View all comments
trackback

[…] 例えば、Kimsuky 脅威グループは、Windows システムを攻撃する際、感染システムを操作するために RAT を使用したりもするが、RDP を利用して GUI 環境で感染システムを遠隔操作することもある。そのため、Kimsuky グループは、感染システムに RDP Wrapper をインストールしたり、RDP サービスを有効化した後に RDP サービスをパッチして RDP マルチ接続を可能にさせたりする。そして、新しいアカウントを登録して隠蔽することで、その後に作成したアカウントで感染システムを操作する。[1] 図1. ユーザーアカウントを登録して隠蔽するコマンド […]

trackback

[…] 攻撃者はバックドアマルウェアを利用して感染システムを操作するほかにも、感染システムにユーザーアカウントを追加してこれを隠蔽した。このようなタスクには直接製作したマルウェアを利用していたが、そのマルウェアは感染システムに特定のユーザーアカウントが存在する場合にのみ正常に動作するため、これは既に感染システムの操作権限が奪われた後であることを意味している。 Figure 12. 特定ユーザーが存在するかどうかに応じて分岐するルーティン 一般的に、攻撃者がバックドアを利用して感染システムを操作できるにもかかわらずユーザーアカウントを追加する理由は、以降リモートデスクトップを利用して GUI 環境で感染システムを操作し、持続性を維持するためである。ただし、単にアカウントだけを追加すると、システムのユーザーがログインするプロセスで新たに作成されたユーザーアカウントは認知されてしまう。 そのため、ユーザーがこれを認知できないように、マルウェアは以下のようなプロセスを実行する。まず、アカウント名に「$」記号を付けて作成したあと、既存ユーザーの SAM データの一部をコピーして作成した「black$」アカウントに上書きする。もし既存ユーザーが管理者アカウントであり、リモートデスクトップが許可されているユーザーならば「black$」アカウントもその特性を同じように持つことができる。 参考に、Kimsuky グループが使用していたマルウェアはユーザーアカウントの追加後、管理者グループに登録して SpecialAccounts に追加し、ファイアウォールでも当該アカウントを有効化させた。[3] このようなプロセスはセキュリティ製品により容易に検知が可能だが、Andariel グループは上記のマルウェアを利用してこのような追加のタスクなしでも隠蔽されたアカウントを追加したという点が特徴である。 図13. ユーザーアカウントを登録して隠蔽する Kimsuky グループのマルウェア […]