web-dev-qa-db-ja.com

プロセスインジェクションを実行するために必要な権限

私は、Windowsマシンでのプロセスインジェクションテクニックについて読んでいます(元々は、権限昇格の調査からこれに至りました)。私は人生の大部分でWindowsを使用しましたが、Linuxの特権/アクセス許可のスキームをよく理解しているように感じます。また、いくつかの一般的な方法の前提について明確にしていただければ幸いです。

  1. プロセスの空洞化-プログラムは別のプログラムを開始する必要があります。一般的な例は、WindowsフォルダーにあるExplorer.exeまたはsvhosts.exeです。
  2. DLLハイジャック-別のプロセスにいくつかのロードをロードするDLLまたは検索パスの高いフォルダに書き込みます
  3. その他同様

これらのメソッドは通常、システムAPIの呼び出しと、戦略的な場所でのメモリの割り当てとコピーに依存しています。標準の低特権ユーザーがこの攻撃を実行できるようには見えませんか? (「低特権」の例は、標準の企業ユーザーです)。もし可能なら、それはオペレーティングシステムの設計上の欠陥ではないでしょうか、それともマニュアルが示すよりもはるかに難しいのではないでしょうか?

参照: 10プロセスインジェクションテクニック:一般的でトレンドのあるプロセスインジェクションテクニックの技術調査 、テキストと図は、プロセスが別のプロセスのメモリを簡単に操作することを示しています。

3
Anton.P

ここではユーザーアカウントの観点から特権を考えないでください。必要な権限はSeDebugです。 SeDebugは、プロセスが実行されているアカウントである管理者/ rootアカウントに付与されます。

通常のユーザーとして、SYSTEMとして実行されているプロセスに注入することはできません。攻撃者は、最初はプロセスに同じコンテキストを注入することしかできません。

プロセスの空洞化では、スレッドを初期プロセスとして開始しますが、一時停止状態です。次に、メモリをクリアして、非表示にするプロセスに置き換えます。あなたがこのプロセスを制御している間、あなたはオリジナルを装って別のプロセスを隠しているだけです。

DLLハイジャックでは、ライブラリを検索してロードするときに呼び出しプロセスによってパスがロードされるため、フォルダを作成してバイナリをディスクに書き込む必要があります。したがって、これがサービスである場合、それを開始/停止する権限が必要になる可能性があります。

2
McMatty

私が覚えていること(私は間違っているかもしれません)からこれを行うには、管理者アカウントが必要です。通常のユーザーはそれを行うことができません。しばらく前にプロセスハローを使用するトロイの木馬を書きましたが、動作するには管理者として実行する必要があります。

0