DCOM作为Windows分布式组件对象模型,长期是内网横向移动的核心通道之一,其可行性和免杀性的博弈,更是攻防对抗的焦点。下面从核心原理出发,完整拆解攻击链路、免杀思路和防御方案,结合当前攻防技术演进趋势补充前瞻性内容。
一、核心原理与可行性深度分析
(一)DCOM技术底层逻辑
DCOM(Distributed Component Object Model)是微软在COM组件基础上扩展的分布式通信技术,其核心是跨进程、跨主机的对象代理与远程调用机制。DCOM依赖RPC(远程过程调用)协议实现通信,默认通过135端口完成RPC端点映射,后续数据传输则会动态协商端口(通常为49152-65535区间),或通过手动配置固定端口进行通信。
从系统架构来看,DCOM是Windows系统的基础功能,承载着系统组件交互、第三方应用跨进程调用等核心任务,对应的DcomLaunch(DCOM Server Process Launcher)和RpcSs(RPC Endpoint Mapper)服务默认开机自启,且权限等级较高,这为攻击者提供了天然的利用基础。
(二)可行性核心判断维度
前置条件的刚性与弹性
- 凭据门槛:必须持有目标主机的管理员级凭据(本地管理员组用户,域环境下则需要具备目标主机本地管理员权限的域用户/域管理员)。值得注意的是,凭据形式不限于明文密码,NTLM哈希、Kerberos票据均可通过哈希传递(Pass the Hash)、票据传递(Pass the Ticket)技术完成身份认证,这大幅降低了攻击者获取明文密码的难度。
- 网络连通性:135端口必须可达,且RPC数据传输端口未被防火墙阻断。在实际内网环境中,由于管理员对135端口的防护意识较弱,且动态端口范围较大难以完全封堵,这一条件往往容易满足。
- 服务可用性:目标主机未禁用DCOM相关服务。部分企业会通过组策略限制DCOM,但受限于业务兼容性,多数场景下仍需保持服务启用状态。
系统版本兼容性与技术演进
系统版本 可行性等级 核心限制与突破手段 Windows 7/Server 2008 R2 极高 默认配置宽松,无远程UAC限制,可直接调用MMC20.Application等敏感组件 Windows 10/Server 2016+ 中高 引入远程UAC限制,默认阻止非本地管理员的远程权限提升;可通过修改组件注册表权限、利用内置高权限SID绕过 Windows 11/Server 2022+ 中等 强化COM组件权限管控,新增RPC流量加密要求,引入内存完整性保护;需结合无文件攻击、白进程注入等技术突破 可行性结论
在满足凭据、网络、服务三大核心条件的前提下,DCOM横向移动在当前Windows主流版本中仍具备强可行性。随着Windows系统安全机制的迭代,攻击手法从“直接调用”向“绕过+伪装”演进,但并未被彻底封堵,仍是内网渗透测试与高级持续性威胁(APT)攻击的核心手段。
二、核心攻击手法与技术演进
DCOM横向移动的本质是远程调用目标主机上具备命令执行能力的COM组件接口,其攻击手法随系统安全加固不断升级,可分为经典利用、进阶绕过、新型变种三个阶段。
(一)经典组件利用:直接调用敏感接口
这是最基础的攻击方式,利用系统内置的高权限COM组件执行命令,无需额外依赖。
- MMC20.Application:最常用的核心组件,通过
Document.ActiveView.ExecuteShellCommand方法直接执行系统命令,支持指定工作目录、窗口显示模式,兼容性覆盖Windows 7至Windows 10早期版本。# PowerShell远程调用示例$targetIP="192.168.1.100"$comObj=[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application",$targetIP))$comObj.Document.ActiveView.ExecuteShellCommand("cmd.exe",$null,"/c net user hacker P@ssw0rd /add & net localgroup administrators hacker /add","Minimized") - ShellWindows/ShellBrowserWindow:依托IE浏览器组件实现命令执行,需目标主机安装IE,隐蔽性高于MMC20.Application,因为其调用行为更贴近正常系统操作。
- 办公软件组件:如Excel.Application、Word.Application,通过
Application.Run方法或启动宏执行恶意代码,依赖Office套件安装,隐蔽性极强,适合针对办公主机的攻击。
(二)进阶绕过技术:突破系统安全限制
针对Windows 10+的远程UAC限制、防火墙端口管控,攻击者衍生出一系列绕过手段。
- 远程UAC绕过
Windows 10引入的远程UAC限制,会将远程管理员账户默认降权为普通用户,导致无法调用高权限COM组件。攻击者的绕过思路主要有两种:- 注册表权限篡改:通过修改
HKCR\CLSID\{组件CLSID}\LaunchPermission注册表项,赋予普通用户调用高权限组件的权限; - 高权限SID滥用:利用系统内置的
Local System、NT AUTHORITY\SYSTEM等高权限SID,通过令牌伪造实现权限提升。
- 注册表权限篡改:通过修改
- 端口复用与动态端口规避
- RPC端口复用:将DCOM通信绑定到常用业务端口(如80、443),规避防火墙对135端口和动态端口的拦截;
- 固定端口配置:通过组策略将DCOM通信端口固定到特定范围(如10000-10010),攻击者提前探测后精准突破。
- 无文件攻击延伸
结合内存加载技术,将恶意代码写入目标主机内存,通过DCOM组件触发执行,全程无文件落地,规避传统杀毒软件的文件查杀。例如,通过MMC20.Application调用rundll32.exe加载内存中的Shellcode。
(三)新型变种:融合横向移动与持久化
当前高级攻击中,DCOM不再局限于单一横向移动,而是与持久化、权限维持结合,形成复合攻击链。
- DCOM组件劫持:通过替换或篡改系统正常COM组件的注册表项,实现开机自启或触发式执行,例如劫持打印机相关组件,当目标主机打印文件时触发恶意代码;
- 跨域DCOM调用:利用Kerberos信任关系,实现跨域主机的横向移动,这是APT攻击中横向渗透至核心域控制器的关键手段。
三、免杀性深度分析与攻防对抗
DCOM横向移动的免杀核心,是规避终端检测工具对“异常COM调用行为”和“恶意代码执行”的识别,其对抗焦点集中在日志、流量、内存三个维度。
(一)传统检测点与免杀突破思路
| 检测维度 | 传统检测手段 | 攻击者免杀方案 |
|---|---|---|
| 日志审计 | 监控Windows事件日志中的DCOM调用事件(Event ID 10016)、进程创建事件(Event ID 4688) | 1. 篡改事件日志:通过wevtutil命令或直接操作日志文件,删除敏感事件记录;2. 伪装合法行为:调用业务相关组件,伪造正常操作日志; 3. 利用低权限用户调用:减少高权限操作的日志暴露 |
| 流量特征 | 识别RPC/DCOM通信的特征字段、异常端口通信 | 1. 加密RPC流量:使用自定义加密算法对传输数据进行加密,规避特征匹配; 2. 协议伪装:将DCOM流量封装为HTTP/HTTPS协议,伪装成正常Web请求; 3. 碎片化传输:将恶意命令拆分为多个数据包传输,规避流量检测规则 |
| 进程行为 | 监控异常进程创建(如cmd.exe、powershell.exe被陌生进程调用)、内存注入行为 | 1. 白进程注入:通过DCOM启动svchost.exe、explorer.exe等系统白名单进程,再通过远程线程注入执行恶意代码;2. 合法工具滥用:调用 certutil.exe、bitsadmin.exe等系统内置工具执行命令,规避进程特征检测;3. 内存加载:将恶意代码加载至进程内存,不落地文件,绕过文件查杀 |
(二)免杀技术的局限性与检测新方向
尽管攻击者的免杀手段不断升级,但仍存在无法规避的技术短板:
- 内存行为无法完全伪装:EDR(终端检测与响应)工具可通过内存扫描,识别出进程内存中的Shellcode特征、异常代码注入行为,即使是白进程注入,也会留下内存权限篡改、代码段执行异常等痕迹;
- 行为基线难以突破:企业内网中,正常的DCOM调用行为具有固定的基线(如调用时间、调用组件、调用用户),异常的调用行为(如非工作时段、普通用户调用高权限组件、跨主机频繁调用)很容易触发基线告警;
- 凭据溯源不可避免:无论是哈希传递还是票据传递,攻击者在使用凭据进行DCOM调用时,都会在目标主机留下身份验证记录,可通过日志溯源定位攻击源。
四、前瞻性防御策略:构建分层防御体系
针对DCOM横向移动的防御,不能仅依赖单一技术手段,需构建网络层、系统层、检测层、管理层的分层防御体系,并结合零信任架构理念,实现主动防御。
(一)网络层防御:切断通信通道
- 严格管控135端口:通过防火墙、入侵防御系统(IPS)限制135端口的访问范围,仅允许信任的服务器、管理员主机访问,禁止内网主机间随意访问135端口;
- 封堵RPC动态端口:将DCOM通信端口配置为固定范围,并仅开放业务必需的端口,同时监控固定端口的异常通信流量;
- 启用RPC流量加密:通过组策略配置DCOM通信加密,要求所有RPC调用必须使用加密传输,防止流量被窃听、篡改。
(二)系统层防御:加固组件与权限
- 限制敏感COM组件调用权限
- 通过组策略或注册表,修改MMC20.Application、ShellWindows等敏感组件的启动权限,仅允许本地管理员组调用,禁止远程用户调用;
- 禁用不必要的COM组件,如办公软件组件、打印机相关组件(非业务必需时),减少攻击面。
- 强化UAC与权限管控
- 保持远程UAC限制默认启用,禁止通过注册表篡改绕过UAC;
- 遵循最小权限原则,严格控制本地管理员组的用户数量,避免普通用户获取管理员权限;
- 启用LSA保护(本地安全机构保护),防止攻击者窃取系统凭据。
- 系统补丁与安全配置
- 及时安装Windows系统补丁,尤其是针对DCOM、RPC的漏洞补丁(如CVE-2021-26414、CVE-2022-21907等);
- 禁用不必要的服务,如
Remote Registry服务,防止攻击者远程修改注册表。
(三)检测层防御:提升威胁识别能力
- 日志监控与分析
- 重点监控Event ID 10016(DCOM组件激活权限不足)、Event ID 4688(进程创建)、Event ID 4625(登录失败)等关键日志,建立日志分析基线;
- 部署SIEM(安全信息与事件管理)系统,对日志进行关联分析,例如:识别同一用户在短时间内跨多台主机进行DCOM调用、普通用户调用高权限组件等异常行为。
- EDR/ATP工具部署
- 启用EDR工具的内存监控功能,检测进程内存中的异常代码注入、Shellcode执行行为;
- 配置进程行为规则,监控白名单进程的异常操作(如
explorer.exe调用cmd.exe执行命令)。
- 威胁狩猎主动排查
- 定期对内网主机进行DCOM组件权限审计,排查是否存在组件权限被篡改的情况;
- 扫描内网主机的135端口开放情况,定位暴露的攻击面,及时加固。
(四)管理层防御:建立安全运营体系
- 常态化安全测试:定期开展内网渗透测试,模拟攻击者利用DCOM横向移动的攻击路径,发现防御体系中的短板;
- 员工安全意识培训:提升员工对钓鱼攻击、恶意代码的识别能力,从源头减少攻击者获取管理员凭据的可能性;
- 零信任架构落地:基于“永不信任,始终验证”的原则,实现对DCOM调用的动态权限管控,即使攻击者获取了凭据,也无法随意跨主机调用DCOM组件。
五、未来攻防趋势展望
- 攻击端趋势:DCOM攻击将进一步与AI技术结合,通过机器学习自动识别目标系统版本、组件权限配置,生成定制化的攻击脚本;同时,无文件攻击、内存攻击将成为主流,规避传统检测手段。
- 防御端趋势:微软将进一步强化COM组件的权限管控,可能引入更严格的远程调用认证机制;EDR工具将向“行为分析+AI检测”演进,通过机器学习识别DCOM攻击的隐蔽行为,实现主动防御。
总结:DCOM横向移动作为Windows内网攻击的经典手段,在攻防技术的持续博弈中仍将长期存在。企业需认清其攻击本质,从网络、系统、检测、管理四个维度构建分层防御体系,才能有效抵御此类攻击。