マルウェア&ランサムウェア感染の最前線

吉川孝志氏:本日は「今後注意すべきマルウェア&ランサムウェアの感染手口」と題しまして、お話しさせていただきます。よろしくお願いいたします。

まずは自己紹介を簡単にさせていただきますが、三井物産セキュアディレクションの吉川と申します。マルウェア解析を主な業務としておりまして、テレビ、新聞などのメディア対応や執筆活動などを通して、さまざまな情報発信を行っております。執筆活動としましては、日経で『マルウェア徹底解剖』という連載を、雑誌とWebで3年近くやっておりますので、よろしければご覧ください。

弊社のMBSDブログでは、いろいろなマルウェアの記事を出しております。例えば「Emotet」や「LockBit」の詳細解析記事なども、これまで多くの方から好評いただいております。

また、弊社のYouTubeチャンネルではさまざまなランサムウェア・マルウェアの感染の様子を動画でわかりやすく紹介しております。その他にも弊社のSNSのアカウントからは、ブログよりも迅速な情報共有を主な目的としていろいろ発信しております。

続いて、宣伝となって恐縮なんですが、9月20日に私の著書である『マルウェアの教科書』が全国書店から発売されました。「マルウェアとは」という超基礎を知りたい一般の方から、「これから解析を始めたい」というエンジニアまで、さまざまな幅広い読者を対象にしておりまして、最新の脅威の手口や仕組みについてもわかりやすく、そして深く学べるような内容となっております。

もちろん被害が急拡大していて注目が集まっているランサムウェアに関しても同様に、基礎から手口まで全部丸ごと盛り込んでおります。発売に際しての私のコメントなど、詳細は弊社サイトへ掲載しておりますので、よろしければご覧いただけますと幸いです。

忘れてはならないランサムウェアの感染経路

では、本日の本題に入っていきたいと思います。脅威の解説の前に、前提として、背景を少し簡単にご説明しておきたいと思います。マルウェアの世界において、メールにマクロ付き文書ファイルを添付して、ユーザーに開かせることで感染させる手口は、長年にわたって常套手段でした。

Emotetなどがその代表例となるんですが、この絵のように、マルウェアが混入したWordやExcelなどのマクロ付き文書ファイルがメールに添付されてきて、それをユーザーが開いて、表示された中の「コンテンツの有効化」というボタンをユーザーがクリックすると、マルウェアに感染してしまう手口です。

あらためて注意しなければならないのは、マルウェアだけではなくて、近年話題のランサムウェアに関しても、この手口が悪用されていることです。感染パターンとしては、①のように一度マルウェアに感染します。そのマルウェアが、後からランサムウェアを呼び寄せて、間接的に感染させてしまうパターンです。それから②のように、直接ランサムウェアに感染してしまうケースですね。

暴露型ランサムウェアの攻撃では、VPN機器の脆弱性やRDPの認証情報が狙われて、侵入した後で感染する攻撃経路が注目されがちなんですが、メールに添付されてきたマルウェア経由で、最終的にランサムウェアに感染する経路があることを、忘れずに注意しておく必要があります。

近年のそうしたマクロの悪用の増加から、2022年の前半、Microsoftはインターネットやメール経由で入手されたOfficeのマクロをデフォルトでブロックする方針を発表しました。一時的に変更を元に戻すようなロールバックはあったんですが、今年の7月末から、適用の再開をアナウンスしました。

検証を通して理解するマクロブロックの変化

ここまでの背景については少し聞いたことがある方もいらっしゃるかと思うんですが、続いて、実際にどのように変化してブロックされるようになったのか、本物のマルウェアを使って検証をしていきましょう。

実際のマルウェアとして、過去に攻撃で使用されたEmotetのマクロ付きExcelファイルを使用して実験した様子なんですが、マクロブロック以前では、ファイルを開くと保護ビューが一度表示されます。保護ビューに表示されている「編集を有効にする」というボタンをクリックすると黄色のバーが表示されて、その警告バーにある、「コンテンツの有効化」というボタンをクリックすると、ここでEmotetに感染してしまいました。

