更新日:2020/02/01

    新しいValueの創出に資するセキュリティR&D
    攻撃の痕跡に着目するサイバー攻撃対策の最前線
    NTTセキュアプラットフォーム研究所

    ※記事本文中の研究所名が、執筆・取材時の旧研究所名の場合がございます。

    岩村 誠(いわむら まこと)/鐘本 楊(かねもと よう)/黒米 祐馬(くろごめ ゆうま)/青木 一史(あおき かずふみ)/川古谷 裕平(かわこや ゆうへい)/折原 慎吾(おりはら しんご)/三好 潤(みよし じゅん)

    エンドポイント防御の現状

    企業をねらうサイバー攻撃や、そこで用いられるマルウェア(悪性なソフトウェア)は日々高度化しており、未然に攻撃の侵入を防ぐことが難しくなってきています。そうした中、マルウェアによる侵入を許してしまうことは前提とし、侵入後の対処を考慮したEDR(Endpoint Detection and Response)と呼ばれる技術が注目を集めています。
    従来のセキュリティ製品は、マルウェアが実行される前にその外見上の特徴(マルウェアの実行ファイルに含まれるパターン等)をルールとして検知することで感染を未然に防いでいました。しかし、昨今のサイバー攻撃では、その外見上の特徴を変化させ、セキュリティ製品による検知を逃れるマルウェアが用いられるようになってきました。マルウェアの外見上の特徴は、比較的簡単に変化させることが可能です。一方で、感染後の振る舞いはマルウェアが行いたいことと密接に関係しており、外見上の特徴と比較して変化させることが難しいと考えられています。現在注目を集めているEDRは、マルウェアが動き出した後の振る舞いや、それらが残す痕跡を検出することで、こうしたサイバー攻撃に対抗しようとしています。
    マルウェアに感染した際に残る痕跡を検出するルールはIOC(Indicator Of Compromise)と呼ばれ、EDR製品によっては利用者が独自につくったIOC(カスタムIOC)によって、マルウェア感染を検知することが可能になっています。以下では、マルウェア感染の痕跡とそれを検出するIOCの生成方法について解説します。

    マルウェア感染の痕跡とその検出

    ここで、ある端末にマルウェアが感染した際に“mal_a.txt”という名前のファイルが痕跡として残ったとしましょう。この痕跡を検出するには、ファイル名が“mal_a.txt”というIOCを用意すれば良さそうです。ただ、同じマルウェアがほかの端末に感染した際にはファイル名が“mal_b.txt”となる場合、元のIOCでは検出できなくなってしまいます。そこで少し工夫をして、ファイル名が“*.txt”(*は任意の文字列)というIOCを用意したとします。すると“mal_a.txt”も“mal_b.txt”も、もしかすると今後出てくるかもしれないほかの痕跡についてもカバーできそうです。ただ、EDRで監視している端末ではマルウェアではない通常のアプリケーションも動いています。もし、ある通常のアプリケーションが“leg.txt”というファイルをつくった場合、“*.txt”というIOCではそのファイルをマルウェアの痕跡として検出してしまいます。従来技術が着目する外見上の特徴よりは変化しにくくなったとはいえ、IOCにも痕跡の変化に追随できるようにカバー率を上げつつ、誤検出を起こさない表現が求められます。
    もう1点、IOCに求められることを考えるにあたって考慮しておくべきことがあります。実際にIOCでマルウェアへの感染が発覚したとしましょう。その後の対策の多くはセキュリティ技術者、つまり人間に委ねられることになります。マルウェアはどういった経路で侵入してきたのか、機密情報を外部に送信していないか、ほかに感染している端末はないか、これらを残されたログなどから解明することになります。時には、IOCが検知したものが何であるかを把握し、検知したIOCを改良してほかの端末を検査する必要性も出てくるでしょう。そのときに必要になるのは、人間が見て解釈しやすいIOCです。ある種の機械学習ではその検知基準が非常に複雑で、改良することはおろか、理解することすら困難なアルゴリズムも存在します。一連の作業フローの中に人間が存在しているセキュリティの現場では、IOCの解釈性も重要になってきます。

    IOCの自動生成

    NTTセキュアプラットフォーム研究所では、さまざまな解析妨害機能を持ったマルウェアに対しても、その振る舞いを網羅的に抽出するマルウェア解析技術の研究開発に取り組んでいます。ここで紹介するIOCの自動生成技術(1)は、このマルウェア解析技術により抽出された挙動ログを入力として、高い検出精度とカバー率、解釈性を兼ね備えたIOCの生成を実現しています。具体的には以下の手順によりIOCを生成します(図1)。

    1. マルウェアの収集・選定:IOCによる監視を実施する環境に合わせたマルウェアを収集・選定します。
    2. マルウェア解析技術により挙動ログを抽出:マルウェア解析専用の仮想環境にてマルウェアを解析し挙動ログを抽出します。これまで培ってきたマルウェア解析技術はここで活用されています。
    3. マルウェアの挙動ログから複数の抽象度のIOC候補を生成:IOCの候補となり得るさまざまな抽象度の正規表現を、過去のマルウェア解析ノウハウ等から生成します。
    4. 検出精度・解釈の容易さを踏まえた最適なIOCセットの算出:前述のIOC候補について、正規ソフトウェアおよびマルウェアの挙動ログを基に、検出精度・解釈の容易さを踏まえ、各マルウェアファミリに対応する最適なIOCを算出します。

    こうして生成されたIOCを市中のEDR製品に対して追加投入することで、これまで発見が難しかったマルウェア感染端末を検知することができるようになります(図2)。現在は1週間当り約1万検体を収集・選定し、それらのマルウェアの解析結果から生成したIOCのNTTグループ内への配信を始めています。今後はスクリプト形式など、実行ファイル形式以外のマルウェアへの対応を進めていきます。

    図1 IOC生成手順
    図1 IOC生成手順
    図2 カスタムIOCの活用
    図2 カスタムIOCの活用

    公開サーバ防御の現状

    続いて、ここからは話題が変わり、外部公開サーバに対するサイバー攻撃対策について解説します。
    新たな脆弱性がサーバやアプリケーションで発見されるたび、その脆弱性をねらうサイバー攻撃が発生します。サーバやアプリケーションの脆弱性を悪用するサイバー攻撃は世界で1000万件/日を超える規模となりました。…

    ■参考文献

    1. (1)Y.Kurogome, Y.Otsuki, Y.Kawakoya, M.Iwamura, S.Hayashi, T.Mori, and K.Sen: “EIGER: Automated IOC Generation for Accurate and Interpretable Endpoint Malware Detection, ”ACSAC 2019, San Juan, U.S.A., Dec.2019.

    関連するコンテンツ