GhostMinerの感染拡大

Oracle WebLogic ServerのサブコンポーネントであるWLS Securityには、外部から任意のコード実行が可能となる脆弱性(CVE-2017-10271)があります。IIJでは、本脆弱性を用い、PowerShellの実行を試みる攻撃の増加を3月28日から観測しました。

本攻撃はGhostMinerと呼ばれ、成功した場合は最終的にWebサーバ上で、管理者の意図しない形で仮想通貨のマイニングを実行させられてしまいます。この記事ではIIJにおける観測情報と、この攻撃を検出・防御するための指標(Indicators of Compromise、IoC)を示します。

IIJにおける観測情報

IIJマネージドIPS/IDSサービスではOracle WebLogicの脆弱性(CVE-2017-10271)を用いた攻撃を定常的に観測しています。Minerva Labs Ltd.のレポートでは、本攻撃はGhostMinerと呼ばれています。この手法を用いた攻撃が、3月28日から増加していることを確認しています。

以下に、IIJで観測したGhostMinerによる攻撃の1サイトあたりの検出件数及び攻撃元のIPアドレス数の推移を示します。

図-1 GhostMinerによる攻撃の推移

本攻撃は3月27日以前から観測はされていましたが、目立った活動ではありませんでした。しかし、3月28日を境に攻撃が増加していることを確認しています。全ての送信元から同一の攻撃が試行されていることから、GhostMinerによる攻撃キャンペーンであると考えられます。

攻撃元のIPアドレス数は4月2日に最大となっています。その直後にIPアドレス数は減少していますが攻撃件数は増加傾向にあり、特定の攻撃元IPアドレスからの攻撃回数が増えていることがわかります。また4月15日を境に攻撃自体が収束に向かっていることがわかります。

この攻撃キャンペーンは、Webサーバ上に配置されているPowerShellを用いていることから、Windows Serverを狙った攻撃であると判断できます。また、先出のMinerva Labs Ltd.の記事で示されているファイルのハッシュ値及びC&CサーバーのIPアドレスは、IIJで観測した攻撃で利用されたものとは異なっていました。

GhostMinerの特徴

今回IIJで観測したGhostMinerによる攻撃の流れを以下に示します。

図-2 GhostMinerによる攻撃の流れ

DL.phpに記述されたPowerShell実行コードは、攻撃元からリモートでOracle WebLogicの脆弱性(CVE-2017-10271)を用いて実行されます。以下に攻撃内容を示します(実際の攻撃コード部分は割愛します)。

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”>
<soapenv:Header>
<work:WorkContext xmlns:work=”http://bea.com/2004/06/soap/workarea/”>
<java version=”1.8.0_131″ class=”java.beans.XMLDecoder”>
<void class=”java.lang.ProcessBuilder”>
<array class=”java.lang.String” length=”3″>
<void index=”0″>
<string>cmd.exe</string>
</void>
<void index=”1″>
<string>/c</string>
</void>
<void index=”2″>
<string>Start PowerShell.exe -NoP -NonI -EP ByPass -W Hidden -E ‘BASE64でエンコードされたPowerShellスクリプト‘</string>
</void>
</array>
<void method=”start”/>
</void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

DL.phpに記述されたコードにより、既存のPowerShellプロセスや数種類のセキュリティソフトウェアのサービスが停止させられてしまいます。さらに、サービスの停止が失敗した場合を想定して、”%WinDir%”(Windowsディレクトリ、多くの場合はC:\Windows)配下をWindows Defenderの例外パスとして設定することで、事実上Windows Defenderに発見されない状況を作り上げようと試みます。

またダウンローダとしての機能を備えており、DL.ps1の実行コード、仮想通貨のマイニングを試みる実行ファイル、WMI.ps1の実行コードを順にダウンロードします。仮想通貨のマイニングを試みる実行ファイルは、OSが32ビット版または64ビット版のどちらであるか、仮想環境であるかなどの情報に基づき、それぞれに適したバージョン(x86.exe、x86_VMP.exe、x64.exe、x64_VMP.exe)をダウンロードします。実行ファイルは、Windowsのシステムに実際に存在し、ローカルセキュリティ認証に関連するファイル”lsass.exe”に類似した、”lsass.eXe”という名称で”%WinDir%¥Temp”内に配置されます。

WMI.ps1の実行コードには、Webサーバ管理者に仮想通貨のマイニングを容易に気付かれないようにする処理が含まれています。また、類似の攻撃が複数回成功した場合を想定し、排他的に先行するマイニングのプロセスを停止させる処理も用意されています。lsass.eXeは2種類のアーキテクチャ(x86、x64)で、異なるアドレスのマイニングプールを使用します。「マイニングプール」とは、複数人で仮想通貨をマイニングし、その利益を分配するグループのことです。

