1. Kerberos票据检查模块深度解析
1.1 模块结构与初始化逻辑
Kerberos票据检查模块的核心功能是解析和显示ccache/kirbi格式票据的内容,并在提供密钥的情况下解密加密部分。这个模块继承自Metasploit的辅助模块基类(Msf::Auxiliary),并混入了三个关键功能模块:
- Report模块:用于将结果输出到框架报告系统
- Kerberos Client模块:提供Kerberos客户端功能
- Ticket模块:处理票据解析相关操作
初始化部分通过update_info方法设置了模块元信息,包括:
- 名称(Name):'Kerberos Ticket Inspecting'
- 描述(Description):详细说明了模块可以输出票据内容,并在有密钥时解密显示
- 作者(Author):Dean Welch
- 许可证(License):MSF_LICENSE
- 备注(Notes):包含稳定性、副作用等信息
实际开发中,模块元信息的完整性和准确性非常重要,这关系到模块在框架中的可发现性和使用体验。
1.2 参数配置与验证机制
模块注册了三个关键参数:
- NTHASH:krbtgt/service的NT hash
- AES_KEY:krbtgt/service的AES key
- TICKET_PATH:要检查的票据文件路径(ccache/kirbi格式)
同时移除了不需要的默认网络参数(RHOSTS/RPORT/Timeout),因为这个模块是本地操作,不需要网络连接。
密钥验证逻辑非常严谨:
- 不允许同时设置NTHASH和AES_KEY
- NTHASH必须为32位长度(16字节的十六进制表示)
- AES_KEY必须为32位或64位长度(对应AES-128和AES-256)
ruby复制def validate_aes_key(aes_key)
if aes_key.size != 32 && aes_key.size != 64
fail_with(Msf::Exploit::Failure::BadConfig,
"AES key length was #{aes_key.size}. It should be 3
