Metasploit の Meterpreter を利用した攻撃事例

Metasploit はペネトレーションテストを目的としたフレームワークである。企業や機関のネットワークおよびシステムに対するセキュリティの脆弱性をチェックする目的で使用可能なツールとして、ペネトレーションテストの各段階別に様々な機能をサポートしている。Metasploit は CobaltStrike のように、最初の感染のための様々な形のペイロード生成からアカウント情報奪取、内部ネットワークの移動を経てシステムを掌握するまでの段階ごとに必要な機能を提供している。

CobaltStrike は商用プログラムだが、クラック版が流出したことで攻撃者によって頻繁に使用されており、Metasploit は基本的に公開されたオープンソースであることにより、容易に使用できる。ここでは、Metasploit の Meterpreter が攻撃に使用された実事例を取り扱っていく。

[図1] Metasploit の GitHub

Metasploit - Meterpreter

CobaltStrike は感染 PC においてバックドアで動作する実質的なマルウェアであるビーコン(Beacon)が提供され、このビーコンをインストールする方法によって Staged / Stageless 方式に分類できる。Staged 方式でビルドする場合、ダウンローダー機能を有する Powershell や小さなシェルコードが生成されるが、攻撃者はこれらのサイズが小さい Stager を様々な方式で配布することができる。感染 PC で Stager が実行されると、C&C サーバーから実際のメインマルウェアである Beacon をメモリ上にダウンロードして実行する。Stageless 方式では反対に Beacon が含まれているバイナリが生成される。そのため、追加で Beacon をダウンロードする段階を経ずに、直ちに C&C サーバーと通信できる。

Metasploit も CobaltStrike が提供している Beacon と同様、実際に不正な振る舞いを行うバックドアを提供するが、これを Meterpreter という。Meterpreter も Beacon のように Staged / Stageless 方式で生成が可能である。すなわち、CobaltStrike と Metasploit はどちらもペネトレーションテストツールとして感染 PC を制御し、情報を奪取するのに使用されるということである。

以下で取り上げる二つの事例はどちらも Stager 方式が使用されているが、これは配布ファイル自体に Meterpreter が含まれているのではなく、シェルコードが含まれることで Meterpreter を含むバックドアをダウンロードするという構造である。参考に、以下のシェルコードは2つ目の例で使用される Powershell 形式の Stager に含まれているシェルコードであって、122.165.141[.]2:8888のアドレスに接続して Meterpreter をダウンロードする。

具体的に説明すると、ダウンロードされたファイルは Meterpreter のデフォルトのバックドア metsrv.dll である。metsrv.dll は以下のように Reflective DLL インジェクション方式で実行できるように製作されているが、この方式の特徴を挙げるとすれば開始アドレス、すなわち MZ で始まる部分がコードで動作するという点である。つまり、MZ を経て DLL 自身を新たにメモリ上にロードするコードが実行され、ロードが完了すると Reflective DLL インジェクション方式が完了し、制御を引き渡して metsrv.dll の実際のコードが実行される。参考に Meterpreter は機能に応じてモジュール化されているが、基本的な metsrv.dll 以外にも権限昇格や追加タスクのための様々な拡張 DLL をサポートしている。

[図2] Reflective DLL インジェクション方式が使用される Meterpreter

Kimsuky グループ

Metasploit の Meterpreter は、Kimsuky グループでも使用されている。ASEC 分析チームでは、Metasploit のマルウェアをモニタリング中、rundll32.exe プロセスにおいて Meterpreter が動作することを確認した。実際のマルウェアは64ビット DLL であり、これが regsvr32.exe プロセスによってロードされ、実行される。以後 rundll32.exe を実行し、Stager のシェルコードをインジェクションすることで、正常なプログラムである rundll32.exe において Meterpreter が動作するという形である。

インジェクションされたシェルコードは79.133.41[.]237:4001のアドレスから Meterpreter をメモリ上にダウンロードして実行する。以下は Metasploit の C&C サーバーからダウンロードされる Meterpreter DLL であり、上記のメモリ領域において確認されたバイナリと類似している。

[図3] ダウンロードされる Meterpreter DLL

実際にダウンロードされるバイナリもオープンソースの Meterpreter のソースコードと同じことが確認できる。

[図4] ダウンロードされた metsrv.dll の初期ルーティンである server_setup() 関数

