命名管道与RPC通信

文章目录

  • 一、命名管道
  • 二、RPC

一、命名管道

命名管道,Named Pipes,是一种进程间通信(IPC)机制,用于在本地或远程计算机的两个进程之间传递数据

  • 它是一种"管道",允许一个进程向它写入数据,另一个进程读取。
  • "命名"指的是它存在于文件系统中的路径(如 \.\pipe\myPipe),可以被其它进程识别和访问

Windows系统中命名管道是SMB协议的一种通信信道。

特性 说明
双向通信 可全双工发送和接收数据
支持网络通信 可通过SMB协议远程访问(如\SERVER_IP\pipe\PIPE_NAME
基于SMB 默认使用445/tcp端口传输数据
身份验证/访问控制 继承Windows安全模型(如NTLM/Kerberos)

在渗透测试阶段,能够利用SMB命名管道,与目标系统交互,远程执行命令。如,利用Impacket工具:

smbexec.py [email protected]

或利用psexec、winrm、namedpipe等技术攻击系统。

二、RPC

Remote Procedure Call,远程过程调用是一种通信协议允许一台计算机上的程序调用另一台计算机上的函数(过程),通过该协议,计算机能够执行在远程系统的代码。
即:RPC是跨网络执行代码的机制。
工作原理:

  1. 客户端发起调用请求,调用一个"RP远程过程";
  2. RPC框架将函数打包成"消息",通过网络发送到远程主机;
  3. 服务器解包消息,执行函数,然后将结果打包发回;
  4. 客户端接收结果,调用结束。
特性 说明
跨语言/跨平台 支持不同系统间的通信(如 Windows ↔ Linux)。
多种传输协议 可基于 TCP/IP、HTTP、命名管道(SMB)等。
接口定义语言 使用 IDL(Interface Definition Language)描述函数接口。
动态端口分配 默认使用 135/tcp 作为端口映射器,实际服务运行在随机高端口。

可通过rpcclient枚举域信息、通过PRC调用EfsRpcOpenFileRaw强制发起NTLM认证捕获哈希。

rpcclient -U user 10.10.10.10

例如,上面指令是通过SMB协议连接到\\10.10.10.10\pipe\lsarpc命名管道;然后通过MS-RPC协议调用远程的LSA服务,获取用户、组、策略等信息。

你可能感兴趣的:(学习)