Flatt Security Blog

株式会社Flatt SecurityのBlogです。

新サービス「アンチウイルスソフト性能検証」を技術的観点から紹介します

f:id:flattsecurity:20200427172837p:plain こんにちは。株式会社Flatt Security セキュリティエンジニアのおもち(@0xomochi)です。

本記事では、弊社が提供する「アンチウイルスソフト性能検証サービス」について、主にサービスの必要性や技術的背景について説明します。

アンチウイルスソフト性能検証サービスとは

サービス概要

アンチウイルスソフト性能検証サービスとは、弊社が独自に用意したデータセットを用いてアンチウイルスソフトの検証を行うものです。マルウェアの検知率や正常ファイルの誤検知率、リソース消費、検証過程で見つかったバグ、検証に用いたデータセット情報などをまとめ、詳細な報告レポートとして提供します。検証終了後も検証内容に関するサポートをメールで行う予定です。

サービスの必要性・背景

近年、アンチウイルスソフトは、企業単位だけでなく、個人のPCにも導入されていることが多くなっています。皆さんが今使っているアンチウイルスソフトは、数ある製品の中からどのように選びましたか。決め手となった要素は何でしょうか。中には、なんとなく名前を聞いたことがあるから、といった理由で選んでいる方もいるかもしれません。

多くの方が判断材料とするであろう、アンチウイルスソフトマルウェア検知率は、アンチウイルスベンダーが製品ごとにそれぞれ公表している場合があります。この「マルウェア検知率は◯%」という数字に疑問を抱いたことはないでしょうか。

マルウェアとは、不正かつ有害な動作を行う意図で作成された悪意のあるソフトウェアや悪質なコードの総称であり、ワームやウイルス、トロイ、ランサムウェアなど複数に分類されます。つまり、ベンダーが公表している検知率というのは、ワームの検知率、ウイルスの検知率、トロイの検知率...それら全ての平均値ということになります。マルウェアの種類によって検知率がまちまちの可能性もあり、例えばトロイの検知率は90%台と非常に高いが、ワームの検知率は60%台であるというようなこともないとは言えません。

ここで、筆者が2018年に行った「難読化や暗号化、圧縮処理などが施されたマルウェアの検知率」についての実験を紹介します。

この実験では、パッカーと呼ばれる、ファイルの圧縮や難読化、暗号化を行うソフトウェアを用いて、圧縮・難読化・暗号化のいずれも施されていないマルウェアをパック処理し、パック処理済みマルウェアのデータセットを作成しました。以下では、簡単のため、難読化や暗号化、圧縮処理などが施されたマルウェアのことを「パック処理済みマルウェア」と呼びます。データセット1と2は、どちらも、パック処理されていないマルウェア検体90検体と、その90検体を約20種類のパッカーを用いてパック処理した約2000検体から成ります。データセットを複数用意したのは、データセットによってマルウェア検知率に極端な偏りがないかを確認するためです。

まず、これらのデータセットを約70種類のアンチウイルスソフトで簡易スキャンを行いました。画像1は、それぞれのデータセットにおける、パック処理前後のマルウェア検知率の平均値の変化を表しています。いずれのデータセットにおいても、パック処理前のマルウェア検知率の平均は70%を超えていましたが、パック処理後はマルウェア検知率の平均が30%ほどに落ち込んでいます。このことから、パック処理がマルウェアの検知率に大きな影響を与える可能性があるということが分かりました。

f:id:flattsecurity:20200427171603p:plain
「パック処理前後のマルウェア検知率の平均値」画像1

では、アンチウイルスソフトを5つの製品に絞ってみるとどうなるでしょうか。製品A~Eの5製品を先ほどの約70製品の中からランダムに選び、パック処理前後の検知率を比較してみました。画像2がパック処理前のマルウェア検知率、画像3がパック処理後のマルウェア検知率を示したグラフです。製品ごとに差はあるものの、パック処理済みマルウェアの検知率が低くなる傾向があることが分かります。

f:id:flattsecurity:20200427171647p:plain
「製品ごとのパック処理前マルウェアの検知率」画像2

f:id:flattsecurity:20200427171833p:plain
「製品ごとのパック処理済みマルウェアの検知率」画像3

このように、「マルウェアの検知率」と一括りに言っても、データセットが異なれば値はまるで変わってしまいます。本サービスでは、一般にアンチウイルスソフトマルウェア検知率として扱われる検知率の平均値だけでなく、多種多様なデータセットを用いて多角的に検証を行います。アンチウイルスソフトをこれから導入しよう、と考えている企業にとって、検知率の平均値だけでなく、より細分化されたマルウェアの種類ごとの検知率も明らかにすることが、良き判断材料となるのではないでしょうか。

