FileHint

この .exe は安全? 実行前に必ずチェックすべき 5 項目

.exe は Windows の実行ファイルそのもの。クリックひとつでマルウェアに感染するリスクがあるため、実行前の確認が欠かせません。

基本姿勢

.exe は「実行してよい?」を自分で判断してはいけないタイプのファイルです。疑わしいなら開かない、が大前提。

重要な前提:ウイルス対策エンジンは過去のシグネチャ・ヒューリスティクスに依存するため、検出 0 件 = 安全、ではありません(ゼロデイや標的型は初期は検知されないのが普通)。複数の観点で重ね合わせて判断してください。このページで何度か出てくる VirusTotal は 70+ の AV エンジンを集約したクラウド解析サービスで、使い方と限界を別ページにまとめています。

チェック 1: 送信元は誰か

  • 知らない相手からのメール添付 → 開かない
  • 知っている相手でも、内容が唐突(請求書・配送通知等)で .exe を含む → 送信元に別経路(電話・チャット)で確認
  • フィッシングは「知人を装った送信」が定番

チェック 2: 拡張子の偽装

  • Windows では拡張子が既定で非表示。invoice.pdf.exeinvoice.pdf に見える
  • 拡張子表示を オン にしておく(Windows でファイル拡張子を表示する方法
  • ZIP 内の .exe や、スペース多用で拡張子を隠す手法(report.pdf .exe)にも注意

「実行される拡張子」の全集(.exe 以外も要警戒)

.exe だけをブロックしても抜け道は多数あります。以下は実行中にコードが走り得る代表的な拡張子です:

拡張子 何者 偽装に使われやすい典型
.exe Windows 実行ファイル 請求書・インストーラーを装う
.scr スクリーンセーバー(中身は PE/EXE) 画像スライドショー、壁紙配布を装う
.pif Program Information File(古い .exe ショートカット) 文書アイコンに差し替えて配布
.com 旧来の DOS 実行形式 バッチと組で配布
.cpl コントロールパネル項目 「設定ツール」を装う
.hta HTML Application 見た目はウェブページだが任意コード実行
.lnk ショートカット 中に cmd.exe /c 任意コマンド を仕込める
.ps1 PowerShell スクリプト テキストだがポリシー緩和環境で即実行
.vbs / .js Windows Script Host スクリプト メール添付で素直に走る
.msi Windows インストーラー 正規ソフトに便乗した偽インストーラ
.iso / .img ディスクイメージ Windows 10 以降はダブルクリックでマウント、中の .exe に誘導

**RTLO(右から左への上書き)**攻撃:Unicode の U+202E を埋め込んで innocent‮fdp.exeinnocent exe.pdf のように見せる手口もあります。ファイル名にコピーできない文字が含まれているように見えたら要警戒。

チェック 3: File Signature Checker で中身を確認

File Signature Checker に放り込んで、先頭 2 バイトが MZ になっていれば PE/EXE です。.pdf なのに MZ で始まっていたら偽装確定。

PE/EXE の構造(先頭バイトで何が見えるか)

MZ header 4D 5A ... offset 0x00 DOS stub "This program..." ~offset 0x40 PE header 50 45 00 00 (PE\0\0) offset via 0x3C Section table .text / .data / .rsrc Sections code / data / resources 0x3C にある値 (e_lfanew) が PE header の位置を示す
.exe(PE/COFF)は必ず先頭が 4D 5A("MZ")で始まる。末尾は PE header・セクションへと続く。参考:Microsoft Learn: PE Format

チェック 4: Mark of the Web と SmartScreen

  • ブラウザ/メール経由で受け取ったファイルには Mark of the Web (MOTW) が付き、実行時に Microsoft Defender SmartScreen がレピュテーションを問い合わせます
  • 警告が出たら 「実行」を押さない。「発行元を確認できません」「このファイルは一般的にダウンロードされていません」は重要なシグナル
  • SmartScreen はレピュテーションベースなので、新しいマルウェアは一時的にスルーされ得ることも理解しておく

SmartScreen 警告の読み分け

警告の見出し 意味 あなたがすべきこと
「WindowsによってPCが保護されました」(未知の発行元、レピュテーションなし) 初見の .exe。危険とは断定されていないが保証もない 「実行しない」を選ぶのが既定。発行元・署名・VirusTotal で再評価してから判断
「このアプリは信頼されていない発行元から...」 署名があるが正規 CA 経路で検証できない/失効 実行しない。盗用・自己署名の典型パターン
「このアプリは PC に問題を起こす可能性があります」(赤い盾) Defender がマルウェアと明確に判定 即削除。別経路でも届いていないか確認
警告なく実行される SmartScreen が既知・安全と判断、または MOTW が剥がれている 警告がないこと自体を「安全」の証拠にしない。MOTW が剥がれた .zip 経由配布は警告を回避しやすい

注意:「詳細情報 → 実行する」ボタンは警告を押し切るための動線です。ここを押す判断は、署名・ハッシュ・出所が全て確認済の場合に限定してください。

チェック 5: コード署名と発行元の確認

  • ファイルを右クリック > プロパティ > デジタル署名 タブで署名の有無を確認
  • 署名があっても「誰の署名か」が重要。正規ベンダーの名前と一致しているかを確認(似たドメイン・盗用された証明書で署名されることもある)
  • コマンドラインで確認するなら Windows SDK 付属の signtool verify /pa /v path\to\file.exe
  • 未署名または発行者が不明の場合は、次のステップへ進まない

signtool verify /pa /v 出力の読み方

出力の抜粋 意味 判断
Successfully verified: ... + Signing Certificate Chain: ... Microsoft Code Signing PCA 正規の証明書チェーンで検証成功 発行元名が期待する組織と一致するか必ず照合
SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. ルート CA が信頼ストアに無い 自己署名 or 内製 CA の可能性。第三者配布物なら要警戒
SignTool Error: No signature found. 未署名 実行しない
SignTool Error: The file is being used by another process. 使用中 ロック解除後に再実行
SignTool Error: WinVerifyTrust returned error: 0x800B0101(証明書期限切れ) タイムスタンプで救済できない期限切れ 古い正規配布物が残っているだけのこともあるが、改変の疑いが拭えないなら破棄

発行元名の照合ワナMicrosoft CorporationMicros0ft Corporation(O を 0 に差し替え)、Adobe Systems, Inc.Adobe Systems Inc(カンマ・ピリオド差)など、肉眼では気づきにくいタイポスクワット署名があります。必ずコピーして貼り付けて照合してください。

チェック 6: VirusTotal は「ハッシュ先行」で

VirusTotal を使うときの順序が重要です(VirusTotal とは何か・使い方・限界 を読むと背景がよく分かります):

  1. PowerShell で SHA-256 ハッシュを先に計算
    Get-FileHash .\suspect.exe -Algorithm SHA256
    
  2. そのハッシュ値を VirusTotal に 貼り付けて検索(ファイルは上げない)
  3. 既知サンプルであれば検出状況・挙動レポートが即座に確認できる

ファイル本体のアップロードは最終手段にしてください。理由は:

  • VirusTotal にアップロードされたサンプルは研究者・セキュリティベンダーに共有される(機密情報・個人情報・社内ビルドを含む可能性のあるファイルは上げない)
  • アップロードによって攻撃者に「標的側が気付いた」ことが伝わる可能性もある

検出数の読み方(判定ラベル早見)

VirusTotal の見え方 代表的な意味 あなたの次の一手
Detection 20+ / 75 engines 広く既知のマルウェア 即削除、関連メールも削除。社内の場合はインシデント報告
Detection 3〜10 / 75 新しめの脅威、もしくは一部 AV だけ検知 実行しない。署名・発行元・挙動を要確認
Detection 1〜2 / 75 誤検知の可能性 vs 狙い撃ちの可能性、両方あり得る 実行しない。検知した engine 名と「First seen」日時を見る
Detection 0 / 75, First seen: 数分前 スキャン未整備の新規サンプル。安全の証拠にはならない 署名・発行元・MOTW 警告・挙動で評価
Detection 0 / 75, First seen: 数年前, 多数のダウンロード履歴 既知の正規ファイルに近い 発行元と名称を照合の上で判断

First seen とダウンロード数は Community タブで確認できます。0 件でも初回スキャンなら安全情報ではない、が鉄則です。

実際にあった失敗例

1. 「詳細情報」を押して突破した結果

配送通知を装ったメールに添付された shipment_update.exe で、SmartScreen が「未知の発行元」警告を出しました。利用者は「受け取り連絡が急ぎ」と思い込み、詳細情報 → 実行するを押下。以後の挙動:

  • 実行の瞬間は目に見える変化なし(デコイとしてブラウザで追跡番号風の PDF を開いた)
  • 裏で資格情報窃取と C2 通信が開始
  • 数時間後に経理宛に同一人物名義の不正送金依頼メールが発信

教訓:警告が「未知の発行元」なら、緊急性を感じる文脈ほど疑う。「急ぎだから今判断する」をやめて、送信元に別経路で確認する 5 分で被害を避けられます。

2. 署名はあっても発行元が詐称だった

ある開発者が「ビルド高速化ツール」を某フォーラムで入手。右クリック→プロパティには Micros0ft Corporation と署名が見えたが、「Microsoft」と見間違えていた(O が数字の 0)。

  • signtool verify /pa /vroot not trusted を返していた
  • 攻撃者が用意した自己署名 + タイポスクワット名での偽装

教訓:署名欄の名前は必ずコピー&ペーストで照合signtool verify /pa のルート信頼を確認。目視だけで済ませない。

3. 拡張子偽装(.scr ファミリー)

画像編集コミュニティで「高画質壁紙集」として配られた spring_gallery.scr。受領者は拡張子を見落とし(Windows 既定で非表示)、アイコンが画像に偽装されていた。

  • 実体は PE/EXE(MZ で始まる)
  • 実行するとまず仕込みの JPEG を実際にスライドショー表示し、並行でランサム活動

教訓.scr .pif .cpl .lnk .hta .iso も実行系。拡張子は必ず表示オンで確認、心当たりのない拡張子なら開かない。

4. ZIP 内 + MOTW 剥がれ

quarterly_report.zip を Outlook で受信。Windows は ZIP には MOTW を付けるが、古い展開ソフトでは内部ファイルに MOTW を伝播しないことがある。展開後の report_viewer.exe は SmartScreen を呼び出さず、警告なく起動。

  • VirusTotal では 0/75 検出(新種)
  • 実行後に全共有ドライブへランサム展開

教訓:ZIP 展開ソフトは MOTW 伝播に対応したものを使う(Windows 11 標準の ZIP は対応)。警告が出なかった=安全ではない。MOTW 以外の層(署名・挙動・送信元)での確認を怠らない。

それでも実行する必要があるときは

  • 仮想マシンまたは Windows Sandbox の中で実行
  • ネットワークを切ったスナップショットから起動し、挙動を観察
  • 本番の資格情報・ブラウザプロファイルを持たない専用ユーザーで実行

関連する拡張子

出典