AhnLab にはクラウドベースの ASD(Ahnlab Smart Defense)インフラが存在し、様々なマルウェアをリアルタイムで収集および分析しており、マルウェアが保有している不正な DNA だけを抽出およびパターン化して検知に利用している。現在 ASD に存在する DNA パターンによれば、以前からこのマルウェアと類似するファイルが多数存在している。

外形的に類似しているファイルの中から外部に公開されたものだけを見ても、マルウェアの C&C サーバーアドレスがすべて Kimsuky グループに関わる IP アドレスであると確認できる。過去サンプルでは現在 Meterpreter のダウンロードが不可能だが、64ビットの DLL 形式やコードの外形的な特徴以外にも、regsvr32.exe によって実行され、正常なプログラムである rundll32.exe を実行して Metasploit の Stager をインジェクションする振る舞い等、ほとんどが同じ形態である。更に、すべてが Meterpreter の x64 Reverse TCP Stager 方式を使用している。

追加ファイル 1]
– MD5 : 7f4624a8eb740653e2242993ee9e0997
– C&C : 27.102.127[.]240:3001
– 収集日 : 2021.03.18
追加ファイル 2]
– MD5 : d4da4660836d61db95dd91936e7cfa4a
– C&C : 27.102.127[.]240:3001
– 収集日 : 2021.05.22
追加ファイル 3]
– MD5 : d5ad5ffde477e3bc154a17b4d74f401b
– C&C : 31.172.80[.]104:3001
– 収集日 : 2021.05.21

以下は Stager シェルコードを rundll32.exe にインジェクションするルーティンであり、最近 Kimsuky グループが使用している別のバックドアマルウェアである AppleSeed のデコード方式と同様であることも特徴である。

[図5] Stager シェルコードをインジェクションするルーティン

Kimsuky グループは以前から様々な形式のバックドア型マルウェアを使用しており、最近ではオープンソースである Metasploit フレームワークの Meterpreter バックドアを利用していることが確認されている。攻撃者は、Metasploit が侵入段階別に提供している様々な機能を利用してユーザーの情報を奪取し、悪意のあるコマンドを渡すことができる。

CoinMiner と共にインストールされる Meterpreter

ほかにも、CoinMiner マルウェアと共に配布される事例も確認されている。最初の流入経路、すなわち攻撃者が最初にどのような方式でシステムにアクセスし、コマンドを伝達したのかという事に関する情報は確認されなかったが、ダウンロード経路において確認される多数のファイルを通して、一定段階以降の振る舞いについては確認が可能である。

[図6] 感染フロー図

1) Miner のインストール
ダウンロード可能なバッチファイルのうち、brgolbat2.bat、golbat.bat、golbat2.bat はどれも類似した形態であるため、最も項目が多い golbat.bat ファイルを分析対象とする。この bat ファイルは、Powershell を利用して多数のファイルをダウンロードしてインストールする。

まず、defender.reg ファイルをダウンロードし、C:\Windows\System32\ パスを例外パスとして登録したあと XMRig Minor のインストールを行う。インストールされるファイルは XMRig だけではなく、マイニングプールのアドレスが含まれている設定ファイルである config.json、XMRig の性能向上のための補助ツールである WinRing0x64.sys ドライバファイル等がある。XMRig Miner は以降タスクスケジューラに登録され、周期的に実行される。

[図7] config.json ファイル

2) Meterpreter のインストール
最初の配布方式は確認されなかったが、攻撃者は上記のような CoinMiner のインストールファイルと共に batty.bat ファイルを実行したものと推定される。Batty.bat は主に Windows Defender の例外処理、現在システムの基本情報のスキャン、後に接続するための RDP ユーザー登録、Metasploit の Meterpreter、すなわちバックドアのインストール機能を担当している。

一番最初に以下のようなコマンドを利用して cli という名前のアカウントを登録した後、管理者および RDP 接続のためのグループに登録する。

> net user cli 83ys44b /add
> net localgroup administrators cli /add
> net localgroup “Remote Desktop Users” cli /add

以後、ダウンロードされた user.reg を利用して先に生成したアカウントを SpecialAccounts レジストリキーに登録させる。アカウントが以下のように SpecialAccounts キーに登録された場合、ログイン時に追加されたアカウントが表示されないため、ユーザーはアカウントが追加有無を知ることができなくなる。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
“cli”=dword:00000000

