LogonUserの代わりに、ネットワークリソースにアクセスするために特定のアカウントを偽装する方法はありますか?私は、外部ドメインのマシン(または同じ問題のワークグループマシン)に接続できるようにするなりすましの方法を探しています。
私が持っている初期データの場合:マシン名、ユーザー名(またはドメイン\ユーザー名)、クリアテキストのパスワード。
WNetAddConnectionを使用して\\machinename\ ipc $への接続を確立する方法があることを知っています。ほとんどのネットワーク関数はそのアカウントのコンテキストで実行されますが、win2008は別の工夫を加え、一部の関数は引き続きアカウントを使用し、そのスレッドは。
また、SSPIを使用して偽装トークンを取得する方法があることも認識しています。誰かがそれらのトークンを試したことがありますか?それらは共有、SCM、リモートレジストリなどにアクセスするのに適していますか?WNetAddConnectionが使用しているものは何ですか?
編集:明確にするために、LogonUserを使用できない理由は、信頼されていないドメインまたはワークグループのユーザーになりすます必要があるためです。
EDIT2:別の説明:私が実装しようとしている項目はpsexecに似ています。例:
- プログラムは、ホストまたはActive Directoryの構成を変更しないでください(例:一時的なローカルユーザーの作成など)。さらに、DCで実行されているかどうかを想定することはできません。
- どのソフトウェアがリモートホストにプリインストールされているかを想定することはできません。与えられた条件は、Windowsファイル共有がターゲットで有効になっていることだけです。
- アカウント/パスワードはターゲットで機能していることがわかっていますが、ターゲットマシンはローカルドメイン、外部ドメインにある可能性があり、ドメインにまったく存在しない可能性があります。
EDIT3: SSPI InitializeSecurityContext/AcquireCredentialsHandleオプションについてもっと知りたいです。このAPIを幅広く使用している人はいますか?偽装で返されたトークンを使用して、スレッドがネットワーク共有にアクセスしたり、ファイルをコピーしたりできるようにすることは可能ですか?誰かが実用的なコードスニペットを投稿できますか?
EDIT4:マーシュレイのおかげで、問題は解決されました。誰かが概念実証コードを見たいと思っているなら、それはここにあります