VirusTotal の使い方 — ハッシュ先行で安全に確認する手順
不審なファイルや URL を 70+ のセキュリティエンジンで一括チェックできる無料サービス VirusTotal の正しい使い方。アップロードする前にすべき判断、結果の読み方、限界をまとめます。
VirusTotal とは
VirusTotal は、提出したファイル・URL・ドメイン・IP アドレスを 70 以上のアンチウイルスエンジンと URL ブラックリストにまとめてかけ、結果を一覧表示するクラウド型解析サービスです。2004 年にスペインの Hispasec Sistemas が公開し、2012 年に Google が買収、現在は Google Cloud Security の一部として運営されています。
特徴:
- 無料で誰でも利用可能(Web から)
- 個別 AV エンジンの判定とその名前(例:
Trojan:Win32/...)が一覧で見える - アップロードされたファイルや結果は コミュニティ・研究者・セキュリティベンダーに共有される(プライバシー上の重要な前提)
- 単独の判定機ではなく、多数のエンジンと過去の観測の集約レイヤ
できること(無料の範囲)
| 入力 | 何が分かるか |
|---|---|
| ハッシュ(SHA-256 / SHA-1 / MD5) | 過去に提出された同一ファイルの判定・コメント・サンドボックス挙動。ファイルを上げずに問い合わせ可能 |
| ファイル(最大 650 MB/要件は更新あり) | 多数の AV による即時スキャン。アップロードは公共領域への提出 |
| URL | リンク先の評判・カテゴリ・各社判定 |
| ドメイン / IP | レピュテーション、過去の悪用履歴、関連ハッシュ |
重要:単純な「マルウェア検知器」と思わない方が良いです。VirusTotal は 70 以上のスキャナの集約結果と、過去の観測データのデータベースであり、判定の良し悪しは個々のエンジン依存です。
手順 ①: ハッシュ検索を最優先する
VirusTotal を「とりあえずファイルを上げる」サービスとして使うのは危険です。先にハッシュを取って検索するのが鉄則。
SHA-256 ハッシュの取り方
| OS | コマンド |
|---|---|
| Windows (PowerShell) | Get-FileHash .\suspect.exe -Algorithm SHA256 |
| macOS / Linux | shasum -a 256 ./suspect.exe |
| Linux (代替) | sha256sum ./suspect.exe |
出力された 64 文字の 16 進文字列を、VirusTotal のトップ画面の検索ボックスに貼り付けて検索します(タブ「URL」「Search」のうち Search を使うか、ハッシュをそのままトップ検索に貼る)。
ハッシュ検索が当たった場合
- 過去に誰かが提出したファイルなので、当時の検出数・First seen・コメントが見える
- 新鮮な情報か古い情報かに注意。1 年前のスキャンと 1 時間前のスキャンでは状況が違う
ハッシュ検索で「Not found」だった場合
- 完全に新規のファイル、または狙い撃ち配布された個別ファイル
- これだけで「危険」とも「安全」とも言えない
- 次の判断(アップロードするか)に進む
手順 ②: ファイルアップロードの判断
「Not found」だった時に、ファイルを上げるべきか。判断材料は中身です:
| ファイルの性質 | アップロードしてよい? |
|---|---|
| 不特定多数に配布されている公開バイナリ | ✅ ほぼ問題ない |
| 自分が業務で受け取った社内文書・社内ビルド | ❌ 絶対に上げない |
| 顧客情報・PII を含む可能性のある PDF/オフィス文書 | ❌ 絶対に上げない |
| 友人から受け取った写真や個人ファイル | ⚠️ 内容によるが原則避ける |
メール添付された未知の .exe で、社内文書ではない |
△ 上げる場合は「公共領域に出す」覚悟で |
理由:VirusTotal にアップロードされたファイルは Privacy Policy のとおり「セキュリティコミュニティ・研究者・パートナーに共有」されます。漏洩していなかった機密情報があなたのアップロードで漏れる可能性があります。また、標的型攻撃の被害者がアップロードすると、攻撃者に「気付かれた」ことが伝わるおそれもあります。
結果画面の読み方
VirusTotal の結果画面はタブで構成されています:
Detection タブ
- 上部に N / 70 detected のように検出数が表示される
- 下に各エンジンの判定(
Malicious/Undetected/Type unsupported/Timeout) - 検知名(例:
Trojan.GenericKD.12345)はベンダー独自の命名で、同じファイルでも各社で名前が違う
読み方の目安:
| 検出数 | 一般的な含意 |
|---|---|
| 20+ / 70 | 広く既知のマルウェア。即削除 |
| 3〜10 / 70 | 新しい脅威 or 一部 AV のみ検出。実行しない |
| 1〜2 / 70 | 誤検知の可能性 vs 標的型の可能性、両方あり得る |
| 0 / 70 + First seen がたった今 | 未スキャン状態。安全の証拠ではない |
| 0 / 70 + First seen が 数年前 + 大量ダウンロード履歴 | 既知の正規ファイルの可能性が高い |
Details タブ
- ファイル種別・サイズ・SHA-256 / SHA-1 / MD5・SSDEEP・コード署名情報
- First Submission(VT が初めて見たタイミング)と Last Analysis Date
- ファイル名の履歴(
Names欄)— 配布時に使われた偽装名のヒント
Community タブ
- 他ユーザーのコメントと評価(👍 / 👎)
- 研究者の Tag(例:
apt-group-X、stealer) - 公開議論の有無は信頼性の手がかりになる
Behavior タブ(サンドボックス実行)
- 提出ファイルをサンドボックスで実行した記録
- レジストリ書込・ファイル作成・ネットワーク通信・プロセス起動など
- ここで C2 通信や永続化の挙動が見えれば「黒」と判断しやすい
Relations タブ
- 同じハッシュが含まれていた 配信元 URL、通信先 IP / ドメイン、ドロップした他のファイル
- インシデント調査時の起点
限界と落とし穴
1. ゼロデイ・新種は見えない
AV エンジンは過去のシグネチャに依存します。配布開始から数時間〜数日のサンプルは、多くのエンジンで素通りするのが通常。「0 件検出だから安全」と判断してはいけません。
2. 誤検知(False positive)
無害なツールが 1〜2 エンジンで Generic.Heuristic.xxx と検出されることはよくあります。検出した engine 名と検知名を見て、汎用的なヒューリスティック判定なのか、固有名詞のマルウェア判定なのかを区別してください。
3. アップロード = 公共の知になる
機密ファイルを上げると、その内容(少なくともハッシュ・メタデータ・サンドボックス挙動)は VirusTotal の有料パートナー(VT Intelligence)から検索可能になります。社内ビルド・契約書・個人写真・社員リストは絶対に上げない。
4. 「VT クリーンならインストールしてよい」ではない
is-exe-safe ガイド で書いたとおり、.exe の安全判定は VirusTotal だけでなく:
- 送信元の信頼性
- コード署名と発行者
- SmartScreen の警告
- Mark of the Web の有無
を重ねて判断するものです。VT は手段の 1 つにすぎません。
5. ハッシュは「内容が同じか」しか見ない
1 バイトでも改変されると SHA-256 は別物になります。攻撃者がコンパイルし直したり末尾にゴミを足すと、過去に同種マルウェアと判定されたサンプルでも別のハッシュになり、ハッシュ検索では当たりません。挙動・パターンマッチも併用してください(VT Intelligence の Yara 検索は有料)。
代替・補助サービス
VirusTotal だけに頼らない方が良い場面もあります。
- Hybrid Analysis(CrowdStrike)— 詳細なサンドボックス挙動レポート。Falcon Sandbox ベース
- MetaDefender Cloud(OPSWAT)— 30+ エンジンと CDR(Content Disarm and Reconstruction)連携
- JoeSandbox — 高度な動的解析。サブスク制
- ANY.RUN — インタラクティブなサンドボックス(実行中の挙動を操作できる)
業務で疑わしい挙動を分析する場合は、VT のハッシュ検索 → Hybrid Analysis や ANY.RUN で挙動確認 が比較的安全な順序です。
よくある質問
Q. ファイルが大きすぎてアップロードできません
A. Free tier でも 650 MB までアップロードできますが、巨大ファイルはタイムアウトしやすいです。ハッシュ検索だけで済むかをまず検討してください。
Q. アカウント登録は必要?
A. 検索だけなら不要。アップロード履歴を残したい・コメントを書きたい場合のみ無料アカウント登録します。
Q. API で自動化したい
A. Free tier の API は 4 リクエスト/分 ・ 500 リクエスト/日の制限あり。本格的に使うなら有料の VT Intelligence / VT Premium。
Q. ローカルで完結する代替はある?
A. Windows Defender のコマンドラインスキャン(MpCmdRun.exe -Scan -ScanType 3 -File <path>)はオフラインで使えます。判定は Defender 単体なので VT より弱いですが、機密ファイルを公共に出さずに済みます。
Q. URL の安全性も確認できる?
A. はい。トップ画面の URL タブに貼ると、各 URL レピュテーションサービスの判定をまとめて見られます。フィッシングサイト調査の起点に有効です。
関連ガイド
- .exe が安全か確認する手順 — VirusTotal を 5 つの確認手順の 1 つとして位置づけ
- .dat ファイルを開く方法 — 不明ファイル全般の判定フロー
- File Signature Checker — 拡張子と実体の一致をブラウザ内で確認