首页 文章

用于网络模拟的LogonUser的替代方案(C)

提问于
浏览
7

LogonUser是否有任何替代方案以及模拟给定帐户以访问网络资源?我正在寻找模仿的方法,这将让我连接到外国域(或同一事件的工作组机器)的机器 .

对于初始数据,我有:机器名,用户名(或域\用户名),明文密码 .

我知道有一种方法可以使用WNetAddConnection与\ machinename \ ipc $ Build 连接,然后大多数网络功能将在该帐户的上下文中运行,但win2008添加了另一个扭曲,一些功能仍然使用该帐户,该线程在 .

我也知道,有一些方法可以使用SSPI获取模拟令牌 . 有没有人尝试过这些令牌,它们是否适合访问共享,SCM,远程注册表和东西?是WNetAddConnection使用的是什么?

EDIT: 澄清一下,我无法使用LogonUser的原因是因为我需要在不受信任的域或工作组中模拟用户

EDIT2: 另一个澄清:我试图实现的项目类似于psexec,例如:

  • 程序不应修改主机或活动目录配置(例如:创建临时本地用户等) . 此外,不能假设它在DC上运行

  • 对远程主机上预先安装了哪些软件没有任何假设,只有条件是在目标上启用了Windows文件共享

  • 已知帐户/密码正在处理目标,但目标计算机可能位于本地域,外部域,根本不在域中 .

EDIT3: 我真的很想听听有关SSPI InitializeSecurityContext / AcquireCredentialsHandle选项的更多信息 . 是否有人广泛使用此API?是否可以使用通过模拟返回的令牌,以便线程可以访问网络共享和复制文件等?有人可以发布一个有效的代码片段吗?

EDIT4: 感谢Marsh Ray,问题得到了解决 . 如果有人希望看到概念验证代码,it is here

4 回答

  • 3

    如果您想在森林之外“访问网络资源”,请使用您提到的WNetAddConnection2 / 3,或使用带有RPC_ C__ AUTHN__ GSS__ NEGOTIATE和显式凭据结构的标准RPC API .

    通常,“冒充”是在服务器端发生的事情 . 服务器端将能够以您连接的帐户模拟连接 .

    但关键在于:模拟只对模拟服务器可以在其本地SAM / domain / forest目录中访问的帐户有意义 . 如果客户端和服务器位于不同的林中,他们显然无法就模拟令牌的帐户的SID达成一致(除了管理员等众所周知的SID主要用于混淆此类事件),以及这似乎有必要检查DACL等 .

    也许您想要的是使用LOGON32__ LOGON__ NEW__ CREDENTIALS标志调用LogonUserEx . 这应该成功(即使在不同的林中 - 它实际上并不验证您提供的凭据)给您一个带有您指定的用户名/密码的令牌 . 您可能必须使用DuplicateToken将其转换为模拟令牌 . 然后,您可以使用SetThreadToken替换线程上的令牌 .

    恕我直言,这不是真正的“假冒”,你只是直接使用凭证,但它允许您透明地访问网络资源作为您提供的任意用户名/密码 .

    编辑:哦,是的,请注意,在这种类型的连接上没有针对中间人的保护 . 客户端尤其不能强烈地验证服务器(缺少像IPSEC这样的英雄),所以理论上你不能相信服务器告诉你的任何东西 .

  • 8

    该理论认为您将凭证作为SEC_WINNT_AUTH_IDENTITY结构传递给AcquireCredentialsHandle函数,该函数创建InitializeSecurityContext中使用的句柄 . 我从来没有尝试过在国外域名,我不知道它是否有效 .

  • 0

    似乎几乎不可能通过Windows API直接可靠地执行此操作,而Windows在幕后做了大量工作,使网络访问“正常工作” . 事件的模拟方面只适用于调用API的单个线程 .

    但是......你可以在不同的用户下运行整个程序......例如当你运行服务时 .

    因此,您可以在主程序中编辑注册表以运行各种注册表不同安全令牌下的服务,并使用IPC /套接字与主应用程序中的这些进程进行通信 . 即 . 在主应用程序滥用的不同用户下运行的帮助程序进程的一大堆(或重新启动并重新配置相同的进程) .

    我意识到这是一个黑客,但似乎可行;)

  • 0

    您可以打开命令行,使用明文用户名和密码映射驱动器 . 然后断开驱动器:

    net use m: \\machinename\share password /user:username
    ... do stuff ...
    net use m: /delete
    

    http://technet.microsoft.com/en-us/library/cc756153(WS.10).aspx

相关问题