この .exe は安全? 実行前に必ずチェックすべき 5 項目
.exe は Windows の実行ファイルそのもの。クリックひとつでマルウェアに感染するリスクがあるため、実行前の確認が欠かせません。
基本姿勢
.exe は「実行してよい?」を自分で判断してはいけないタイプのファイルです。疑わしいなら開かない、が大前提。
重要な前提:ウイルス対策エンジンは過去のシグネチャ・ヒューリスティクスに依存するため、検出 0 件 = 安全、ではありません(ゼロデイや標的型は初期は検知されないのが普通)。複数の観点で重ね合わせて判断してください。このページで何度か出てくる VirusTotal は 70+ の AV エンジンを集約したクラウド解析サービスで、使い方と限界を別ページにまとめています。
チェック 1: 送信元は誰か
- 知らない相手からのメール添付 → 開かない
- 知っている相手でも、内容が唐突(請求書・配送通知等)で
.exeを含む → 送信元に別経路(電話・チャット)で確認 - フィッシングは「知人を装った送信」が定番
チェック 2: 拡張子の偽装
- Windows では拡張子が既定で非表示。
invoice.pdf.exeがinvoice.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 を埋め込んで innocentfdp.exe が innocent exe.pdf のように見せる手口もあります。ファイル名にコピーできない文字が含まれているように見えたら要警戒。
チェック 3: File Signature Checker で中身を確認
File Signature Checker に放り込んで、先頭 2 バイトが MZ になっていれば PE/EXE です。.pdf なのに MZ で始まっていたら偽装確定。
PE/EXE の構造(先頭バイトで何が見えるか)
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 Corporation と Micros0ft Corporation(O を 0 に差し替え)、Adobe Systems, Inc. と Adobe Systems Inc(カンマ・ピリオド差)など、肉眼では気づきにくいタイポスクワット署名があります。必ずコピーして貼り付けて照合してください。
チェック 6: VirusTotal は「ハッシュ先行」で
VirusTotal を使うときの順序が重要です(VirusTotal とは何か・使い方・限界 を読むと背景がよく分かります):
- PowerShell で SHA-256 ハッシュを先に計算:
Get-FileHash .\suspect.exe -Algorithm SHA256 - そのハッシュ値を VirusTotal に 貼り付けて検索(ファイルは上げない)
- 既知サンプルであれば検出状況・挙動レポートが即座に確認できる
ファイル本体のアップロードは最終手段にしてください。理由は:
- 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 /vはroot 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 の中で実行
- ネットワークを切ったスナップショットから起動し、挙動を観察
- 本番の資格情報・ブラウザプロファイルを持たない専用ユーザーで実行