検索:
ホーム   »   脆弱性   »   GitHub、Netlify経由でコインマイナーを配信、脆弱性の悪用事例を解説

GitHub、Netlify経由でコインマイナーを配信、脆弱性の悪用事例を解説

  • 投稿日:2022年1月25日
  • 脅威カテゴリ:脆弱性, 攻撃手法
  • 執筆:Trend Micro
0

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年に一般公開された脆弱性を介して以下のパッケージや製品を悪用していることを観測しました。この不正活動は、トレンドマイクロがおとり捜査の手法として設置したハニーポット(サービスを意図的にインターネット上に露出させた環境)が捕捉した検体を通じて行われていたことが明らかとなりました。

  1. Atlassian Confluence (「CVE-2021-26084」、「CVE-2021-26085」)
  2. F5 BIG-IP (「CVE-2020-5902」、「CVE-2021-22986」)
  3. VMware vCenter (「CVE-2021-22005」、「CVE-2021-21985」、「CVE-2021-21972」、「CVE-2021-21973」)
  4. Oracle WebLogic Server (「CVE-2020-14882」、「CVE-2020-14750」、「CVE-2020-14883」)
  5. Apache HTTP Server (「CVE-2021-40438」、「CVE-2021-41773」、「CVE-2021-42013」)
図1:不正マイニングを実施するために悪用されたサーバの脆弱性
図1:不正マイニングを実施するために悪用されたサーバの脆弱性
Trend Micro Cloud One™ – Workload Securityのデータに基づく
(2021年10月19日から11月19日)

トレンドマイクロは、すべての当該製品および特定のパッケージに対する事前認証によるリモートコード実行の概念実証(Proof of Concept、PoC)が一般に広く頒布されていることが興味深いことに気が付きました。これらのマイニングプールの1つからMoneroウォレットを確認したところ、本稿執筆時点においてはまだ運用が続いており、不正マイニングされたMoneroが活発に蓄積されていることがわかりました(図2)。

図2:不正マイニングに用いられたマイニングプールの例
図2:不正マイニングに用いられたマイニングプールの例
■ 悪用されたサービス:Windowsホストが標的となった事例を解説
図3:感染チェーン
図3:感染チェーン

トレンドマイクロが発見したコインマイナーの検体は、WindowsとLinuxの両方のプラットフォーム上で動作し、侵害します。使用されるエクスプロイトは、標的となるインフラストラクチャによって異なりますが、トレンドマイクロが特定したバッチスクリプトは、両方で動作します。トレンドマイクロは、攻撃者が自身の管理するアカウントからバッチスクリプトをダウンロードさせるためのマルウェアファイルサーバとしてNetlifyとGitHubを悪用していることを確認しました。このバッチスクリプトは一時ファイルとして名前が変更され、バックグラウンドで実行を開始した後に削除されます。

スクリプト(c3.bat)は、GitHubからダウンロードされたMoneroマイニングのヘルパースクリプトを改変したバージョン(図4)であり、これらのスクリプトは現在のセッションが管理者権限を持っているかどうかの確認を開始します。管理者権限を持っている場合、ADMINフラグが設定されます。その後、Moneroウォレットアドレスの長さが計算されます(図5)。長さが106文字または95文字でない場合、スクリプトは終了します。長さが106文字または95文字である場合、スクリプトは「WALLET_LEN_OK」ステートメントに移動します。

図4:GitHubからダウンロードされたヘルパースクリプトの改変版バッチスクリプトを観測
図4:GitHubからダウンロードされたヘルパースクリプトの改変版バッチスクリプトを観測
図5:管理者権限と「XMR WALLET」フラグの確認およびアドレスの長さを計算するためのスクリプト
図5:管理者権限と「XMR WALLET」フラグの確認およびアドレスの長さを計算するためのスクリプト

スクリプトはさらに、USERPROFILE環境変数が定義されているかどうか、WMIC(Windows Management Instrumentation Command-line)、powershell、find、findstr、tasklistなどのユーティリティが利用可能かどうかなど、感染端末内で一連の確認を行います(図6)。

図6:感染端末内で環境変数やユーティリティが利用可能かどうかを確認するためのスクリプト
図6:感染端末内で環境変数やユーティリティが利用可能かどうかを確認するためのスクリプト
図7:感染端末内でユーティリティが利用可能かどうかの結果を取得するためのスクリプト
図7:感染端末内でユーティリティが利用可能かどうかの結果を取得するためのスクリプト

WMICユーティリティは、プロセッサ数、最大クロック周波数、L2 / L3キャッシュのサイズ、CPUソケットなど、感染端末内の特定のパラメータを列挙するために用いられます(図7)。これらの値は、Windowsホストで実行するMoneroの採掘速度(ハッシュレート)を計算するために後で使用されます(図8)。異なる採掘速度に対応するために、マイニングプール上ではさまざまなポートが使用されます。

