web-dev-qa-db-ja.com

rundll32.exeに検証済みの署名がないのはなぜですか?

タスクマネージャーで、rundll32.exeのインスタンスが実行されているのを確認しました。楽しみのために、ソースファイルをVirusTotalにアップロードしたいと思いました。

Screenshot of VirusTotal scan results.

私が気付いたところで、rundll32.exeファイルには、残りのsystem32ファイルのような検証済み署名フラグがありません-偽造されているようなものです。管理者の許可を与えたプログラム(たとえば、多くのセットアップファイル)を使用してWindowsでsystem32ファイルを交換するのは非常に簡単なので、これは私に心配を与えました。

また、このような古いファイルの最初の提出日が疑わしいと感じました。 Windows 10は常にこのファイルをアップグレードしますか?

Screenshot of VirusTotal submission times.

他の検証済みファイルと同じように見えると期待していました。

Screenshot of VirusTotal scan result for verified file.

ファイルが破損していないことをどのように理解できますか?

Edit1:これは分析へのリンクです。 https://www.virustotal.com/en/file/d25ff1e6c6460a7f9de39198d182058c1712726008d187e1953b83abe977e4a0/analysis/1495024378/

7
Rockybilly

これはかなり単純なことのようです。 Windows組み込みファイルは個別に署名されてバイナリに保存されるのではなく、カタログを使用して署名を保存します。ここを参照してください:(それは古いですが、それでもほとんど真実です: https://blog.didierstevens.com/2008/01/11/the-case-of-the-missing-digital-signatures-tab/

これは、関連ファイルの簡単な署名チェックで確認できます。 enter image description here

また、signtoolを使用して、rundll32.exeに使用されているカタログを確認できるはずです。

signtoolverify /c fileIdontknow.cat rundll32.exe

カタログにはそれが含まれているかどうかがわかりますが、私はそうしているはずです。

6
Ori

編集1:Microsoftがこれらの実行可能ファイルのバンドルに署名した方法については、@ Oriの素晴らしい回答を参照してください。ファイルが個別にAuthenticodeで署名されていないというホエイに関する私の議論(VirusTotalが報告するもの)はまだ有効であると思うので、この回答はここに残します。 終了追加

公式のMicrosoftの回答は見つかりませんでしたが、なぜこのプログラム(およびそのような他のプログラム)が直接署名されないのかについての理論があります。

私はいくつかのコンピューターとVMを確認しましたが、少なくともこのファイルがAuthenticodeで署名されていないことがわかりました。私はこのファイルのいくつかの異なるバージョンを持っています(8年前に遡ります)。 Windows 10のクリーンコピー(ビルドが異なる)には異なるバージョンとタイムスタンプがあるため、Microsoftがこのファイルを更新しているようです。

では、なぜMicrosoftはこのファイルに署名しないのでしょうか。答えはrundll32.exeの目的にあると思います。 Rundll32.exeは、必要な機能はあるが実行するためのexeがないDLLを実行するために使用されます。いくつかの例を見ることができます このオタクの記事で

Authenticode署名はIDを適用し、UACプロンプトに表示されるものを決定し、ファイルが改ざんされていないことを確認するのに役立ちます。プロセスの一部であるdllが昇格を要求する場合、それはdllではなく実行中のプロセスであるため、exeの署名がUACプロンプトに使用されます。

ここで、ファイルが署名されていない理由を推測します。 rundll32.exeは、その目的の一部として不明なサードパーティのコードを実行するため、署名はセキュリティに悪影響を及ぼします。ユーザーモードレベルのコードは、rundll32.exeがdllを実行するように要求できます。 DLLが昇格を要求した場合、ポップアップにはrundll32.exeが表示され、Microsoftによって署名および検証され、管理者権限が求められます。これにより、未知の作成者プログラムが現在の振る舞いである許可を求めた場合に、人々がイエスと言う可能性がはるかに高くなります。マイクロソフトは、rundll32.exeが実行するコードの機能または安全性を合理的に保証できないため、直接署名することは危険です。

編集1:@Oriは、Windowsがこれらのファイルを検証する方法を理解しました。この最後の段落は歴史のためだけにあります。 終了追加

これは、Windowsオペレーティングシステムがrun32dll.exeを検証しないことを意味しません。ファイルのハッシュを比較して(さらに推測して)、何かが改ざんされていないかどうかを判断できます。そして、それが有効なファイルである場合にのみ実行します。

2
AstroDan

それはmightであり、VirusTotalのバックエンドでデジタル署名を検証したツールが、新しいまたは代替の形式、アルゴリズムのために署名を認識しない場合があります。または署名。私は、VT以外のツール、できれば署名検証のためのネイティブのMicrosoftツールとSysinternalsツールを使用してバイナリを分析しようと思います。次の記事を参照してください。

そうでなければ、それは確かに疑わしいでしょう...

0
kravietz