マクロブロック以後ではどうなるかと言いますと、同じくファイルを開くと保護ビューが表示されるんですが、「編集を有効にする」というボタンを押すと、先ほどと違って赤いバーが表示されるようになりまして、ブロックされた旨の警告が表示されました。

つまり、左右を見比べればわかるんですが、ここが変化したポイントとなります。以前のように、黄色のバーと「コンテンツの有効化」というボタンは表示されなくなったので、実質的にマクロがブロックされたことになります。

ただし、補足情報なんですが、赤いバーに表示されるようになった「詳細を表示」というボタンを押すと、Microsoftのサイトが開きまして、マクロのブロックを解除する手順がわかりやすく表示されているところに注意が必要です。

と言うのも、混乱した一般ユーザーは、この手順の通り、せっかくブロックされたマクロを再び有効化してしまう可能性もありまして、ブロックを解除してはならないところの最低限の啓蒙は、引き続き必要であると言えます。

今後台頭してくる可能性がある2つの感染手口

以上、まずは背景のお話でしたが、何かの対策が取られた時は、攻撃者は必ず、新しい手口にシフトチェンジしてきます。今回はマクロブロックの機能を迂回するために、今後台頭してくる可能性が高い、以下の2つの感染手口をご紹介します。

今後のマルウェアやランサムウェアにおいて、特にユーザーはどのような感染手口に注意しなければならないのか。そこに関して脅威の基礎的な理解を大事にしつつ、技術的にも少しだけ、深掘りして解説をしていきます。

なお、本日お話しするような内容に関しては、現場のエンジニアの方などの詳しい方においては、もちろん把握されている方も少なくないとは思うんですが、独自の検証内容を交えて丁寧に解説しますので、もちろんそういった方も、知識の整理や新たな気づきになるものもいくらかあると想定しています。

ショートカットファイルを悪用

まずは1つ目の「ショートカットファイルを悪用した手口」となります。そもそも「ショートカットファイル」とは何か。アイコンの左下に矢印が表示されているファイルを指します。

ショートカットファイルを右クリックして、表示されるプロパティを見ると「リンク先」という項目があり、そこには、実際にショートカットが開くファイルやフォルダのパスが記述されています。このファイルの例のように、リンク先に設定されたファイルが実際にはダブルクリックすると開くわけです。

そして、一般のユーザーがあまり知らないショートカットファイルの仕様の1つ目として、リンク先にはコマンドやスクリプトを記述できるというものがありまして、ここでは簡単な例を、サンプルとして示しております。

リンク先に記入された文字列の全貌を見るとこのようになっているんですが、まず、コマンドプロンプトに引数を渡す処理の後、「Hello」と表示するスクリプトをファイルに保存して、実行するコマンドが並んでいます。つまり、ショートカットのリンク先の欄だけでコマンドやスクリプトが実行できたわけですが、攻撃者はこの点に着目しました。詳しくは後ほどお話しします。

続いて、ショートカットファイルに関連するポイントなんですが、Outlookなどのメールソフトの多くでは、そのままショートカットファイルを添付するとブロックされてしまいます。他にも、ブロックされてしまうような、送受信できない添付ファイルの形式が存在します。

具体的にブロックされるファイルの種類はMicrosoftのサイトに掲載されていて、画面の通り、ショートカットファイルの拡張子である「.lnk」もそのファイルタイプの中に含まれて掲載されております。

実際に私がOutlookで検証した様子がこちらなんですが、たとえショートカットファイルがメールに添付されていても、警告が表示されて、受信時にブロックされることがわかります。そのため、攻撃者は通常、ショートカットファイルをメールに添付するのではなくて、ZIPなどの圧縮形式のファイルにいったん入れてから、メールに添付してくることになります。

アイコン偽装による巧妙な手口

続いて、知っておくべき仕様の2つ目になるんですが、ショートカットファイルは任意のアイコンへ自由に変更できることと、それから拡張子が表示されない仕様があります。

メールに添付されたZIPファイルを開いた時、この画面にあるようなファイルが同梱されていたら、Wordファイルだと誤解して開いてしまうユーザーも少なくないのではないでしょうか? そもそも、ショートカットを注意すべきファイルであると認識できている一般ユーザーも、そこまで多くないかなと想定しています。

