解析メモ

マルウェア解析してみたり解析に役に立ちそうと思ったことをメモする場所。このサイトはGoogle Analyticsを利用しています。

VirusTotal Intelligence の使い方 ~検体の情報の見方~

f:id:k1z3:20191104111150p:plain

前回までで基本的な VT Intelligence の検索クエリ(modifier)の使い方を説明しました。ここでは VT Intelligence で確認できる情報を掘り下げて、VT だけで表層解析を行うための情報をまとめました。VT で確認することができる情報だけでも検体を解析することなく多くのことを知ることができます。

※ 以下、metadata と記載がある modifier は、特定の modifier を付けずに "ダブルクォート" で囲み検索することができる項目です。

DETAILS

Basic Properties

f:id:k1z3:20191107004609p:plain
ここでは検体のハッシュ値やファイル種別を確認することができます。MD5SHA-1/256 は検体ごとに一意の値となりますが、注目すべきは imphash や vhash, ssdeep です。これらを元に検索することで類似検体を見つけることができます。

  • imphash
    Import テーブルのハッシュ値を計算したものです。同じ開発環境を使用していたり類似の検体だった場合、imphash が一致する場合があります。
    ※ 見つかった検体が同じ開発者のものとは限らないので、あくまで参考程度にする必要があります。
  • ssdeep
    バイトパターンの類似性を特定するための計算で産出されたものです。
  • vhash
    VT独自のアルゴリズムで検体をクラスタリングした時のハッシュ値です。同一クラスタ=類似検体の可能性が高い特徴があります。

この他、ファイルタイプやマジック、サイズなども類似の検体を見つけるときに便利な指標です。

Basic Properties の 検索クエリ (modifier)

  • vhash
  • authentihash (metadata)
  • imphash
  • ssdeep
  • type
  • magic (metadata で検索すると結果が少なくなる)
  • size
  • packer (metadata)

History

f:id:k1z3:20191107004702p:plain
その検体がいつ作られたものなのか、いつ VT に投稿されたのかを確認できます。Creation Date と First Submission が非常に近い場合、マルウェア開発者が VT で検知されるかどうかを確認している可能性があります。

History の 検索クエリ (modifier)

  • generated
  • fs (first submittsion)
  • ls (kast submission)
  • la (last analysis)

Names

検体が VT に投稿されたときのファイル名です。name modifier での指定は、この Names のどれかに一致したものを探しています。

Names の 検索クエリ (modifier)

  • name (metadata)

Signature

f:id:k1z3:20191107004917p:plain
とある検体に署名がされている場合でこれが盗んだ電子証明書を使っている場合、アクターは同じ電子証明書を使って様々な検体を署名するでしょう。この場合は signature で検索することで、別の検体を見つけることができます。署名者(Name)やシリアルナンバー、Thumbprint 等で同じ署名を使っている検体を見つけることができます。

Signature の 検索クエリ (modifier)

  • signature (metadata)
    ※ Signature のすべての値は signature で指定可能です。
    ※ Serial Number は GUI でクリックするとスペースで区切られたフォーマットで検索され検索に失敗します。スペースは削除してください。
    ※ 検索に失敗するフィールド Varid From/To, Algorithm

ExifTools

f:id:k1z3:20191107004955p:plain
ExifTools によるメタデータの抽出結果を確認することができます。これらはすべて metadata として検索可能なので、類似検体を探す時に役に立ちます。

Exif の 検索クエリ (modifier)

  • metadata
    GUI でクリック検索可能なすべての値が metadata で検索されます。

Header (実行ファイル)

f:id:k1z3:20191107005226p:plain
全般的な情報なので検体の特定には繋がりにくい印象です。。。クリックで検索可能ですが、metadata 化されていない様で検索には使えませんでした。

Sections (実行ファイル)

f:id:k1z3:20191107005306p:plain
セクション名に特別な名前が使われている検体があれば類似検体を見つけるのに活用できそうです。また、各セクションには MD5ハッシュ値が計算されているので、全く変わらないリソースを使っている場合にはこのハッシュ値から類似検体を見つけることができるかもしれません(未検証)。

Sections の 検索クエリ (modifier)

  • section (metadata)

Imports (実行ファイル)

f:id:k1z3:20191107005408p:plain
インポートしている DLL です。特別な名前のものをインポートしている場合、大きな特徴となると思います。特にマルウェアが独自の追加 DLL をインポートしている場合、これがカギになることもあります。

Imports の 検索クエリ (modifier)

  • imports (metadata)

Exprts (DLLファイル)

