是否有任何替代 LogonUser 和模拟给定帐户以访问网络资源的方法?我正在寻找一种模拟方法,它可以让我连接到外国域中的机器(或同样的工作组机器)。
对于初始数据,我有:机器名、用户名(或域\用户名)、明文密码。
我知道有一种方法可以使用 WNetAddConnection 与 \\machinename\ipc$ 建立连接,然后大多数网络功能将在该帐户的上下文中运行,但是 win2008 添加了另一个转折点,并且某些功能仍然使用该帐户,该线程正在运行.
我也知道,有一些方法可以使用 SSPI 获取模拟令牌。有没有人尝试过这些令牌,它们是否适合访问共享、SCM、远程注册表和其他东西?是什么 WNetAddConnection 正在使用?
编辑:澄清一下,我不能使用 LogonUser 的原因是因为我需要在不受信任的域或工作组中模拟用户
EDIT2:另一个澄清:我试图实现的项目类似于 psexec,例如:
- 程序不应修改主机或活动目录配置(例如:创建临时本地用户等)。此外,不能假设它是否在 DC 上运行
- 不能假设远程主机上预装了哪些软件,唯一的条件是目标上启用了 Windows 文件共享
- 已知帐户/密码在目标上工作,但目标机器可能在本地域、外部域中,根本不在域中。
EDIT3:我真的很想听到更多关于 SSPI InitializeSecurityContext / AcquireCredentialsHandle 选项的信息。有没有人一直在广泛使用这个 API?是否可以使用模拟返回的令牌,以便线程可以访问网络共享和复制文件等?有人可以发布一个工作代码片段吗?
EDIT4:感谢 Marsh Ray,问题得到了解决。如果有人想查看概念验证代码,就在这里