如何获取OPC DA动态端口?解密ISystemActivator加密存根数据
解密OPC DA ISystemActivator加密存根数据以获取动态端口
OPC DA基于DCOM架构,ISystemActivator的加密存根通常由DCOM的NTLM/Kerberos身份验证或RPC加密机制保护,以下是可行的解密及端口提取方案:
捕获身份验证密钥(NTLM/Kerberos场景)
- 若为NTLM加密:在客户端或服务器主机上,使用
mimikatz执行sekurlsa::ekeys命令抓取当前会话的NTLM会话密钥。打开Wireshark后,通过Edit > Preferences > Protocols > SMB > NTLM路径导入密钥,Wireshark会自动解密关联的RPC流量,直接查看ISystemActivator响应中的动态端口。 - 若为Kerberos加密:使用
mimikatz的sekurlsa::tickets命令导出Kerberos票据,或从域控制器获取对应会话密钥,在Wireshark的Kerberos设置中导入票据/密钥,即可解密RPC存根数据。
- 若为NTLM加密:在客户端或服务器主机上,使用
临时禁用DCOM加密(仅测试环境)
此方法仅适用于测试环境,会降低系统安全性:- 运行
dcomcnfg打开组件服务,定位到组件服务 > 计算机 > 我的电脑 > DCOM配置,找到目标OPC服务器的DCOM对象。 - 右键打开属性窗口,切换至「安全」选项卡,在「启动和激活权限」中选择「自定义」并编辑,确保客户端拥有足够权限。
- 切换至「常规」选项卡,将「身份验证级别」修改为「无」或「连接」。
- 重启OPC服务器与客户端,重新捕获流量即可得到明文的ISystemActivator响应,从中提取动态端口。
- 运行
利用RPC调试工具直接监控
- 使用
rpcmon工具:它能实时捕获并解析DCOM RPC调用,通过本地进程上下文直接获取解密后的ISystemActivator请求/响应数据,无需手动解密即可提取动态端口。 - 使用
oleview工具:查看OPC服务器的DCOM接口细节,配合进程监控工具追踪ISystemActivator的调用参数与返回值,直接获取端口信息。
- 使用
逆向分析存根结构(进阶方案)
若上述方法受限,可通过逆向工程解密:- 从Wireshark中提取RPC数据包的
stub_data加密字段。 - 根据获取的会话密钥,使用对应加密算法(如NTLM用RC4,Kerberos用AES)手动解密数据。
- 按照DCOM RPC的存根序列化格式解析解密后的数据,定位到16位整数类型的动态端口字段。
- 从Wireshark中提取RPC数据包的
内容的提问来源于stack exchange,提问作者The dream of salt fish
相关产品推荐
相关产品推荐

