MENU

最新マルウェアを解剖する|WannaCryの仕組みと攻撃のメカニズム

5月上旬に攻撃が始まり地球規模で事件となったWannaCryは、どのような仕組みをもち、どういったメカニズムで感染を広げたのか。その解説を、三井物産セキュアディレクションの関原優・ 吉川孝志・菅原圭の3氏にお願いした。3氏はランサムウェアの検知・防御技術で特許をもつトップエンジニアで、同社のブログで「サイバーインテリジェンスグループ」の名称でセキュリティ情報の発信も行っている。なお、本文の画面・図表は、三井物産セキュアディレクション株式会社の提供になる。

 

WannaCryはワームと
ランサムウェアの集合体

IS magazine(以下、IS) 最初に、WannaCry 2.0(以下、WannaCry)がどのように動作するのか、その解説をお願いします。

吉川 WannaCryは大きく分けて2つのマルウェアで構成されています。1つは端末のMS17-010の脆弱性を突いて送り込まれる、ワーム機能をもつ「ドロッパー①」。もう1つは、ドロッパー①が攻撃対象の端末に送り込まれると、そのリソース領域内から自動的に作成され実行されるEXEファイル形式の「ドロッパー②」です。このドロッパー②が、ファイルの暗号化機能をもつランサムウェアです。そしてドロッパー②のリソース領域には、ランサムウェアとして動作するのに必要な部品を集めたパスワードZIPファイルが含まれており、感染の成功と同時に展開する仕組みになっています(図表1)。

図表1 WannaCryの構成と動作
図表1 WannaCryの構成と動作

IS WannaCryの脅迫文は、どのように画面表示されるのですか。

吉川 端末上にあるファイルの暗号化に成功すると、「u.wnry」という名前のEXEファイルを「@WannaDecryptor@.exe」という名前に変更、起動し、端末の壁紙を変更して脅迫文を表示します。その表示に必要な画像や言語別の脅迫文、および、「u.wnry」そのものもパスワードZIP内に格納されています。

IS WannaCryはワームとランサムウェアの集合体というわけですね。

吉川 そうです。当社では、ファイルを暗号化するだけの一般的なランサムウェアの挙動をもつWannaCryのバージョン1.0を、2017年3月の時点で把握していました。今回利用されたWannaCryはバージョンが2.0なのですが、バージョン1.0から変わったのは、多言語対応になった点と、暗号化を司る機能が2つの実行ファイル(ドロッパー②とu.wnry)に分かれた点です。

つまり、「WannaCry」とは、あくまでもランサムウェアとしての機能部分を指すものと言えます。ネット上を流れている記事などでは「WannaCryにはワーム機能がある」というような指摘がなされていますが、厳密に言うと正しくなく、誤解を生むと思えます。ワーム機能はあくまでもWannaCryを作成するドロッパー①側にあり、ランサムウェアとしての機能はドロッパー②とu.wnryのセットで成立しています。

吉川 孝志 氏

三井物産セキュアディレクション株式会社
サイバーインテリジェンスグループ
リーダー / 上級マルウェア解析技術者

 

WannaCryで
感染が広がるメカニズム

IS WannaCryで感染が広がる仕組みを教えてください。

菅原 まずWannaCryにすでに感染している端末Aがあるとします。この端末A上のマルウェアは、LAN/WANやネットワーク上でMS17-010の脆弱性をもつ端末Bを発見すると、EternalBlueと呼ばれるエクスプロイトコード(脆弱性を利用したマシンコード)を使って攻撃を仕掛けます。この攻撃は、端末BのSMB v1サービスに対してエクスプロイトコードを投げつけ、SMB v1サービスのカーネル空間でバッファオーバーフローを発生させてデータを書き換えるというものです。

そこへ端末AからDoublePulsarと呼ばれるバックドア・プログラムが送り付けられ、バックドアが設置されます。この送り付けに際しては、端末BにDoublePulsarが存在していないことをEternalBlueが事前に確認してから送り付けられています。このDoublePulsarはメモリ上でのみ作動するファイルレスなので、端末上からは確認できません。また、端末を再起動すると消失してしまうタイプのプログラムです。

菅原 圭 氏

三井物産セキュアディレクション株式会社
コンサルティング事業部
サイバーインテリジェンスグループ
上級マルウェア解析技術者

 

IS バックドアは命令をどのように受け取って動作するのですか。

菅原 SMB v1サービスがDoublePulsarに感染すると、ディスパッチテーブル(関数テーブル)にある正規関数の1つが書き換えられてしまいます。そして、その書き換えによって、通常とは異なる無効な要求がSMB v1サービスに送られてきても、DoublePulsarが要求を解釈し実行可能にしてしまいます。今回のWannaCryではlauncher.dllというDLLを実行せよとの命令が、通常とは異なる無効な要求です。その命令がドロッパー①からlauncher.dllのデータとともに送られてきて実行されます。

