WannaCry:情報まとめ

史上最大の規模で拡散しているランサムウェアWannaCry。現時点でわかっている情報や、今後の動向の予測をまとめました。

※本記事は2017年5月16日に公開された当社グローバル調査チーム(GReAT)による記事の日本語版です。

「WannaCry」が引き起こした史上最大のランサムウェア感染によって、5月12日は目まいのするような狂乱の始まりを告げました。セキュリティ業界はこのマルウェアの特性を理解し、感染に先んじて対策しようと、努力を続けています。しかし、その過程で情報の錯綜と多くの誤解が生じているように見受けられます。ここで少し落ち着いて、今わかっていること、知りたいこと、近々どうなるのかなどを整理したいと思います。

合わせて、当社のミッションである「世界を脅威から守る」に則し、IOC(脅威存在痕跡)とYARAルールを記事の最後に掲載します。

何はともあれ、パッチを適用してください

先週末の状況の振り返りは、こちらの記事をご覧ください。

そもそもの始まりは?メールは攻撃の媒介となったのか?フィッシングサイトのリンクは?

現時点では、メールを介したWannaCryの攻撃は確認されていません。当社では一部のお客様に対しセキュリティが侵害されたサイトが使われたことを示唆する手がかりを得ており、現在も調査を進めています。今のところ、当社製品のユーザーが受けている攻撃は、4月にShadow Brokersが流出させた有名なエクスプロイト「EternalBlue」を利用したものであることが判明しています。このエクスプロイトは、バックドア「DoublePulsar」をインストールし、システムへの感染に利用します。EternalBlueは、最初の段階で攻撃に失敗した場合であっても、以前の攻撃でインストールされた可能性のあるDoublePulsarの実行を試みます。

WannaCryがこれほどまでの成功を収めた主な理由は、EternalBlueがユーザーの操作を必要とせずにインターネットを介して攻撃を実行可能であることに求められるでしょう。このエクスプロイトは、TCPポート445で通信します。5月11日木曜日、インターネットに接する当社のセンサーがポート445への接続の急増を捉えました。大規模な感染が確認された先週金曜日の前日であることを考えると、このワームが放たれたのは木曜日であった可能性があります。あるいは、水曜日の夜であったかもしれません。なお、ポート445のトラフィック増加は、SANS DShieldプロジェクトの図でも確認できます。

ポート 445への接続数(日別)

エクスプロイトに狙われたのはSMBv1?それともSMBv2?

EternalBlueが不正利用する脆弱性は、SMBv1の実装に含まれます。ただし、EternalBlueは脆弱性悪用のためにSMBv2も利用します。つまり、攻撃時にはSMBv1およびSMBv2の両方のパケットが利用されます。SMBv1またはSMBv2を無効にすれば感染を防止できますが、(古いプロトコルの)SMBv1を無効にしても現代のシステムにはそれほど影響がないのに対し、SMBv2を無効にすると問題が発生する可能性があります。現在の攻撃、さらには今後の攻撃を防ぐためにSMBv1の無効化が強く推奨されているのには、こうした事情があります。

キルスイッチとは?信頼してもよいのでしょうか?

(他のコンピューターへ感染を拡げるために設計された)WannaCryのワーム的拡散機能は、感染を開始するにあたり、ハードコードされたインターネット上のWebサイトに接続を試みるという特殊なチェックを実行します。接続に失敗した場合は攻撃続行、成功した場合は感染停止します。これが「キルスイッチ」の仕組みです。この特性を利用し、英国のリサーチャーがWebサイトのドメインを登録してシンクホールサーバーで応答するように設定を変更、ワーム拡散の抑制に成功しました。

このキルスイッチは結局のところ信頼できるのか?キルスイッチの効果については憶測が飛び交っていますが、さらなる感染拡大を抑えているのは事実です。ただし、これはワームがインターネットに接続できる場合に限られています。多くの企業ネットワークにはファイアウォールが設置されており、プロキシを使用しなければインターネット接続できない設定となっています。そうした場合、ワームはローカルネットワークで感染を継続します。また、キルスイッチを実装しない新しい亜種が現れないとは限りません。

そもそもなぜ攻撃者はキルスイッチを追加したのか?

非常に良い質問です。考えられる理由は、次のとおりです。

  • 攻撃が制御できなくなることを恐れ、増殖を止める手段が欲しかった
  • サンドボックスによる検証を避けるために実装した(一部のサンドボックスでは、インターネット接続していなくても接続しているかのように見せかけた環境を構築する)

攻撃は食い止められたのか?

