MS-RPC 流程浅析

admin 2025年1月13日23:03:21评论13 views字数 2146阅读7分9秒阅读模式

声明:文中涉及到的技术和工具,仅供学习使用,禁止从事任何非法活动,如因此造成的直接或间接损失,均由使用者自行承担责任。

众亦信安,中意你啊!
点不了吃亏,点不了上当,设置星标,方能无恙!
MS-RPC 流程浅析

简介

这里引用微软官方的介绍:

    Microsoft 远程过程调用 (RPC) 是一种进程间通信 (IPC) 机制,可实现数据交换和驻留在不同进程中的功能的调用。该进程可以在同一台计算机上、在局域网 (LAN) 上或通过 Internet。Microsoft RPC 机制使用其他 IPC 机制(例如命名管道、NetBIOS 或 Winsock)来建立客户端和服务器之间的通信。通过RPC,基本的程序逻辑和相关的过程代码可以存在于不同的计算机上,这对于分布式应用程序很重要。

建立RPC服务

    当建立RPC Server时,会向EPM服务器注册相关信息,这些信息会存储在epm服务器的端点映射数据库中,rpc发现过程中也是查询端点映射数据库中的信息返回给client,每个windows主机都是自带EPM服务的;

    一般每个windows都会有rpc服务以及epm,如果不是域内,只是本地进行rpc通信,会向目标主机上的epm进行epm map(映射)请求;

    常见注册信息如下:

  • 服务uuid(通用唯一标识符);

  • 服务ip及开放的端口;

MS-RPC 流程浅析

RPC通信的四个阶段

    以impacket中的addcomputer.py进行举例,该脚本是在域内注册机器账号,wireshare抓包如下:

相关命令:python addcomputer.py domain.local/win10_admin:Admin@123 -dc-ip 192.168.1.128//domain.local/win10_admin:Admin@123为域用户凭证//192.168.1.128为域控制器ip

第一阶段:建立TCP通信

    TCP会话建立是在RPC客户端和RPC服务器之间建立TCP连接的行为;TCP 会话将由 RPC 客户端通过与 RPC 服务器的 TCP 3 次握手来启动。
MS-RPC 流程浅析

第二阶段:RPC绑定

    client向server发送RPC绑定请求,其中包括rpc通信所使用的通信协议、版本等;

    server向client返回响应,其中包括rpc通信id、数据分片形式、传输最大值、是否同意进行通信等;

通信协议

    client选择通信协议向server建立连接,这些协议都是基于tcp协议,协议如下:

MS-RPC 流程浅析
MS-RPC 流程浅析
    详细查看DCERPC Bind请求包中的内容,其中携带了两个uuid,EPMv4为我们请求绑定的接口,32bit NDR V2为我们传输格式为32位NDR格式(NDR有32位和64位)
MS-RPC 流程浅析
    详细查看DCERPC Bind相应包中的内容,其中返回Acceptance表示接受Bind请求;
MS-RPC 流程浅析

第三阶段:RPC发现及查询

    如果在不知道rpc服务器的ip及端口,则RPC发现要放在第一阶段,通过epm map请求epm来获取rpc服务端的信息,再进行rpc绑定和通信;

EPM MAP(映射)请求

    client向epm发送map请求也叫做映射请求,其中包括rpc服务器的ip地址等信息;

    epm向client发送map 响应,其中包括rpc服务器的host和端口,如果是smb协议会返回Named Pipe等信息;

MS-RPC 流程浅析

    详细查看map请求包,Operation表示操作类型位映射操作;UUID pointer表示映射请求的类型,REFerent ID不为空表示UUID存在,UUID等于0表示不知道具体的UUID,也就是未指定具体 UUID 的映射请求;Tower pointer可以理解为查询的条件,分别为:

  1. SAMR uuid:表示请求目标SAMR服务;

  2. 32bit NDR:表示传输格式为32位;

  3. RPC connection-oriented protocol:表示使用 RPC 连接导向的协议;

  4. NamePipe:表示使用pipe命名管道进行通信;

  5. NetBIOS:表示NetBIOS地址为192.168.1.128;

从请求包中我们可以分析出MAP请求要SAMR服务的PIPE命名管道接口;

MS-RPC 流程浅析

    详细查看map响应包中Tower pointer携带了SAMR服务对应的PIPE命名管道名称pipef253e8360b6bb445;

MS-RPC 流程浅析

TCP 通信结束

    经历了rpc的绑定后,tcp进行四次挥手断开;

MS-RPC 流程浅析

第四阶段:RPC通信

    重新开启tcp连接进行rpc通信,使用rpc绑定时的协议进行通信;

MS-RPC 流程浅析
    进行smb认证通信
MS-RPC 流程浅析
   smb认证成功之后,我们可以看到客户端RPC绑定请求了上面epm map通信获取到的pipe命名管道;    
MS-RPC 流程浅析
    smb通信结束后,server会向client发送rst tcp包进行强制断开连接;
MS-RPC 流程浅析

    通过查看addcomputer的rpc过程,绘制流程图如下:

MS-RPC 流程浅析

总结

    本次对MS-RPC协议的通信流程进行简单的分析,上面举的例子为需要EPM映射请求的,大部分常见的RPC接口都是已知的,所以就不需要RPM通信这一步;往上对于EPM相关信息比较少,所以才选择带有EPM的相关通信进行分析。

    点点关注不迷路,每周不定时持续分享各种干货。可关注公众号回复"进群",也可添加管理微信拉你入群。

MS-RPC 流程浅析

原文始发于微信公众号(众亦信安):MS-RPC 流程浅析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月13日23:03:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MS-RPC 流程浅析https://cn-sec.com/archives/3624918.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息