SysinternalsユーティリティのSigCheckは、1つ以上のファイルやフォルダー構造に対してセキュリティ関連の機能を実行する、多目的なコンソールユーティリティです。最も重要な役割は、ファイルが信頼できる証明書によってデジタル署名されているかどうかを検証することです。

セキュリティに関連するファイル情報をチェックする

 図1で確認できるように、SigCheckはカタログ署名に使用されたカタログファイルや署名者の情報、複数のハッシュアルゴリズムを使用したファイルハッシュの計算、詳細なバージョン情報の表示も可能です。ファイルに埋め込まれたマニフェストの表示や、署名されていないファイルをフォルダーから検索する機能、カンマ区切り値(CSV)形式によるレポート出力にも対応しています。

図1●sigcheck -a -i -h C:\Windows\explorer.exeの出力結果
図1●sigcheck -a -i -h C:\Windows\explorer.exeの出力結果
[画像のクリックで拡大表示]

 ファイルに関連付けられたデジタル署名は、ファイルの信頼性と整合性を確認するのに役立ちます。検証された署名は、そのファイルの出所がコード署名証明書の所有者であり、署名されてから変更されていないことを示しています。コード署名証明書によって提供される保証は、次の3点に大きく依存しています。

  • 所有者を認証する証明書を発行した証明機関(CA)の信用
  • 証明書のプライベートキーを公開していないという証明書の所有者の信用
  • および署名を検証するシステムが不正なルートCA証明書のインストールを許さないこと

 正当なソフトウェアの提供元の大部分は、ビジネスを遂行し、顧客に安心を提供するためのコストの一部として、VeriSign社やThawte社といった信頼されたCAからコード署名証明書を購入して、顧客のコンピューターに配布するファイルに署名します。正規の発行元と称していながら、有効な証明書が欠如している実行可能ファイルは、疑うべきです。

 以前は、署名されたマルウェアというのは、まれでした。しかし、マルウェア作成者の技術が巧妙になるにつれて、そうとも言えない状況になってきました。最近では、フロント組織を立ち上げ、正規のCAからコード署名証明書を購入しているマルウェア作成者が存在します。また別のマルウェア作成者は、正当な企業の証明書から、十分に保護されていないプライベートキーを盗み出し、そのキーをマルウェアの署名に悪用しています。