(57)【要約】      （修正有）【課題】コンピュータシステムに対するセキュリティ脅威の一つであるマルウェアが、未知マルウェアであっても検出を行なう方法、プログラム及び検出装置を提供する。【解決手段】検出装置１００は、通信ログを読み込み、通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出する間隔算出部３０１と、間隔算出部により組ごとに算出された時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出する検出部３０２と、を有する。【選択図】図３
2019070995.tif 000002
【特許請求の範囲】
【請求項１】
通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出し、
前記組ごとに算出した時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出することを含む、検出方法。
【請求項２】
前記時間間隔の規則性を、前記組ごとに算出した時間間隔の分布のエントロピーの大きさに基づいて検出する、請求項１に記載の検出方法。
【請求項３】
前記組ごとに時間間隔を算出する際に、組ごとに算出した各時間間隔の個数を計数し、
前記組ごとに、前記計数した各時間間隔の個数の総和に対する時間間隔ｔの個数の割合ｐ（ｔ）に基づいて、前記エントロピーを算出する、請求項２に記載の検出方法。
【請求項４】
前記エントロピーの大きさとして−ｐ（ｔ）ｌｏｇｂｐ（ｔ）についてのすべての時間間隔ｔに関する和に基づく値を算出する（ただし、ｂは対数関数ｌｏｇの底である。）、請求項３に記載の検出方法。
【請求項５】
前記時間間隔の規則性を、前記組ごとに算出した時間間隔が実質的に同一であるかどうかにより検出する、請求項１から請求項４のいずれか１項に記載の検出方法。
【請求項６】
前記時間間隔の規則性を、前記組ごとに算出した時間間隔が実質的に一定の範囲内で変動するかどうかにより検出する、請求項１から請求項５のいずれか１項に記載の検出方法。
【請求項７】
コンピュータに、
通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出し、
前記組ごとに算出した時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出させるための、検出プログラム。
【請求項８】
前記時間間隔の規則性の有無を、前記組ごとに算出した時間間隔の分布のエントロピーの大きさに基づいて検出する、請求項７に記載の検出プログラム。
【請求項９】
前記組ごとに時間間隔を算出する際に、組ごとに算出した各時間間隔の個数を計数し、
前記組ごとに、前記計数した各時間間隔の個数の総和に対する時間間隔ｔの個数の割合ｐ（ｔ）に基づいて、前記エントロピーを算出する、請求項８に記載の検出プログラム。
【請求項１０】
前記エントロピーの大きさとして−ｐ（ｔ）ｌｏｇｂｐ（ｔ）についてのすべての時間間隔ｔに関する和に基づく値を算出する（ただし、ｂは対数関数ｌｏｇの底である。）、請求項９に記載の検出プログラム。
【請求項１１】
前記時間間隔の規則性を、前記組ごとに算出した時間間隔が実質的に同一であるかどうかにより検出する、請求項７から請求項１０のいずれか１項に記載の検出プログラム。
【請求項１２】
前記時間間隔の規則性を、前記組ごとに算出した時間間隔が実質的に一定の範囲内で変動するかどうかにより検出する、請求項７から請求項１１のいずれか１項に記載の検出プログラム。
【請求項１３】
通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出する間隔算出部と、
前記間隔算出部により組ごとに算出された時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出する検出部と、
を有する検出装置。
【請求項１４】
前記検出部は、
前記間隔算出部により前記組ごとに算出された時間間隔の分布のエントロピーの大きさを算出するエントロピー算出部を有し、
前記エントロピー算出部により前記組ごとに算出されたエントロピーの大きさに基づいて前記時間間隔の規則性を検出する、請求項１３に記載の検出装置。
【請求項１５】
前記間隔算出部は、組ごとに算出した各時間間隔の個数を計数し、
前記エントロピー算出部は、前記組ごとに、前記計数した各時間間隔の個数の総和に対する時間間隔ｔの個数の割合ｐ（ｔ）に基づいて、前記エントロピーを算出する、請求項１４に記載の検出装置。
【請求項１６】
前記エントロピー算出部は、前記エントロピーとして−ｐ（ｔ）ｌｏｇｂｐ（ｔ）についてのすべての時間間隔ｔに関する和に基づく値を算出する（ただし、ｂは対数関数ｌｏｇの底である。）、請求項１５に記載の検出装置。
【請求項１７】
前記時間間隔の規則性を、前記間隔算出部が前記組ごとに算出した時間間隔が実質的に同一であるかどうかにより検出する、請求項１３から請求項１６のいずれか１項に記載の検出装置。
【請求項１８】
前記時間間隔の規則性を、前記間隔算出部が前記組ごとに算出した時間間隔が実質的に一定の範囲内で変動するかどうかにより検出する、請求項１３から請求項１７のいずれか１項に記載の検出装置。
【請求項１９】
前記間隔算出部は、ホワイトリストに含まれる識別情報を含む通信記録を除外し、前記時間間隔を算出する、請求項１３から請求項１８のいずれか１項に記載の検出装置。
【請求項２０】
前記間隔算出部は、通信元の識別情報および通信先の識別情報の組ごとに通信の時間間隔が所定の値以下の時間間隔を除外し、前記時間間隔を算出する、請求項１３から請求項１９のいずれか１項に記載の検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、セキュリティ脅威の検出方法、検出プログラムおよび検出装置に関する。
【背景技術】
【０００２】
コンピュータシステムのセキュリティ脅威の一つとしてマルウェアが知られている（例えば、特許文献１参照。）。マルウェアがユーザのコンピュータ内で動作すると、例えばユーザのコンピュータが当該マルウェアを介して外部の不正攻撃者により操作自在となり、ユーザのコンピュータに記憶されているデータを流出させたり、ユーザのコンピュータを介して他のコンピュータを攻撃させたりするなど、ユーザのコンピュータに不正な動作を行なわせてしまう。
【０００３】
また、未知のマルウェアが日々出現しているため、ユーザのコンピュータに格納されているファイルをスキャンしても、未知のマルウェアの検出がされるまで数か月かかってしまう場合があり、手遅れとなってしまう。そもそも最近では、ファイルレス（ｆｉｌｅ  ｌｅｓｓ）のマルウェアも出現しており、ファイルのスキャンによってマルウェアを検出することは困難になってきている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許公報８，５７８，４９３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以上に例示した課題を解決することを目的の一つとして、本開示では、未知マルウェアであっても検出を行なうことができる検出方法、検出プログラムおよび検出装置を提供する。
【課題を解決するための手段】
【０００６】
本開示の一態様に係る検出方法は、通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出し、組ごとに算出した時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出することを含む。
【０００７】
本開示の一態様に係る検出プログラムは、コンピュータに、通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出し、組ごとに算出した時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出させるための、検出プログラムである。
【０００８】
本開示の一態様に係る検出装置は、通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出する間隔算出部と、間隔算出部により組ごとに算出された時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出する検出部と、を備える。
【発明の効果】
【０００９】
本開示によれば、未知マルウェアであっても検出を行なうことができる。
【図面の簡単な説明】
【００１０】
【図１】本開示の一実施形態に係る検出装置が使用される全体システムの構成の一例図である。
【図２】本開示の一実施形態に係る検出装置が読み込む通信ログの一例図である。
【図３】本開示の一実施形態に係る検出装置の機能ブロック図の一例図である。
【図４】本開示の一実施形態に係る検出装置が、時間間隔を算出するために使用するデータ構造の一例と、通信ログの読み込みにより当該データ構造が変化する様子の一例と、を示す図である。
【図５】本開示の一実施形態に係る検出装置の処理のフローチャートの一例図である。
【図６】本開示の一実施形態に係る検出装置が、時間間隔の規則性を検出するために使用するデータ構造の一例図である。
【図７】本開示の一実施形態に係る検出装置の処理のフローチャートの一例図である。
【図８】本開示の一実施形態に係る検出装置の全体処理のフローチャートの一例図である。
【図９】本開示の一実施形態に係る検出装置を実現する計算機の構成の一例図である。
【図１０】本開示の一実施形態に係る検出装置の機能ブロック図の一例図である。
【図１１】本開示の一実施形態に係る検出装置の機能ブロック図の一例図である。
【図１２】本開示の一実施形態に係る検出装置の処理のフローチャートの一例図である。
【図１３】実際の通信ログに基づいて作成したエントロピー分布のヒストグラムである。
【図１４】実際の通信ログに基づいて、通信の時間間隔のエントロピーと通信回数とをプロットしたグラフである。
【発明を実施するための形態】
【００１１】
（全体構成）
図１は、本開示の一実施形態に係る検出装置を含む全体システムの構成の一例である。全体システム１は、ネットワークＮＷと、クラウドネットワークＣＬと、ユーザのコンピュータＡ（２）と、ユーザのコンピュータＢ（３）と、ユーザのコンピュータＣ（４）攻撃者４１のコンピュータ５とを含む。なお、コンピュータＡ（２）、コンピュータＢ（３）およびコンピュータＣ（４）のユーザは同じであってもよいし、異なっていてもよい。
【００１２】
ネットワークＮＷとクラウドネットワークＣＬとは、一体のネットワークであってもよく、例えば、ネットワークＮＷとクラウドネットワークＣＬとによりインターネットを構成していてもよい。あるいは、クラウドネットワークＣＬがインターネットを構成していていてもよく、この場合には、ネットワークＮＷは、コンピュータＡ（２）およびコンピュータＢ（３）が設置されている組織内のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよい。
【００１３】
ネットワークＮＷとクラウドネットワークＣＬとには、多数のコンピュータが接続され得る。図１においては、コンピュータＡ（２）は、ネットワークＮＷに接続され、コンピュータＢ（３）は、コンピュータＡ（２）を介してネットワークＮＷに接続される。コンピュータＣ（４）は、コンピュータＢ（３）に接続され、コンピュータＣ（４）は、コンピュータＢ（３）およびコンピュータＡ（２）を介してネットワークＮＷに接続される。また、不正なプログラムを含むマルウェアを、コンピュータＡ（２）やコンピュータＢ（３）に実行させ不正な動作をさせようと狙っている攻撃者４１のコンピュータ５が、図１においてはクラウドネットワークＣＬに接続されている。なお、攻撃者４１が、コンピュータＡ（２）またはコンピュータＢ（３）が設置されている組織内に存在する場合には、攻撃者４１のコンピュータ５は、ネットワークＮＷに直接接続されている場合もあり得る。また、コンピュータＣ（４）がコンピュータＢ（３）に接続される前にマルウェアに感染し、コンピュータＢ（３）に接続される場合もあり得る。
【００１４】
図１において、攻撃者４１がコンピュータＡ（２）およびコンピュータＢ（３）の少なくとも一方にマルウェアを実行させた場合、また、コンピュータＣ（４）にすでにマルウェアに感染しマルウェアが実行される場合、そのマルウェアはコンピュータ５と通信を行なうことを想定する。別言すれば、コンピュータＡ（２）やコンピュータＢ（３）、コンピュータＣ（４）がマルウェアを実行すると、マルウェアは、その存在を攻撃者４１のコンピュータ５に知らせ、あるいは、不正な指令を受信するために、攻撃者４１のコンピュータ５に所定のデータを送信することを想定する。このような想定下において、マルウェアによるデータの送信を「ビーコン」という場合がある。
【００１５】
コンピュータＡ（２）およびコンピュータＢ（３）の少なくとも一台には、開示の一実施形態に係る検出装置１００−１および１００−２が備えられていてもよい。図示はされていないが、コンピュータＣ（４）にも検出装置が備えられていてもよい。あるいは、コンピュータＡ（２）およびコンピュータＢ（３）の外部に検出装置１００−３が備えられていてもよい（以後、検出装置１００−１、検出装置１００−２および検出装置１００−３を総称して検出装置１００と記す場合がある。）。
【００１６】
検出装置１００は、コンピュータＡ（２）およびコンピュータＢ（３）の少なくとも１台に備えられている場合には、コンピュータＡ（２）およびコンピュータＢ（３）の少なくとも１台の内部で動作するプログラムとして実現することが可能である。あるいは、検出装置１００は、コンピュータＡ（２）およびコンピュータＢ（３）の少なくとも１台のハードウェアの一部となっていてもよい。検出装置１００が、コンピュータＡ（２）、コンピュータＢ（３）およびコンピュータＣ（４）の外部に備えられている場合には、独立した装置として実現することが可能であり、また、コンピュータを検出装置１００として動作させるためのプログラムを当該コンピュータに動作させることによっても実現可能である。
【００１７】
また、コンピュータＡ（２）およびコンピュータＢ（３）のそれぞれは、通信ログＬ１およびＬ２を記憶することができる。ここでいう通信ログは、通信記録の集合である。通信記録は、通信日時、当該通信の通信元（送信元）の識別情報および通信先（送信先）の識別情報を含む情報である。通信ログの通信記録は、通信日時により順序付けることができる。また、短時間に同じ通信元から通信先に複数回の通信が行われた場合、同じ内容の通信記録が通信ログに含まれる場合もあり得る。
【００１８】
コンピュータＢ（３）が、ネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータやコンピュータＣ（４）へデータを送信すると、通信ログＬ２には、データの送信日時を通信日時とし、コンピュータＢ（３）の識別情報を通信元の識別情報とし、ネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータやコンピュータＣ（４）の識別情報であって、コンピュータＢ（３）のデータを受信するコンピュータの識別情報を通信先として含む通信記録が通信ログＬ２に追加される。また、逆に、ネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータやコンピュータＣ（４）が送信したデータをコンピュータＢ（３）が受信すると、データの受信日時を通信日時とし、コンピュータＢ（３）が受信したデータを送信したネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータやコンピュータＣ（４）の識別情報を通信元の識別情報とし、コンピュータＢ（３）の識別情報を通信先の識別情報として含む通信記録が通信ログＬ２に追加される。
【００１９】
同様に、コンピュータＡ（２）を通信元または通信先とする通信の通信記録が通信ログＬ１に追加される。また、コンピュータＢ（３）やコンピュータＣ（４）とネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータとがコンピュータＡ（２）を経由してデータの送受信を行なうとすると、当該送受信の通信記録が通信ログＬ１に記録される。例えば、コンピュータＢ（３）が、ネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータへデータを送信すると、通信ログＬ１には、コンピュータＢ（３）の識別情報を通信元の識別情報とし、ネットワークＮＷまたはクラウドネットワークＣＬに接続されたコンピュータの識別情報であって、コンピュータＢ（３）のデータを受信するコンピュータの識別情報を通信先とする通信記録が通信ログＬ１に追加される。この場合、通信日時は、コンピュータＡ（２）がコンピュータＢ（３）からデータを受信した日時およびコンピュータＡ（２）がコンピュータＢ（３）から受信したデータを、ネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータへデータを送信した日時の少なくとも一方となる（なお、コンピュータＡ（２）がコンピュータＢ（３）からデータを受信した日時と、コンピュータＡ（２）がコンピュータＢ（３）から受信したデータをネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータにデータを送信した日時との両方を通信日時として追加する場合には、２つの通信記録が追加され、すなわち、コンピュータＡ（２）がコンピュータＢ（３）からデータを受信した日時を通信日時とする通信記録とコンピュータＡ（２）がコンピュータＢ（３）から受信したデータを、ネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータにデータを送信した日時を通信日時とする通信記録が追加される。）。
【００２０】
コンピュータＢ（３）とネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータとがコンピュータＡ（２）を経由してデータの送受信を行なうとすると、コンピュータＡ（２）は、ファイアウォールやプロキシサーバとして機能してもよい。
【００２１】
コンピュータＡ（２）およびコンピュータＢ（３）それぞれに検出装置１００が備えられている場合には、それぞれの検出装置１００は、適宜な時間において、通信ログＬ１および通信ログＬ２をそれぞれ読出し（図１のＲｅａｄ１およびＲｅａｄ３）、処理を行ない、マルウェアによる通信の通信記録の有無を検出する。
【００２２】
また、コンピュータＢ（３）が、ネットワークＮＷまたはクラウドネットワークＣＬに接続されているコンピュータと通信する場合、コンピュータＡ（２）を介して通信が行われる場合には、コンピュータＢ（３）が検出装置１００−２を備えなくても、コンピュータＡ（２）に検出装置１００−１が備えられていれば、検出装置１００−１が通信ログＬ１を読み出し（Ｒｅａｄ１）、処理を行なうことで、コンピュータＡ（２）内で動作するマルウェアによる通信が行われたかどうかのみならず、コンピュータＢ（３）内で動作するマルウェアによる通信が行われたかどうかの検出も可能である。
【００２３】
また、検出装置１００は、コンピュータＡ（２）およびコンピュータＢ（３）の外部に存在する場合には、通信ログＬ１および通信ログＬ２をコンピュータＡ（２）およびコンピュータＢ（３）の外部に位置する検出装置１００に転送し（図１のＲｅａｄ２およびＲｅａｄ４）、検出装置１００は、通信ログＬ１および通信ログＬ２の処理を行ない、ビーコンの送信が行われたかどうかを検出する。
【００２４】
あるいは、検出装置１００は、通信ログＬ１およびＬ２を読み出さず、通信記録が生成される都度、通信記録が検出装置１００に生成された通信記録が入力されるようになっていてもよい。
【００２５】
また、コンピュータＣ（４）内で動作するマルウェアがコンピュータ５に向けてビーコンを送信すると、その送信のログは、通信ログＬ２および通信ログＬ１に記録され、通信ログＬ２および通信ログＬ１を検出装置１００が解析することにより、コンピュータＣ（４）内で動作するマルウェアが検出することも可能である。
【００２６】
あるいは、コンピュータＣ（４）が乗っ取られ、攻撃者４１の支配下になり、コンピュータＡ（２）またはコンピュータＢ（３）にマルウェアが感染し、コンピュータＣ（４）にビーコンを送信する場合も、通信ログＬ２または通信ログＬ１を検出装置１００が解析することにより、コンピュータＡ（２）あるいはコンピュータＢ（３）にマルウェアが感染したことを検出することが可能である。
【００２７】
図２は、通信ログに含まれる通信記録の例を示す。図２の例では、一行それぞれが一つの通信記録を形成しており、通信日時、通信先の識別情報および通信先の識別情報がカンマにより区切られた形式となっている。通信日時は、西暦年、月、日、時、分および秒により表わされているが、所定の日時（例えば、グリニッジ標準時の１９７０年１月１日０時０分０秒）からの経過時間が秒単位の整数により表わされていてもよい。また、秒単位よりも小さな単位（例えばマイクロ秒単位）あるいは大きな単位（例えば１０秒単位）で経過時間が表わされていてもよい。また、通信元の識別情報および通信先の識別情報は、ＩＰｖ４アドレスの形式であっても、ＦＱＤＮ（Ｆｕｌｌｙ  Ｑｕａｌｉｆｉｅｄ  Ｄｏｍａｉｎ  Ｎａｍｅ）であってもよいし、あるいは、ＩＰｖ６アドレスの形式であってもよい。また、他のコンピュータの通信を中継しないコンピュータであって、通信を行なうプログラムを実行した利用者名が判明するようなコンピュータであれば、通信元の識別情報は、当該利用者名となっていてもよい。また、他のコンピュータの通信を中継しない末端のコンピュータの場合には、当該コンピュータが通信元となるので、通信ログに通信元の識別情報の記録を省略してもよい。
【００２８】
また、さらに、通信先のポート番号および通信プロトコルのいずれか一以上が通信記録に含まれていてもよい。また、通信プロトコルがＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）やＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）の場合には、通信により要求されるファイル名が通信記録に含まれていてもよい。
【００２９】
（実施形態１）
図３は、実施形態１に係る検出装置１００の機能ブロック図の一例を示す。検出装置１００は、間隔算出部３０１と、検出部３０２とを備える。
【００３０】
間隔算出部３０１は、通信ログの通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに、通信が行われた時間間隔を算出する。例えば、通信元の識別情報をＩＰアドレス１．２．３．４とし、通信先の識別情報をＩＰアドレス５．６．４．８とする組（１．２．３．４；５．６．４．８）について、２０１７年８月８日１４時２０分３８秒に通信が行われ、次に、２０１７年８月８日１４時２０分５０秒に通信が行われた場合、時間間隔として１２秒を算出する。また、組（１．２．３．４；５．６．４．８）についてさらに、２０１７年８月８日１４時２１分３秒に通信が行われた場合、通信間隔として１３秒を別の時間間隔として算出する。
【００３１】
この場合、例えば２０１７年８月８日１４時２０分５０秒と２０１７年８月８日１４時２１分３秒との間に、別の組、例えば、（２．２．３．４；５．６．７．８）を通信元の識別情報および通信先の識別情報の組とする通信が行われていても、組（１．２．３．４；５．６．４．８）の通信の時間間隔の算出には影響が及ばない。
【００３２】
通信ログの通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに算出される時間間隔は、複数個あり得る。そこで、ある組について算出される時間間隔が複数個ある場合には、時間間隔の列と呼ぶ場合がある。また、一般に、ある組について算出される時間間隔の列に同じ値の時間間隔が存在しても、一つの時間間隔にまとめることはしない方が好ましい。したがって、時間間隔の列は、多重集合（マルチセット）になり得る。
【００３３】
図４は、間隔算出部３０１が、時間間隔を算出するために使用するデータ構造と、当該データ構造が通信ログの読み込みにより変化する様子との一例を示す。間隔算出部３０１は、例えば通信ログを順に読み込み、図４（Ａ）に示すような構造のデータを生成してもよい。
【００３４】
図４（Ａ）は、間隔算出部３０１が、図２に示される通信ログの先頭から３つの具体的な数値で例示されている通信記録のうち、最後の「２０１７／８／８−ＯＲＩＧＩＮ３，ＤＥＳＴＩＮＡＴＩＯＮ３」までを読み込んだ時点におけるデータ構造を示す。
【００３５】
ノード４１０、４２０および４３０は、図２に示される３つの具体的な数値で例示される通信記録それぞれの通信元の識別情報および通信先の識別情報の組を表わすノードである。このようなノードを「ヘッドノード」と呼ぶ。ヘッドノード４１０は、最初の通信記録「２０１７／８／８−１５：２４：００，ＯＲＩＧＩＮ１，ＤＥＳＴＩＮＡＴＩＯＮ１」の通信元の識別情報および通信先の識別情報の組（ＯＲＩＧＩＮ１；ＤＥＳＴＩＮＡＴＩＯＮ１）に対応する。ヘッドノード４２０およびヘッドノード４３０についても同様であり、図２において具体的な数値で例示されている２番目および３番目の通信記録に対応するヘッドノードとなっている。
【００３６】
ヘッドノード４１０、４２０および４３０それぞれに接続する次のノード４１１、４２１および４３１は、順に通信記録を読み込んでいる時点において、ヘッドノード４１０、４２０および４３０それぞれに対応する通信元の識別情報および通信先の識別情報の組について最後に読み取った通信記録の通信日時を格納する。したがって、ノード４１１、４２１および４３１に格納される日時は、通信記録の読み込みにより変化し得る。図４（Ａ）は、間隔算出部３０１が、図２に示される３つの具体的な数値により示される通信記録（ｉ）「２０１７／８／８−１５：２４：００，ＯＲＩＧＩＮ１，ＤＥＳＴＩＮＡＴＩＯＮ１」、（ｉｉ）「２０１７／８／８−１５：２７：１４，ＯＲＩＧＩＮ２，ＤＥＳＴＩＮＡＴＩＯＮ２」および（ｉｉｉ）「２０１７／８／８−１５：２７：１５，ＯＲＩＧＩＮ３，ＤＥＳＴＩＮＡＴＩＯＮ３」までを読み込んだ時点での状態を例示している。したがって、ノード４１１には、（ＯＲＩＧＩＮ１；ＤＥＳＴＩＮＡＴＩＯＮ１）の組の通信日時である２０１７／８／８−１５：２４：００が格納されている。ノード４２１およびノード４３１についても同様である。
【００３７】
通信日時を格納するノード４１１、４２１および４３１には、通信が行われた時間間隔のリストが続く。例えば、ヘッドノード４１０に続くノード４１１には、空リスト４９９が続いている。これは、図２に示す通信記録（ｉ）「２０１７／８／８−１５：２４：００，ＯＲＩＧＩＮ１，ＤＥＳＴＩＮＡＴＩＯＮ１」を間隔算出部３０１が読み込むまでは、通信元の識別情報をＯＲＩＧＩＮ１とし、通信先の識別情報をＤＥＳＴＩＮＡＴＩＯＮ１とする通信が行われた通信記録が存在しなかったことを意味する。すなわち、通信記録（ｉ）「２０１７／８／８−１５：２４：００，ＯＲＩＧＩＮ１，ＤＥＳＴＩＮＡＴＩＯＮ１」を間隔算出部３０１が読み込んだ時点では、ヘッドノード４１０が作られていなかったので、検出装置１００がヘッドノード４１０およびノード４１１を作成したことを意味する。
【００３８】
ヘッドノード４２０に続くノード４２１には、３が格納されているノード４２２と、１が格納されているノード４２３とにより構成されるリストがつながっている。これは、通信記録（ｉｉ）「２０１７／８／８−１５：２７：１４，ＯＲＩＧＩＮ２，ＤＥＳＴＩＮＡＴＩＯＮ２」を読み込む前に、通信元の識別情報をＯＲＩＧＩＮ２とし、通信先の識別情報をＤＥＳＴＩＮＡＴＩＯＮ２とする通信記録が２つ存在し、それぞれをＲ１およびＲ２とすると、Ｒ１とＲ２との通信の時間間隔が１秒であり、Ｒ２と（ｉｉ）「２０１７／８／８−１５：２７：１４，ＯＲＩＧＩＮ２，ＤＥＳＴＩＮＡＴＩＯＮ２」との通信の時間間隔が３秒であることを示している。
【００３９】
同様に、ヘッドノード４３０に続くノード４３１には、少なくとも、１００が格納されているノード４３２と、８９が格納されているノード４３３と、４が格納されているノード４３４とにより構成されるリストがつながっている。これは、通信記録「２０１７／８／８−１５：２７：１５，ＯＲＩＧＩＮ３，ＤＥＳＴＩＮＡＴＩＯＮ３」を読み込む前に、通信元の識別情報をＯＲＩＧＩＮ３とし、通信先の識別情報をＤＥＳＴＩＮＡＴＩＯＮ３とする通信が、少なくとも３つ以上存在していたことを示し、通信間隔が、４秒、８９秒、１００秒であることを示している。
【００４０】
図４（Ａ）に示すデータ構造が検出装置１００により作られたのちに、図４（Ｂ）に示す通信記録４４０が読み込まれたときのデータ構造の変化を図４（Ｃ）に示す。図４（Ｂ）に示す通信記録は、通信元の識別情報をＯＲＩＧＩＮ１とし、通信先の識別情報をＤＥＳＴＩＮＡＴＩＯＮ１とする通信があったことを示すので、ヘッドノード４１０が特定される。次に、ヘッドノード４１０に続く４１１に格納されている通信日時２０１７／８／８−１５：２４：００が読み込まれ、通信記録４４０の通信日時である２０１７／８／８−１５：２７：１６との差が１９６秒と算出されるので、１９６という数値を格納するノード４１２が作られ、ノード４１１に接続される。また、ノード４１１に格納される値が、通信記録４４０の２０１７／８／８−１５：２７：１６に変更される。
【００４１】
図５は、以上において具体的な値を用いて説明した処理、すなわち、検出装置１００が間隔算出部３０１を用いて、通信元の識別情報および通信先の識別情報の組ごとに通信が行われた時間間隔を算出して図４に示したデータ構造を作成する処理のフローチャートの一例を示す。
【００４２】
ステップＳ５０１において、通信ログの全ての通信記録を読み込んだかどうかを判断する。例えば、通信ログを読み込もうとしてＲＥＡＤシステムコールなどを発行した際、ファイルの最後（ＥＯＦ（Ｅｎｄ  ｏｆ  Ｆｉｌｅ））に到達したことが検出されたかどうかを判断する。もし、ＥＯＦに到達した場合には、データ構造を作成する処理が終了する。
【００４３】
ＥＯＦに到達していない場合には、ステップＳ５０２に進み、通信ログから次の通信記録を取得し読み込む。
【００４４】
ステップＳ５０２の後には、ステップＳ５０２にて取得した通信記録から、通信元の識別情報および通信先の識別情報の組に対応するヘッドノードが存在しているかどうかを判断する。例えば、通信元の識別情報と通信先の識別情報との組をキー値として保持し、キー値の組に対応するヘッドノードのアドレスを値とする索引（インデックス）を図４に示すデータ構造とともに作っておき、そのインデックスを参照し、ヘッドノードが存在するかどうかを判断することができる。そのようなインデックスが無い場合は、ヘッドノードの内容を順にチェックして判断してもよい。
【００４５】
組に対応するヘッドノードが存在すれば、ステップＳ５０４に進み、最終通信日時、すなわち、ヘッドノードに続くノードに格納されている通信日時と、通信記録の通信日時との時間間隔を算出し、当該時間間隔を新たなノードに格納し、当該ノードを、最終通信日時を格納しているノードに続くリストに追加する。
【００４６】
ステップＳ５０４の後には、ステップＳ５０６に進み、ヘッドノードに続く最終通信日時を格納するノードの値を、ステップＳ５０２で取得した通信記録の通信日時に更新する。その後は、ステップＳ５０１へ戻る。
【００４７】
ステップＳ５０３において、組に対応するヘッドノードが存在しなければ、ステップＳ５０５に進み、ステップＳ５０２で取得した通信記録の通信元の識別情報と通信先の識別情報とに対応するヘッドノードを追加し、最終通信日時を通信記録の通信日時とするノードを追加し、さらに空リストをつなぐ。その後は、ステップＳ５０１へ戻る。
【００４８】
なお、短時間、例えば一秒未満の間に、通信元の識別情報と通信先の識別情報とが同一である通信が行われる場合には、マルウェアによる通信ではないと判断して、ステップＳ５０４をスキップしてもよい。この理由は、通信元の識別情報と通信先の識別情報とを同じにする通信が短時間に行われていると、コンピュータの管理者等により異状が検出されやすくなり、マルウェアとして存在できる可能性がなくなるからである。また、一つのウェブページに同一ホストに格納されている多数の画像へのリンクが存在すると、当該ウェブページをブラウザが読み込むと、ブラウザは、その同じホストに画像のリクエストを多数送信し、これはマルウェアでなくても通常のソフトウェアにより起こり得ることである。
【００４９】
図３に戻り、検出装置１００の説明を続ける。検出部３０２は、間隔算出部３０１により算出された時間間隔の規則性に基づいて、マルウェアによる通信が行われたかどうかを検出する。例えば、検出部３０２は、間隔算出部３０１により算出された時間間隔に規則性があると判断すれば、マルウェアによる通信が行われたと検出する。
【００５０】
間隔算出部３０１により算出された時間間隔に規則性があるかどうかの判断の基準には、種々の基準を挙げることができる。そのような基準の一例を挙げると、通信元の識別情報および通信先の識別情報の組について算出された時間間隔を生成する（例えば形式言語学における）文法規則が存在するかどうかを挙げることができる。文法規則の一例としては、正規表現による文法を挙げることができる。また、別の文法規則としては、文脈依存文法や文脈自由文法、帰納的可算言語を生成する文法も挙げることができる。
【００５１】
例えば、時間間隔が実質的に同一である場合には、「Ｉ＋」により例示される正規表現による文法が存在する。ここに「Ｉ」は、実質的に同一である時間間隔の値であり、「＋」は、「＋」の前の値が１個以上繰り返して現れることを意味する。例えば、時間間隔が、４、４、４、４・・・のように、４秒が続く場合には、「４＋」として、正規表現による文法による表現が可能である。したがって、規則性があると判断できる。
【００５２】
なお、「実質的に同一」と記したのは、通信記録に含まれる通信日時の測定が離散的に例えば１秒間隔で行われたり、通信日時の測定の基準となるコンピュータのクロックなどの揺らぎが存在したりすることなどが配慮されていることを意味する。
【００５３】
あるいは、時間間隔の規則性の程度を数値化し、数値化した結果の値を、定められた値と比較することにより、規則性の有無を判断してもよい。
【００５４】
例えば、上述した文法規則を表現する文字の数が少ないほど、規則性の程度が高いと判断してもよい。より具体的には、文法規則を表現する文字の数が例えば５１２文字より少なければ規則性があると判断する。
【００５５】
時間間隔の規則性の程度を数値化する別の例としては、例えば、時間間隔の分散、すなわち、時間間隔の平均からの偏差の２乗の平均値の算出を挙げることができる。分散が小さいほど、実質的に同一、あるいは、ほぼ同一の時間間隔で通信を行なっていることになり、人の操作が介入した通信ではなく、なんらかのプログラムの実行により通信が行われている可能性が高く、当該プログラムはマルウェアである可能性が高いといえる。
【００５６】
また、別の時間間隔の規則性の程度を数値化するさらに別の例としては、各時間間隔の頻度を算出し、算出した頻度を、標準分布やポアソン分布、χ二乗分布などの統計分布に基づく処理を行なって数値化することを挙げることができる。一例として、上述した分散を算出した例においては、さらに平均を求めることにより想定される標準分布と、算出された時間間隔の分布の適合度を規則性の程度として数値化することができる。また、マルウェアの理論的な通信の時間間隔をあらかじめ算出しておき、間隔算出部が算出した時間間隔と理論的な通信の時間間隔とに基づいて検定統計量を算出し、有意水準に対応するχ二乗分布の値と検定統計量との差分などにより、規則性の程度を数値化することも可能である。
【００５７】
マルウェアの理論的な通信の規則性のある時間間隔の別の例としては、実質的に一定の範囲内で変動する時間間隔を挙げることができる。別言すれば、時間間隔の上限Ｕと下限Ｌを有する時間間隔の列である。また、さらに上限Ｕと下限Ｌとの間で、時間間隔が一様に分布している、すなわち、時間間隔が、上限Ｕと下限Ｌとの間の疑似乱数と判断できる場合を挙げることができる。疑似乱数と判断できれば、疑似乱数を生成して通信の時間間隔を制御しているマルウェアの存在が検出可能である。
【００５８】
図６は、検出部３０２が、時間間隔の規則性の程度を数値化する際に使用するデータ構造の一例を示す。図６において、ノード６０１は、図４に示すヘッドノード４１０に対応し、ＯＲＩＧＩＮ１を通信元の識別情報とし、ＤＥＳＴＩＮＡＴＩＯＮ１を通信先の識別情報とする通信を表わし、ノード６０１から、各時間間隔の頻度を格納するノード６０２、６０３、６０４、６０５・・・のリストが伸びている。ノード６０２の「２：３」は、ＯＲＩＧＩＮ１を通信元の識別情報とし、ＤＥＳＴＩＮＡＴＩＯＮ１を通信先の識別情報とする通信において、２秒の時間間隔が３回発生したことを表わす。別言すれば、２秒の時間間隔の発生頻度が３であることを表わす。以下同様に、ＯＲＩＧＩＮ１を通信元の識別情報とし、ＤＥＳＴＩＮＡＴＩＯＮ１を通信先の識別情報とする通信において、ノード６０３は、１０秒の時間間隔が９５回発生し、ノード６０４は、１５３秒の時間間隔が１回発生し、ノード６０５は、１９６秒の時間間隔が２回発生したことを表わす。
【００５９】
検出部３０２は、ノード６０１から伸びているリストをたどり、例えば、時間間隔の平均や分散を求め、時間間隔の規則性の程度を数値化する。
【００６０】
図７は、図４（Ａ）などに示した通信元の識別情報と通信先の識別情報との組のヘッドノードに続く通信時間ノードにつながっている通信の時間間隔のリストから、図６に示したデータ構造を生成するフローチャートの一例を示す。ステップＳ７０１の処理として、通信の時間間隔のリストを、通信の時間間隔の昇順または降順にソートする。時間間隔が、図４（Ａ）に示したようなリスト構造となっていれば、例えばクイックソートのアルゴリズムを好適に使用することができる。ソートにより、通信の時間間隔が降順または昇順に並ぶリストを得ることができるので、ステップＳ７０２の処理として、当該リストを順に走査し、同じ時間間隔Ｉが連続する個数Ｃを計数し、Ｉ：Ｃを格納したノードを、例えば図６のノード６０１から伸びているリストに追加する。
【００６１】
図８は、以上説明した検出装置の処理のフローチャートの一例を示す。ステップＳ８０１として、時間間隔を算出する。別言すれば、通信ログの通信記録に含まれる通信元の識別情報および通信先の識別情報の組ごとに、通信が行われた時間間隔を算出する。
【００６２】
ステップＳ８０２として、時間間隔の規則性に基づいてマルウェアによる通信が行われたかどうかを検出する。
【００６３】
図９は、一実施形態に係る検出装置１００を計算機により実現する態様を示す。計算機９００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１と、主記憶装置９０２と、補助記憶装置９０３と、インタフェース９０４とを備える。
【００６４】
検出装置１００は、例えば検出装置１００を実現するためのプログラムが補助記憶装置９０３に記憶された状態から主記憶装置９０２にロードされ、当該プログラムをＣＰＵ９０１により実行することにより実現される。当該プログラムの実行により、例えばインタフェース９０４を介して通信記録の読み取りが行われ、主記憶装置９０２内、また、必要であれば補助記憶装置９０３内に、図４（Ａ）に例示されるデータ構造が作られ、通信の時間間隔の算出が行われる。そして、例えば図６に例示されるデータ構造が作られ時間間隔の規則性の数値化などにより、時間間隔の規則性に基づいてマルウェアによる通信が行われたかどうかを検出する。
【００６５】
なお、補助記憶装置９０３は、一時的でない有形の記録媒体の一例である。一時的でない有形の記録媒体の代表的な例としては、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体不揮発性メモリなどが挙げられる。
【００６６】
また、ＣＰＵ９０１は、検出装置１００を実現するためのプログラムのみを実行することに限定はされず、例えば、図１のコンピュータＡ（２）およびコンピュータＢ（３）の機能を実現するためのプログラムを実行することも可能である。
【００６７】
（主な効果の例示）
以上のように、本実施形態においては、通信の時間間隔の規則性に基づいてマルウェアによる通信の有無を検出するので、未知マルウェアであっても検出することが可能である。また、通信の時間間隔の規則性に基づいてマルウェアによる通信の有無を検出するので、正常なサイトが攻撃者などにより乗っ取られてしまった場合でも、当該サイトにビーコンを送信するマルウェアを検出することができる。
【００６８】
（実施形態２）
図１０は、実施形態２に係る検出装置の検出装置の機能ブロック図の別の例を示す。検出装置１００は、間隔算出部３０１と、検出部３０２と、ホワイトリスト判定部１００１とを備える。したがって、図１０に機能ブロック図が示される検出装置は、実施形態１に係る検出装置がさらにホワイトリスト判定部１００１を備える構成を有する。
【００６９】
ホワイトリスト判定部１００１は、間隔算出部３０１が通信記録を読み取るごとに、読み取った通信記録が安全な通信によるものであるかどうかを判定する。当該判定の一態様としては、ホワイトリスト判定部１００１は、マルウェアと無関係であるコンピュータの識別情報のリスト、すなわちホワイトリスト、にアクセス可能であり、読み取られた通信記録に含まれる通信元の識別情報および通信先の識別情報が、当該ホワイトリストに含まれているかどうかを判定する。このようなホワイトリストに含まれるコンピュータの識別情報としては、ウィルス対策ソフトウェアのダウンロード先のコンピュータの識別情報や、著名な検索エンジンのコンピュータの識別情報がある。
【００７０】
また、通信記録に通信により要求されるファイル名が含まれる場合には、当該ファイル名が、ブラウザのブックマークに格納するアイコンが格納されているファイル名であったり、ウェブページのスタイルシートを格納しているファイル名であったりする場合には、ホワイトリスト判定部１００１は、間隔算出部３０１が読み取った通信記録が安全な通信によるものであると判定してもよい。
【００７１】
本実施形態においては、間隔算出部３０１は、通信ログより通信記録を読み出すごとに、当該通信記録をホワイトリスト判定部１００１に判定させ、安全な通信によるものであると判定されれば、当該通信記録をスキップし、次の通信記録を読み出す。
【００７２】
（主な効果の例示）
本実施形態によれば、ホワイトリスト判定部１００１により安全な通信による通信記録であると判定されれば、当該通信記録がスキップされるので、図４（Ａ）などに示されるようなデータ構造に使用される記憶容量を小さくすることができる。また、安全な通信をマルウェアによる通信として誤検出する場合を少なくしたり、無くしたりすることができる。
【００７３】
（実施形態３）
図１１は、実施形態３に係る検出装置の機能ブロック図のさらに別の例を示す。検出装置１００は、間隔算出部３０１と、検出部３０２と、を備え、検出部３０２は、エントロピー算出部１１０１を有する。また、検出装置１００は、実施形態２のように、ホワイトリスト判定部を備えていてもよい。したがって、実施形態３に係る検出装置は、実施形態１または実施形態２に係る検出装置の検出部が、エントロピー算出部を備えている形態である。
【００７４】
エントロピー算出部１１０１は、通信元の識別情報および通信先の識別情報の組ごとに算出された時間間隔に基づいて、通信元の識別情報および通信先の識別情報の組ごとにエントロピーを算出する。ここでいう「エントロピー」とは、時間間隔の情報量の期待値であると定義することができる。
【００７５】
ここで、時間間隔の情報量とは、時間間隔の総個数Ｎに対する特定の時間間隔ｔの個数ｎの割合により定まる値と定義することができる。具体例としては、時間間隔の情報量は、Ｎ／ｎの対数値である（別言すれば、割合ｎ／Ｎの対数値に負号を付した値である）と定義することができる。
【００７６】
例えば、図６に示したノード６０１から伸びるリストが、ノード６０２、ノード６０３、ノード６０４およびノード６０５のみを有していると仮定した場合には、（ＯＲＩＧＩＮ１；ＤＥＳＴＩＮＡＴＩＯＮ１）の組ごとに算出された時間間隔の総個数Ｎは、３＋９５＋１＋２＝１０１であるので、ｔ＝２の情報量は、ｌｏｇ（１０１／３）となり、ｔ＝１０の情報量は、ｌｏｇ（１０１／９５）となり、ｔ＝１５３の情報量は、ｌｏｇ（１０１／１）となり、ｔ＝１９６の情報量は、ｌｏｇ（１０１／２）となる。なお、情報量を算出する際の対数関数ｌｏｇの底は、２とする場合が多い。
【００７７】
次に、時間間隔の情報量の期待値、すなわち「エントロピー」とは、各時間間隔の情報量に重みづけをした平均値であり、当該重みづけは、時間間隔の総個数Ｎに対する特定の時間間隔ｔの個数ｎの割合であると定義することができる。
【００７８】
例えば、図６に示したノード６０１から伸びるリストが、ノード６０２、ノード６０３、ノード６０４およびノード６０５のみを有していると仮定した場合の情報量は、
（３／１０１）×ｌｏｇ（１０１／３）＋（９５／１０１）×ｌｏｇ（１０１／９５）
＋（１／１０１）×ｌｏｇ（１０１／１）＋（２／１０１）×ｌｏｇ（１０１／２）
となる。
【００７９】
なお、通信元の識別情報Ｓおよび通信先の識別情報Ｄの組（Ｓ；Ｄ）ごとに算出された時間間隔の総個数Ｎに対する特定の時間間隔ｔの個数ｎの割合ｎ／Ｎを、特定の時間間隔ｔの生起した確率Ｐ（Ｓ；Ｄ）（ｔ）と解釈した場合、上述したエントロピーは、時間間隔の分布の下限をＬ、上限をＵとして、
【数１】
2019070995.tif 000003
となり、クロード・エルウッド・シャノン（Ｃｌａｕｄｅ  Ｅｌｗｏｏｄ  Ｓｈａｎｎｏｎ）が導入したエントロピーと同じ定義となる。なお、対数関数ｌｏｇの底ｂは、上述したように２として情報量を算出する場合が多い。底が２の場合、情報量の単位は「ビット」と呼ばれる。また、底をネイピア数とする場合、情報量の単位は「ナット」と呼ばれ、底を１０とする場合、情報量の単位は「ディット」と呼ばれることが多い。
【００８０】
なお、Ｐ（Ｓ；Ｄ）（ｔ）は、離散的に分布するｔに対する関数であると考えることができ、確率質量関数と呼ばれる場合がある。
【００８１】
したがって、対数の底ｂが１より大である場合、通信元の識別情報Ｓおよび通信先の識別情報Ｄの組（Ｓ；Ｄ）ごとに算出された時間間隔のエントロピーが大きいほど、時間間隔の不規則性の程度が大きいといえ、したがって、エントロピーが小さいほど、時間間隔の規則性の程度が大きいといえる。よって、エントロピーが小さいほど、マルウェアがＤで識別される通信先にビーコンを送っている可能性が高いといえる。
【００８２】
なお、対数関数の底ｂが１より小さい場合には、対数関数の底が１より大きい場合とエントロピーの符号が正負逆になるので、エントロピーの絶対値が小さいほど、マルウェアがＤで識別される通信先にビーコンを送っている可能性が高いといえることになる。
【００８３】
エントロピー（あるいはエントロピーの絶対値）が小さいか、大きいかは、各組（Ｓ；Ｄ）に対して算出された時間間隔のエントロピーの平均値Ｍと標準偏差σとを求め、例えばＭ−２σを超えるエントロピーを大きなエントロピーとし、Ｍ−２σ以下のエントロピーを小さなエントロピーとすることができる。
【００８４】
具体的な例を示す。時間間隔が、４、４、４、４・・・のように、４秒が続く場合には、時間間隔として４秒が生起した確率が１となり、１の対数の値は０なので、エントロピーも０となる。
【００８５】
また、通信の遅延により、平均して１０個の時間間隔のうち５個が４秒であり、残りの５個が５秒である場合には、ｂ＝２とすると、エントロピーは、（５／１０）×ｌｏｇ（１０／５）＋（５／１０）×ｌｏｇ（１０／５）＝（１／２）×１＋（１／２）×１＝１となる。
【００８６】
一方、平均して１０個の時間間隔のうち５個が４秒であり、残りの５個が５秒である場合について、実施形態１で述べたように、分散を計算すると、０．２５となり、エントロピーの値と単純に比較すると極めて小さいように思える。
【００８７】
しかしながら、時間間隔のばらつきが大きくなり、平均して１０個の時間間隔のうち５個が４秒であり、残りの５個が４６秒であるとすると、分散は４４１となるが、エントロピーは１のままである。
【００８８】
したがって、実施形態１で述べた規則性の検出手法と本実施形態で述べたエントロピーの算出による規則性の程度の数値化を組み合わせるのが好ましいともいえる。
【００８９】
図１２は、本実施形態に係る検出装置１００の処理のフローチャートの一例である。図１２のフローチャートは、通信元の識別情報および通信先の識別情報の組を定めてから、時間間隔のエントロピーを算出してマルウェアによる通信を検出する処理である。
【００９０】
間隔算出部３０１は、通信の時間間隔を求めた後、ステップＳ１２０１において、時間間隔の個数の総和を算出する。
【００９１】
エントロピー算出部１１０１は、時間間隔のエントロピーを算出するために、ステップＳ１２０２において、時間間隔の個数を総和で除し（割り算を行ない）、除した値に基づいてステップＳ１２０３においてエントロピーを算出する。
【００９２】
ステップＳ１２０４において、検出部３０２は、算出されたエントロピーの値が定められた値以下であるかどうかを判断する。定められた値の具体例としては、後に示すように２．５ビットという値がある。ただし、状況に応じて、定められた値を、例えば時間間隔の個数の総和の大きさに応じて、変化させてもよく、総和が大きければ、大数の法則により正確な時間間隔の分布が得られたとして、定められた値を小さくし、総和が小さければ、時間間隔の分布に誤差が含まれるとして、定められた値を大きくしてもよい。
【００９３】
ステップＳ１２０４において、算出されたエントロピーの値が定められた値以下であれば、ステップＳ１２０５に処理を進め、マルウェアを検出したとする。また、ステップＳ１２０４において、算出されたエントロピーの値が定められた値以下でなければ、ステップＳ１２０５をスキップする。
【００９４】
（具体例）
図１３は、実際にインターネットに接続されたコンピュータの通信ログを用いて、通信元の識別情報および通信先の識別情報の組ごとにエントロピーを算出し、算出されたエントロピーの区間ごとに、組の数を計数して作成したヒストグラムを示す。エントロピーが２以下の組は、２個存在し、エントロピーが２を超え、２．７５以下の組は２８個存在する。２．７５を超え、３．５以下の組は４０５組存在し、３．５を超え４．２５以下の組は、３４３個存在し、４．２５を超え５以下の組は１１４個存在し、５を超える組は、１７個存在したことが示されている。したがって、２．７５の大きさを持つエントロピーの前後で分布が大きく異なっていることがわかる。
【００９５】
図１４は、図１３の作成に用いた通信ログを用いて、組が通信ログに現れた回数とエントロピーとにしたがってプロットしたグラフを示す。言い換えると、正方形がグラフの上に位置するほど、エントロピーの高い組を表わし、正方形がグラフの右側に位置するほど、通信ログに現れた回数が多い（通信回数が多い）ことを示す。図１３においては、辺が図１３の左右上下方向に対して斜め４５度方向に傾いている正方形（菱形）と、辺が図１３の左右上下方向と平行になっている正方形とを用いてプロットされている。この違いは、上述のように時間間隔のエントロピーの平均値Ｍと標準偏差σとを求め、Ｍ−２σを超えるエントロピーが算出された組を、辺が図１３の左右上下方向に対して斜め４５度方向に傾いている正方形（菱形）とし、Ｍ−２σ以下のエントロピーが算出された組を辺が図１３の左右上下方向と平行になっている正方形として表した結果である。したがって、辺が図１３の左右上下方向と平行になっている正方形は、グラフの下方に現れている。また、辺が図１３の左右上下方向と平行になっている正方形はグラフの左側に位置しているので、通信回数が少ないことも理解され、通信回数を少なくして通信回数により検出されないようになっていることも理解される。
【００９６】
図１３においては、Ｍは、約３．６となりσは、約０．５８である。したがって、Ｍ−２σは、２．４４となった。このため、エントロピーが２．４４以下の組が、図１３の左右上下方向と平行になっている正方形として表されており、これらの正方形に対応して、マルウェアによる通信が行われたと判断することができる。
【００９７】
（主な効果の例示）
以上のように、本実施形態においては、時間間隔の規則性の程度を通信時間の間隔の個数の割合やエントロピーの値により算出するので、マルウェアによる通信の有無を検出するので、未知マルウェアであっても検出することが可能である。また、例えば、日中の営業時間に動作し、夜間や営業時間外は停止するパーソナルコンピュータにマルウェアが感染した場合であっても、あるいは、営業時間にビーコンを送信し営業時間外はビーコンを停止するマルウェアが常時動作するコンピュータに感染した場合であっても、マルウェアのビーコンの時間間隔の規則性によりマルウェアを検出することができる。
【００９８】
以上、開示に係る実施形態について説明した。なお、以上に説明した本実施形態は、特許請求の範囲に記載されている本開示に係る発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本開示に係る発明の必須構成要件であるとは限らない。
【符号の説明】
【００９９】
１・・・全体システム  ２、３、４、５・・・コンピュータ  １００・・・検出装置  ３０１・・・間隔算出部  ３０２・・・検出部  １００１・・・ホワイトリスト判定部  １１０１・・・エントロピー算出部
【図１】
2019070995.tif 000004
【図２】
2019070995.tif 000005
【図３】
2019070995.tif 000006
【図４】
2019070995.tif 000007
【図５】
2019070995.tif 000008
【図６】
2019070995.tif 000009
【図７】
2019070995.tif 000010
【図８】
2019070995.tif 000011
【図９】
2019070995.tif 000012
【図１０】
2019070995.tif 000013
【図１１】
2019070995.tif 000014
【図１２】
2019070995.tif 000015
【図１３】
2019070995.tif 000016
【図１４】
2019070995.tif 000017