具体的には、launcher.dllがユーザー空間にあるlsass.exeへインジェクションされ、lsass.exeのプロセス内で動作してマルウェアを作成します。その作成されたマルウェアがドロッパー①です。

端末B上で作成されたドロッパー①は、端末Aのときと同様にドロッパー②を作成してランサムウェアとしての振る舞いを端末B上で行い、それと同時にLAN/WAN上のMS17-010の脆弱性をもつ端末Cに対して攻撃を仕掛けます。このメカニズムによって、WannaCryは次々に感染を広げていくことになります(図表2)。

図表2 WannaCryによる感染の流れ
図表2 WannaCryによる感染の流れ

巧妙に使われたEternalBlueと
DoublePulsar

IS 今、説明のあったEternalBlueやDoublePulsarはどのようなマルウェアですか。

吉川 EternalBlueとは、MS17-010の脆弱性を攻撃するためのツールの名称です。米国家安全保障局(NSA)が開発したとされる攻撃ツールキット「FuzzBunch」に含まれていることで知られるようになった攻撃ツールで、FuzzBunch自体は外部からのハッキングによってNSAから流出したと言われています。今回のWannaCryは、この「FuzzBunch」に含まれているEternalBlueを流用して攻撃が構成されています。

図表3は、当社がFuzz Bunchを入手して解析した結果の、FuzzBunchのspecialsフォルダに格納されたEternalBlue攻撃ツールの一覧です。ただし、WannaCryのドロッパー①にはEternalBlueが埋め込まれているため、図表3のように個々に分かれた状態では存在しません。

図表3 FuzzBunchのフォルダに格納されたEternalBlue
図表3 FuzzBunchのフォルダに格納されたEternalBlue

IS 攻撃者はFuzzBunchを使ってどのように攻撃を仕掛けるのですか。

吉川 FuzzBunchは、セキュリティ調査や攻撃用のツールとしてよく知られているMetasploitに類似したインターフェースと使用感をもっています。そのため攻撃者はエクスプロイトコードについて詳しく理解していなくても、簡単な操作で攻撃を仕掛けられます。

図表4は、FuzzBunchを使ってEternalBlueを動作させている様子です。上部の破線内がFuzzBunchがもつ脆弱性攻撃ツールの一覧で、EternalBlueも含まれているのがわかります。そして、EternalBlueを攻撃ツールとして選定し、攻撃対象のIPアドレスなどを設定します。「VerifyTarget」の項目を「True」としているのは「ツールで設定したOSと実際のターゲットのOSバージョンが正しいかどうか」という意味、その下の「VerifyBackdoor」の「True」は、「DoublePulsarのインストールの有無を確認する」という意味です。

図表4 EternalBlueによる攻撃対象の設定画面
図表4 EternalBlueによる攻撃対象の設定画面

IS じつに簡単な操作で設定できてしまうのですね。

吉川 そして図表5の「Execute Plugin?」の項目で「Yes」とすると、EternalBlueによる攻撃が始まります。その下に表示されているのは、実行結果です。

まずDoublePulsarがインストールされていないことを確認して、インストールを開始しています(Backdoor not installed,game on)。次に、攻撃先端末のOSバージョンを取得して、それに合ったシェルコードを作成し、不正なパケットの送信処理を行っています。その結果、EternalBlueによる攻撃が成功すると、インストール済みのDoublePulsarと応答を交わして、インストールの成功を確認しています。

図表5 EternalBlueによる攻撃の結果画面
図表5 EternalBlueによる攻撃の結果画面

IS WannaCryのドロッパー①に含まれるEternalBlueも、同様の動きをするわけですね。

吉川 そうです。ドロッパー①には、FuzzBunchのEternal Blueには存在しない、MS17-010の脆弱性が攻撃先に存在するかどうかを確認するコードが追加されていますが、それ以外は同様の動きです。なお、FuzzBunchのEternalBlueでは、攻撃先にMS17-010が存在するかどうかは確認せず、エクスプロイトコードを送り付け、その応答結果によって攻撃の成功の有無を判断します。

つまりどちらのEternalBlueも、MS17-010の脆弱性が存在し(EternalBlueが有効)、かつDoublePulsarが存在しない場合は、DoublePulsarをインストールしてドロッパー①を含むDLLを送付し実行させます。DoublePulsarがすでに存在する場合は、DoublePulsarを利用してドロッパー①を含むDLLを送付し実行させます。また、MS17-010の脆弱性が存在しないものの(EternalBlueが無効)、DoublePulsarが存在する場合は、DoublePulsarを利用してドロッパー①を含むDLLを送付し実行させる、という動きになります。

「Windows 10の被害が少なかった」は
大きな間違い

IS ほかにFuzzBunchの特徴がありますか。

