web-dev-qa-db-ja.com

サービス管理権限なしでサービスによって使用されているファイルを上書きする方法はありますか?

私はエクスプロイトをデモしようとしています、そしてここにシナリオがあります:

サービスはSYSTEM特権で実行されており、実行中の実行可能ファイル(binpath)は任意のユーザーが変更できます。このエクスプロイトは、ターゲットバイナリを悪意のあるバイナリに置き換えることで構成されているため、マシンの起動時に、悪意のある実行可能ファイルが元のバイナリではなくSYSTEM特権で起動されます。ただし、ここでの問題は、コンピューターの実行中に問題のサービスによって使用されているため、サービスバイナリを置き換えることができないことです。通常、管理者だけがサービスを停止できるので、バイナリを切り替える前にサービスを停止すると、デモは一種のモットーになります。

私の質問は:

サービスを停止する権限なしでバイナリ(完全な権限を持っている)を置き換える方法はありますか?

1
trallgorm

一般に、プロセス(または他のプロセス)が明示的にこれを妨げない限り、バイナリは実行中に名前を変更できます。単にバイナリの名前を変更してから、悪意のあるものを古い名前でドロップします。コンピューターが再起動(またはサービスが再起動)すると、バージョンが実行されます。

別のアプローチはDLL Plantingです。アプリが使用するDLLを検索します(理想的にはシステムDLLではなく、リソースファイルとしてのみロードされるDLLではありません)明示的なパスで読み込まれていません。悪意のあるバージョンに置き換えます。上記の名前変更のトリックを使用するか、通常は別の場所から読み込まれるDLL System32など)、悪意のあるコピーをサービスのインストールディレクトリ(または、書き込み可能な場合は作業ディレクトリ)に配置します。


もちろん、これを武器にすることは読者への演習として残されていますが、多くの人々はWindowsバイナリの実行が[〜#〜]ではないことに気づいていないため、この回答を投稿することが重要だと思います〜#〜]本質的にバイナリの名前が変更されるのを防ぎます。

2
CBHacking

情報セキュリティの観点からは、サーバーへのアクセスレベルに応じて、これを実現する方法がいくつかあります。インストールしたバイナリは静的なままであると信頼できないため、HIPS/HIDSまたはホワイトリストは重要な防御層です。

実行可能ファイルへの不正なアクセス許可により、サービスが正常に停止したり、クラッシュしたりした場合、誰でもそれを上書きできます。

このサイトは、不適切な使用を促進する質問/回答を推奨していないため、他の方法については詳しく説明しません。この質問は、多層防御と内部脅威が基本的なセキュリティ原則である理由の優れた例です。

0
DoubleD

そもそもファイルを上書きする必要がありますか?

  • バイナリパスにはスペースがあり、引用符で囲まれていませんか?
  • このサービスでは、dllハイジャックを実行できますか?

上記のオプションを実行できるように、サービス、オペレーティングシステムをクラッシュさせたり、システムをリセットしたりできますか?

0
McMatty