ファイルレスマルウェアとは
「ファイルレス」は「ファイルがない(fileless)」ことを意味します。「ファイルレスマルウェア」といえば、一般にはEXEファイルなどの実行ファイル形式ではないマルウェアを指すことが多いでしょう。かつてはファイルを利用するマルウェアが多かったことからきた表現ですが、現在はこうしたファイルレスマルウェアやそのテクニックは特別なものではなく、サイバー犯罪や標的型攻撃など、さまざまなサイバー攻撃に利用されています。ファイルレスマルウェアの様態は大きく分けて以下の2つです。
OS組み込みツールの悪用
社内の管理者は、サーバーやシステムの管理に、OSに元から組み込まれているPowerShellやWMIなどのツールを利用します。これらは攻撃者にとっても有用で、侵入時の内部探索や感染拡大に十分な機能を持っています。
OS組み込みツールを悪用した攻撃の例として、弊社脅威インテリジェンス調査チームUnit 42が報告した政府機関を標的とした攻撃があげられます。この攻撃では、OS組み込みのスクリプト言語環境であるPowerShellをベースとするバックドアが利用されていました。このバックドアは、「DNSトンネリング」という複雑な通信方式を使い、遠隔にいる攻撃者から命令を受け取って実行していました。
ばらまき型の脅威であるEmotetの攻撃チェーンはも、OS組み込みツールによるファイルレスマルウェアによりマルウェアのインストールや起動過程を追跡しにくくしています。Emotetの場合、メール添付のWordファイルを開いてマクロを実行すると、VBScriptとPowerShellスクリプトを経由してEmotetの本体であるDLLファイルがダウンロードされて動作を開始します。したがって、起点のWordファイルと終点のEmotetファイルはディスク上に残りますが、途中のインストールや起動の過程はOS組み込みのツールにより特定しづらく、Wordファイルを調査しないかぎり、突然Emotetに感染したように見えてしまいます。
このほか、システム管理の自動化や省力化を行う組み込みツール、Windows Management Instrumentation(WMI)を利用する攻撃も確認されています。ある国内企業に対する標的型攻撃の事例では、70種類以上のコマンドを実装したVBScriptが、WMIを利用して侵害対象組織内の探索と感染拡大を行っていました。こうした事例では、OS標準搭載機能以外の不審プロセスが被害端末上では実行されません。したがって、利用者やセキュリティチームが調査を行ったとき、根本原因特定が遅れる可能性があります。これらのケースの場合、ファイルが存在しているためファイルレスマルウェアとは呼べませんが、組み込み機能だけで十分複雑なことができることがわかります。
メモリ内で完結
脆弱性を悪用してネットワークからマルウェアやシェルコードなどの不正コードをシステム上で直接実行する場合も、ディスク上にファイルが存在しないので「ファイルレス」もしくは「メモリーオンリーマルウェア」と呼ばれます。SQLSlammerワームやブラウザの脆弱性からのランサムウェア感染などが古くから見られる実例です。図1がその概要です。
- 正規プログラムAが起動され、メモリ上でプロセスAとして稼働している
- メモリ内のプロセスAに対し、攻撃者が脆弱性を突いてネットワークから攻撃する
- マルウェアなどの不正なコードをメモリ上に直接呼び出して実行する
この場合、ディスク上には正規ソフトウェアのプログラムAのみが存在し、マルウェアやその痕跡はありません。このため検査しても何も見つかりません。メモリ上のマルウェアや不正コードは、コンピュータが停止もしくは再起動するまで活動を継続できます。
ファイルレスマルウェアの実際
例示した2つの様態のファイルレスマルウェアで、前者はオフィスドキュメントなど、PowerShellやWMIを呼び出すなんらかのファイルが存在しています。後者もファイルは存在しませんが、そのままではコンピュータの再起動後に活動を継続できないので、ファイルを書き込んだり、レジストリに変更を加えたりして、侵害端末上で永続的に活動できるようにすることが少なくありません。
たとえば上で説明したEmotetのように、現在の攻撃者はさまざまなコンポーネントやテクニックを組み合わせ、目的達成のための一連の攻撃チェーンを作り上げています。そしてそのチェーンの一部分に、ファイルレスマルウェアやその技術が利用されるのです。ですから一見「悪意のあるファイルが見当たらない」ように見えても実際にはなんらかのファイルや痕跡が残ることが多くなります。
ファイルレスマルウェアを利用する目的
攻撃者がファイルレスマルウェアを利用する目的は大きく分けて「検出回避」と「コストダウン」の2つです。
検出回避
いまの企業向け端末はそのほぼすべてにアンチウイルス製品が搭載されています。それら従来型アンチウイルス製品の基本機能は「ディスク上のファイルスキャンによるマルウェアとその痕跡の発見」です。ファイルレスの技術は、こうしたアンチウイルス製品による検出回避を狙って利用されます。
また、マルウェアの有無を調査をする際は、タスクマネージャによる不審プロセスの探索がよく行われます。そのさい、正規プログラムに紛れ込み、OSに標準で搭載されている機能で目的を達成できれば、タスクマネージャからは発見しづらくなり、攻撃者に有利です。
コストダウン
マクロやスクリプトはテキストベースです。サイズが小さく、簡単に変更でき、本番にもそのまま利用できます。一方、ディスク上でファイル実体をもつEXEなどの実行ファイルはバイナリです。ファイルサイズは大きく、変更やリリースにはそれなりの手間がかかります(ただしツールを使って既知のマルウェアを未知のものに見せかけることは容易です)。PowerShellやマクロには、実行ファイル形式にはない技術的制約もありますが、攻撃チェーンの適切なポイントでファイルレスを選べば、攻撃の手間と時間を大きく減らせます。
対策
「検出回避」と「コストダウン」により、検出しづらく、実行しやすくなったファイルレスマルウェアへの対策はどうあるべきでしょうか。結論からいえば、ファイルやネットワークトラフィックなど、ポイントごとに独立した対策では不十分で、「可視化」、「振る舞い検出」、「セキュリティ運用」の3つの要件を満たし、攻撃チェーン全体で包括的に対策する必要があります。それぞれの要件が必要である理由と満たすべき要件について以下に解説します。
可視化
攻撃者は攻撃チェーンのさまざまなポイントでファイルレス技術による検出回避を試みます。そのためにつながりが見えづらくなった攻撃の痕跡をつなぎあわせ、攻撃チェーンの全体像を掴むには、ネットワーク側、エンドポイント側の双方が、以下の要件を満たす包括的可視化を行う必要があります。
- ネットワーク
- ネットワークトラフィック内のユーザー、アプリケーション、データ、デバイスの可視化
- インターネット境界にとどまらないLAN・WANトラフィックの可視化(ファイルレスマルウェアは侵害後の利用が多い)
- エンドポイント
- エンドポイント上のユーザー、プロセス、ファイル、レジストリ、イベント、アクティビティの可視化
- 正規プログラムを含めたアクティビティの可視化(OS標準搭載機能が利用されるため既知マルウェアや未知ファイルの検出だけでは不十分)
振る舞い検出
従来のセキュリティ対策は「シグネチャ」や、ファイルハッシュ値、IPアドレス、ドメイン名などの「痕跡情報(IoC)」を利用して侵害の有無を確認していました。たとえば「アンチウイルスが検出すべきファイルの存在の有無」や「ログ内のブラックリスト入りドメインへのアクセス履歴の有無」を調べる、といった運用です。ところが昨今のファイルレス技術では、こうしたシグネチャやIoCによる検出を意図的に回避可能なので、侵害の発見が難しくなっています。
そこで、ファイルやドメインのような攻撃者が簡単に変えたり捨てたりできる痕跡を使う検出ではなく、攻撃者やマルウェアが攻撃チェーン全体でどのように振る舞うのかという、より普遍的な特徴で検出することが求められます。
たとえば、多くの攻撃チェーンでは、コンピュータの再起動後もマルウェアが実行されるように、Windowsのサービスやレジストリの変更が観測されます。その際、変更された値をブラックリストに照らして検出するのではなく、「システムの設定改ざんを試みた」という「疑わしい振る舞い」自体を検出できるようにするのです。
こうした実際の攻撃から観察された攻撃者の行動や手口や利用される技術、その対策をまとめた著名なフレームワークに MITRE ATT&CK® フレームワークがあります。ファイルレスマルウェアによる回避型攻撃を振る舞いから検出するには、従来のシグネチャやIoCを使うセキュリティ対策に加えて、こうしたフレームワークに対応しているEDR(Endpoint Detection and Response)やNDR(Network Detection and Response)の機能が必要です。
セキュリティ運用
攻撃チェーンはさまざまなポイントに少しずつその痕跡を残します。そして、それぞれのポイントごとに独立して情報を収集する管理ツールやセキュリティ製品は、そのポイントが検出したデータのみを持っています。この結果、一連の攻撃チェーンの痕跡情報は、各ポイントに分散して存在することになります。有効な対策を打つには、これらの分散した情報をつなぎ合わせ、「可視化」を実現し、可視化した情報をもとに「振る舞い」を検出しなければなりません。
例として、ネットワークから脆弱性を悪用され、ある端末上でマルウェアが動作した場合を考えてみましょう。その場合、以下のような場所に痕跡が分散して存在することが多いでしょう。
- ネットワーク上のアクティビティ: ファイアウォール、IPS、NDR
- 端末上のアクティビティ: OSイベントログ、アンチウイルス、EDR
- ユーザー認証情報: 認証サーバー(Active Directory やRADIUSなど) のログ
分散した情報をもとに個別に対応すると、時間がかかり、全体像がつかみづらく、本当に対応が必要な脅威を見逃しやすくなります。迅速な対応と効率化には、必要な情報を各ポイントから取捨選択し、意味をもつひとまとまりの攻撃チェーンを再構成する必要があります。その実現には、収集データの集約から相関分析、自動化、機械学習、脅威インテリジェンスからの攻撃者やマルウェアの振る舞い検出にいたる一連のフローを、一気通貫で行える「セキュリティ運用」の体制づくりが求められます。
こうしたセキュリティ運用の体制づくりは、SIEMを利用してじっくり時間をかけて社内で構築することも、すべての機能が統合されたXDR(Extended Detection and Response)プラットフォームを利用する方法を取ることもできます。
まとめ
ファイルレスであることそのものは新しい考え方や技術ではありません。PowerShellやWMIだけでなく、マクロやシェルスクリプト、バッチファイルを経由したOS組み込み機能の悪用は古くから行われています。ネットワーク経由のエクスプロイトによる不正コード実行も、これと同じくらい長い歴史があります。そのなかでもファイルレスマルウェアがいまも注目されている理由の1つは、攻撃チェーンに組み込まれることで従来型ポイント対策製品の検出を逃れやすくなるからです。防御側は、ファイルレス技術で検出を回避する攻撃の攻撃チェーン全体を可視化し、得られた情報を集約して、全体像を把握して対応していく必要があります。