当社では、攻撃の増加が再び見られるかどうかを確認するため、5月15日早朝より本攻撃の追跡を開始しました。5月15日月曜日6:00(協定世界時間/グリニッジ標準時間)以降、当社のお客様に対する攻撃は、5月12日金曜日の初期と比べて6分の1まで減少したことを確認しました。

この結果は、現行の亜種による感染が収拾した可能性を示唆します。

「現行の亜種」とは何か?攻撃の第2波が来るということか?

先週末の間に、目立った2つの亜種が現れました。Kaspersky Labでは、これらの亜種が元々の作者によって作成されたものとは考えていません。この攻撃を利用したいと考える、それぞれ別の攻撃者が、別途修正を加えたものである可能性が高いと見られます。

UTC/GMTの日曜日2:00頃に拡散を開始した最初の亜種は、接続先ドメインが変更されていました(ifferfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com)。Kaspersky Labは、今までにこの亜種の標的となったユーザーをロシアとブラジルで3人確認しています。

d724d8cc6420f06e8a48752f0da11c66のコード変更

週末に登場した2つめの亜種は、キルスイッチを削除する修正が加えられているようでしたが、おそらくはバグが原因で、拡散の気配はありません。

サンプルMD5 実際の感染例 キルスイッチの有無 ドメインキルスイッチ
d5dcd28612f4d6ffca0cfeaefd606bcf あり あり ifferfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com
d724d8cc6420f06e8a48752f0da11c66 なし なし n/a

第2波の亜種にはキルスイッチが実装されているか?

日曜夜(最初の報告はUTC午前2:00頃)に拡散された検体「d5dcd28612f4d6ffca0cfeaefd606bcf sample」には、キルスイッチドメインが含まれていました。このドメイン(ifferfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com)は、オリジナルのドメインと2バイトの違いしかありません。

サンプルMD5 キルスイッチドメイン
iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com
新(前述) ifferfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com

この第2のドメインについてはComae Technologiesのマット・スイーシュ(Matt Suiche)氏がシンクホールし、10,000以上の感染拡大を阻止したと報告しています。

現時点で支払われた身代金の総額は?

WannaCryウォレット追跡サイト、5月15日時点の金額

WannaCryが使用するビットコインウォレットの取引について、追跡の試みがいくつかなされています。「howmuchwannacrypaidthehacker.com」という追跡サイトにて最新の支払い状況が確認できますが、このサイトによれば、記事執筆時点で31BTC以上、米ドルにして55,000ドル近くが支払われています。

攻撃者はお金を何に使うのか?

これだけ高い注目が集まっている現状を鑑みると、攻撃者がビットコインで何かできるとは考えにくいところです。ウォレット所有者は匿名ですが、取引は誰でも確認できますし、追跡可能です。攻撃者がビットコインを使って現実世界で何か購入するなどして決済が実際に発生すれば、そこから出荷情報、利用サービス、その他IPなどを追跡することは事実上可能であり、逮捕の可能性も高まります。

身代金を支払えばファイルの復元は保証されるのか?

どうでしょうか。相手は犯罪者です。特に、世界中がこの攻撃活動を追い、できるかぎり阻止しようとしている状況では、攻撃者が約束を守ってくれると期待する理由が見当たりません。それに、支払った身代金は次の攻撃の資金源になります。

身代金は支払わないでください。

企業のローカルネットワークでWannaCryはどのように拡散するのか?

このマルウェアに実装されたワーム機能は、ローカルネットワーク内でパッチが適用されていない他のWindowsマシンに感染を試み、その際に大量のSMBトラフィックを発生させます。基本的には、公開されているSMB/445ポートでLAN IPSをスキャンし、検出するとEternalBlueエクスプロイトを送り込みます。

これ以外に使用されているエクスプロイトは?

現時点では、Shadow Brokersが流出させたEternalBlueエクスプロイトが、このサイバー攻撃で確認されている唯一のエクスプロイトです。

興味深いことに、このマルウェアはコンピューターに感染すると、シェルコードを実行してペイロードをドロップし、実行します。ペイロードのコードは、32ビットと64ビットのいずれにも対応し、Ring 0で実行されます。また、Shadow Brokers のブログ記事「Lost in Translation」で公開されたバックドア「DoublePulsar」がベースになっているようです。

プロキシを使っている場合はどんなことになるのか?

キルスイッチは、感染コンピューター内のファイルを暗号化するというマルウェアの主要な動作を止めます。基本的に、指定された特定のドメインが登録されているかどうかを確認することでキルスイッチが発動します。しかし、WannaCryはプロキシの有無を確認しません。したがって、組織内部で実行する検体は、キルスイッチのドメインが登録済みであっても、通信できない可能性があります。つまり、ファイルの暗号化が続行されるということです。

