网络协议(二):Kerberos
Kerbaros源自古希腊神话中的 Cerberus——地狱三头犬,可以识别亡灵,防止活人进入地狱,对应的就是kerbaros协议的身份检验功能。
基本概念
身份认证
- 本地认证:登录电脑时知道用户密码才能登陆对应的账号。windows中可以使用mimikatz抓取密码,将在后文实战部分进行说明。
- 网络认证:电脑之间的认证,此时就需要能被广泛认可的认证协议。
Kerberos协议
概念说明
-
客户端(client):请求发送方
-
服务端(Server):接收方
-
密钥分发中心(Key Distribution Center,KDC):分为两个部分
- AS(Authentication Server):认证服务器,专门认证客户端身份,发放客户用来访问TGS的TGT(票据授予票据),类似于机场中的安检处
- TGS(Ticket Granting Ticket):票据授予服务器,发放整个认证过程和客户端访问服务端时所需的服务授予票据(Ticket),类似于买票窗口
-
对称加密:用相同的密钥进行加解密,在保证公钥安全的条件下,效率较高。
认证过程
-
客户用身份信息去AS认证,认证通过后返回TGT。TGT有两个部分,第一块包括基本信息:时间、有效时间、下一步TGS的名字和一个随机数CT_SK,使用用户密码进行加密,保证了访问者拥有该用户的密码才能获取CT_SK。第二块除此之外包括身份信息中的IP地址和CT_SK,使用KDC中专门为TGT加密的密码加密。

-
用户用TGT去TGS获取ST。用户使用密码解密第一块,使用获取的CT_SK进行加密,并在末尾添加想要访问的服务器。TGS由于不知道CT_SK,只能通过解密第二块进行获取,从而在第一块进行修改,保证了TGS为AS信任的一方。

-
用户用ST获取服务方权限。KDC用TGT的密钥解密第二块,获取CT_SK,从而解密第一块,添加有效时间,使用生成的随机数CS_SK加密,在第二块将随机数换为CT_SK,使用目标服务方的密码加密。服务方通过相同的过程解密,对访问用户的身份进行核对。

攻击方法
黄金白银票据
黄金票据:伪造TGT
条件:
- 域名称(shell net config workstation)
- 域的SID值(shell whoami/user)
- 重点:域的KRBTGT账号的Hash(isadump::dcsync /domain:test.com /all /csv)
- 伪造任意用户名
白银票据:伪造ST
条件:
- 域名
- 域sid
- 目标服务器名
- 可利用的服务
- 服务账号的NTML Hash
- 需要伪造的用户名
委派攻击
非约束性委派:伪造一个客户端获取服务器权限,去执行其他操作
用mimikatz抓取本地hash
渗透工具mimikatz
-
Mimikatz是法国人benjamin开发的一款功能强大的轻量级调试工具,本意是用来个人测试,但由于其功能强大,能够直接读取WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具。
-
下载直接在github上,在
Tags中选择最新版本:

-
命令如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27cls: 清屏
standard: 标准模块,基本命令
crypto: 加密相关模块
sekurlsa: 与证书相关的模块
kerberos: kerberos模块
privilege: 提权相关模块
process: 进程相关模块
serivce: 服务相关模块
lsadump: LsaDump模块
ts: 终端服务器模块
event: 事件模块
misc: 杂项模块
token: 令牌操作模块
vault: Windows 、证书模块
minesweeper:Mine Sweeper模块
net:
dpapi: DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口]
busylight: BusyLight Module
sysenv: 系统环境值模块
sid: 安全标识符模块
iis: IIS XML配置模块
rpc: mimikatz的RPC控制
sr98: 用于SR98设备和T5577目标的RF模块
rdm: RDM(830AL)器件的射频模块
acr: ACR模块
version: 查看版本
exit: 退出
模拟高权限用户提取密码
-
用管理员身份打开mimikatz,获取debug权限:
1
privilege::debug

-
模拟SYSTEM权限令牌,提升当前Mimikatz进程的权限,模拟高权限用户NT AUTHORITY\SYSTEM:
1
token::elevate

权限提升成功:

-
读取Windows中受保护的注册表区域SAM,获取NTLM的hash,用在线工具进行解密:
1
lsadump::sam
以其中的WDAGUUtilityAccount账户为例,可以看到hash:

- 恢复权限:




