エクスプロイト&脆弱性
GitHub、Netlify経由でコインマイナーを配信、脆弱性の悪用事例を解説
本ブログ記事では、暗号資産採掘ツール(コインマイナー)やスクリプトをホストするためにGitHubおよびNetlifyのリポジトリやプラットフォームが悪用された手口について解説します。トレンドマイクロは今回確認した不正活動についてすでにGitHubおよびNetlifyに報告しており、問題のアカウントには停止措置が取られています。
2021年初旬、共通脆弱性識別子「CVE-2021-41773」が割り当てられたセキュリティ上の弱点が「Apache HTTP Server Project」に公開されました。これは、Apache HTTP Serverのバージョン2.4.49に内在するパストラバーサルおよびリモートでコードが実行される(RCE)脆弱性です。この脆弱性が悪用されると、攻撃者はエイリアスのようなディレクティブにより構成されたディレクトリ外のファイルにURLを関連付けることが可能になります。また、エイリアスされたパスに対してCGI(Common Gateway Interface)スクリプトが有効になっている特定の設定下では、攻撃者がこの脆弱性をリモートコード実行に悪用する可能性もあります。最初にリリースされた修正(2.4.50)では不十分と判明した後、この修正に対するバイパスが報告されたことから、「CVE-2021-42013」として追跡調査が行われました。
その後、公式に修正されたバージョン(2.4.51)が、Apache HTTP Server Projectによってリリースされました。ただしトレンドマイクロでこの脆弱性を悪用する検体を分析したところ、攻撃者が暗号資産(旧仮想通貨)「Monero(XMR)」の不正マイニングを実施するために、脆弱な製品やパッケージに内在するさまざまな弱点を狙って、これらの脆弱性を突くエクスプロイト(脆弱性攻撃ツール)の多くを悪用していることを確認しました。本ブログ記事では、暗号資産採掘ツール(コインマイナー)やスクリプトをホストするためにGitHubおよびNetlifyのリポジトリやプラットフォームが悪用された手口について解説します。トレンドマイクロは今回確認した不正活動についてすでにGitHubおよびNetlifyに報告しており、問題のアカウントには停止措置が取られています。
■ 技術的詳細
トレンドマイクロは、攻撃者が不正なマイニング活動を実施するために、2020~2021年に一般公開された脆弱性を介して以下のパッケージや製品を悪用していることを観測しました。この不正活動は、トレンドマイクロがおとり捜査の手法として設置したハニーポット(サービスを意図的にインターネット上に露出させた環境)が捕捉した検体を通じて行われていたことが明らかとなりました。
- Atlassian Confluence (「CVE-2021-26084」、「CVE-2021-26085」)
- F5 BIG-IP (「CVE-2020-5902」、「CVE-2021-22986」)
- VMware vCenter (「CVE-2021-22005」、「CVE-2021-21985」、「CVE-2021-21972」、「CVE-2021-21973」)
- Oracle WebLogic Server (「CVE-2020-14882」、「CVE-2020-14750」、「CVE-2020-14883」)
- Apache HTTP Server (「CVE-2021-40438」、「CVE-2021-41773」、「CVE-2021-42013」)
トレンドマイクロは、すべての当該製品および特定のパッケージに対する事前認証によるリモートコード実行の概念実証(Proof of Concept、PoC)が一般に広く頒布されていることが興味深いことに気が付きました。これらのマイニングプールの1つからMoneroウォレットを確認したところ、本稿執筆時点においてはまだ運用が続いており、不正マイニングされたMoneroが活発に蓄積されていることがわかりました(図2)。
■ 悪用されたサービス:Windowsホストが標的となった事例を解説
トレンドマイクロが発見したコインマイナーの検体は、WindowsとLinuxの両方のプラットフォーム上で動作し、侵害します。使用されるエクスプロイトは、標的となるインフラストラクチャによって異なりますが、トレンドマイクロが特定したバッチスクリプトは、両方で動作します。トレンドマイクロは、攻撃者が自身の管理するアカウントからバッチスクリプトをダウンロードさせるためのマルウェアファイルサーバとしてNetlifyとGitHubを悪用していることを確認しました。このバッチスクリプトは一時ファイルとして名前が変更され、バックグラウンドで実行を開始した後に削除されます。
スクリプト(c3.bat)は、GitHubからダウンロードされたMoneroマイニングのヘルパースクリプトを改変したバージョン(図4)であり、これらのスクリプトは現在のセッションが管理者権限を持っているかどうかの確認を開始します。管理者権限を持っている場合、ADMINフラグが設定されます。その後、Moneroウォレットアドレスの長さが計算されます(図5)。長さが106文字または95文字でない場合、スクリプトは終了します。長さが106文字または95文字である場合、スクリプトは「WALLET_LEN_OK」ステートメントに移動します。
スクリプトはさらに、USERPROFILE環境変数が定義されているかどうか、WMIC(Windows Management Instrumentation Command-line)、powershell、find、findstr、tasklistなどのユーティリティが利用可能かどうかなど、感染端末内で一連の確認を行います(図6)。
WMICユーティリティは、プロセッサ数、最大クロック周波数、L2 / L3キャッシュのサイズ、CPUソケットなど、感染端末内の特定のパラメータを列挙するために用いられます(図7)。これらの値は、Windowsホストで実行するMoneroの採掘速度(ハッシュレート)を計算するために後で使用されます(図8)。異なる採掘速度に対応するために、マイニングプール上ではさまざまなポートが使用されます。
CPUの演算性能を確認した後、稼働中のc3pool_minerをWindowsホストから削除します(図9)。その後、攻撃者が管理するGitHubリポジトリからZIP形式で圧縮されたコインマイナー(c3.zip)がダウンロードされ、PowerShellを使ってダウンロードしたファイルを解凍します。解凍の試みに失敗した場合は7zがダウンロードされ、ZIPファイルが抽出されます。その後、ダウンロードされたファイル(7za.exeおよびc3.zip)は両方とも削除されます。
さらにこのスクリプトは、公式リポジトリから最新版のWindows向けXMRigをインストールします(図10)。ダウンロードしたファイルを解凍すると、7zバイナリおよびXMRigのZIPファイルが削除されます。コインマイナーのインストールに成功すると、PowerShellを使って設定ファイルが変更されます(図11)。
コインマイナーが既に起動している場合(c3.exe)、実行はALREADY_RUNNINGラベルに移動します(図12)。そうでない場合、コインマイナーはアイドル優先度クラス内で「start」コマンドを使って実行されます。現在のユーザが管理者権限を持っている場合、実行はADMIN_MINER_SETUPラベルに移動します。そうでない場合は、設定ファイルを利用してc3pool XMR minerを実行するバッチスクリプトを用いてStartupディレクトリを改ざんすることで活動の持続化が行われます。
NSSM(Non-Sucking Service Manager)を使ってc3cache_workerからサービスが作成されます(図13)。NSSMは、サービスとしてアプリケーションをインストールするためのサービスヘルパープログラムであり、ユーザはNSSMを使ってユーザ定義ファイルへのログ記録を指定することができます。
■ Linuxホストが標的となった事例を解説
シェルスクリプトは無限ループで始まり、「kinsing」、「kdevtmpfsi」、「pty86」、「.javae」など、感染端末内で見つかった競合するコインマイナーをすべて削除します(図14)。
競合するすべてのコインマイナーを一掃した後、/var/spool/cron/rootの属性が不変に変更され、crontabが再読み込みされます。そして、「Java」、「redis」、「weblogic」、「mongod」、「mysql」、「oracle」、「tomcat」「grep」、「postgres」、「confluence」、「awk」、「aux」以外のプロセスで、CPU使用率が60%以上になっているものが存在する場合、それらを終了させます(図15)。
関数「func1」(変更済み)が呼び出され、30秒ごとにループ処理が繰り返されます。
トレンドマイクロは、GitHubとNetlify内でFILE_CC_SERVERとして使用されている2つのコンテンツ配信ネットワーク(CDN)を観測しました(図16)。func1内では、プロセス「java.xnk」が確認され、CPU使用率が60%以上の場合、プロセスIDが変数「p」に取り込まれます。この変数が空の場合、プロセスは強制終了され、以下に示す3つのディレクトリが作成されます。
a. /var/tmp/java.xnk
b. /var/lock/java.xnk
c. /tmp/java.xnk
「wget」と「curl」バイナリへの異なるパスが確認され、変数Wgetに代入されます(図17)。パス「$DIR」内でファイル「java.xnk.bionic」が存在するかどうかが確認されます。ファイルが存在しない場合、有効なWgetコマンドを使って、ファイル「bionic」(Moneroコインマイナー)およびMoneroウォレットアドレスを含むファイル「config.json」をダウンロードしてコピーします。ダウンロードしたバイナリには実行権限が割り当てられ、nohupコマンドを介してバイナリが実行されます。
同様に、ファイル「bionic」の代わりに以下に示すバイナリがダウンロード・実行され、処理が繰り返されます。
- 「focal」(java.xnk.focalとしてダウンロード・実行される)
- 「freebsd」(java.xnk.freebsdとしてダウンロード・実行される)
- 「linuxstatic」(java.xnk.linuxとしてダウンロード・実行される)
- 「xenial」(java.xnk.xenialとしてダウンロード・実行される)
- 「xmr-stak」(java.xnk.stakとしてダウンロード・実行される)
■ まとめ
当該調査時点での過去1ヶ月間における対象製品ならびに特定のパッケージに対する攻撃試行頻度に基づき、トレンドマイクロは修正プログラム(パッチ)が適用されていない状態でこれらのエクスプロイトにさらされているサーバが数多く存在すると推測しています。さらに重要な点としては、概念実証が悪用可能であること、これらのサーバに依然としてパッチが適用されていない可能性が高いことから、攻撃者がこれらの製品やパッケージへの侵入を継続して狙ってくることです。さらに、LinuxやWindowsのプラットフォームは一般に広く利用されているという事実と、今回確認されたすべてのコインマイナーはその両方で動作するという事実により、標的となるシステムの数が多いという点で不正マイニングを試みる攻撃者にとっては有利な状況となります。
GitHubやNetlifyをはじめ、多くの正規プラットフォームは、トラフィックをHTTPSで暗号化しています。サイバー犯罪者は本来利用者の通信を守るためのHTTPSを悪用し、自身の通信の秘匿を狙います。HTTPS復号のソリューションを持たない侵入検知・防止ソリューション(IDS/IPS)では、HTTPS通信の内容を把握できないため、検知は行えません。さらにGitHubやNetlifyなどのプラットフォームは正規のリソースであるため、IPレピュテーションサービスが悪意のあるものとして警告を出すこともありません。また、両プラットフォームのコンテンツ配信ネットワークは、運用設定が容易かつ便利であると同時に、可用性やページ読み込み速度を向上させます。裏を返せば、感染端末の所在地に関係なくマルウェアの感染能力を広範かつ迅速に発揮させることができるため、攻撃者によって悪用される可能性があります。コンテンツ配信ネットワークが持つこれら2つの要因により、不正マイニングとは関係のない活動や攻撃においても攻撃者は、これらのプラットフォームを侵害してコインマイナーに感染させる手口を高度化させる可能性があります。
別の見方をすれば、これらのシステムを狙う攻撃者が一般公開された概念実証を攻撃手口に悪用していることを考えると、あまり巧妙化されていないとも言えます。さらに攻撃者は、自身のGitHub / Netlifyアカウントに停止措置が取られているにも関わらず、暗号資産の運用を継続し、それぞれのウォレット内に暗号資産を取得していることから、定期的に活動し、できるだけ多くのシステムを標的にしていると考えられます。
■ トレンドマイクロの対策
「Trend Micro Hybrid Cloud Security」として提供されるセキュリティソリューションは、クラウドネイティブシステムとその多様なレイヤーを保護するのに役立ちます。ソリューションとして提供される製品群は継続的インテグレーションおよび継続的デリバリー(CI / CD)パイプラインとアプリケーションの自動保護を提供するクラウドビルダー向けのセキュリティサービスプラットフォーム「Trend Micro Cloud One™」を利用しています。また、セキュリティの問題をいち早く特定して解決し、DevOpsチームの問題解決速度を改善するのにも役立ちます。
「Trend Micro Cloud One™」には以下ソリューションが含まれます。
- 「Trend Micro Cloud One™ Workload Security」:データセンター、クラウド、コンテナを保護する多層防御・脆弱性対策を提供するクラウド型セキュリティ。「Trend Micro Cloud One™」をご利用のお客さまは、以下のルールにより、本記事で挙げた脅威から保護されます。
侵入防御(Intrusion Prevention)ルール
- 1011171 - Apache HTTP Server Directory Traversal Vulnerability (CVE-2021-41773 and CVE-2021-42013)
- 1011183 - Apache HTTP Server Server-Side Request Forgery Vulnerability (CVE-2021-40438)
- 1011117 - Atlassian Confluence Server Remote Code Execution Vulnerability (CVE-2021-26084)
- 1011177 - Atlassian Confluence Server Arbitrary File Read Vulnerability (CVE-2021-26085)
- 1010850 - VMware vCenter Server Remote Code Execution Vulnerability (CVE-2021-21972 and CVE-2021-21973)
- 1010983 - VMware vCenter Server Remote Code Execution Vulnerability (CVE-2021-21985)
- 1011167 - VMware vCenter Server File Upload Vulnerability (CVE-2021-22005)
- 1005934 - Identified Suspicious Command Injection Attack
- 1005933 - Identified Directory Traversal Sequence In Uri Query Parameter
- 1010388 - F5 BIG-IP TMUI Remote Code Execution Vulnerability (CVE-2020-5902)
- 1010590 - Oracle WebLogic Server Remote Code Execution Vulnerabilities (CVE-2020-14882, CVE-2020-14750 and CVE-2020-14883)
- 1011212 - F5 BIG-IP and BIG-IQ iControl REST Authentication Bypass Vulnerability (CVE-2021-22986)
セキュリティログ監視(Log Inspection)ルール
- 1003447 – Web Server – Apache
変更監視(Integrity Monitoring)ルール
- 1002851 - Application - Apache HTTP Server
- 「Trend Micro Cloud One™ Network Security」:マルチクラウド環境のための強力なネットワークレイヤのセキュリティ。「Trend Micro Cloud One™」をご利用のお客さまは、以下のルールにより、本記事で挙げた脅威から保護されます。
- 1125: HTTP: ../.. Directory Traversal
- 40260: HTTP: Atlassian Confluence Server and Data Center OGNL Injection Vulnerability
- 40417: HTTP: Atlassian Confluence Server S Endpoint Information Disclosure Vulnerability
- 39077: TCP: VMware vSphere Client vropspluginui Code Execution Vulnerability
- 39923: HTTP: VMware vCenter Server Remote Code Execution Vulnerability
- 40382: HTTP: VMware vCenter AsyncTelemetryController Arbitrary File Write Vulnerability
- 40361: HTTP: VMware vCenter Analytics service File Upload
- 39352: HTTP: F5 BIG-IP iControl REST Interface Login Request
- 39364: HTTP: F5 BIG-IP bash Suspicious Command Execution Request
- 39313: HTTP: F5 BIG-IP TMM Buffer Overflow Vulnerability
- 22087: HTTPS: F5 iControl iCall Script Privilege Escalation Vulnerability
- 37841: HTTP: F5 BIG-IP TMUI Code Execution Vulnerability
- 39360: HTTP: F5 BIG-IP iControl REST filePath Command Injection Vulnerability
- 38380: HTTP: Oracle WebLogic Server Remote Code Execution Vulnerability
■ 侵入の痕跡(Indicators of Compromise、IoC)
今回の記事に関する侵入の痕跡は、こちらを参照してください。
参考記事:
- 「Vulnerabilities Exploited for Monero Mining Malware Delivered via GitHub, Netlify」
by Nitesh Surana
記事構成:岡本 勝之(セキュリティエバンジェリスト)
平子 正人(セキュリティマーケティンググループ)
翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research