DLL を外部から呼び出すときに指定する関数名です。これにもマルウェアごとに特徴が出る場合があります。また、動的解析を行う際に rundll32 などで呼び出す場合はこのエクスポート関数の指定が必要になる場合があるので大事な情報と言えます。

Exports の 検索クエリ (modifier)

  • exports (metadata)

Resources (実行ファイル)

f:id:k1z3:20191107005532p:plain
含まれているリソースのハッシュ値や言語も確認することができます。同じリソース(画像や効果音、アイコンなど)を使っている場合は同じハッシュ値のリソースを持っている検体を探すことで類似検体を見つけることができます。

Resources の 検索クエリ (modifier)

  • resource (metadata)

OLE マクロ(VBA) (MS Office ファイル)

f:id:k1z3:20191107005627p:plain
マクロを含むファイルの場合、VT登校時に可能な限り抽出し、これの内容を確認することができます。検体をダウンロードしなくても含まれるマクロの内容を確認することができます。※ マクロのコードは metadata になっていないので検索はできません。

OLE マクロ(VBA) (MS Office ファイル) の 検索クエリ (modifier)

  • Summary Info の項目は metadata 化されているので検索可能です。
  • OLE Stream 名も metadata 化されているので検索可能です。
  • マクロのファイル (*.bas) やマクロ内のコードは metadata 化されていないので検索できません。

Contained Files (圧縮ファイル)

f:id:k1z3:20191107005708p:plain
zip などの圧縮ファイルは中にいくつのファイルが入っているかや、中に実行ファイルが含まれているかどうか、作成日などを確認することができます。

Contained Files の 検索クエリ (modifier)

  • すべての値が metadata として検索可能です。

RELATIONS

f:id:k1z3:20191107005758p:plain
検体と何かしらの関連がある他の検体やスキャン結果(URL, Domain, IP)がリストアップされて表示されます。例えば、ある検体の Relation としてその検体がダウンロードされる URL を見つけたり、その検体の通信先を見つけるときに非常に便利です。他にも URL やドメインの Relation としてサブドメインやホストされている(た)ファイルを見つけることも可能です。圧縮ファイルの場合は含まれているファイルが個別にスキャンされて Bandled Files として Relations にリストアップされる場合があり、中に悪性のファイルが含まれるかどうかを確認することができます。

Graph Summary では VTGraph の非常にざっくりとした表示が確認できます。これは Relations のリストを確認するか、実際に VTGraph で確認した方がはるかにわかりやすいでしょう。
※ VTGraph の説明は後日。

BEHAVIOR (実行ファイル)

サンドボックスによる実行結果を確認することができます。確認できることは、以下の通りです。

  • Network Communiction (通信先情報)
  • File System Actions (ファイル I/O 情報)
  • Registory Actions (レジストリの読み書き情報)
  • Process and Service Actions (プロセスやサービス情報)
  • Synchronization Mechanisms & Signals (同期処理の情報)
  • Modules Loaded (読み込みモジュール情報)

    BEHAVIOR の 検索クエリ (modifier)

    基本的にすべて metadata 化されているようです。

  • behavior_network (通信先情報)

  • behavior_files (ファイル I/O 情報)
  • behavior_registory (レジストリの読み書き情報)
  • behavior_processes (プロセスやサービス情報)
  • behavior (同期処理の情報)
  • behavior (読み込みモジュール情報)

CONTENT

ファイルに含まれている strings を表示することができます。各 strings は content 検索 (VTGrep) で他の同じ文字列を含んだ検体を探すことができます。
※ content 検索 (VTGrep) の説明は後日。

SUBMISSIONS

検体を投稿した日時や場所(国)、投稿者の情報が一覧で表示されます。同じハッシュ値のものが複数回投稿されている場合はその投稿分表示されます。コンパイル日時と投稿日時が近い場合は、開発者自身による投稿の可能性が考えられ、国や生活時間など、投稿者の属性情報の手がかりとなる場合もあります。

SUBMISSIONS の 検索クエリ (modifier)

  • submitter (投稿者の国 (ISO 3166-1-alpha-2 ※1))
  • fs (first submission)
  • ls (last submission)

※1 : http://www.iso.org/iso/home/standards/country_codes/country_names_and_code_elements.htm

COMMUNITY

検体に対してのコメントであったり、外部のサンドボックスのスキャン結果が貼ってある場合があります。中には解析した内容を書いていたり、開発者の属性情報がかかれている場合もあるので、コメントがある場合は確認した方が良いです。

COMMUNITY の 検索クエリ (modifier)

コメントの内容は metadata 化されているわけではないので検索はできません。コメント投稿者のほかのコメントを確認することはできます。