概要
VirusTotal Enterprise (VirusTotal Premium Services) の一機能であるVirusTotal Intelligenceでは、大きく分けて以下の1〜4のことが可能です(無償アカウントでは1と2のみが可能です)。このうち、3つ目の「高度な検索」では ファイル、IP、URL、ドメインなどを詳細に絞り込むことが可能で、セキュリティ業務における調査に有用です。本記事ではこの「高度な検索」について解説します。
【VirusTotal Intelligenceを使ってできる主な4つのこと】
- ファイルアップロードによる各種分析結果の表示
- ファイルアップロードにより、以下をはじめとすることが可能です。※後述の「高度な検索」でも全て可能です。
- アンチウイルスソフトベンダーによる検知状況チェック(70種類以上のベンダーによる判定が可能)
- サンドボックス分析(Google Cloud社製・サードパーティ製の両方を含み、30種類以上のサンドボックスエンジンが利用可能)
- IDS/SIGMA/YARAルールによる判定(30種類上のルールが利用可能)
- 各種ファイル特性調査ツールによる判定
- 各種関連するIPやファイルなどの表示
- セキュリティベンダーなどによるコメントの閲覧
- その他高度な分析
- アップロードされたファイルは、自社以外の第三者にも公開されます。
有償オプションサービスの Private Scanning を利用することで、完全にプライベートな環境でファイルを分析することが可能です。
- ファイルアップロードにより、以下をはじめとすることが可能です。※後述の「高度な検索」でも全て可能です。
- 対象を直接指定することによる検索
- 対象のファイルのハッシュ値を指定しての検索
- 対象のURLを指定しての検索
- 対象のIPアドレスを指定しての検索
- 対象のドメインを指定しての検索
- 高度な検索
- ファイル検索
- 検索演算子(search modifier)による検索
- Content Search(VT Grep)による検索:ファイルに含まれるバイナリ、コード、文字列で検索することが可能。正規表現による検索もサポート。
- URL検索
- 検索演算子による検索 【例】entity:url p:10+(10以上のエンジンに検知されているURLを検索)
- IPアドレス検索
- 検索演算子による検索【例】entity:ip engines:phishing(フィッシングサイトのページとして検知されているURLを検索)
- ドメイン検索
- 検索演算子による検索 【例】entity:domain category:”malware command and control”(C2サーバーとしてカテゴリーに属するドメインを検索)
- ファイル検索
- ファイルのダウンロード
- ファイルのハッシュ値検索や、高度な検索によりヒットしたファイルは、すべてダウンロードすることが可能です。
- 例えば、トレンドになっているマルウェアファミリーの検体をダウンロードし、IDA Proで解析を行い対策に活かすといったことも可能です。
「高度な検索」について
「高度な検索」では、「検索演算子を用いた検索」と、「検索演算子を用いずクエリビルダを用いた検索」の両方が可能ですが、検索演算子を用いた検索の方がより複雑な検索が可能です。
「高度な検索」では、ファイル、URL、ドメイン、IPの検索などが可能ですが、以下ではファイル検索(かつ、検索演算子を用いずクエリビルダを用いた検索)について説明します。
- ファイルの種類
実行ファイル、インターネット系ファイル、文書、画像、音声、動画、圧縮ファイル、Apple系ファイルが指定可能です。検索演算子を用いた検索では、より細分化した詳細な検索が可能です。
例えば実行ファイルの場合、peexe, pedll, ne, neexe, nedll, mz, msi, com, coff, elf, krnl, rpm, linux, macho, dmg, windows, win16, win32, pe, installer, dos, deb が指定可能です。 - 悪性判定ベンダー数
- ファイルの最小サイズ
- ファイルの最大サイズ
- アンチウイルスソフトによる検知名(例:Trojan.Isbar)
- Behavior(サンドボックス)レポートに含まれる文字列(例:pexe、dmg、apks)
- メタデータに含まれる文字列
- 署名に含まれる文字列
- 検体がダウンロードされる時のURL に含まれる文字列
- ファイル名
- tag(VirusTotalによって付与されたタグ情報)
【参考】tagの一覧、behaviour_tagの一覧 - 初めてアップロードされた日付
- 最後にアップロードされた日付
- アップロード回数
- アップロード元の数(1つのアップロード元が、複数回アップロードしていてもカウントは増えない)
- 署名の有無
- P2P C&C通信を行うファイルかどうか
- 「多数のドメインを解決しようと試みるものの、NXDOMAIN応答が多く返ってくる」という性質を持つファイルかどうか
- DGA(Domain Generate Algorithm)を用いて、C&Cドメインと通信するファイルかどうか
※DGAは、C&Cサーバーのドメインを頻繁に変更することにより、マルウェアからC&Cサーバーへのコールバックを隠蔽するための仕組みのこと。
検索演算子による検索の絞り込み
「高度な検索」で用いることのできる検索演算子は50以上存在しますが、その一例を取り上げます。
複数の検索演算子を組み合わせて用いることで、検索したいファイルを絞り込みます。
なお、すべての検索演算子とその説明については、このページを参照してください。また、ファイル検索演算子 チートシート もあります。
検索演算子の例
- la:日時範囲を指定することで、その日時範囲にVirusTotalで最後に解析されたファイルを返します。
【例】la:2012-08-21T16:00:00, la:2009-01-01T19:59:22-, la:2012-08-21T16:59:22+, la:2011-08-21T16:00:00+ la:2012-08-21T16:59:22- - children_positives(またはcp):ファイルの子ファイルの最大検出数に応じて、ファイルを返します。子ファイルのあるファイルとしては、アーカイブファイルやROMなどがあります。
【例】children_positives:10+, cp:5- - submitter:指定した国がファイルアップロード元になったファイルを返します。国の指定には、ISO 3166-1国名コードが用いられます。
【例】submitter:CN , submitter:web submitter:BR - first_submitter:指定した国が最初のファイルアップロード元になったファイルを返します。国の指定には、ISO 3166-1国名コードが用いられます。
- ssdeep:指定されたssdeepハッシュを持つファイルと類似したファイルをすべて返します。
【例】ssdeep:”24576:KrKqlGCPcJKwybUDwEZZODYmR9G+gnbkk6XRJfe3DqYO/KpLwFfngWX4VmJPakl:KrKo4ZwCOnYjVmJPaO”