一、搭建encrypt-labs靶场,复现AES加密绕过和加签绕过实验
1、搭建靶场
- 下载emcrypt-labs
- 使用phpstudy搭建靶场,如下:
- 启动靶场
2、复现AES加密绕过
- 登录靶场使用F12,使用XHR断点功能,观察并分析数据包:
- 通过分析数据包得知,该网址使用CryptoJS库,AES加密密钥等信息。
- 使用Burp抓取数据包
- 配置插件
- 重新抓取登录的数据包,并将数据包发送给Repester模块
- 将autoDecoder产生的数据包复制到美化模块
- 使用Interder模块暴力破解
3、复现加签绕过
抓取数据包
使用断点功能,分析数据包
参数:
- timestamp:时间戳
dataToSign: 主要用于 生成数据签名(Signature) 或 HMAC(密钥散列消息认证码) ,确保数据的完整性和防篡改。- signature:使用 CryptoJS 库来计算 HMAC-SHA256 签名,用于数据完整性校验、身份验证或 API 请求防篡改。
安装flask框架,执行下面命令:
pip3 install flask
运行脚本:
配置插件
配置接口加解密时候注意端口要和脚本中的一致:
返回代理,将数据包发送给Interder模块进行暴力破解:
验证:
2、Kerberos协议
- 概述
Kerberos 是一种 网络认证协议,由 MIT 开发,用于在 非安全网络(如互联网)中对用户和服务进行安全认证,避免明文传输凭证。Windows Active Directory(AD)默认使用 Kerberos 进行身份认证。
- 核心组件
| 角色 | 作用 |
|---|---|
| 客户端(Client) | 用户或设备,请求访问服务(如文件共享、数据库)。 |
| AS(认证服务器) | 验证用户身份,签发 TGT(Ticket Granting Ticket) 。 |
| TGS(票据授权服务器) | 验证 TGT,签发 服务票据(Service Ticket) 以允许访问特定服务。 |
| 服务端(Server) | 提供实际服务(如 SharePoint、SQL Server),验证服务票据。 |
- 票据类型
- TGT(Ticket Granting Ticket)
客户端与 KDC 间认证成功后获得的票据,用于向 TGS 申请具体服务的 Service Ticket。 - Service Ticket(ST)
由 TGS 发放,用于访问某个具体应用服务。服务端用此票据验证客户端身份。
- 流程:
- 登录/认证:客户端向 AS 请求认证,成功后得到 TGT。
- 获取服务票据:客户端用 TGT 向 TGS 请求访问某个服务,获得 Service - Ticket。
- 访问服务:客户端携 Service Ticket 向目标服务证明身份,双方建立安全会话。
- 黄金票据和白银票据
- 黄金票据
-
- 黄金票据 是指由攻击者自己伪造的 TGT(Ticket Granting Ticket) 。
- 作用:
-
-
- 伪造任意用户身份: 冒充成域管理员、任意域内账号
-
-
- 无限有效期访问
-
-
- 黄金票据可以自定义有效期,甚至数百年,长期潜伏
-
-
- 完全绕过 KDC 认证
-
-
- 因为 TGT 是用正确的 KRBTGT 密钥加密的,TGS 会信任它
-
-
- 跨域访问(信任域)
-
-
- 如果两个域存在信任关系,那么黄金票据可跨域获取服务票据
-
-
- 持久化控制
-
-
- 即便原用户密码更改,只要 KRBTGT 主密钥未更换,黄金票据仍然有效
-
- 白银票据
-
- 白银票据: 控制的密钥是 某个服务账户的密钥(K_s),能直接伪造访问该服务的票据
- 作用:
-
-
- 直接伪造合法 Service Ticket
- 跳过 TGS 请求与 KDC交互
- 冒充特定服务的任何用户
- 在目标服务范围内持久化访问
-