攻撃の首謀者は?1つのグループによる犯行か、それとも複数グループによるものか?

攻撃者は、身元や所在を特定するための手がかりをあまり残していません。当社では可能性が高い手がかりをいくつか調査中であり、関連情報はすべて警察機関と共有しています。
現時点では、既知のグループを指し示す痕跡は発見できていません。WannaCryランサムウェアの初期の亜種は2017年3月に使われていたもので、一部は2017年2月に遡る可能性があります。初期の亜種については調査中で、手がかりを集めている状況です。(訳注:Kaspersky Labではその後、Lazarusグループとの関連性について記事を公開しました)

ロシアが主な標的なのか?

拡散したワームは特定の地域を狙ったものではありません。配信先はランダムで、インターネット上からIPを選んでローカルネットワークへの感染を試みています。それでもなお、大規模感染はロシアで発生しており、確認できている攻撃全体の66%を占めています。配信に偏りがある理由は、おそらくロシアの状況の可視化が進んでいることと、パッチが適用されていないシステムが多いためであると考えられます。

攻撃の阻止にあたって警察と連携しているか?

複数の警察機関と連携し、攻撃の沈静化に有用な情報を提供しています。

Microsoftが米政府によるサイバー兵器の貯蔵に苦言を呈し、デジタルジュネーブ条約を提唱したが、これは効果があるのか?

Kaspersky Labは、ブラッド・スミス(Brad Smith)氏がすべての人にとってより良いデジタルの未来を構築するために、大変重要な一歩を踏み出すよう世界中の政府と企業に呼びかけたことを支持しています。当社は、国際間のデジタル条約は私たち全員にとって必要であると強く信じ、中立的な国際サイバー組織の設立を支援しています。また、相手を攻撃するようなサイバー活動を実行せず、あらゆるサイバー攻撃からユーザーを守るという誓約を断固として支持します。詳細については、こちらの英語記事をご覧ください。https://www.forbes.com/sites/eugenekaspersky/2017/02/15/a-digital-geneva-convention-a-great-idea/#abeff891e6e1

自組織を守るために今すぐできることは何か?

以下を推奨します。

  • Microsoftセキュリティ更新プログラムMS17-010を適用する。Microsoftでは、サポートを終了したWindows XPについても緊急パッチを公開しています。
  • SMBv1を無効化する。
  • 定期的にデータをバックアップし、バックアップデータはオフラインのストレージに保存する。
  • ネットワークの管理者権限を制限する。
  • ネットワークをセグメント分けする。
  • すべてのノードにセキュリティソフトウェアをインストールし、ソフトウェアを最新の状態にする。
  • カスペルスキー製品をお使いの場合は、システムウォッチャーを有効にし、さらに、ソフトウェアを最新の状態にする。システムウォッチャーには、暗号化されたファイルをロールバックする機能があります。
  • カスペルスキー製品をお使いでない場合は、無料で利用できるKaspersky Anti-Ransomware Tool for Business(KART)をご検討ください。
  • WannaCryは組み込み系システムも標的にしています。組み込み系システム専用のセキュリティ製品をインストールし、アンチマルウェア保護機能やデフォルト拒否/許可リスト機能を有効にしてください。

カスペルスキー製品がインストールされていたシステムに対する攻撃はすべてブロックされたのか?

最新の製品に実装された「システムウォッチャー」というモジュールは、ランサムウェアの攻撃を阻止するように設計されており、WannaCryの攻撃防止でも効果を発揮しました。このほか、カスペルスキー製品には特定の検知サブルーチンが実装されており、ローカルネットワーク内での攻撃拡大を阻止しています。土曜日以降、当社製品はIDSコンポーネントを通じてネットワークレベルの攻撃をブロックすることにも成功しています。

Windows XPを使っているが、どうすればよいか?

まずは、Windows XPの使用を止めることです。16年前のOSであり、Microsoftによる公式サポートは終了しています。Windows 8.1または10へのアップグレードをお勧めします。どうしてもWindows XPを使わなければならないのであれば、以下のページからMicrosoftの緊急パッチをダウンロードして適用してください。

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598

ただし、その他の脆弱性が明るみに出る可能性は高く、今後発生する攻撃に対して脆弱な状態が続くという点に覚悟が必要です。

現時点で確認された攻撃すべてに関するYARAルールやIOCは存在するか?

