深入解析z/OS RACF安全机制与漏洞挖掘

本文详细分析了IBM z/OS系统中RACF安全组件的内部架构、数据库结构及安全关系链,介绍了自主研发的racfudit工具用于离线分析RACF数据库,并揭示了密码哈希算法(DES/KDFAES)的弱点及权限提升攻击路径。

RACF内部架构

整体角色

z/OS访问控制示意图显示,RACF可分为服务组件和数据库两部分。服务组件通过SAF接口与其他子系统交互,执行安全校验。例如TSO子系统在用户认证后,通过SAF查询RACF验证用户访问权限,并将用户信息存入ACEE控制块。

RACF数据库组件

RACF数据库以特定格式存储在数据集中,包含四种核心配置文件:

  • 用户配置文件:存储登录名、密码哈希、属性和所属组
  • 组配置文件:包含组成员、所有者属性及访问权限
  • 数据集配置文件:记录数据集访问权限和审计策略
  • 通用资源配置文件:保存资源类别及权限信息

逻辑结构

每个配置文件由多个段组成。例如用户配置文件的BASE段包含:

  • PASSWORD: DES/KDFAES加密的密码
  • PHRASE: 密码短语哈希
  • OWNER: 配置文件所有者
  • AUTHDATE: 创建日期

数据库结构

RACF数据库采用块状结构:

  • 头块(ICB):包含元数据和指向其他块的指针
  • 索引块:单向链表结构,指向所有配置文件和段
  • 模板块:存储所有配置文件的字段格式模板

RACF分析工具

现有方案评估

  • Racf2john: 仅支持DES/KDFAES密码哈希提取
  • Racf2sql: 需要IRRDBU00工具生成的转储文件
  • IRRXUTIL: 需在主机执行且需要特权权限
  • Racf_debug_cleanup.c: 仅解析BASE段且输出为纯文本

racfudit工具

自主研发的跨平台工具(Golang实现),支持多版本z/OS(1.13/2.02/3.1),采用两阶段分析:

  1. 解析数据库中的模板定义
  2. 遍历索引块提取所有配置文件

支持输出格式:

  • SQLite数据库:便于执行安全查询
  • 纯文本格式:便于快速查看

安全分析案例

密码哈希收集

1
2
3
select ProfileName,PHRASE,PASSWORD,CONGRPNM 
from USER_BASE 
where CONGRPNM LIKE "%SYS1%";

UACC配置缺陷检测

1
2
3
select ProfileName, UNIVACS 
from DATASET_BASE 
where UNIVACS LIKE "1%";

RACF关系链分析

关键配置文件字段

用户配置文件特殊字段:

  • SPECIAL: 完全控制所有配置文件
  • OPERATIONS: 全数据集访问权限
  • GROUP-SPECIAL: 组范围内的特权控制

关系链类型

  • Owner: 主体拥有对象
  • MemberOf: 主体属于对象
  • AllowAlter/Update/Read: 不同级别访问权限
  • GroupSpecial: 组范围内的特殊权限

隐式关系

当用户配置group-SPECIAL字段时,其权限范围扩展到指定组的影响范围。例如: USER1(group-SPECIAL=GROUP1) → GROUP1(拥有GROUP2) → GROUP2(拥有USER5) 形成USER1控制USER5的权限链

密码哈希机制

DES算法

  • PASSWORD: 用户名DES加密(8字节EBCDIC编码)
  • PASSPHRASE: 自定义分组模式,存在截断碰撞风险
  • 破解时间:NVIDIA 4090集群小于5分钟

KDFAES算法

多阶段加密流程:

  1. DES阶段:用户名DES加密
  2. 哈希阶段:PBKDF2-SHA256-HMAC迭代
  3. AES阶段:用户名AES加密

PWDX字段结构:

  • 魔术字节:E7D7E66D
  • 哈希类型:00180000(密码)/00140000(密码短语)
  • 内存因子/重复因子:控制迭代次数
  • 16字节盐值
  • 哈希值前8字节

攻击案例

权限提升路径

  1. 获取TESTUSR凭证(含group-SPECIAL=PASSADM)
  2. 修改OPERATOR密码(PASSADM组拥有OPERATOR)
  3. 修改DFSOPER密码(OPERATOR可修改非特权用户)
  4. 通过BPX.SUPERUSER资源获得UNIX特权

替代提升路径

TESTUSR → OPERSMS(通过SURROGAT类模拟) → HFSADMIN组 → TSOAUTH类资源 → APF权限提升

防护建议

  • 迁移至KDFAES算法和密码短语
  • 严格控制UACC值设置
  • 定期审计APF库访问权限
  • 监控用户关系链变化
  • 使用racfudit进行安全配置验证
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计