ファイルの種類を、いまだにアイコンで判断する一般ユーザーは少なくない中、マクロ付きの文書ファイルを開かせる従来の手口と比較しても、この方法は、大してハードル上の違いはない上に、実質的にマクロのブロックの影響を受けません。決して新しい手口ではないんですが、最近になって迂回する手口として再度注目されるようになりました。

ここまでは、事前に知っておくべきポイントを簡単にご紹介しました。ショートカットファイルを攻撃に使用する、いわゆる「LNKマルウェア」なんですが、そういったものは10年以上前から存在した古い脅威で、その手口は以前よりも少しずつ巧妙になってきております。

ショートカットファイル悪用の実際

ここからはいくつかの実例を基に、具体的にどのような手口で攻撃者がショートカットファイルを悪用してくるのか、少しだけテクニカルな話に踏み込んで解説していきます。

まずは、比較的名前が一般的にも知られている「Emotet」なんですが、今年の4月後半あたりから、ショートカットファイルを悪用する手口を一時採用しました。メールに、ショートカットファイルが同梱されたパスワードZIPが添付されていて、それを解凍してユーザーがショートカットファイルを開くとEmotetに感染する流れになります。

ZIPファイルを展開して出てきたショートカットファイルのプロパティ情報を見てみると、コマンドが記述されていて、これをすべて抽出したものがこちらにあります。ここを見てみると、まず「findstr」というコマンドを使って、自分自身のファイルの中を「glKm」から始まる謎の文字列で検索しているようです。

あらためてEmotetのショートカットファイルの構造を調べてみると、ショートカットファイルの下半分に、VBScriptが丸ごと結合されています。実は先ほどの一見ランダムな文字列は、ここの区切りを探すための目印として使われていたことがわかりました。

つまり、リンク先に含まれていたこのコマンドは、自分自身であるショートカットファイルの後ろに埋め込まれているVBScriptを、別のファイルに切り出してから実行するという、一連の処理を行うコマンドであったことがわかります。このEmotetは、まだ比較的シンプルな手口なんですが、他のAPTグループなどでは、より複雑な手口が用いられたりしております。

プロパティ情報で「リンク先」を見ても気づけない手口

続いて、別の手口になるんですが、こちらのショートカットファイルでは、一見するとPDFに見えるアイコンが設定されていて、右クリックのプロパティの「リンク先」を見ても、正規の「cmd.exe」のパスが書かれているだけで、ここのカーソルをずっと後ろに持ってきても、その後には一見何も書かれてないように見えます。

実はこのプロパティ情報で閲覧できる「リンク先」という欄は、260文字までしか表示できない制限があります。しかし、一方、プログラムを利用してショートカットファイルを作り出せば、260文字以上の文字列を含むことができます。ただし、表示上は260文字しかできません。

解析ツールで調べた本当のリンク先の文字列の全貌はこちらになるんですが、抽出したものには、実は260文字以上を超えるようにスペースが大量に埋め込まれていまして、長いスペースの後ろに、PowerShellのスクリプトが記載されていました。

こちらのケースでもショートカットファイルの構造を調べてみると、ショートカットファイルの末尾に、おとりのPDFと実行ファイルであるマルウェアが結合されていて、該当のPowerShellのコマンドを使用して、それぞれ切り出して実行する仕組みになっておりました。

このように、プロパティの「リンク先」を単純に見ても気づけない手口があるので、単純にプロパティの情報だけ見て安心しないようにすることが大切です。

「HTA」という仕組みを悪用

続いて、また別の例になるんですが、「HTA」という仕組みを悪用した手口をご紹介します。HTAとは、HTMLを使ってアプリケーションを作成したり実行できる仕組みです。ブラウザのセキュリティポリシーの影響を受けないので、HTML内に記載したスクリプトを警告なく実行することができます。

HTAを司るホストプロセスなんですが、「mshta.exe」という正規プログラムがあります。このmshta.exeは引数として、何らかのファイルが渡されると、基本的にそのファイルの拡張子や構造に依らず、ファイルの中のどこかにHTAタグやスクリプトタグが存在すれば、それを読み込んで処理しようとする挙動があります。

つまり、適当なファイルを用意して、その中にスクリプトタグを埋め込んだ上で、mshta.exeに引数で渡せば、該当のタグ内の処理が実行されてしまうわけです。

