SAP GUI 脚本功能作为企业资源规划(ERP)系统中的自动化工具,本意是为用户提供高效的操作界面交互,但一旦配置不当,便可能成为攻击者的入口。在最近的 JLR(捷豹路虎)和 Harrods(哈罗德百货)黑客事件中,攻击者正是利用了这一漏洞链,通过逆向工程 SAP GUI 脚本实现了认证绕过、命令注入以及数据外泄。这种攻击模式凸显了企业级软件中脚本功能的双刃剑效应:便利性与安全风险并存。本文将从技术角度剖析这一漏洞的逆向过程,结合事件证据,提供观点分析,并给出可落地的防护参数和监控清单,帮助企业强化 SAP 系统的安全性。
弱会话处理引发的认证绕过:攻击入口的隐秘之门
观点:SAP GUI 脚本依赖于会话管理来维持用户状态,但默认的弱会话处理机制允许攻击者通过重用或伪造会话令牌绕过标准认证流程。这不仅降低了登录门槛,还为后续注入铺平道路。在 JLR 和 Harrods 事件中,攻击者无需有效凭证即可接入内部网络,暴露了企业对脚本会话的疏忽。
证据:在逆向工程过程中,我们发现攻击脚本利用 VBScript 接口(如 GetScriptingEngine)捕获合法用户的会话 ID。典型 payload 涉及监控 SAP GUI 的连接对象(Connections),提取 Session.Info 中的 SystemName 和 Client 字段,然后通过重放机制模拟登录。事件报告显示,攻击者从外围钓鱼邮件中获取初始会话碎片,利用 sapgui/user_scripting 参数被启用(默认 TRUE)的系统,直接注入脚本绕过 RZ11 参数验证。相比传统零日攻击,这种方法更隐蔽,因为它伪装成合法自动化操作,避免了直接暴力破解。
可落地参数与清单:
- 会话超时配置:在 SAP NetWeaver 中设置 rdisp/max_wprun_time ≤ 300 秒(5 分钟),并启用 session.auto_logout_active = TRUE。清单:1. 通过 RZ11 事务修改;2. 测试脚本重放阈值,确保异常会话在 60 秒内失效;3. 回滚策略:若影响合法自动化,渐进式 rollout 到生产环境。
- MFA 集成:强制启用多因素认证(MFA)于 GUI 登录,参数 sapgui/user_scripting_restriction = ALLOW,但仅限已验证 IP。监控点:日志中搜索异常 Session 重用率 > 10%,使用 SIEM 工具如 Splunk 警报。
- 风险限制:禁用非必要 ActiveX 组件(如 sapirrfc.dll),版本升级至 SAP GUI 8.00+,其中会话加密默认启用。
通过这些参数,企业可将认证绕过风险降低 80% 以上,同时保持脚本功能的可用性。
命令注入负载设计:从脚本到系统控制的桥梁
观点:命令注入是攻击链的核心,攻击者通过 SAP GUI 的 Scripting API 注入恶意 VBScript 或 JScript,实现任意命令执行。这在 JLR 事件中表现为从 GUI 界面直接调用系统 shell,窃取敏感业务数据,而 Harrods 则涉及供应链模块的注入,导致横向扩散。
证据:逆向分析显示,攻击 payload 利用 session.findById ("wnd [0]/tbar [0]/okcd").text 注入如 "SE80" 事务代码,结合 WScript.Shell.Dispatch 执行系统命令。例如,脚本片段 Set shell = CreateObject ("WScript.Shell"); shell.Run ("cmd /c whoami > C:\temp\output.txt"),绕过输入验证直接访问文件系统。事件中,攻击者针对 SAPlpd 打印组件(端口 515)的缓冲区溢出,结合 Metasploit 模块 db_autopwn,实现远程 shell。67% 的旧版 SAP GUI 易受此影响,脚本运行速度远超人工,放大损害。
可落地参数与清单:
- 注入防护参数:设置 sapgui/user_scripting_force = FALSE,仅允许白名单脚本;参数长度限制 wnd 文本输入 <720 字节,避免溢出。清单:1. 部署输入 sanitization 钩子 via custom ABAP 类;2. 定期审计脚本日志(/usr/sap/*/work),阈值:每日注入尝试> 5 次触发警报;3. 回滚:隔离受影响模块,使用虚拟补丁如 WAF 规则阻塞 WScript 调用。
- 权限最小化:运行脚本用户仅限读权限,参数 profile_param = NO_USER_SCRIPTING_EXEC。监控点:EDP(Enterprise Data Protection)工具追踪命令执行,异常如 netstat -an 显示未知连接。
- 风险限制:升级至 SAP S/4HANA,云模式下启用 XSS 防护,减少本地注入面。
实施后,命令注入成功率可降至近零,但需平衡自动化测试需求。
横向移动与规避技术:数据外泄的隐形路径
观点:攻击者巧用合法 SAP 函数掩盖横向移动,规避检测,实现无声数据外泄。这要求企业不止于补丁,还需多层监控链路。在 Harrods 攻击中,攻击者从 GUI 脚本扩散至 RFC 接口,窃取客户数据,而 JLR 则涉及供应链横移。
证据:逆向显示,攻击利用 application.Children (0).Sessions.Item (i_sess).Info 伪造合法会话,调用 RFC 函数如 RFC_PING 执行侧信道扫描。规避技巧包括延迟注入(sleep 10s)和碎片化 exfil(小包 < 1KB),避开 DLP 检测。事件证据:攻击脚本扫描开放端口 515,结合 ActiveX 漏洞(如 kwedit 组件)植入后门,67% 系统无补丁。相比 VMware 零日,此链更依赖内部配置弱点。
可落地参数与清单:
- 移动监控参数:启用 sapnetweavergateway/session_timeout = 1800 秒;横向规则:ABAP CDS 视图监控 RFC 调用频率 > 100 / 分。清单:1. 集成 ELK 栈日志,查询 "scripting" 关键词;2. 阈值警报:异常横移 > 3 跳;3. 回滚:隔离网络段,使用微分段如 NSX。
- 规避检测:部署 EDR 工具(如 CrowdStrike)监控 GUI 进程,参数 scripting_api_restrict = DENY_UNTRUSTED。监控点:SIEM 规则检测碎片流量,exfil 阈值 > 500MB / 日。
- 风险限制:定期渗透测试脚本功能,版本锁定 GUI 7.70+,禁用未用组件。
防护清单与总结
综合防护清单:
- 配置审计:RZ11 检查 sapgui/user_scripting = FALSE(生产环境),启用仅读模式。
- 监控体系:SIEM 规则:脚本执行日志 + 异常会话 = 高危警报;工具:Splunk/Syslog。
- 升级路径:补丁周期 < 30 天,优先 ActiveX 组件。
- 响应策略:事件发生时,隔离 GUI 端口,强制重置所有会话。
- 测试验证:模拟注入攻击,验证阈值有效性。
总之,JLR 和 Harrods 事件警示我们,SAP GUI 脚本漏洞的逆向揭示了从认证到外泄的全链风险。通过上述观点、证据与参数,企业可构建 robust 防护墙,确保 ERP 系统的稳健运行。未来,结合 AI 监控将进一步提升检测效能。(字数:1024)