吉川 FuzzBunchを詳しく調べると、EternalBlueの攻撃先OSとしてWindows XP 32bitとWindows 7 and 2008 R2の2つしか用意されていないことがわかりました(図表6)。今回のWannaCry騒動で「Windows 10の被害が少なかった」と言われていますが、そもそも対象になっていなかったということです。

 また、「Windows 10はWannaCryの影響を受けない」という記事もありましたが、Windows 10にもSMBv1の脆弱性は存在するので、攻撃先にWindows 10を加えた亜種が出てくることも十分に考えられます。安心はできません。

図表6 攻撃先OSの選択画面
図表6 攻撃先OSの選択画面

IS DoublePulsarはどのようなマルウェアですか。

吉川 DoublePulsarも、FuzzBunchに含まれているバックドア・プログラムです。SMBまたはRDPプロトコルを用いて通信を行い、Ping、RunDLL、RunShellcode、Uninstallの4つのコマンドを実行できます。

このうちWannaCryが使っているのはRunDLLで、これを選択すると送り込むDLLファイルを確認してくるのでパスを指定して選定すると、次にどのプロセスにインジェクションするかを聞いてきます。FuzzBunchで実行した図表7では「lsass.exe」になっていますが、WannaCryの場合はlsass.exeに固定されています。

これらの攻撃の設定はEter nalBlueと同様、非常に簡単です。そして、EternalBlueやDoublePulsarなどの機能を組み合わせて自動化しているのがWannaCryのドロッパー①です(図表8)。

図表7 DoublePulsarの設定画面
図表7 DoublePulsarの設定画面
図表8 DoublePulsarによる攻撃の結果画面
図表8 DoublePulsarによる攻撃の結果画面

世界規模で拡散し
騒動となった4つの理由

IS WannaCryはかなり巧妙に作られているのですね。

関原 この種の攻撃ツールは広く出回っていますが、特定の脆弱性を突くために必要な攻撃プログラムを収集し、あるいは開発して、それをランサムウェアとしてセットするのは大変な労力を要します。そこから推定されるのは、作成者はセキュリティについて高い能力をもつ集団または個人だろうということです。

関原 優 氏

三井物産セキュアディレクション株式会社
コンサルティング事業部長
サイバーセキュリティサービス統括

 

IS 攻撃者についてはどう見ていますか。

吉川 いろいろな報道がありますが、真の攻撃者の特定は不可能だろうと思います。特定の国やグループが関与しているように見せかけるのは容易ですし、作成時のタイムスタンプの偽装なども簡単に行えます。軽々には判断できません。

IS 世界規模で拡散し大きな騒動となったのは、どのような理由からですか。

関原 4つあると見ています。1つ目は、NSAも利用していたとされる脆弱性(MS17-010)の影響力の大きさです。OSそのものの脆弱性であるために影響を受ける範囲が非常に大きかったことと、攻撃者が早い段階でFuzzBunchの情報を入手し攻撃の準備を進めたことが挙げられます。2つ目は、近年には稀な、リモート攻撃が容易な脆弱性であったので、インターネットやLAN経由で広がるワーム型のマルウェアが使われて感染が拡散したこと。3つ目は、MS17-010の更新プログラムが3月にリリースされていたにもかかわらず、WannaCryの感染が大きく広がった5月時点でも適用していない端末が少なからずあったこと。4つ目は、最終的に感染するマルウェアがランサムウェアであったので、すぐに目に付き、大きな混乱に発展したからです。使用者に見つからないように動作するマルウェアであれば、ここまでの騒動にはならなかっただろうと見ています。

WannaCryが突き付けたものと
その教訓

IS 今回のWannaCryで何か気づいたことはありますか。

関原 私どものお客様からのお問い合わせで、企業の大小や業種・業態を問わず一様に多かったのは、「うちは大丈夫か?」というものでした。多くのお客様は端末の状況を可視化する何らかの管理ツールを導入されていますが、全端末のリソースやパッチの適用状況を短時間に把握するのは簡単ではなかったようです。

このことは以前から潜在的にあった課題ですが、その課題をあらためて再確認したところです。端末の情報を月次や週次などで収集してSCCM(Microsoft System Center Configuration Manager)のようなツールで管理している環境でも、今回は、パッチがいつ配信され、どのタイミングで当てられたのか、当たっていない端末はどれとどれかをリアルタイムで確認することが求められたので、既存のツールだけでは不十分で、対応に時間を要したケースがありました。

また、WannaCryが混入していないか、Webプロキシサーバーなどのログや端末上のファイルの調査も迅速に行えることが求められました。つまり、もっと高いレベルの端末の可視化や把握のための仕組みが必要だったということです。そもそも資産管理が不十分で確認する術がないので、感染の報告や通信の有無の確認程度の対応となった場合もありました。

セキュリティ対策というと高度な検知や防御機能をもつ真新しい製品・サービスに目がいきがちですが、脆弱性管理、リソース管理、セキュリティパッチの適用とその可視化といった基本的な運用をしっかりと実施し、何か起きたときに迅速な確認と対応のできる備えをしておくことが大切です。その必要性を端的に示したのが、今回のWannaCryの教訓です。

IS magazine No.16(2017年7月)掲載

新着