この手口を用いれば、ユーザーが開くと通常通りショートカットファイルとして機能して、一方でmshta.exeに引数としてそのファイルを渡せばHTAファイルの部分のみが実行されるという、二面性のある特殊なファイルを作り出せることになります。

要は「リンク先」に自分自身のショートカットファイルをmshtaの引数として開かせるコマンドを記述すれば、ユーザーがショートカットファイルを開くことをトリガーにして、その結果、末尾に結合していたHTA内のスクリプトを実行させるという攻撃の流れが実現できることになります。

専門的な解析ツールでも見破れないトリック

最後に、専門家の中でもあまり知られていない、さらに巧妙なトリックをご紹介しましょう。このサンプルでは、プロパティの「リンク先」を見ると、「hsmta.exe」という文字列が確認できます。そして、ショートカットファイルを解析する専門のツールで調べてみても、同じく「hsmta.exe」という文字列が抽出できています。

しかし、「hsmta.exe」というシステムファイルはそもそもWindowsには存在しません。試しに、このショートカットファイルを開いてみるとどうなるのかと言うと、「hsmta.exe」ではなく、実際は「mshta.exe」が起動します。

この手口の種明かしとなるんですが、該当のショートカットファイルには「hsmta.exe」という複数の偽の情報が含まれていまして、エクスプローラーだけではなくて、ショートカットの構造を詳細に調べる専門的な解析ツールでさえも、このように一部を騙してしまっています。

実はショートカットファイルの構造の中には、ファイルのパス情報を扱う項目が複数存在してまして、それぞれの項目の値に存在しないパス情報が複数含まれていた場合は、「LongName」という項目の情報が最終的に参照される仕様を、このケースでは悪用しています。

この手口に惑わされない、別の解析ツールであらためて調べたところ、正しく「mshta.exe」という情報が抽出できていることがわかります。このように、一部の専門的な解析ツールでも見破れない手口があるので、調査するエンジニアにおいても、騙されないように注意することが大切になります。

「LNKマルウェア」の仕組みに見られる共通性

ここまで紹介してきたショートカットファイルを用いたマルウェア「LNKマルウェア」なんですが、すべてそれぞれの攻撃者が、一から作っているのでしょうか? というところなんですが。実は近年、異なる攻撃グループらが使用するLNKマルウェアの仕組みに一部共通性が見られていまして、LNKマルウェアを作成するための知見や手段を共有する存在が、その裏に暗躍している可能性があります。

その観点に関連し、最近攻撃者の注目を集めている特殊なツールが複数存在しています。LNKマルウェアを簡単に作成することができる「LNKマルウェアビルダー」という種類のツールです。

これらのビルダーは実際の攻撃でもすでに利用されていると考えられていまして、前述した異なる攻撃者間における手口の共通性を裏付ける存在の1つと捉えることができます。本日は、そこから2つほど紹介します。

1つ目は「Quantum Builder」です。ハッカーフォーラムなどで販売されていて、開発者の書き込みを見ると、マクロ攻撃の代替手段として、明確にPRをしていることがわかります。すべてこのようにわかりやすいGUIで構成されていて、ボタンを押していくだけで、LNKマルウェアを簡単に生成できることがわかります。

2つ目は「mLNK Builder」になります。こちらも先ほどと同じく、すべてボタンでポチポチと押していくだけで、簡単にLNKマルウェアを作成できます。そして、LNKマルウェアで利用するPowerShellやVBScriptの難読化機能も備えています。

こうしたツールの出現によって、均一なクオリティで複雑なLNKマルウェアを容易に作成できるようになっていまして、攻撃のハードルが下がってきている状況があります。

マルウェアの隠ぺい場所としてコンテナファイルを悪用

続いて2つ目にご紹介するのは、コンテナファイルを悪用した手口となります。実は、今回導入されたOfficeのマクロブロックの機能は、インターネットやメールなど、Web経由で取得した文書ファイルでしか働かない制限があります。

では、そもそも「どうやってWeb経由で入手したファイルであると判断されているのか」というところなんですが、逆にこの判断の仕組みを迂回することができれば、マクロのブロックも回避できる可能性があることになります。