また、アンチウイルスのベンダーにとって、ソフトウェアを開発することと、その性能を検証することを切り離すことはできません。もちろん、社内テストは行われますが、第三者による客観的な検証が行われる方がソフトウェアの穴は少なくなります。本サービスでは、ベンダー向けに、検証を通じて判明したアンチウイルスソフト自体のバグや脆弱性についてレポートに記載します。また、本検証において、多種多様なデータを含むデータセットを用いることで、ブラックボックスであるマルウェア検知エンジンの挙動に特徴を見出す場合があります。検知エンジンの挙動が推測されることにより、それを利用して攻撃される恐れがあるため、本検証で検出した検知エンジンの特徴と挙動の予測可能性についても報告します。

マルウェア検知エンジン

製品ごとにマルウェア検知率に差が出るのは、マルウェアを検知するための核となる仕組みであるマルウェア検知エンジンの種類が異なるためです。では、マルウェア検知エンジンにはどのようなものがあるのでしょうか。以下で既存のアンチウイルスソフトによく用いられる検知エンジンの型を5つ紹介します。ただし、この5種類が現在世に出ているアンチウイルスソフトの検知エンジンに用いられているもの全てではありません。

  1. パターンマッチング型
    ほぼ全てのアンチウイルスソフトの検知エンジンに用いられている検知手法です。マルウェア検体の特徴的なコードやハッシュ値などを抽出しデータベース化したものと、対象のファイルのコードを比較し、マルウェアの特徴と一致するかどうかによって悪性か正常かを判定します。既知のマルウェアを検知するという点に関しては、最も効率的な検知手法ですが、データベース上に存在しない未知のマルウェアの検知はできない欠点があります。

  2. ヒューリスティック
    パターンマッチング型の欠点を補う手法として用いられているマルウェア検知手法です。人間が設定したルールに基づいて、判定対象のプログラムの活動内容が悪性か正常かの判定を行います。あらかじめ設定されたルールをベースとして判定を行うため、実際にマルウェア検体を入手していない、未知のマルウェアについても検知が可能です。一方で、検知のベースとなる人間が設定したルールが適切なものでない場合には、マルウェアの検知精度が低くなってしまうという問題があります。検知精度を向上させるためには、マルウェア検体の詳細な解析によって裏付けられた厳密なルール設定が重要となります。また、悪性と判定されたプログラムが真に悪性であると断言するためには、該当プログラムの解析が必要です。

  3. ジェネリック
    同一のマルウェアから派生した複数の亜種検体に共通する特徴を抽出することによって、既知の亜種と類似したマルウェアを検知する手法です。複数の亜種検体に共通する特徴を判定の基準としているため、パターンマッチング型では検知することができない、未知の亜種も検知することが可能です。ジェネリック型の検知エンジンによって検知されたマルウェアは、派生元のマルウェア検体名の末尾に「.GEN」がついた形で検知されます。ただし、ヒューリスティック型の検知手法と同様に、亜種検体であると判定されたプログラムが真に悪性であると断言するためには、実際に該当プログラムを解析する必要があるため、コストが大きくなってしまいます。

  4. サンドボックス
    判定対象のファイルを、サンドボックスと呼ばれる仮想環境内で動作させ、悪性か正常かを判定します。サンドボックス内で対象ファイルを動作させることにより、プロセス動作やシステム変更などの情報を取得し、不正な動作を行なっていないかを分析します。しかし、自身がサンドボックス内で解析されていることを検知し、動作を止めるような、サンドボックス回避型マルウェアについては、見落としが発生してしまう問題があります。一般に「振る舞い検知」と呼ばれている検知手法は、サンドボックス型のことを指します。

  5. 機械学習
    マルウェア検知エンジンに正常ファイルや悪性ファイルのデータセットを学習させることにより、未知の検体に対しても、ファイルやプロセスの特徴などからマルウェアか否かを判定することができます。パターンマッチング型の検知手法において課題となっていた、未知のマルウェアへの対応は可能ですが、検知エンジンにどのようなデータを学習させるかによって検知精度が大きく変動してしまうため、厳密なチューニングが必要です。また、 マルウェアであるにも関わらず悪性であると判定されない「False Negative」や、マルウェアではないが悪性ファイルであると判定されてしまう「False Positive」の問題も存在します。

アンチウイルスソフトの性能とは