図8:暗号資産の採掘速度を決定するために感染端末のパラメータを列挙している様子
図8:暗号資産の採掘速度を決定するために感染端末のパラメータを列挙している様子

CPUの演算性能を確認した後、稼働中のc3pool_minerをWindowsホストから削除します(図9)。その後、攻撃者が管理するGitHubリポジトリからZIP形式で圧縮されたコインマイナー(c3.zip)がダウンロードされ、PowerShellを使ってダウンロードしたファイルを解凍します。解凍の試みに失敗した場合は7zがダウンロードされ、ZIPファイルが抽出されます。その後、ダウンロードされたファイル(7za.exeおよびc3.zip)は両方とも削除されます。

図9:抽出後にダウンロードしたファイルの痕跡を削除するためのスクリプト
図9:抽出後にダウンロードしたファイルの痕跡を削除するためのスクリプト

さらにこのスクリプトは、公式リポジトリから最新版のWindows向けXMRigをインストールします(図10)。ダウンロードしたファイルを解凍すると、7zバイナリおよびXMRigのZIPファイルが削除されます。コインマイナーのインストールに成功すると、PowerShellを使って設定ファイルが変更されます(図11)。

図10:最新版のWindows向けXMRigを感染端末内にインストールするためのスクリプト
図10:最新版のWindows向けXMRigを感染端末内にインストールするためのスクリプト
図11:インストールしたコインマイナーの設定・変更を行うためのスクリプト
図11:インストールしたコインマイナーの設定・変更を行うためのスクリプト

コインマイナーが既に起動している場合(c3.exe)、実行はALREADY_RUNNINGラベルに移動します(図12)。そうでない場合、コインマイナーはアイドル優先度クラス内で「start」コマンドを使って実行されます。現在のユーザが管理者権限を持っている場合、実行はADMIN_MINER_SETUPラベルに移動します。そうでない場合は、設定ファイルを利用してc3pool XMR minerを実行するバッチスクリプトを用いてStartupディレクトリを改ざんすることで活動の持続化が行われます。

図12:コインマイナーに対する管理者権限および活動の持続化を構成するためのスクリプト
図12:コインマイナーに対する管理者権限および活動の持続化を構成するためのスクリプト

NSSM(Non-Sucking Service Manager)を使ってc3cache_workerからサービスが作成されます(図13)。NSSMは、サービスとしてアプリケーションをインストールするためのサービスヘルパープログラムであり、ユーザはNSSMを使ってユーザ定義ファイルへのログ記録を指定することができます。

図13:NSSMを使って、感染端末内でバックグラウンド・アプリとしてコインマイナーを常時稼働させるためのスクリプト
図13:NSSMを使って、感染端末内でバックグラウンド・アプリとしてコインマイナーを常時稼働させるためのスクリプト
■ Linuxホストが標的となった事例を解説

シェルスクリプトは無限ループで始まり、「kinsing」、「kdevtmpfsi」、「pty86」、「.javae」など、感染端末内で見つかった競合するコインマイナーをすべて削除します(図14)。

図14:感染端末内で見つかった競合するすべてのコインマイナーおよびコンポーネントを無限ループで削除するためのスクリプト
図14:感染端末内で見つかった競合するすべてのコインマイナーおよびコンポーネントを無限ループで削除するためのスクリプト

競合するすべてのコインマイナーを一掃した後、/var/spool/cron/rootの属性が不変に変更され、crontabが再読み込みされます。そして、「Java」、「redis」、「weblogic」、「mongod」、「mysql」、「oracle」、「tomcat」「grep」、「postgres」、「confluence」、「awk」、「aux」以外のプロセスで、CPU使用率が60%以上になっているものが存在する場合、それらを終了させます(図15)。

図15:感染端末内でコインマイナーを動作させるために必要なプロセス以外を停止させるためのスクリプト
図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

図16:変数DIRに、作成された有効な一時ディレクトリの値が格納されている様子
図16:変数DIRに、作成された有効な一時ディレクトリの値が格納されている様子

「wget」と「curl」バイナリへの異なるパスが確認され、変数Wgetに代入されます(図17)。パス「$DIR」内でファイル「java.xnk.bionic」が存在するかどうかが確認されます。ファイルが存在しない場合、有効なWgetコマンドを使って、ファイル「bionic」(Moneroコインマイナー)およびMoneroウォレットアドレスを含むファイル「config.json」をダウンロードしてコピーします。ダウンロードしたバイナリには実行権限が割り当てられ、nohupコマンドを介してバイナリが実行されます。

同様に、ファイル「bionic」の代わりに以下に示すバイナリがダウンロード・実行され、処理が繰り返されます。

  1. 「focal」(java.xnk.focalとしてダウンロード・実行される)
  2. 「freebsd」(java.xnk.freebsdとしてダウンロード・実行される)
  3. 「linuxstatic」(java.xnk.linuxとしてダウンロード・実行される)
  4. 「xenial」(java.xnk.xenialとしてダウンロード・実行される)
  5. 「xmr-stak」(java.xnk.stakとしてダウンロード・実行される)