その仕組みを理解する上で必要な背景になるんですが、現在のWindowsでは「NTFS」というファイルシステムが通常は使用されています。ファイルシステムは、ファイルを管理するためのOSの機能の1つです。

NTFS上のそれぞれのファイルは「ストリーム」という構造で管理されていまして、ある1つのファイルは「メインデータストリーム」と「代替データストリーム」、略して「ADS」と呼びますが、そういったもので主に構成されています。一般的にみなさんが、ふだん「ファイル」という概念で認識されているのは、「メインデータストリーム」という領域のデータになります。

一方でADSなんですが、こちらはユーザーには見えないデータ領域となっていまして、ファイルに関するさまざまな付随情報、付随データが記録されて使用されています。ADSのデータに関しては、ファイル本体のサイズやハッシュ値には影響しません。

なお、NTFS上にあるファイルを異なるファイルシステムへ移動した場合、例えば一部のUSBメモリやDVDなどのメディアに移動した場合、ADSの情報が失われてしまって伝播されなくなるケースがあります。この点も後から重要になってきます。

こちらは少し脱線した補足となるんですが、ADSという領域には情報だけではなくて、バイナリデータでさえも埋め込むことができます。例えばこちらの例のように、テキストファイルのADSの領域に電卓の実行ファイルを簡単なコマンドで埋め込むことができます。

そして、ADSの中のEXEを直接呼び出せば、この図のようにADSの中から直接実行ファイルを実行することも可能です。このようにユーザーから実行ファイルの存在が見えなくなってしまうので、マルウェアの隠ぺい場所として昔から悪用されてきました。

ファイルの取得経路はADSに一部が記録される

話を戻しまして、Web経由で取得されたファイルであるとシステムが認識できる仕組みですが、まさにこのADSという領域が利用されていまして、ブラウザやメールを経由して取得されたという情報はADS……詳しくは、「Zone.Identifier」という項目に記録されます。この情報を特に指して「Mark of the Web」と呼びます。

Mark of the Webの有無に関しては、ファイルのプロパティ情報から確認することができまして、その旨が記述されたものがプロパティ情報の下部分に表示されます。なお、ADS情報が追加されたとしても、ファイルサイズには影響はないんですが、「ディスク上のサイズ」という項目はADSのサイズ分増加して見えます。

続いて、ZIPやRARなど、別のファイルを中に内包できるようなタイプの種類は、通称「コンテナファイル」と呼ばれることがあります。その中でも、一部の種類のコンテナファイルは、独立したファイルシステムを内部に持つタイプが存在します。例えば、「ISO」や「IMG」はDVDなどのデータを仮想ディスクとして扱うファイル形式で、それから「VHD」や「VHDX」は、仮想ハードディスクのファイル形式となります。

つまり、独立したファイルシステムを持つコンテナファイルにマクロ付きOffice文書ファイルを内包させることによって、前述の通りADSのところが失われてしまって、マクロブロックの機能が迂回できることになるわけです。そのため、この手口が最近になって特に注目されています。

実際にコンテナファイルでADSが失われるかを検証

では、本当に、コンテナファイルでADSが失われてしまうのか。ここでは私が実際に行った簡単な検証結果でご説明します。まず、マクロ付きExcelファイルであるマルウェアを用意しますが、当然この時点ではファイルを開いてもマクロがブロックされます。この時点のプロパティ情報を見てみましょう。ちゃんとADS、Mark of the Webの情報が存在します。

続いて、イメージファイルであるISO形式のファイルを作成して、その中にExcelファイルを同梱します。そのISOファイルをメールやWeb経由で取得すると、当然そのISOファイルには、プロパティを見るとADSの情報が付与されています。

次に、そのISOファイルをダブルクリックすると、「このファイルを開きますか?」というメッセージボックスが表示されて、「開く」を押すとDVDとして認識されて、自動的にマウントされます。このように、ISOファイルはダブルクリックで簡単に開けてしまう点が注意ポイントです。

マウントされたドライブの中にあるファイルのプロパティ情報を見てみましょう。そうすると、これまであったADS情報は伝播されておらず、途中で失われてしまったことがわかります。