では、性能の良いアンチウイルスソフトとはどのような条件を満たしたソフトウェアなのでしょうか。 本サービスでは、アンチウイルスソフトの性能を測る際に、主に以下の6つの点に着目しています。

  • マルウェアの検知率
  • マルウェアの種類(ワーム、ウイルス、トロイ...)ごとの検知率
  • 難読化や暗号化、圧縮処理などが施されたマルウェアの検知率
  • 正常ファイルの誤検知率
  • リソースの使用率
  • 他アプリケーションとの干渉

検証で明らかになること

本サービスでは、以下の6つの要素を明らかにし、詳細なレポートにまとめます。ただし、バグや脆弱性、検知エンジンの挙動の予測可能性については、アンチウイルスソフトのベンダーから検証依頼をいただいた自社製品についてのみ報告するものとします。

  1. マルウェアの種類ごとの検知率
  2. 正常ファイルの誤検知率
  3. 難読化や暗号化、圧縮処理などが施されたマルウェアの検知率
  4. リソースの消費率と他アプリケーションとの干渉
  5. バグや脆弱性
  6. マルウェア検知エンジンの挙動の予測可能性

サービスの特徴

本サービスは、アンチウイルスソフトに対するブラックボックスでの第三者検証です。

アンチウイルスソフト一つ一つに対応した検証環境

前述の通り、アンチウイルスソフトは製品ごとに異なるマルウェア検知エンジンを用いています。そのため、アンチウイルスソフトと一口に言っても中身は様々で、同じものはありません。ファイルのスキャン時にインターネットへの接続を必要とするものや動作環境が限られているものなど、条件が様々です。そのため、ご依頼いただく製品の特徴や比較検証のご要望により、検証環境が異なります。また、検証中に予想外のバグや他ソフトウェアによる干渉を受ける可能性もあり、それらが検証開始後にしか分からないという難しさもあります。本サービスでは、ご依頼ごとに経験や知見を活かし柔軟に対応いたします。

データセット

本検証では、多種多様なデータを含むデータセットを用います。データセットには、マルウェア検体と正常ファイルの両方を含んでおり、マルウェア検体数は1万検体以上です。なお、このデータセットは更新を続けているため、正確な検体数はご依頼時点のデータセットに含まれるものとなり、変動します。

マルウェア検体には、重大脅威として知名度の高いWannaCryやEmotetなどを含みます。出現日時の古いマルウェアだけでなく、新規のものも含まれます。また、データセット中のマルウェアの種類はワーム、ウイルス、トロイ、ランサムウェアなど、複数です。難読化や暗号化,圧縮処理などが施されたマルウェアの検知率を算出するため、該当のマルウェア検体も含みます。

ターゲット企業および受注形態

  1. アンチウイルスソフトのベンダー
    アンチウイルスソフトのリリースを控えているため、リリース前検証を依頼したい。」
    「同一のアンチウイルスソフトの異なる複数のバージョンについて検証を依頼したい。」
    「第三者検証を依頼したい。」
  2. アンチウイルスソフトの乗り換えや新製品の導入を検討中の企業
    「乗り換え・新製品の導入を検討しているため、どの製品が適しているのか判断するために複数製品の比較検証を依頼したい。」
  3. アンチウイルスソフトの販売代理店
    「代理販売を行う製品の特徴やセールスポイントが知りたいため、検証を依頼したい。」
    「どの製品を代理販売するかの判断材料にしたいため、複数製品の比較検証を依頼したい。」

弊社が想定しているターゲット企業とサービスの受注形態は主に上記のものですが、検証内容については、ご依頼に応じて柔軟に対応させていただきます。是非ご相談ください。

おわりに

本記事では、アンチウイルスソフト性能検証サービスの特徴やその背景技術について紹介しました。 本サービスの必要性と背景技術の面白さ・奥深さが少しでも伝われば幸いです。

なお、株式会社Flatt Securityでは本記事で紹介したアンチウイルスソフト性能検証サービスの他、専門のセキュリティエンジニアによる脆弱性診断サービスやセキュア開発コンサルティングサービス、セキュリティエンジニア育成サービスを提供しています。アンチウイルソフト性能検証や他のサービスに関して相談したいという場合は、ぜひ https://flatt.tech/contact のお問い合わせフォームよりご連絡ください。

また、脆弱性診断を始めとした各種業務を担っていただくセキュリティエンジニアも募集中です。こちらに関しても話を聞きたい方はお問い合わせフォームよりお気軽にご連絡ください。

最後までお読みくださり、ありがとうございました。