図17:Wgetおよび実行権限にバイナリを割り当てるためのスクリプト
図17:Wgetおよび実行権限にバイナリを割り当てるためのスクリプト
■ まとめ

当該調査時点での過去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)ルール
  1. 1011171 – Apache HTTP Server Directory Traversal Vulnerability (CVE-2021-41773 and CVE-2021-42013)
  2. 1011183 – Apache HTTP Server Server-Side Request Forgery Vulnerability (CVE-2021-40438)
  3. 1011117 – Atlassian Confluence Server Remote Code Execution Vulnerability (CVE-2021-26084)
  4. 1011177 – Atlassian Confluence Server Arbitrary File Read Vulnerability (CVE-2021-26085)
  5. 1010850 – VMware vCenter Server Remote Code Execution Vulnerability (CVE-2021-21972 and CVE-2021-21973)
  6. 1010983 – VMware vCenter Server Remote Code Execution Vulnerability (CVE-2021-21985)
  7. 1011167 – VMware vCenter Server File Upload Vulnerability (CVE-2021-22005)
  8. 1005934 – Identified Suspicious Command Injection Attack
  9. 1005933 – Identified Directory Traversal Sequence In Uri Query Parameter
  10. 1010388 – F5 BIG-IP TMUI Remote Code Execution Vulnerability (CVE-2020-5902)
  11. 1010590 – Oracle WebLogic Server Remote Code Execution Vulnerabilities (CVE-2020-14882, CVE-2020-14750 and CVE-2020-14883)
  12. 1011212 – F5 BIG-IP and BIG-IQ iControl REST Authentication Bypass Vulnerability (CVE-2021-22986)
セキュリティログ監視(Log Inspection)ルール
  1. 1003447 – Web Server – Apache
変更監視(Integrity Monitoring)ルール
  1. 1002851 – Application – Apache HTTP Server
  • 「Trend Micro Cloud One™ Network Security」:マルチクラウド環境のための強力なネットワークレイヤのセキュリティ。「Trend Micro Cloud One™」をご利用のお客さまは、以下のルールにより、本記事で挙げた脅威から保護されます。
  1. 1125: HTTP: ../.. Directory Traversal
  2. 40260: HTTP: Atlassian Confluence Server and Data Center OGNL Injection Vulnerability
  3. 40417: HTTP: Atlassian Confluence Server S Endpoint Information Disclosure Vulnerability
  4. 39077: TCP: VMware vSphere Client vropspluginui Code Execution Vulnerability
  5. 39923: HTTP: VMware vCenter Server Remote Code Execution Vulnerability
  6. 40382: HTTP: VMware vCenter AsyncTelemetryController Arbitrary File Write Vulnerability
  7. 40361: HTTP: VMware vCenter Analytics service File Upload
  8. 39352: HTTP: F5 BIG-IP iControl REST Interface Login Request
  9. 39364: HTTP: F5 BIG-IP bash Suspicious Command Execution Request
  10. 39313: HTTP: F5 BIG-IP TMM Buffer Overflow Vulnerability
  11. 22087: HTTPS: F5 iControl iCall Script Privilege Escalation Vulnerability
  12. 37841: HTTP: F5 BIG-IP TMUI Code Execution Vulnerability
  13. 39360: HTTP: F5 BIG-IP iControl REST filePath Command Injection Vulnerability
  14. 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

Related posts:

  1. 社内情報共有ツールの脆弱性を悪用するコインマイナー「z0Miner」の手口を解説
  2. 「DoubleAgent」:Microsoft Application Verifier を悪用。この攻撃によるリスクについて
  3. Oracle WebLogic の修正済み脆弱性を狙うトラフィックを確認、サーバを侵害し仮想通貨を発掘
  4. 仮想通貨Moneroを発掘するマルウェア「PCASTLE」が再び中国を標的に、多層的なファイルレス活動により拡散
Tags: 仮想通貨コインマイナーGitHubNetlifyXMRig暗号資産


  • 個人のお客さま向けオンラインショップ
  • |
  • 法人のお客さま向け直営ストア
  • |
  • 販売パートナー検索
  • Asia Pacific Region (APAC): Australia / New Zealand, 中国, 日本, 대한민국, 台灣
  • Latin America Region (LAR): Brasil, México
  • North America Region (NABU): United States, Canada
  • Europe, Middle East, & Africa Region (EMEA): France, Deutschland / Österreich / Schweiz, Italia, Россия, España, United Kingdom / Ireland
  • 電子公告
  • ご利用条件
  • プライバシーポリシー
  • Copyright © 2021 Trend Micro Incorporated. All rights reserved.