web-dev-qa-db-ja.com

Windowsドメイン内のコンピューターの偽装

私は、コンピュータがどのように識別され、Windowsドメインへのアクセスが許可されるかについて、頭を抱えています。より具体的には、何らかのメカニズムがコンピュータの身元を偽造することを本当に防ぐのを防ぐのかどうかを私は自分自身に尋ねてきました、そしてそうであれば、どのようにですか?

既にドメイン上にあるコンピューターに完全にアクセスできると仮定すると、ドメインコントローラーが識別のために依存する情報はすべて、別のコンピューターに複製できると考えています。

(私が理解しているように、ドメイン内のコンピューターを識別するのは1つのLSA共有シークレットです。 このTechnetブログ によると、LSA共有シークレットは復号化して抽出できます。)

この答え によるワイプされたコンピューターのドメインへの再参加に関するサーバーフォールトに関する質問と、ここでは情報セキュリティについて これ 同様トピックでは、Windowsドメイン内の既存のIDでさえもコンピュータに想定させることは不可能です

これが本当なら、この防止メカニズムの背後にある原理を知りたいのですが。上記のリンクから私への回答には、十分な洞察が含まれていません。

上記の主張が偽であり、実際に適切な状況でドメイン上のコンピューターのIDを偽造することが可能である場合、要約するとどのようなステップが含まれるかを知りたいと思います。

手伝ってくれてありがとうございます。

7
Oskar Lindberg

ワークステーションがドメインに参加すると、次のことが起こります。

  • ワークステーションはランダムなパスワードを作成し、ドメインコントローラにマシンアカウントを作成してこのパスワードに関連付けるように要求しますユーザーアカウントには「マシンをドメインに追加」権限が必要ですが、ドメイン管理者にはこの権限があります。
  • Windowsは内部で名前を使用しませんが、任意のアカウントにSIDを使用するため、ワークステーションsid(psgetsidでチェックされる場合があります)は関連するパスワードとともにドメインに保存されます(パスワードは任意のユーザーとしてunicodepwdに保存されます)パスワード、 https://technet.Microsoft.com/en-us/magazine/ff848710.aspx )を参照
  • マシンはパスワードをHKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\$MACHINE.ACCに保存します。 NT AUTHORITY\SYSTEMのみがこのハイブにアクセスできます。ローカル管理者も持っていません(レジストリのアクセス許可ではありません。Windowsでハードコードされているためです)。

  • DCとワークステーションは定期的にパスワードを変更します。面白いですが、古いパスワードもそこに保存されています(oldValサブキー)。パスは手動でリセットできます: https://support.Microsoft.com/en-us/kb/260575

このプロセスは次のとおりです: https://blogs.technet.Microsoft.com/askds/2009/02/15/machine-account-password-process-2/

アカウントのすべてのパスワードはHKEY_LOCAL_MACHINE\SECURITY\Policy\Secretsに保存され、NT AUTHORITY\SYSTEMのみがこのHiveにアクセスできるため、記事の人物はpowershellを使用して、このアカウントへのプロセスを偽装しました。 psexec -i -s cmd.exeでも同じことができ、そこからregeditが起動します。 $MACHINE.ACCを開き、CurrValを確認します。

このHiveには、各アカウントのセキュリティ権限に関する情報も保存されます。これはすべてローカルセキュリティポリシーの一部です( https://msdn.Microsoft.com/en-us/library/windows/desktop/ms721785(v = vs.85).aspxlsass.exeによって管理されています。

したがって、PCを偽造するには、少なくとも少なくともができる必要があります。

  • ログインする
  • コードをNT AUTHORITY\SYSTEMとして実行できる(ローカル管理者であり、psexecのようなツールを使用する)
  • $MACHINE.ACCからパスワードを読み取ります
  • そのsidを読み取る(psgetsidを使用)

そして別のマシンで

PCを偽造するのに十分かどうかはわかりませんが、これは簡単に見えません。少なくとも、システムを偽装するには別のPCのローカル管理者権限が必要であり、このアクセス権を決して与えない優れたITが必要です。

6
user996142