当然、このマクロ付きExcelファイルを開いて、「コンテンツの有効化」というボタンを押すと、これまでとは違ってマクロが動いて、すぐにマルウェアに感染してしまいました。つまり当初ブロックされていたマクロが、コンテナファイルを間に介すことでブロックされなくなってしまったということがわかります。

念のため、今回使用したそれぞれのコンテナファイルにおいて、どのようなファイルシステムになっているのをツールで調べたところ、Windowsがあるメインドライブに関してはこのようにNTFSなんですが、ISO形式ではCDFS、VHD形式ではFAT32というファイルシステムであることがわかります(フォーマット状態によっては異なるファイルシステムになる場合もあります)。

このように、一部のコンテナファイルは独立したファイルシステムを持っているので、実際にMark of the Web情報が失われるということが、本検証においても、目で見てご理解いただけたかと思います。

なお、繰り返しとなりますが、Windowsではこれらの形式のファイルをダブルクリックすると、簡単に開けてしまうというところに注意が必要です。

マクロのブロック機能はターニングポイント

その他の見逃しがちな観点もお伝えしておきましょう。圧縮展開ソフトの中には、ZIPなどの圧縮ファイルの展開時に、ADSを伝播しないものも存在します。国内で使用されている可能性がある複数の圧縮展開ソフトを実際に手元で検証したところ、7種類中3種類が圧縮ファイルの展開時にADSを伝播しないことを確認しました。

そのため、ZIPなどの圧縮形式のファイルも、ADSを伝播しない可能性を潜在的に含むコンテナファイルであると認識しておいたほうが安全です。

対応している例として、「7-Zip」では、バージョン22以降でADSの伝播に対応しているんですが、デフォルトでは無効ですので、あらかじめ設定を変更する必要がある点に注意が必要です。

なお、私の検証では、対応済みであるバージョン22以降において設定を有効にしていたとしても、なぜか右クリックメニューを経由して展開した場合に限り、引き続きADSが伝播しないという現象が確認されたため、こうしたケースが他にある可能性についても引き続き注意が必要となります。

補足情報となりますが、ファイルに記録されたMark of the Webの情報は、ツールを使用すれば、その存在や内容の詳細を確認することができますので、併せてお伝えしておきます。

PowerShellやコマンドプロンプトの他、GUIでわかりやすく閲覧できるフリーツール、それから、ディスクに直接アクセスできるディスクエディタを使用すれば、ADSの生データを直接参照することもできます。ADSにはどこからダウンロードされたかを示すURLなども含まれますので、抽出することが可能となります。

以上、いろいろお伝えしてきましたが、Microsoftが施したセキュリティ対策が迂回できる事実は、決して該当の対策が無意味であることを示しているわけではありません。マクロのブロックは、攻撃者にとっては痛手でして、脅威やリスクを大きく軽減する非常に良い状況変化と言えます。しかし同時に、新たな攻撃手法へシフトするようなターニングポイントにもなり得ることを忘れてはなりません。

今後台頭してくる脅威に備えて

最後に本日のまとめになりますが、RDPやVPN機器の脆弱性だけでなく、メール添付した経由で最終的にランサムウェアに感染するケースがあることも知っておきましょう。そして、アイコンやプロパティ情報など、見える情報だけで判断しないようにしてください。

一部のコンテナファイルを経由されると、マクロブロックが迂回されて、マクロの脅威は引き続き存在することを理解しておくのも大切です。

そうしたことから、今後はコンテナファイルを用いた攻撃に注意が必要です。加えて、圧縮ソフトの中には、ZIPなどの展開時にADSを伝播しないというケースがあることも想定しておきましょう。

以上のような点を念頭に置いて、今後台頭してくる可能性のあるこうした脅威へ、より一層注意してほしいと思います。

以上となりますが、あらためまして、今回ご紹介したようなさまざまなマルウェア・ランサムウェアの攻撃手口は、『マルウェアの教科書』にて、他にも多数ご紹介しております。全472ページのボリュームですが、図やイラストでわかりやすく解説しておりますので、初心者の方にも、広く読んでいただける本となっております。ご興味が湧きましたら、ぜひお手に取ってご覧ください。

本日はご清聴いただきましてありがとうございました。