すでに複数のYARAルールが公開されており、精度はそれぞれ異なります。フロリアン・ロス(Florian Roth)氏は自身のGitHubでWannaCry YARAルールセットを公開しています。US-CERTからも別のYARAルールセットが公開されていますが、誤検知があり、現時点ではお勧めできません。当社のYARAルールを以下に掲載します。

脅威存在痕跡(IOC

以下のホストへのネットワークトラフィック

  • iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com
  • ifferfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com

ディスク上のファイル名

  • mssecsvc.exe
  • taskdl.exe
  • taskse.exe
  • wannacry.exe
  • tasksche.exe

異なるキルスイッチを実装する亜種のハッシュ値

  • d5dcd28612f4d6ffca0cfeaefd606bcf
  • d724d8cc6420f06e8a48752f0da11c66

マルウェアのハッシュ値の詳細は、こちらの記事(英語)をご覧ください。

YARAルール

rule crimeware_Wannacry_worm {

meta:

description = “Find Wannacry worm carrier samples”
date = “2017-05-14”
version = “1.0”
author = “Kaspersky Lab”
tlp = “GREEN”

strings:

$a0=”__TREEID__PLACEHOLDER__” ascii wide fullword
$a1=”__USERID__PLACEHOLDER__” ascii wide fullword
$a2=”userid” ascii wide fullword
$a3=”treeid” ascii wide fullword
$a4=”__TREEPATH_REPLACE__” ascii wide fullword
$a5=”\\\\%s\\IPC$” ascii wide fullword
$a6=”Microsoft Base Cryptographic Provider v1.0″ ascii wide fullword
$a7=”mssecsvc2.0″ ascii wide fullword
$a8=”Microsoft Security Center (2.0) Service” ascii wide fullword
$a9=”%s -m security” ascii wide fullword
$a10=”C:\\%s\\qeriuwjhrf” ascii wide fullword
$a11=”tasksche.exe” ascii wide fullword

condition:

((uint16(0) == 0x5A4D)) and (filesize < 15000000) and (8 of ($a*)) }
rule crimeware_Wannacry_ransomware {

meta:

description = “Find Wannacry ransomware module”
date = “2017-05-14”
version = “1.1”
author = “Kaspersky Lab”
tlp = “GREEN”

strings:

//list of extensions targeted by the ransomware module
$a1={
2E 00 64 00 65 00 72 00 00 00 00 00 2E 00 70 00
66 00 78 00 00 00 00 00 2E 00 6B 00 65 00 79 00
00 00 00 00 2E 00 63 00 72 00 74 00 00 00 00 00
2E 00 63 00 73 00 72 00 00 00 00 00 2E 00 70 00
31 00 32 00 00 00 00 00 2E 00 70 00 65 00 6D 00
00 00 00 00 2E 00 6F 00 64 00 74 00 00 00 00 00
2E 00 6F 00 74 00 74 00 00 00 00 00 2E 00 73 00
78 00 77 00 00 00 00 00 2E 00 73 00 74 00 77 00
00 00 00 00 2E 00 75 00 6F 00 74 00 00 00 00 00
2E 00 33 00 64 00 73 00 00 00 00 00 2E 00 6D 00
61 00 78 00 00 00 00 00 2E 00 33 00 64 00 6D 00
00 00 00 00 2E 00 6F 00 64 00 73 00 00 00 00 00
2E 00 6F 00 74 00 73 00 00 00 00 00 2E 00 73 00
78 00 63 00 00 00 00 00 2E 00 73 00 74 00 63 00
00 00 00 00 2E 00 64 00 69 00 66 00 00 00 00 00
2E 00 73 00 6C 00 6B 00 00 00 00 00 2E 00 77 00
62 00 32 00 00 00 00 00 2E 00 6F 00 64 00 70 00
00 00 00 00 2E 00 6F 00 74 00 70 00 00 00 00 00
2E 00 73 00 78 00 64 00 00 00 00 00 2E 00 73 00
74 00 64 00 00 00 00 00 2E 00 75 00 6F 00 70 00
00 00 00 00 2E 00 6F 00 64 00 67 00 00 00 00 00
2E 00 6F 00 74 00 67 00 00 00 00 00 2E 00 73 00
78 00 6D 00 00 00 00 00 2E 00 6D 00 6D 00 6C 00
00 00 00 00 2E 00 6C 00 61 00 79 00 00 00 00 00
2E 00 6C 00 61 00 79 00 36 00 00 00 2E 00 61 00
73 00 63 00 00 00 00 00 2E 00 73 00 71 00 6C 00
69 00 74 00 65 00 33 00 00 00 00 00 2E 00 73 00
71 00 6C 00 69 00 74 00 65 00 64 00 62 00 00 00
2E 00 73 00 71 00 6C 00 00 00 00 00 2E 00 61 00
63 00 63 00 64 00 62 00 00 00 00 00 2E 00 6D 00
64 00 62 00 00 00 00 00 2E 00 64 00 62 00 00 00
2E 00 64 00 62 00 66 00 00 00 00 00 2E 00 6F 00
64 00 62 00 00 00 00 00 2E 00 66 00 72 00 6D 00
00 00 00 00 2E 00 6D 00 79 00 64 00 00 00 00 00
2E 00 6D 00 79 00 69 00 00 00 00 00 2E 00 69 00
62 00 64 00 00 00 00 00 2E 00 6D 00 64 00 66 00
00 00 00 00 2E 00 6C 00 64 00 66 00 00 00 00 00
2E 00 73 00 6C 00 6E 00 00 00 00 00 2E 00 73 00
75 00 6F 00 00 00 00 00 2E 00 63 00 73 00 00 00
2E 00 63 00 00 00 00 00 2E 00 63 00 70 00 70 00
00 00 00 00 2E 00 70 00 61 00 73 00 00 00 00 00
2E 00 68 00 00 00 00 00 2E 00 61 00 73 00 6D 00
00 00 00 00 2E 00 6A 00 73 00 00 00 2E 00 63 00
6D 00 64 00 00 00 00 00 2E 00 62 00 61 00 74 00
00 00 00 00 2E 00 70 00 73 00 31 00 00 00 00 00
2E 00 76 00 62 00 73 00 00 00 00 00 2E 00 76 00
62 00 00 00 2E 00 70 00 6C 00 00 00 2E 00 64 00
69 00 70 00 00 00 00 00 2E 00 64 00 63 00 68 00
00 00 00 00 2E 00 73 00 63 00 68 00 00 00 00 00
2E 00 62 00 72 00 64 00 00 00 00 00 2E 00 6A 00
73 00 70 00 00 00 00 00 2E 00 70 00 68 00 70 00
00 00 00 00 2E 00 61 00 73 00 70 00 00 00 00 00
2E 00 72 00 62 00 00 00 2E 00 6A 00 61 00 76 00
61 00 00 00 2E 00 6A 00 61 00 72 00 00 00 00 00
2E 00 63 00 6C 00 61 00 73 00 73 00 00 00 00 00
2E 00 73 00 68 00 00 00 2E 00 6D 00 70 00 33 00
00 00 00 00 2E 00 77 00 61 00 76 00 00 00 00 00
2E 00 73 00 77 00 66 00 00 00 00 00 2E 00 66 00
6C 00 61 00 00 00 00 00 2E 00 77 00 6D 00 76 00
00 00 00 00 2E 00 6D 00 70 00 67 00 00 00 00 00
2E 00 76 00 6F 00 62 00 00 00 00 00 2E 00 6D 00
70 00 65 00 67 00 00 00 2E 00 61 00 73 00 66 00
00 00 00 00 2E 00 61 00 76 00 69 00 00 00 00 00
2E 00 6D 00 6F 00 76 00 00 00 00 00 2E 00 6D 00
70 00 34 00 00 00 00 00 2E 00 33 00 67 00 70 00
00 00 00 00 2E 00 6D 00 6B 00 76 00 00 00 00 00
2E 00 33 00 67 00 32 00 00 00 00 00 2E 00 66 00
6C 00 76 00 00 00 00 00 2E 00 77 00 6D 00 61 00
00 00 00 00 2E 00 6D 00 69 00 64 00 00 00 00 00
2E 00 6D 00 33 00 75 00 00 00 00 00 2E 00 6D 00
34 00 75 00 00 00 00 00 2E 00 64 00 6A 00 76 00
75 00 00 00 2E 00 73 00 76 00 67 00 00 00 00 00
2E 00 61 00 69 00 00 00 2E 00 70 00 73 00 64 00
00 00 00 00 2E 00 6E 00 65 00 66 00 00 00 00 00
2E 00 74 00 69 00 66 00 66 00 00 00 2E 00 74 00
69 00 66 00 00 00 00 00 2E 00 63 00 67 00 6D 00
00 00 00 00 2E 00 72 00 61 00 77 00 00 00 00 00
2E 00 67 00 69 00 66 00 00 00 00 00 2E 00 70 00
}

condition:

((uint16(0) == 0x5A4D)) and (filesize < 15000000) and any of them }

 

ヒント