Kerberos流量解密
Fri Jan 10 2025
657 字 · 4 分钟

Kerberos流量解密


Table of Contents

在学习 Kerberos 协议的时候,需要对 Kerberos 协议流量进行解密,以更好的了解 Kerberos 协议的传输过程。本篇文章是通过生成 keytab 文件,在 Wireshark 里加载实现对流量的解密。

keytab(简称“密钥表”)存储一个或多个主体的长期密钥。通常 keytab 以标准格式的文件表示,在极少数情况下,它们可以以其他方式表示。keytab 最常用于允许服务器应用程序接受客户端的身份验证,但也可以用于为客户端应用程序获取初始凭据。

这里使用了两个工具

  • esedbexport
  • NTDSXtract

准备 Link to 准备

域控导出 Ntds.dit Link to 域控导出 Ntds.dit

我们需要在域控里导出 Ntds.dit

域控环境为 Windows Server 2016

SHELL
1
vssadmin create shadow /for=C:

执行该命令后,会给出副本卷名

接着将 ntds.ditsystem.hive 拷贝出来,这里拷贝到 C盘 下。注意命令里的卷名,如果得到结果和图片不用,请自行修改命令。

SHELL
1
2
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\Windows\NTDS\NTDS.dit C:\ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\Windows\System32\config\SYSTEM C:\system.hive

这样就得到了 ntds.ditsystem.hive

esedbexport 安装 Link to esedbexport 安装

实验环境为 Kali Linux

SHELL
1
2
3
4
5
6
7
8
9
apt-get install autoconf automake autopoint libtool pkg-config
# 下载esedbexport,这里是当前最新版,请根据实际情况自行修改下载链接
wget https://github.com/libyal/libesedb/releases/tag/20240420
tar zxvf libesedb-experimental-20240420.tar.gz
cd libesedb-20240420
./configure
make
make install
ldconfig

至此,安装成功。

NTDSXtract 安装 Link to NTDSXtract 安装

执行如下命令,注意命令使用的是 python2

SHELL
1
2
3
4
git clone https://github.com/csababarta/ntdsxtract.git
cd ntdsxtract
python2 setup.py build
python2 setup.py install

Keytab 生成 Link to Keytab 生成

ntds.dit 存在在 Kali 里,执行命令

SHELL
1
esedbexport -m tables ntds.dit

这样,我们就得到了一个 ntds.dit.export 文件夹

我们主要用的是

  • datatable.4
  • link_table.7

接着将 ntds.dit.export 和 SYSTEM 文件放入到 ntdsxtract 工具文件夹中,执行命令

PLAINTEXT
1
python2 dskeytab.py ntds.dit.export/datatable.4 ntds.dit.export/link_table.7 system.hive ./ kerberos.keytab

可能会出现报错 ImportError: No module named Crypto.Hash,请自行安装 python2pycryptodome

至此,得到一个 kerberos.keytab

WireShark 解密 Link to WireShark 解密

打开 wireshark,右击 kerberos 流量,按照下方图片进行操作

打开 Kerberos 首选项

选择你刚才生成的 keytab。然后就能看到解密后的流量了。

蓝色代表解密成功。后面可以看到使用的密钥。

Thanks for reading!

Kerberos流量解密

Fri Jan 10 2025
657 字 · 4 分钟