DL.ps1はNeutrino.ps1に記述された実行コードをダウンロードし、実行します。Neutrino.ps1は、C&Cサーバと通信し、指令を受け取ることで、インターネット上の他のWebサーバに対し、Oracle WebLogicの脆弱性(CVE-2017-10271)を用いた攻撃を実行する機能、仮想通貨Ethereumのクライアントの探索機能、Microsoft SQL Serverを攻撃する機能、phpMyAdminの管理者画面へ不正ログインする機能などを備えています。不正ログイン機能については、利用するユーザ名及びパスワードがハードコーディングされています。

WMI.ps1及びNeutrino.ps1は異なるプロセスで実行されるため、lsass.eXeを利用した仮想通貨のマイニングが失敗した場合でも、C&Cサーバとの通信を行うプロセスは成功する可能性があります。

GhostMinerの活動の様子

GhostMinerは仮想通貨の一種であるMoneroを対象としてマイニングを実行します。まず、先述のMinerva Labs Ltd.の記事で示されている、GhostMinerで指定されていたマイニングプールにおけるハッシュレートの推移を以下に示します。「ハッシュレート」は仮想通貨の採掘速度を表す指標です。

図-3 Minerva Labs Ltd.で観測されたGhostMinerのハッシュレート(mineXMR.COMにて作成)

Minerva Labs Ltd.によって報告されたGhostMinerの活動で利用されているマイニングプールは、3月上旬からハッシュレートが増加し、最大で約30KH/sを採掘できる活動規模であったことが推測できます。また、3月29日に暴落していることが確認できます。

次に、IIJで観測したGhostMiner(x64)で指定されていたマイニングプールにおけるハッシュレートの推移を示します。

図-4 IIJで観測したGhostMiner(x64)のハッシュレート(mineXMR.COMにて作成)

対照的に、GhostMiner(x64)で利用されているマイニングプールでは3月29日からハッシュレートが増加しており、最大で約50KH/sを採掘できる活動規模であったことが推測できます。

攻撃キャンペーンの開始日が3月28日であることに加え、IIJで観測したGhostMinerのWMI.ps1のファイルに排他的に先行するマイニングのプロセスを停止させるコードが記述されていることから、先行して活動していたMinerva Labs Ltd.の記事で示されているGhostMinerの一部が、IIJで観測した攻撃キャンペーンによりマイニングプールの異なるGhostMinerに置き換わった可能性があります。またこの攻撃により新規に感染したWebサーバが存在する可能性があります。

次に、IIJで観測したGhostMiner(x86)で指定されていたマイニングプールにおけるハッシュレートの推移を示します。

図-5 IIJで観測したGhostMiner(x86)のハッシュレート(mineXMR.COMにて作成)

GhostMiner(x86)で利用されているマイニングプールは4月12日の12時頃から活動を始めており、少なくとも4月12日以降に攻撃が成功したものと考えられます。また、4月19日以降に活動が活発になった様子も見て取れます。

マイニングプールのアドレスは今回の攻撃キャンペーンのみで利用されているとは限らないため、ハッシュレートの変化が今回のGhostMinerの感染規模を直接表現しているわけではありません。しかし、今回観測したものについては、x64とx86を合わせて70KH/s前後を採掘できる活動規模であることがわかります。

対策

これまで示したように、今回の攻撃が成功するとWebサーバの管理者が意図しない形で仮想通貨がマイニングされてしまいます。さらに、この攻撃ではC&Cサーバとの通信が成功するとWebサーバが攻撃者にコントロールされ、脆弱性を利用する攻撃用の踏み台として利用されてしまいます。そのため、Windows ServerでOracle WebLogicを運用されている管理者の方々は、以下のIoCを参考に対策を検討していただくことや、Oracle WebLogicの脆弱性(CVE-2017-10271)における修正パッチの適用、仮想通貨のマイニングプールへの接続を遮断するなどの対応をおすすめします。

Indicators of Compromise(IoC)

IPアドレスのドット(”.”)は、”[.]”と記載しています。

ダウンロードサーバ:
121[.]17[.]28[.]15
C&Cサーバ:
113[.]98[.]240[.]239
ファイルハッシュ値(SHA-256):
dbefca937ce8d780dc309e502384c55fd991c36e8c8b167309c5d9e755bb1471 DL.php
f04b6a9a9d9b0d29be796e0151610c4bf008cde77ad579c77fa63b820e7a5033 DL.ps1
8dea2a35b808565aae0f25825e760483ab0da0ceb71b29774ca0a771c887647a Neutrino.ps1
e90637d8ac11395b1ed0016d4402e29533e63d2b264c74438db591cd8c140892 WMI.ps1
0c0d08911fdc0bc14936634b25ced7419b16af3517758faa107cd7c34b871df8 x64.exe
5a3d6ac736a5dd18dc12d52f0468933cb26b722ddf63b6b9dbcc17b3f6b58651 x64_VMP.exe
97e1338de44f8c8799e2d0e0f32a1362a6084004ec64c754950e8bde50a33735 x86.exe
60004a6505c39239e2fc53f5186589c8557a0686ad7633ec472ec8be0dace859 x86_VMP.exe