エクスプロイト&脆弱性
Spring4Shell(CVE-2022-22965)を悪用したコインマイナーの攻撃を観測
暗号資産のマイニングを行う攻撃者は、より多くの利益を得るため、脆弱な端末にマルウェアを感染させる方法を常に探し求めています。特にさまざまな種類のオペレーティングシステムに存在する脆弱性が悪用するケースがよく確認されます。今回、トレンドマイクロでは、脆弱性「Spring4Shell」(CVE-2022-22965)がコインマイナーの攻撃に悪用される事例を確認しました。
暗号資産のマイニングを行う攻撃者は、より多くの利益を得るため、脆弱な端末にマルウェアを感染させる方法を常に探し求めています。特にさまざまな種類のオペレーティングシステムに存在する脆弱性が悪用するケースがよく確認されます。今回、トレンドマイクロでは、脆弱性「Spring4Shell」(CVE-2022-22965)がコインマイナーの攻撃に悪用される事例を確認しました。この脆弱性はJava Development Kit バージョン9以降で動作するSpring MVC(model-view-controller)およびWebFluxアプリケーションに存在するリモートコード実行に関するもので、ボットネットMiraiの活動での悪用も確認されています。
Spring Frameworkは、企業レベルのJavaの開発環境におけるフレームワークとして最も広く利用されています。オープンソースで開発者や企業にとってより適応しやすいことから、この脆弱性を悪用するコインマイナーの場合、多くのユーザーが影響を受けてしまう可能性があります。またSpring Frameworkは、単体のソフトウェアではなく、クラウド、データ、セキュリティなどのコンポーネントを提供するいわば「Springエコシステム」の一部でもあり、より大規模な被害が懸念されます。
本稿では、この脆弱性を悪用したコインマイナーの手口について解説します。
■ 脆弱性悪用の試行件数の多さ
2022年3月末にSpring4Shellが確認されて以来、攻撃者は、この脆弱性を悪用する手法を見つけることに躍起になっているようです。下図は、2022年4月1日から12日にかけて確認された脆弱性悪用の試行件数を示しています。この期間中、毎日少なくとも700件の悪用試行が確認され、4月3日には約3,000件近くにまで達しました。
図1:2022年4月1日から12日にかけて確認されたSpring4Shellの悪用試行件数
■ Webシェルの作成
今回確認された脆弱性悪用は、コインマイナーの感染活動を目的としたものがありました。ここでは、そうした活動の背後にいる攻撃者がコインマイナーを展開する際にどのようにしてWebシェルを作成していたかを説明します。
Webシェル作成に際しては、以下のコードが使用されます。
さらにWebシェルのコンテンツは、以下のコードのようにURLが暗号化されています。
そして復号後のペイロードがSpring4Shell悪用のWebシェルとなります。
■ 脆弱な感染端末上でペイロードが実行される仕組み
攻撃者はまず、ペイロードの実行前に、感染させようとしている端末のオペレーティングシステムを特定します。これは「os.name」に「ndo」という単語が含まれているかどうかを確認する文字列チェックを用いて行われます。含まれていれば、対象の端末はWindowsベースであり、そうでなければLinuxベースであると判断されます。
オペレーティングシステムが特定されると、暗号化されたペイロードが実行されます。Webシェルのパスとパラメータを含む脆弱性悪用の統一リソース識別子(URI)は、以下のコードとして示されています。
つまり、Webシェルは「zbc0fb.jsp」として識別され、パラメータ「w」と「l」はそれぞれWindowsとLinuxのペイロードを表し、Base64で暗号化されています。
そして、以下のパラメータを使用してPowerShellが実行されます。
- NonI: 非インタラクティブなセッションを実行する
- W: WindowStyleを非表示にする
- NoP: PowerShellプロファイルをロードしないようにする
- Exec: PowerShellのスクリプト実行ポリシーのバイパスを可能にする
- Enc: Base64で暗号化されたコマンドを実装する
Windows版のペイロードの場合、以下のPowerShellコマンドでスクリプト「ldr.ps1」を取得し、それをディスク上に作成せず、メモリ内で実行することが可能となります。
そして攻撃者が使用するインフラには、脆弱性が存在するサーバのIPアドレスとポートが記録されます。
以下のコードは、「ldr.ps1」およびその実行フローです。つまり、コインマイナーをダウンロードして実行するPowerShellスクリプトを再編集したコードとなります(同様のPowerShellスクリプトはデジタルフォレンジックサイトのレポート「The DFIR Report」でも報告されていました)。
今回確認されたコインマイナーは、以下のような手順で実行されます。
- ユーティリティ「netsh」によりファイアウォールをオフにする
- 「kthreaddi」、「sysrv」、「sysrv012」など、端末内に他のコインマイナーが存在する場合、それらを停止もしくは削除する
- ポート3333番、4444番、5555番、7777番、9000番でリッスンしている他の実行中のプロセスを停止する
- プロセス「kthreaddk」が存在しない場合、コインマイナーとして、以下のようにバイナリ「sys.exe」をダウンロードする
- 194[.]145[.]227[.]21からダウンロードする
- C:\Users\<user>\AppData\Roaming\<random-6-to-12-letter-string>.exe.として保存する
- コインマイナーは、プロセスが実行中であることを視覚的に気づかれないように非表示のウィンドウでプロセスを開始する
- その後、スケジュールタスク「BrowserUpdate」が作成され、コインマイナーが毎分実行される。加えて、WindowsのRunキーを、バイナリ「sys.exe」が実行されるように改ざんする
■ 結論および推奨事項
本稿で解説した脆弱性悪用の試みが完全に成功したかどうかは確認できていません。ただし、Linux向けのペイロードの場合、スクリプト「ldr.sh」が他の実行中のコインマイナーを停止して、自身のペイロードを実行しようとする動作は確認されています。
Spring Frameworkのユーザーは、Spring4Shell(CVE-2022-22965)を悪用した攻撃がシステム上で発生しないようご使用のソフトウェアをバージョン5.3.18および5.2.20以降に更新することを推奨します。また、今回の脆弱性を利用した攻撃からユーザーを保護する「Trend Micro Cloud One™」などのトレンドマイクロのソリューションの詳細については、こちらのセキュリティ情報にてご確認いただけます。
■ 感染の痕跡(IOC、Indicators of Compromise)
IOCの一覧は、こちらをご参照ください。
参考記事:
- 「Analyzing Attempts to Exploit the Spring4Shell Vulnerability CVE-2022-22965 to Deploy Cryptocurrency Miners」
by Trend Micro Research
翻訳:与那城 務(Core Technology Marketing, Trend Micro™ Research)