我对如何保护 Windows 中命名管道的通信有一些误解
例如,我有一个通过管道与其他进程通信的 Windows 服务,我如何确保我正在与正确的进程通信?有没有验证连接的方法?我知道 Chrome 在他们的代码中实施了一些安全措施,但我在实施之后遇到了麻烦。
我还阅读了可用于针对管道的管道模拟攻击,并且在理解这种攻击如何工作或如何阻止它时遇到了一些麻烦。
我对如何保护 Windows 中命名管道的通信有一些误解
例如,我有一个通过管道与其他进程通信的 Windows 服务,我如何确保我正在与正确的进程通信?有没有验证连接的方法?我知道 Chrome 在他们的代码中实施了一些安全措施,但我在实施之后遇到了麻烦。
我还阅读了可用于针对管道的管道模拟攻击,并且在理解这种攻击如何工作或如何阻止它时遇到了一些麻烦。
来自 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 调用者。