如何保护 Windows 中的命名管道?

信息安全 验证 视窗 应用安全
2021-09-03 01:08:00

我对如何保护 Windows 中命名管道的通信有一些误解

例如,我有一个通过管道与其他进程通信的 Windows 服务,我如何确保我正在与正确的进程通信?有没有验证连接的方法?我知道 Chrome 在他们的代码中实施了一些安全措施,但我在实施之后遇到了麻烦。

我还阅读了可用于针对管道的管道模拟攻击,并且在理解这种攻击如何工作或如何阻止它时遇到了一些麻烦。

1个回答

来自 Grey Hat Hacking The Ethical Hacker's Handbook,第 4 版:

枚举命名管道

命名管道类似于共享部分,因为开发人员曾经错误地认为命名管道只接受来自用户或程序的受信任、格式良好的数据,这些用户或程序与创建命名管道的程序具有相同的权限级别。命名管道存在(至少)三种特权提升威胁。首先,弱 ACL 的命名管道可以被低权限的攻击者写入,这可能会导致在更高权限级别运行的程序中出现解析或逻辑缺陷。其次,如果攻击者可以欺骗更高权限的用户或进程连接到他们的命名管道,攻击者可能能够冒充呼叫者,召集者。此模拟功能内置于命名管道基础结构中。最后,攻击者还可能会从管道中发现他们无法访问的信息。AccessChk 似乎本身并不支持命名管道,但 Sysinternals 的 Mark Russinovich 确实创建了一个专门用于枚举命名管道的工具。这是PipeList.exe的输出

PipeList v1.1
by Mark Russinovich
http://www.sysinternals.com
Pipe Name                      Instances      Max Instances
---------                      ---------      -------------
TerminalServer\AutoReconnect        1             1
InitShutdown                        2            -1
lsass                               3            -1
protected_storage                   2            -1
SfApi                               2            -1
ntsvcs                              6            -1
scerpc                              2            -1
net\NtControlPipe1                  1             1
net\NtControlPipe2                  1             1
net\NtControlPipe3                  1             1

Process Explorer GUI 将显示命名管道的安全描述符。抢注”或“引诱”攻击(前面提到的第二个特权提升威胁)需要具有 SeImpersonatePrivilege 的攻击者影响以更高特权级别运行的进程的行为。Cesar Cerrudo 发现的一个此类示例涉及攻击者能够将注册表中的服务日志文件路径的文件路径设置为任意值。攻击涉及将日志文件路径设置为 \??\Pipe\AttackerPipe,创建该命名管道,导致记录事件,并模拟连接到 \??\Pipe\AttackerPipe 的 LocalSystem 调用者。