我为我们的内部公司用户编写了一个自助服务密码重置工具作为 C# Winform。
此应用程序使用其他自定义 Asp.net Web 服务,使用 HTTPS 和基于客户端证书的身份验证来生成随机 6 位代码并发送到移动设备或检索用户在注册自助服务时设置的 3 个安全问题.
代码/答案被发送回网络服务,如果验证,用户的 AD 帐户被解锁并且他们的密码重置服务器端。
我认为这在任何 SSPR 工具中都很常见,如果从另一台用户机器访问,一切正常,但是......
由于问题的性质是用户在需要重置密码时无法访问他们的机器,因此有人询问我是否可以从 Windows 登录屏幕启动此应用程序。
我已经编写了一个 POC 自定义凭据提供程序,它向 Windows 7 登录屏幕添加了一个新的“磁贴”,并在单击它时启动我的应用程序,但我不禁认为这可能是一个非常糟糕的主意。
由于它是从哪里启动的,该应用程序在本地 SYSTEM 用户的上下文中运行,这已经让我感到紧张了!
看看其他最常见的“付费”SSPR 工具,从表面上看,它们正在做类似的事情,即在登录屏幕上运行外部应用程序?
在 winlogin 屏幕上以 SYSTEM 身份运行任何应用程序是否完全禁止?
如果没有,我应该遵循哪些建议来填补任何漏洞?
我还能做些什么来降低风险(在我的程序首次运行时进行某种模拟/取消提升?)