ダウンロードして実行される追加 bat ファイルの中には、avscan.bat が存在する。このファイルは感染システムにインストールされたアンチウイルス製品の情報だけでなく、PC 名、グラフィックカード名、MAC およびパブリック IP アドレス等の情報を出力する役割を担う。

Batty.bat は最終的に rdpclip.bat を「Remote Desktop Clipboard」という名前でタスクスケジューラに登録して実行する。Rdpclip.bat は NetStat コマンドを利用し、現在8888番ポートを使用しているプロセスがない場合、notepad.exe プロセスを終了させた後、rdpclip-run.bat を実行する。これは今後インストールされる Metasploit の Meterpreter が使用するポート番号が8888番であるためである。

Rdpclip-run.bat は単純に同じパスに存在する rdpclip.ps1 を Powershell を利用して実行させる役割を担当している。Rdpclip.ps1 の Powershell スクリプトは、Metasploit の Stager Powershell スクリプトである。Powershell の内部には x64 のシェルコードが存在し、その Powershell が実行されるとシェルコードがメモリ上で実行される。実行されたシェルコードは Meterpreter のバイナリをダウンロードして実行し、これによって Powershell プロセス内部で Stager を経て Meterpreter が実行されるのである。

[図8] Metasploit の Stager Powershell

攻撃者は x64 Staged Reverse TCP 方式でペイロードを生成し、生成されたファイルは exe ではなく Powershell で指定した。他にも PrependMigrateProc オプションで notepad.exe、すなわちメモ帳を指定した。このオプションは、実行時に正常なプロセスを生成し、そのプロセスに Meterpreter をインジェクションするものであって、Meterpreter が実行中のプロセスを正常なプロセスとして偽装するために使用するオプションである。実際に上で述べた rdpclip.ps1 Powershell を実行する場合、notepad.exe に Meterpreter がインジェクションされて動作する。感染環境では Powershell や疑わしいプロセスの代わりに notepad.exe が動作し、バックドアの行為を実行するのである。

結論

最近、個人や企業をターゲットとする攻撃が増加しており、初期の侵入から企業の内部ネットワークを掌握するまでのプロセスにおいて、ペネトレーションテストツールが頻繁に使用されている。代表的なものとして、CobaltStrike や Metasploit のように様々な機能を提供しつつも手軽に入手できるツールがその対象となっている。攻撃者は、これらのツールを利用して一般ユーザーだけでなく、最終的には企業のシステムを掌握して機密情報を奪取したり、CoinMiner、ランサムウェアをインストールして企業に金銭的な損害を与えている。

AhnLab 製品では、Metasploit を利用した初期侵入段階から攻撃者の命令を受けて不正な振る舞いを実行することができる Meterpreter バックドアに対して、プロセスのメモリベースの検知技術を保有している。ユーザーは OS およびインターネットブラウザ等のプログラムの最新パッチ適用、および V3 を含む製品を最新バージョンにアップデートし、このようなマルウェアの感染を事前に遮断できるよう注意しなければならない。

[ファイル検知]

Trojan/Win.Agent.C4408533 (2021.04.09.03)
Trojan/Win.Agent.R422617 (2021.05.26.04)
Trojan/Win.Agent.R436488 (2021.08.12.00)
Trojan/Win64.XMR-Miner.R226842 (2019.12.11.01)
Downloader/BAT.Generic (2021.08.31.03)
Downloader/PowerShell.Generic (2021.08.31.03)

[IOC 情報]

Kimsuky Meterpreter
– MD5
d5ad5ffde477e3bc154a17b4d74f401b
7f4624a8eb740653e2242993ee9e0997
37e7d679cd4aa788ec63f27cb02962ea
d4da4660836d61db95dd91936e7cfa4a
– C&C
79.133.41[.]237:4001
27.102.127[.]240:3001
31.172.80[.]104:3001

CoinMiner & Meterpreter
– MD5
a3ee27e8e77e13e1255efb7d96f2aa21
36e6565271170a1570cae1b9d2cbbc1e
a0d491fbdda9cda115d52d723bd83cea
86ab6de61284a27bc6fbe4fb6bccda38
– Download アドレス
hxxp://88.202.190[.]25
– XMRig Mining Pool
88.202.190[.]25:4567
– Meterpreter C&C
122.165.141[.]2:8888

5 2 votes
評価する
guest
0 コメント
Inline Feedbacks
View all comments